Schreib dir doch eine Funktion die den Rangnamen ausgibt:
Wird vielleicht nicht deinen Fehler beheben, jedoch ist dein Code leserlicher und das präventiert Fehler.
stock GetAdminRankName(adminlevel)
{
new returnname[30];
if(adminlevel == 0)
{
format(returnname, 30, "Spieler");
}
if(adminlevel == 1)
{
format(returnname, 30, "Supporter");
}
//[...]
return returnname;
}
ocmd:aduty(playerid, params[])
{
#pragma unused params
new string[256];
if(!pInfo[playerid][Adminlevel])return SendClientMessage(playerid, -1, "Du bist kein Administrator");
if(Aduty[playerid]
{
Aduty[playerid] = false;
SendClientMessage(playerid,Rot,"<< Du bist nicht länger als Admin angemeldet.");
format(string,sizeof(string),"<< %s ist nun als %s OffDuty >>",SpielerName(playerid), GetAdminRankName(pInfo[playerid][Adminlevel]);
SendClientMessageToAll(Rot,string);
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
strdel(pName,0,10);
SetPlayerName(playerid,pName);
}
else
{
Aduty[playerid] = true;
SendClientMessage(playerid,Rot,"<< Du bist nun als Admin angemeldet.");
format(string,sizeof(string),"<< %s ist nun als %s OnDuty >>",SpielerName(playerid), GetAdminRankName(pInfo[playerid][Adminlevel]);
SendClientMessageToAll(Rot,string);
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
strins(pName,"[WESTSIDE]",0);
SetPlayerName(playerid,pName);
}
return 1;
}
Alles anzeigen
Versuchs mal so in der Art, ansonsten benutz Debugmessages um deine Variablen zu überprüfen, zB. bevor geprüft wird ob jemand Admin ist: printf("[aduty] %s -> Adminrang %d"", SpielerName(playerid, pInfo[playerid][Adminlevel]);