Super Einstellung Zonk, so bringst dus anderen gleich "richtig" bei. Achtung, kluge Köpfe merken die Ironie.
1.) Für was zur Hölle braucht man 3 (!) strings mit der Größe 256 ?!
2.) Dieses #pragma tabsize 0 macht deinen Code unleserlich und sollte NICHT verwenden werden. Richtiges Einrücken ist nicht schwer, gibt genug Tutorials darüber
Um einen Command zu erstellen, kannst du 2 Möglichkeiten nutzen
1.) dcmd & sscanf:
Es gibt schon genug darüber zu lesen, wenn man nach dcmd sucht. Auch in der Wiki ist ein entsprechender Eintrag, in dem sogar beide Methoden kurz dargestellt werden.
http://wiki.sa-mp.com/wiki/Fast_Commands
Grunsärtlich erstellst du deine Befehle in OnPlayerCommandText. Die Befehle stehen aber außerhalb dieses Callbacks, innerhalb von OnPlayerCommandText ist also nur eine Art "Weiterleitung". Mit sscanf kannst du dann die Paramter auslesen, die an einen Befehl rangehängt wurden:
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(Befehl1 /* Befehlsname, in diesem Fall /Befehl1 */, 7 /* Befehl1 hat 7 Zeichen */, cmdtext);
dcmd(ZweiterBefehl, 13, cmdtext);
dcmd(Drei, 4, cmdtext);
return 1;
}
dcmd_Befehl1(playerid, params[]) // Dein eigentlicher Befehl von "Befehl1"
{
// SPieler hat /Befehl1 eingeben
// Parameter auslesen mit sscanf oder strtok
// Rest vom Code
}
dcmd_Drei(playerid, params[]) // Dein eigentlicher Befehl von "Befehl1"
{
// SPieler hat /Drei eingeben
// Parameter auslesen mit sscanf oder strtok
// Rest vom Code
}
[...]
2. Methode ohne dcmd
Dabei wird der ganze Code direkt in OnPlayerCommandText geschrieben und mit strtok die Eingaben und Paramter überprüft. Ein Tutorial gibts auch hier irgendwo wahrscheinlich
public OnPlayerCommandText(playerid, cmdtext[])
{
new
string[128], // 1 String mit der Größe 128 reicht ! Man kann diesen string auch für die Paramter oder NAchricht ausgeben formatieren immer wieder verwenden
idx;
string = strtok(cmdtext, idx); // Die EIngabe des Spielers bis zum ersten Leerzeichen (kurz: den Befehl) in string speichern
if(strcmp(cmd,"/Befehl1",true)==0)
{
// Spieler hat /Befehl1 eingegben
// Parameter auslesen usw.
string = strtok(cmdtext, idx); // Die Eingabe des Spielers ab dem 1. Leerzeichen bis zum 2. (kurz: weitere Parameter) in string speichern
if(string[0] == 0) return SendClientMessage(playerid, FARBE, "Falsche Eingabe");
/*
Weiterführender Code, z.B. mit strval(string); den Inhalt des strings in einen Zahlenwert umwandeln oder den string weiter vergleichen oder den
String ausgeben, oder einfach keine weiteren Paramter überprüfen, dann kannst du dir das ab dem 2. strtok sparan
*/
}
else if(strcmp(cmd,"/Zwei",true)==0)
{
// Spieler hat /Zwei eingegben
// Parameter auslesen usw.
}
return 1;
}