Hmmm, bei dem Befehl stimmt so einiges nicht.
Schau dir eventuell nochmal ein paar Tutorials zu format etc an.
if(sscanf(params, "us", PID, str, rank))
"us" sagt du hast 2 Variablen. Eine die was mit einer spielerid zu tun hat und einen string. Dann gibst du aber 3 an...wozu das mit dem str?
Und wieso rank als String, wenn du es als Integer nutzen magst?
Dann fragst du per switch & case den Rang ab, noch bevor du ihn überhaupt gesetzt hast.
Und im Format unten, hast du wieder unnötig str stehen.
und dann weist du einer Integer Variable...einen String mit dem Inhalt "Moderator" z.B. zu.........
Also, dass dir da keine Errors/Warnings angezeigt werden grenzt schon nahezu an ein Wunder
Besser wäre sowas (orientiert sich an der 2. Version von dem, was ich oben geschrieben hatte):
CMD:setadmin(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 1)return SendClientMessage(playerid, -1,"Du bist kein Admin. Du kannst den Befehl nicht nutzen!");
new PID, str[128], rank;
if(sscanf(params, "ud", PID, rank))return SendClientMessage(playerid, -1 ,"[Benutze] /setadmin [playerid][rank]");
if(!PlayerInfo[PID][pLoggedIn])return SendClientMessage(playerid, -1, "Spieler ist nicht eingeloggt!");
format(str, sizeof(str), "'%s' wurde zu einem Admin ernannt mit dem Rank: %s",getName(PID),GetAdminRangName(rank));
SendClientMessageToAll(-1, str);
PlayerInfo[PID][pAdmin] = rank;
SaveUserStats(PID);
return 1;
}
Alles anzeigen