Bin zwar nicht Kahmul, aber ich hoffe, du nimmst auch meine Erklärung an.
Die Event Handler sind Funktionen die im Hintergrund laufen und ausgeführt werden, wenn ein bestimmtes Event passiert. Dazu musst du zuerst den Event Handler registrieren. Das geschieht mit der Funktion "setEventHandler "<Event-ID>" <Skript-ID> <Parameter1> <Parameter2>". Analog wird "removeEventHandler" für das Entfernen benutzt. "<Event-ID>" ist hier ein Platzhalter für den Namen des Events die du in der OBSE-Dokumentation in der Liste findest (der Name muss dabei in Anführungszeichen stehen). "<Skript-ID>" steht für den Namen des Skripts, das durch das Event ausgeführt werden soll. Die Parameter kannst du benutzen oder auch offen lassen. Wenn kein Parameter die Funktion einschränkt wird die Funktion halt immer bei dem betreffenden Ereignis ausgeführt, mit den Paramtern kannst du also etwas Performance sichern.
Ich weiß jetzt nicht, ob das von dir gepostete Beispiel überhaupt kompiliert wird, weil der Paramter anders bezeichnet wird, deswegen nehm ich mal ein Beispiel aus dem Wiki
Code:
SetEventHandler "OnHit" FnOnHitByPlayer "object"::Player ;Anführungszeichen müssen, wo gesetzt, auch stehen
Das bedeutet, dass die Funktion ausgeführt wird, wenn der Spieler irgendeinen Actor schlägt (vielleicht auch, wenn es kein Actor ist). Der Parameter "object":
😛layer bedeutet, dass das zweite Argument der Funktion der Spieler sein muss. Die Argumente findest du in der Liste neben der Funktion. In diesem Fall ist das erste Argument das Ziel und das zweite der Angreifer. Das erste Argument wird in dem Befehl mit "ref"::<beliebiges-Ziel> benutzt, das zweite wie zu sehen mit "object"::<beliebiger-Angreifer>. Wenn du also auch noch das Ziel spezifizieren willst, beispielsweise Baurus, müsstest du noch "ref"::BaurusRef in die Zeile vor "object":
😛layer einfügen. Dann wird die Funktion nur ausgeführt, wenn Baurus vom Spieler getroffen wird.
Nun wird das Skript "FnOnHitByPlayer" ausgeführt:
Code:
scn FnOnHitByPlayer
ref Ziel
ref Angreifer ;die Variablennamen sind egal
Begin Function { Ziel , Angreifer } ; hier werden die Variablen automatisch auf die Parameter gesetzt
; "Ziel" ist also der Actor der geschlagen wird
; "Angreifer" ist in diesem Fall immer der Spieler
message $Angreifer + " schlägt " + $Ziel ; die Message lautet dann: "Spieler schlägt Baurus" (wenn Baurus geschlagen wird)
Ziel.addItem Gold001 42 ; fügt dem Ziel 42 Goldstücke hinzu
end