Hallo Brotefische
HAbe ein /setrank gemacht aber ghet irgedwie net
wieso geht der cmd nicht wie ich will
if(strcmp(cmdtext, "/setrank", true) == 0)
{
new person = ReturnUser(strget(cmdtext,1));
new rank = strval(strget(cmdtext,2));
if(pDaten[playerid][leader] == 16)
{
tmp = strget(cmdtext,1);
if(!strlen(tmp) || !strlen(strget(cmdtext,2)))
{
SendClientMessage(playerid, COLOR_WHITE, "Benutze: /setrank [ID] [Rank 1-6]");
return 1;
}
}
if(pDaten[playerid][leader] == 16)
{
if(IsPlayerConnected(person))
{
if(pDaten[person][Team] == 16)
{
format(string, sizeof(string), "* Du wurdest von %s auf Rank %d gemacht.", sendername,rank);
SendClientMessage(person, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Du hast %s auf Rank %d gemacht.", person,rank);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
pDaten[person][fRank] = rank;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Spieler ist nicht in deiner Fraktion");
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Spieler ist nicht Online");
}
}
SaveandUpdatePlayer(playerid);
SaveandUpdatePlayer(person);
return 1;
}
Was habe ich flasch gemacht
-
-
Errors, Warning s?
Was kommt Ingame ? -
Welche Fehler bekommst du genau?
Schreibe doch bitte den server_log oder die Fehlermeldungen des Kompilierers dazu! -
Erstmal überprüfen, ob der Nutzer die Parameter deines Befehls überhaupt geschrieben hat.
Jetzt würde, wenn man nur /setrank eingibt, Spieler 0 den Rang 0 bekommen. -
Fehler keine warnings keine.
Wie mache ich das jetzt das er das überprüft -
Beispiel am Rang:
new tmp[128];
tmp = strget(cmdtext,2);
if(!strlen(tmp)) return SendClientMessage( playerid, 0xFF0000FF, "Keinen Rang angegeben.");
new rank = strval(tmp);
Das gleiche machst du mit dem Spieler. Die tmp-Variable kannst du nochmal dafür verwenden. -
Zitat
Beispiel am Rang:
PAWN Quelltext
1
2
3
4
new tmp[128];
tmp = strget(cmdtext,2);
if(!strlen(tmp)) return SendClientMessage( playerid, 0xFF0000FF, "Keinen Rang angegeben.");
new rank = strval(tmp);Das gleiche machst du mit dem Spieler. Die tmp-Variable kannst du nochmal dafür verwenden.
das returnt dann was. Es ist ja nur wenn du genau /setrank eingibst oder?
-
Er beendet den Callback dann, wenn der Parameter Rang beim Verwenden des Befehls nicht gesetzt wird.
-
Beispiel am Rang:
new tmp[128];
tmp = strget(cmdtext,2);
if(!strlen(tmp)) return SendClientMessage( playerid, 0xFF0000FF, "Keinen Rang angegeben.");
new rank = strval(tmp);
Das gleiche machst du mit dem Spieler. Die tmp-Variable kannst du nochmal dafür verwenden.Wozu strlen die Funktion wird nur benötigt um die Anzahl von Buchstaben wieder zu geben.
if(!tmp[0])return SendClientMessage( playerid, 0xFF0000FF, "Verwendung: /Befehl [Rank].");ist da doch viel schonender.
-
hm hab es gemacht jetzt schaut es so aus und es geht immer noch net
if(strcmp(cmdtext, "/setrank", true) == 0)
{
new tmp3[128];
new tmp2[128];
tmp3 = strget(cmdtext,2);
tmp2 = strget(cmdtext,1);
new rank = strval(tmp);
new person = strval(tmp2);
if(pDaten[playerid][leader] == 16)
{
if(!strlen(tmp3) || !strlen(tmp2)) return SendClientMessage(playerid, COLOR_WHITE, "Benutze: /setrank [ID] [Rank 1-6]");
if(!strlen(tmp3)) return SendClientMessage( playerid, 0xFF0000FF, "Keinen Rang angegeben.");
if(!strlen(tmp2)) return SendClientMessage( playerid, 0xFF0000FF, "Keinen Spieler angegeben.");
}
if(pDaten[playerid][leader] == 16)
{
if(IsPlayerConnected(person))
{
if(pDaten[person][Team] == 16)
{
format(string, sizeof(string), "* Du wurdest von %s auf Rank %d gemacht.", sendername,rank);
SendClientMessage(person, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "* Du hast %s auf Rank %d gemacht.", person,rank);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
pDaten[person][fRank] = rank;
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Spieler ist nicht in deiner Fraktion");
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Spieler ist nicht Online");
}
}
SaveandUpdatePlayer(playerid);
SaveandUpdatePlayer(person);
return 1;
} -
Der Befehl muss am anfang auch per strget gesplittet werden.
Setz mal an jedem Ende des Befehls ein "return 1;". Damit ein Wert zurück gegeben wird.
Sprich wo der Rank gesetzt wird oder wo die Narrichten kommen das man den Befehl nicht ausführen kann. -
Geht irgend wie nicht kann mir mal einer ein befehl machen
-
Was geht nicht, oder was passiert, wenn du den Befehl ausführst?
RFTs Methode, die Eingabe des Parameters zu überprüfen, ist von der Ausführung doppelt so schnell.
-
nur /setrank geht mache ich /setrank 1 1 ist unknow...
-
breadfish.de
Hat das Thema geschlossen.