Guten Abend,
.:: Da die Tutorialsektion von MTA-SA momentan anscheinend am rumbuggen ist, schreibe ich mein MTA-Tutorial einfach mal hier in die MTA-SA Scripting Base ::.
Da der Titel bereits alles sagt fange ich mal direkt an ...
Heute zeige ich euch, wie man einfach einen Befehl mit Parametern erstellen kann...
Da es sich um einen Command handelt brauchen wir (wer hätts gedacht?) einen CommandHandler.
Die Syntax dazu lautet wie folgt:
bool addCommandHandler ( string commandName, function handlerFunction, [bool restricted = false, bool caseSensitive = true] )
Also brauchen wir als erstes den Namen des Befehls. Wir erstellen und nun einen /veh bzw /v Befehl. Dazu erstellen wir uns 2 commandHandler:
Das wäre schonmal ein Anfang. Würde man einen Normalen /veh daraus machen, kann man es auch einfach so schreiben:
Und nun kommen wir zu der function, die bei Command folgende Syntax beinhaltet:
Ich habe nun bewusst playerid und cmdtext geschrieben, damit die, die PAWN können, sich leichter ein Bild machen können,
da wahrscheinlich ein großteil hier immernoch PAWN-Fische sind ..
Unter args kommen die Argumente bzw Parameter des Befehls rein. Wir brauchen vehid..
Also würde due function so aussehen:
Und in unseren commandHandler bauen wir es als handlerFunction (siehe Syntax oben) so nun rein:
Als nächstes werden wir abfragen, ob der Parameter ausgefüllt wurde mit einer einfachen If-Abfrage.
Dabei wird nil verwendet, was soviel wie leer heißen soll.
Für die, die es nicht wissen: Hier gibt es keine {} Klammern für die Funktionen: end ist hier sozusagen die Klammer:
Bedeutet sozusagen das hier:
Also unser Command hat nun eine Abfrage, ob der Parameter ausgefüllt wurde. Nun müssen wir dazu eine Error-Message ausgeben:
Dazu verwenden wir:
bool outputChatBox ( string text [, element visibleTo=getRootElement(), int r=231, int g=217, int b=176, bool colorCoded=false ] )
Also hier unsere Error-Message, die in Grau erscheint:
Die 150,150,150 sind der Rot-Grün-Blau-Anteil. 150,150,150 == Grau..
Höchste Zahl ist 255.. 255,255,255 ist demnach Weiß.
Jetzt noch einen else reinhauen, falls die Parameter angegeben wurden.
Der ganze Code müsste dann so aussehen momentan:
addCommandHandler( { "veh", "v" },
function( playerid, cmdtext, vehid )
if vehid == nil then
outputChatBox( "Fehler: [Verwende]:: /veh <ModelID>",playerid,150,150,150,false)
else
end
end
)
Wie ihr seht, steht kein end vor dem else, da das end wirklich erst ganz am Ende der "Abfragen-Reihe" steht.
Nun müssen wir als erstes die Position des Spieler abfragen, der den Command verwendet. Den Player fragen wir über (siehe commandHandler Parameter)
playerid ab.. Die Position fragt mal mit getElementPosition ab... Das Element hierbei ist einfach der Spieler.
Das local ist übrigend das selbe, wie das new in PAWN, damit werden Variablen erstellt.
Und nun kommt endlich der Teil, an dem das Auto erstellt wird. Hier ist mal die Syntax dazu:
vehicle createVehicle ( int model, float x, float y, float z [, float rx, float ry, float rz, string numberplate, bool bDirection, int variant1, int variant2 ] )
Wir erstellen uns nun unser Auto mit der Variable check_create.. Weiter unten werden ihr sehen, warum ich es so mache.. Ihr könnt jedoch auch einfach nur das
Auto erstellen, das ist keine Pflicht, ist aber mMn besser.
x,y,z wurden ja bereits definiert oben unter getElementPosition..
Nun seht ihr, wozu das check_create gedacht ist:
Damit könnt ihr nun abfragen, ob das Auto erstellt wurde (alles hat funktioniert) oder ob es nicht erstellt wurde (fehler in den Parametern)...
if not check_create then
outputChatBox( "Es gab ein Problem beim Erstellen des Fahrzeugs. Bitte überprüfe deine Parameter.",playerid,150,150,150,false)
else
outputChatBox( "Du hast dir erfolgreich ein Fahrzeug gespawnt.",playerid,20,200,20,false)
end
Nun ist der Befehl so gut wie fertig, und damit hat man nun einen /veh Befehl. Wenn ihr alles verstanden habt, merkt ihr sicher, dass
es Theoretisch viel leichter ist und vor allem nicht so umständlich wie in PAWN mit den params, sscanf usw..
Das wurde alles spontan geschrieben, bitte schreibt hier drunter, wenn ich irgendwo einen Fehler in der Erklärung bzw. im Code habe.
Das wars dann mit meinem #1 MTA-Tutorial..
Danke fürs lesen, und viel Glück beim Scripten
mfg,
Sh13