Hallo,
Wie mache ich bei Script /god An und aus wenn jemand
das command falsch schreibt mit /god tralala oder /god Anfo
das da dann steht Verwendung: /god [An/Aus]
Hallo,
Wie mache ich bei Script /god An und aus wenn jemand
das command falsch schreibt mit /god tralala oder /god Anfo
das da dann steht Verwendung: /god [An/Aus]
mit strcmp müsste das gehen
Erstmal brauchst du die strtok Funktion:
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
Diese fügst du am besten ganz unten im Script ein.
Unter OnPlayerCommandText schreibst du folgendes:
new cmd[256], idx;
cmd = strtok(cmdtext, idx);
if(!strcmp("/god", cmdtext, true))
{
new param[256];
param = strtok(cmdtext, idx);
if(!strlen(param))
{
SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /God[an|aus]");
return 1;
}
if(!strcmp("an", param, true))
{
// Code
}
else if(!strcmp("aus", param, true))
{
// Code
}
else
{
SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /God[an|aus]");
return 1;
}
}
BlackLegend
Hallo BlackLegend,
Ich hab den Script jetzt mal angeguckt und in mein
GameMode rein getan und die entsprechene Codes
rein gemacht.
Wenn ich den command /god an oder aus eintippe
taucht im chat SERVER:Unknown Command.
Code wird auch nicht bei if(!strcmp("an", param, true))und
else if(!strcmp("aus", param, true)) benutzt.
Der Code:
new cmd[256], idx;
cmd = strtok(cmdtext, idx);
if(!strcmp("/god", cmdtext, true))
{
new param[256];
param = strtok(cmdtext, idx);
if(!strlen(param))
{
SendClientMessage(playerid,ROT,"Benutzung: /God[an|aus]");
return 1;
}
if(!strcmp("an", param, true))
{
SendClientMessage(playerid,GRÜN,"Dein God Modus wurde Aktiviert.");
SetPlayerHealth(playerid,99999999999999);
// Code
}
else if(!strcmp("aus", param, true))
{
SendClientMessage(playerid,ROT,"Dein God Modus wurde Deaktiviert.");
SetPlayerHealth(playerid,100);
// Code
}
else
{
SendClientMessage(playerid,ROT,"Benutzung: /God[an|aus]");
return 1;
}
}
return 0;
}
if(!strcmp("/god", cmd, true))
{
new param[256];//Der 1. Parameter, einfach ein String
param = strtok(cmdtext, idx);//Splittet den eingegebenen Befehl nach Leerzeichen und deklariert param als 1. Parameter, idx ist der aktuelle Parameter (1, 2, 3, etc.)
if(!strlen(param))//strlen liest aus, aus wievielen Zeichen der String (param) besteht, wenn das Ergebnis 0 ist, wurde kein Parameter übergeben.
{
SendClientMessage(playerid,ROT,"Benutzung: /God[an|aus]");
return 1;
}
if(!strcmp("an", param, true))//Vergleicht zwei strings, param und "an", Groß- und Kleinschreibung wird ignoriert. Wenn also der 1. Parameter (param) gleich "an" ist, wird der Godmode aktiviert.
{
SendClientMessage(playerid,GRÜN,"Dein God Modus wurde Aktiviert.");
SetPlayerHealth(playerid,99999999999999);
// Code
}
else if(!strcmp("aus", param, true))//Fals nicht "an" sondern "aus" als Parameter gewählt wurde, wird der Godmode deaktiviert
{
SendClientMessage(playerid,ROT,"Dein God Modus wurde Deaktiviert.");
SetPlayerHealth(playerid,100);
// Code
}
else//Wenn weder "an" noch "aus" als Parameter gewählt wurden, wird eine Infonachricht ausgegeben.
{
SendClientMessage(playerid,ROT,"Benutzung: /God[an|aus]");
return 1;
}
return 1;
}
So, jetzt sollte es eigentlich funktionieren.
Hat nur ein return 1; gefehlt und die erste Abfrage war falsch.
//Edit: Erklärungen hinzugefügt.
BlackLegend
ok jetzt hat es Funktioniert.
Danke für script
und Erklärung