Ersteinmal, dieses Tutorial ist eher optional,
es erleichtert euch die Arbeit und ist für alle gedacht,
die die Grundlagen verstanden haben und anwenden koennen.
1. Was ist ein Callback?
Callbacks sind Funktionen, welche aufgerufen werden, wenn ein bestimmtes Ereignis eintritt.
Diese liefern dann bestimmte Werte usw. zurück, z.b.:
einen Integer ( Ganze Zahl, z.b. 1 oder -5 ),
einen String ( Zeichenkette, z.b. "Hallo" )
oder auch einen boolschen Ausdruck ( true oder false ).
2. Callbacks in MTA
MTA verfügt bereits über verschiedenste Arten von Callbacks, z.b.
liefert die Funktion
x, y und z-Koordinate eines Objektes zurück.
Dieses Abfrage kann dann z.b. zum belegen von Variabeln
benutzt werden, damit das Script flexibel bleibt und man nicht jedes mal
neue Zahlen eintragen muss
Beispiel:
Die Variabeln x, y und z werden mit den Koordinaten des Elements "player" ( z.b. ein Spieler ) belegt
und anschliessend verwendet, um ein Fahrzeug an der Position zu erstellen.
3. Callbacks selber schreiben
Nehmen wir nun an, dass man abfragen moechte, ob ein bestimmtes
Fahrzeug ein "Mesa" ( kleinerer Jeep ) ist.
Dazu muessen wir nun zunächst das Callback schreiben:
function isVehicleAMesa ( theVehicle )
if getElementModel ( theVehicle ) == 500 then
return true
else
return false
end
end
Wird nun die Funktion gerufen,
belegt die Funktion die Variabel aus dem "Kopf" mit dem ersten Argument, das weiter gegeben wurde:
Das Callback isVehicleAMesa wird gerufen und die Variabel theVehicle des Callbacks
mit dem Fahrzeug des Spielers gefuellt.
Wieder wird das Callback gerufen und die Variabel theVehicle mit dem Fahrzeug des Spielers
gefuellt, jedoch wird ebenfalls false als 2. Argument weitergegeben - da jedoch im "Kopf" des Callbacks
nur eine Variabel belegt werden soll, ist der Effekt der selbe, wie im oberen Beispiel.
Wollte man false ebenfalls weitergeben, so muesste man im Kopf des Callbacks
eine weitere Variabel angeben, die mit dem Wert gefuellt werden soll:
Im Script wuerde man dann z.b. folgendes verwenden:
function checkIfItsAMesa ( vehicle ) -- Die Funktion, die gerufen wird, falls ein Spieler ein Fahrzeug betritt.
if isVehicleAMesa ( vehicle ) then -- Unser Callback wird gerufen - falls das Fahrzeug ein Mesa ist, trifft der erste Fall zu, da das Callback isVehicleAMesa den Wert true zurückliefert
outputChatBox ( "Das Fahrzeug ist ein Mesa.", source )
else -- Wenn das Fahrzeug kein Mesa ist, tritt der else-fall in Kraft
outputChatBox ( "Das Fahrzeug ist kein Mesa.", source )
end
end
addEventHandler ( "onPlayerVehicleEnter", getRootElement(), checkIfItsAMesa )
Wird noch ergänzt, falls ich mich irgendwo vertippt habe, bitte sagen