PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Event ID abfragen



OneEyeShadow
16.02.2010, 21:37
Ja hallo, also meine Frage ist ganz einfach: ich brauche den code, mit dem ich in einem Event dessen ID auf eine Variable speichern kann - also sozusagen "ThisEvent EventID". Ich brauche diesen code, da ich gerade an einem AKS bastle, und es mir als das einfachste erscheint die handelnden Evente einfach ihre eigenen IDs abfragen zu lassen und damit dann die Schadensberechnungen und stuff anzustellen.

MfG
OneEyeShadow

Edit: PS. Da ich für diese Frage kein neues Thema erstellen will: Kann man eigentlich mit einem normalen Scriptbefehl eine game variable in eine Variable an sich machen, also z.B. $game_variables[1] = [] , ohne das da am ende irgendwelche seltsammen Fehler bei rauskommen?

-KD-
17.02.2010, 01:03
$game_variables[1] = @event_id
Müsste gehen.


Kann man eigentlich mit einem normalen Scriptbefehl eine game variable in eine Variable an sich machenIch versteh deine Frage nicht.

OneEyeShadow
17.02.2010, 16:46
erstmal danke, der der befehl funktioniert

zu punkt zwei: ich wollt halt wissen, ob ich aus der z.B. gamevariable1 eine variable an sich machen kann also das ich sozusagen in gamevariable1 mehrere Zahlen reintun kann (also z.B. auf $game_variables[1[3]] auch noch extra ne zahl speichern kann, oder auf $game_variables[1[2]] oder so weiter) oder so, jetzt wollt ich eben wissen, ob der Maker variablen über längere Zeit so lässt, wenn ich sie so verändere oder nicht.

Kelven
17.02.2010, 17:44
Am besten du erklärst das ein wenig einfacher oder mit genaueren Beispielen. Möchtest du in die einzelnen Felder von game_variables selber Arrays reinschreiben? Die alten Werte der Variablen merkt sich der Maker nicht, wenn du die Variable änderst, wird der alte überschrieben. Solange du die Werte nicht änderst, bleiben sie aber bis zum Ende des Spieles erhalten.

-KD-
17.02.2010, 19:17
Prinzipiell geht das. Die Syntax sieht allerdings so aus:

$game_variables[1] = []
$game_variables[1][0] = 5
$game_variables[1][1] = 8
# usw.

Nur geht der Maker davon aus das Variablen Zahlen enthalten. Sobald der Maker eine Rechenoperation (+, -, ...) oder Vergleichsoperation (<, >, <=, ...) auf eine so modifizierte Variable ausführt, kann es zum Spielabsturz kommen. Und sowas passiert schnell, wenn du irgendwo versehentlich die Variable in einer Event-Condition o.ä. stehen hast.

Davon mal abgesehen macht es absolut keinen Sinn. Warum sollte eine Variable mehrere Werte speichern. Sag mal lieber wozu du das genau brauchst. Dafür gibt es nämlich mit Sicherheit bessere Lösungen.

OneEyeShadow
17.02.2010, 20:23
joa, eigentlich brauch ich das ja nur um da noch weitere sachen reinzulegen - also ich hab mir das so gedacht, auf der map laufen gegner rum, diese schreiben ihre informationen (Name, KP, SP, Kraft, etc.) dann in eine variable des Arrays, der dann ihrer ID entspricht, und verändern diese dann auch entsprechend.
Ja, ja, vielleicht nicht die beste möglichkeit, gibts vielleicht sowas wie selfVariablen oder so - oder, wie kann ich eigentlich (oder eher wo) einen Array im Maker anlegen, so dass der nicht gelöscht oder überschrieben wird oder so ...

-KD-
18.02.2010, 15:46
class Game_System
def enemies
@enemies ||= []
end
end

Jetzt hast du z.B. Zugriff auf einen neuen Array enemies, in dem du beliebig deinen Kram abspeichern kannst. z.B.

$game_system.enemies[100] = "Böses Monster"

Wenn du bestimmte Attribute in so einen Array abspeichern willst, bietet es sich an Structs zu verwenden:

Enemy = Struct.new(:name, :hp, :mp, :exp)

Dann kannst du mit

$game_system.enemies[100] = Enemy.new("Monster", 100, 100, 20)
einen Gegner anlegen und dessen Attribute nachträglich auch ändern oder abfragen:

$game_system.enemies[100].hp -= 20
print $game_system.enemies[100].name


gibts vielleicht sowas wie selfVariablen oder so
SelfSwitches sind nichts weiter als globale Switches, die aber in Abhängigkeit zu einer Map und einer Event-ID gespeichert werden. Sowas kannst du selbst auch mit Variablen relativ problemlos umsetzen. Du müsstest nur die Interpreter- und die Game_Variables Klasse entsprechend erweitern, dass z.B. die Variablen von 1 bis 10 eventbezogen sind.