Hallo fische
Was lernen wir in diesem Tutorial?
- ein AFK-System zu bauen
- es zu erweitern
Let's start with the System!
Was wird benötigt?
- 1ne Variable
- 2 Commands
Die Varable wird bei uns "IstAFK" heißen.
Wir definieren eine Variable mit "new" aber
wir definieren einen Bool da der nur 1 oder 0 returnen kann! (1 = true ; 0 = false)
//Am Anfang des Scriptes kommt
new bool:IstAFK[MAX_PLAYERS];
Beim Definieren ist der Standardwert eines Bools 0, also false.
Nun warum Bool?
Eine normale Variable reserviert ein stückchen Speicher im RAM.
Und da wir nur 1 / 0 benutzen ist der wohl sinnvoller.
Nun der CMD "/afk".
// Dies kommt unter "OnPlayerCommand"
if(strcmp(cmdtext, "/afk", true, 4) == false)
Zu Deutsch:
Überprüft ob der String "cmdtext" mit "/afk" übereinstimmt. Das "true" ist ein Bool und
entscheidet darüber ob zwischen Groß- und Kleinschreibung unterschieden werden muss.
Die "4" gibt dabei die Länge des Strings an, welcher mit "cmdtext" verglichen wird.
Das "== false" am Ende frägt ab ob die Abfrage false returnt.
{
Die Geschweifte-Klammer "eröffnet" den Codeblock sozusagen.
if(IstAFK[playerid] == false)
Überprüft ob "IstAFK" bei "playerid" zu false gleicht
{
Die Geschweifte-Klammer "eröffnet" den Codeblock sozusagen.
new str[20], pname[20];
GetPlayerName(playerid, pname, 20);
new str[20],
Definiert eine Variable mit max. 20 Zeichen die enthalten sein können.
pname[20];
Definiert ebenfalls eine Variable mit max 20 Zeichen.
GetPlayerName(playerid, pname, 20);
"fischt" sozusagen den Namen des Spielers raus und speichert diesen im string "pname" ab der
max. 20 Zeichen* enthält sonst kommt ein Error/Warning.
* Der Name darf max 20 Charaktere enthalten...
format(str, 256, "%s ist nun AFK!", pname, cmdtext[4]);
SendClientMessageToAll(0x4682B4AA, str);
[SYNTAX]: format(output[], len, const format[], {Float,_}:...)
Formatiert
eine Zeichenkette in die Variable rein.
SendClientMessageToAll(0x4682B4AA, str);
[SYNTAX]: SendClientMessageToAll((color, const message[]);
Sendet dem Clienten eine Message und das "ToAll" bedeutet, dass die Message an jeden Spieler gesendet wird.
IstAFK[playerid] = true;
TogglePlayerControllable(playerid, false);
IstAFK[playerid] = true;
Setzt den Inhalt des Bool's auf true.
TogglePlayerControllable(playerid, false);
Der Spieler wird gefreezed.
able = "fähig" also der Spieler wird nicht fähig
seinen Charackter zu Kontrollieren.
} else {
wenn die Variable "IstAFK" nicht false ist soll
SendClientMessage(playerid, COLOR_RED, "[ERROR]: Du bist schon AFK!");
}
return true;
}
eine Message zum Player rausgesendet werden wo drin steht "[ERROR]: Du bist schon AFK!".
Wir haben den ersten CMD bereits fertig er sollte funktionstüchtig sein!
Den /back CMD kann man auf die selbe Art&Weise coden nur, dass die Zahlen bei "IstAFK" auf 0 gesetzt werden müssen!
ZitatIhr benutzt doch nur Copy&Paste
Aus diesem Grund sollt ihr selbst den /back CMD
coden.
Ich bitte alle erfahrenen Scripter dabei nicht zu helfen ausser es nochmal zu erklären und
ich hoffe, dass jemand aus diesem Tutorial was gelernt hat!
TEIL 2 - COMMING SOON!!