Hui,
in diesem Tutorial zeige ich euch wie man einen Befehl mit mehreren Funktionen macht z.B. /Duty hat dann 2 Funktionen einmal in Duty gehen und dann bei wiederholter Eingabe aus Duty gehen.
Wie geht das?
Ist ganz Simpel, mit einer Variabel.
Zuerst müssen wir eine für alle erstellen, wir nennen sie test
new test[MAX_PLAYERS]; //MAX_PLAYERS steht für alle Spieler (?)
Ok, springen wir nun zum Befehl
Hier ist erstmal ein Beispiel Befehl
if (strcmp(cmd, "/test", true) ==0 )
{
if(test[playerid] == 0) //Wenn die Variable Test auf false/0 ist (0 = false, false = 0)
{
SendClientMessageToAll(0xFFFF00AA,"**Test ist jetzt auf true!"); //Sendet eine Nachricht in Gelb an alle
test[playerid] = 1; //Jetzt ist die Variabel test auf True/1 (1 = true, true = 1)
return 1;
}
else if(test[playerid] == 1) //Wenn er den Befehl eingibt und die Variable diesmal auf True/1 ist weil man den Befehl schonmal eingegeben hat
{
SendClientMessageToAll(0xFFFF00AA,"**Test ist jetzt auf false!");//Sendet eine Nachricht in Gelb an alle
test[playerid] = 0; //die variabel test ist jetzt wieder auf false/0
}
return 1; //Der Befehl wurde erfolgreich beendet
}
Fertig, sage ich ja recht simpel, weil man die Variabel einfach immer nur umstellen muss
Jetzt kann man auch viel komplexere Scripte machen
if (strcmp(cmd, "/adminduty", true) ==0 )
{
if(!IsPlayerAdmin(playerid))
{
return SendClientMessage(playerid,Rot, "Du bist kein Admin!");
}
if(duty[playerid] == 0)
{
new name[MAX_PLAYER_NAME];
new string[100];
GetPlayerName(playerid,name,sizeof(name));
format(string, sizeof(string), "**Admin %s ist nun im Dienst", name);
SendClientMessageToAll(Gelb,string);
duty[playerid] = 1;
return 1;
}
else if(duty[playerid] == 1)
{
new name[MAX_PLAYER_NAME];
new string[100];
GetPlayerName(playerid,name,sizeof(name));
format(string, sizeof(string), "**Admin %s ist nicht mehr im Dienst", name);
SendClientMessageToAll(Gelb,string);
duty[playerid] = 0;
return 1;
}
return 1;
}
Cool oder?
Einfach immer die Variabel umstellen
MfG