[VX-Ace] Mein versuch einer HitBox für ein Zelda KS
Da mir das ewige Variablen gestelle zu Zeitaufwendig wurde, fing ich an einfache RGSS Zeilen zu lernen und in den
Eventscriptbefehlen zu nutzen, leider war dies auch noch nicht gut genug, deshalb hab ich nun meinen ersten Prototypen
einer Eventbefehl "Script" Trefferabfragenbox für hunderte Gegner entworfen.
Was haltet ihr davon, wie würded ihr es machen? Eigentlich bin ich ja nur Eventer und kann noch nicht Scripten da ich die Sprachen nicht kann.
Benutzt wird es als Common Event ohne Trigger, das von Geschoss Events bei Bedarf aufgerufen wird. Dabei ist es egal welche Event ID so ein Geschoss hat.
Der Eventbefehl Script ist klasse seit sie mehr Zeilen möglich gemacht haben.
#----------------------------------------------
#Hit_Box Version1.0 16.06.2014 by Bex
#----------------------------------------------
evid_min = 1
evid_max = 10
#----------------------------------------------
until evid_min > evid_max
if $game_map.events[evid_min] != nil
if Math.sqrt(($game_map.events[evid_min].screen_x -
$game_map.events[@event_id].screen_x)**2 + ($game_map.events[evid_min].screen_y -
$game_map.events[@event_id].screen_y)**2) <= 20
if evid_min != @event_id
$game_self_switches[[$game_map.map_id, evid_min, 'A']] = true
end ; end ; end
evid_min += 1
end
angefangen hatte ich mit einen simplen Loop der schaut ob die Events existieren, damit das Spiel nicht abstürzt falls die mal nicht existent sind.
evid_min = 1
evid_max = 10
until evid_min > evid_max
if $game_map.events[evid_min] != nil
$game_message.add("This Event exist")
else
$game_message.add("This Event isnt existing")
end
evid_min += 1
end
_______________________________________________________
ToDo:
+Verschieden grosse Geschosse und Gegner ermöglichen
Liste der Anhänge anzeigen (Anzahl: 1)
Wie wäre es hiermit:
Code:
class Game_Interpreter
attr_accessor :dist
# Überprüft die Distanz zwischen 2 Events und speichert das Ergebnis in der Variable "dist" ab.
# Falls keine Argumente übergeben werden wird einfach die Distanz zwischen dem aufrufenden Event und der Spielerfigur genommen.
def getDist(event_a=getEvent, event_b=$game_player)
x1 = getX(event_a)
y1 = getY(event_a)
x2 = getX(event_b)
y2 = getY(event_b)
self.dist = Math.hypot(x1 - x2, y1 - y2)
end
# Gibt die X-Koordinate eines Events in Pixeln zurück.
# Falls kein Argument übergeben wird, wird die X-Position des aufrufenden Events verwendet.
def getX(event=getEvent)
return event.real_x * 32
end
# Gibt die Y-Koordinate eines Events in Pixeln zurück.
# Falls kein Argument übergeben wird, wird die Y-Position des aufrufenden Events verwendet.
def getY(event=getEvent)
return event.real_y * 32
end
# Gibt das Event mit der entsprechenden ID zurück.
# Falls kein Argument übergeben wird, wird dieses Event zurückgegeben.
def getEvent(id = self.event_id)
return $game_map.events[id]
end
end
Dieses Script oberhalb von Main einfügen.
Dann kannst du folgendes Event (am besten als Parallel Process) schreiben:
Anhang 20563
Damit wird überprüft ob der Held innerhalb von 64-Pixeln zum aufrufenden Event ist.
Falls ja wird "HIT !!!" auf die Konsole geschrieben.
Vielleicht hilft dir das ja weiter.
Damit kannst du übrigens die Entfernung zu jedem beliebigen anderen Event abfragen.