CMD:setlevel(playerid, params[]) { new string[MAX_PLAYER_NAME+64], pname[MAX_PLAYER_NAME], tname[MAX_PLAYER_NAME], targetid, level; if((IsPlayerAdmin(playerid)) || PlayerInfo[playerid][AdminLevel] >= 3) { if(sscanf(params, "ui", targetid, level)) return SendClientMessage(playerid, -1, "USAGE: /makeadmin (playerid) (level)"); for(new i; i <= MAX_PLAYERS; i++) { if((!IsPlayerConnected(targetid)) || (targetid == INVALID_PLAYER_ID)) SendClientMessage(playerid, 0xFF0000, "Player Is Not Connected!"); else { if(level < 1 || level > 4) return SendClientMessage( playerid, 0xFF0000, "available levels (1-4)"); GetPlayerName(playerid, pname, sizeof(pname)); GetPlayerName(targetid, tname, sizeof(tname)); format(string, sizeof(string), "Administrator %s has promoted %s to level %i admin", pname, tname, level); SendClientMessageToAll(-1, string); PlayerInfo[targetid][AdminLevel] = level; new INI:File = INI_Open(AdminPath(targetid)); INI_SetTag(File, "AdminData"); INI_WriteInt(File, "AdminLevel", PlayerInfo[targetid][AdminLevel]); INI_Close(File); return 1; } } } else { SendClientMessage( playerid, 0xFF0000, "you can't use this command!"); return 1; } return 1; }
CMD:setlevel(playerid, params[])
{
if(!IsPlayerAdmin(playerid) || PlayerInfo[playerid][AdminLevel] < 3) SendClientMessage( playerid, 0xFF000000, "you can't use this command!");
else
{
new targetid, level;
if(sscanf(params, "ui", targetid, level)) SendClientMessage(playerid, -1, "USAGE: /makeadmin (playerid) (level)");
else if(targetid == INVALID_PLAYER_ID || !IsPlayerConnected(targetid)) SendClientMessage(playerid, 0xFF000000, "Player Is Not Connected!");
else if(level < 1 || level > 4) SendClientMessage(playerid, 0xFF000000, "available levels (1-4)");
else
{
new
string[MAX_PLAYER_NAME + 64],
pname[MAX_PLAYER_NAME + 1],
tname[MAX_PLAYER_NAME + 1]
;
GetPlayerName(playerid, pname, sizeof(pname));
GetPlayerName(targetid, tname, sizeof(tname));
PlayerInfo[targetid][AdminLevel] = level;
format(string, sizeof(string), "Administrator %s has promoted %s to level %i admin", pname, tname, level);
SendClientMessageToAll(-1, string);
new INI:File = INI_Open(AdminPath(targetid));
INI_SetTag(File, "AdminData");
INI_WriteInt(File, "AdminLevel", level);
INI_Close(File);
}
}
return 1;
}
CMD:setlevel(playerid, params[])
{
new
string[MAX_PLAYER_NAME+64],
pname[MAX_PLAYER_NAME],
tname[MAX_PLAYER_NAME],
targetid,
level;
if((IsPlayerAdmin(playerid)) || PlayerInfo[playerid][AdminLevel] >= 3)
{
if(sscanf(params, "ui", targetid, level))
{
return SendClientMessage(playerid, 0xFF0000, "USAGE: /makeadmin (playerid) (level)");
}
printf("** %i, %i, '%s'", playerid, targetid, params);
if((!IsPlayerConnected(targetid)) || (targetid == INVALID_PLAYER_ID))
{
SendClientMessage(playerid, 0xFF0000, "Player Is Not Connected!");
}
else
{
if(level < 1 || level > 4)
{
return SendClientMessage( playerid, 0xFF0000, "available levels (1-4)");
}
GetPlayerName(playerid, pname, sizeof(pname));
GetPlayerName(targetid, tname, sizeof(tname));
format(string, sizeof(string), "Administrator %s has promoted %s to level %i admin", pname, tname, level);
SendClientMessageToAll(-1, string);
PlayerInfo[targetid][AdminLevel] = level;
new INI:File = INI_Open(AdminPath(targetid));
INI_SetTag(File, "AdminData");
INI_WriteInt(File, "AdminLevel", PlayerInfo[targetid][AdminLevel]);
INI_Close(File);
return 1;
}
}
else
{
SendClientMessage( playerid, 0xFF0000, "you can't use this command!");
return 1;
}
return 1;
}
Hey Eoussama,
What Rdx means by the above is that line 10 you run the code to set their level (MAX_PLAYERS + 1) times - because you have a for loop <= MAX_PLAYERS there. In terms of it only ever working for you - your sscanf looks fine to me, but there are an array of oddities that could be causing us to miss something further on in addition to the for loop. Could you try running the below and pasting the console output and what happens ingame? Also string[MAX_PLAYER_NAME+64] is probably too small - I would put it as string[MAX_PLAYER_NAME*2 + 64] if you want to continue with two names! PHP код:
|
In the server console it should have printed out ** with two numbers and a string - mind pasting that to me?
|