invalid id ... -
iThePunisher - 16.02.2014
im making this command Set admin level and when i want to set myself lv 1 -2 etc it says invaild level ....
can anyone of you tell me what i made wrong?
pawn Код:
dcmd_setlevel(playerid,params[])
{
if(AccInfo[playerid][LoggedIn] == 1)
{
if(AccInfo[playerid][Level] >= 6 || IsPlayerAdmin(playerid))
{
new tmp [256];
new tmp2[256];
new Index;
tmp = strtok(params,Index);
tmp2 = strtok(params,Index);
if(!strlen(params))
{
new string[128];
format(string,sizeof(string),"Usage: /setlevel [PlayerID] [Level (0/5)]", ServerInfo[MaxAdminLevel]);
SendClientMessage(playerid,LIGHTBLUE2,string);
return SendClientMessage(playerid, orange, " will set admin lv");
}
new player1, level, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
player1 = strval(tmp);
if(!strlen(tmp2)) return
SendClientMessage(playerid, LIGHTBLUE2, "Usage: /setlevel [PlayerID] [Level (0/5)]") &&
SendClientMessage(playerid, orange, " will set admin lv");
level = strval(tmp2);
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID) {
if(AccInfo[player1][LoggedIn] == 1)
{
if(level > ServerInfo[MaxAdminLevel])
return SendClientMessage(playerid,red,"ERROR: Invalid Level");
if(level == AccInfo[player1][Level])
return SendClientMessage(playerid,red,"ERROR: Player is already this level");
SendCommandToAdmins(playerid,"SetLevel");
GetPlayerName(player1, playername, sizeof(playername));
GetPlayerName(playerid, adminname, sizeof(adminname));
new year,month,day;
new hour,minute,second;
getdate(year, month, day);
gettime(hour,minute,second);
Re: invalid id ... - Emmet_ - 16.02.2014
Why are you using strtok? It's horribly inefficient - I suggest you use the sscanf2 plugin for the purpose of parameter splitting.
pawn Код:
dcmd_setlevel(playerid,params[])
{
if(AccInfo[playerid][LoggedIn] == 1)
{
if(AccInfo[playerid][Level] >= 6 || IsPlayerAdmin(playerid))
{
new
playername[MAX_PLAYER_NAME],
adminname[MAX_PLAYER_NAME],
string[128],
player1,
level;
if (!sscanf(params, "ud", player1, level))
{
format(string,sizeof(string),"Usage: /setlevel [PlayerID] [Level (0/5)]", ServerInfo[MaxAdminLevel]);
SendClientMessage(playerid,LIGHTBLUE2,string);
return SendClientMessage(playerid, orange, " will set admin lv");
}
else if (player1 != INVALID_PLAYER_ID &&)
{
if (AccInfo[player1][LoggedIn] == 1)
{
if (level > ServerInfo[MaxAdminLevel])
return SendClientMessage(playerid,red,"ERROR: Invalid Level");
if (level == AccInfo[player1][Level])
return SendClientMessage(playerid,red,"ERROR: Player is already this level");
SendCommandToAdmins(playerid,"SetLevel");
GetPlayerName(player1, playername, sizeof(playername));
GetPlayerName(playerid, adminname, sizeof(adminname));
new year,month,day;
new hour,minute,second;
getdate(year, month, day);
gettime(hour,minute,second);
Re: invalid id ... -
iThePunisher - 16.02.2014
it repeats the message of usage -_-
when i type /setlevel it shows again the same message
Usage: /setlevel [PlayerID] [Level (0/5)]
Re: invalid id ... - Emmet_ - 16.02.2014
My mistake, try this (haven't really scripted in a while, sorry):
pawn Код:
dcmd_setlevel(playerid,params[])
{
if(AccInfo[playerid][LoggedIn] == 1)
{
if(AccInfo[playerid][Level] >= 6 || IsPlayerAdmin(playerid))
{
new
playername[MAX_PLAYER_NAME],
adminname[MAX_PLAYER_NAME],
string[128],
player1,
level;
if (sscanf(params, "ud", player1, level))
{
format(string,sizeof(string),"Usage: /setlevel [PlayerID] [Level (0/5)]", ServerInfo[MaxAdminLevel]);
SendClientMessage(playerid,LIGHTBLUE2,string);
return SendClientMessage(playerid, orange, " will set admin lv");
}
else if (player1 != INVALID_PLAYER_ID &&)
{
if (AccInfo[player1][LoggedIn] == 1)
{
if (level > ServerInfo[MaxAdminLevel])
return SendClientMessage(playerid,red,"ERROR: Invalid Level");
if (level == AccInfo[player1][Level])
return SendClientMessage(playerid,red,"ERROR: Player is already this level");
SendCommandToAdmins(playerid,"SetLevel");
GetPlayerName(player1, playername, sizeof(playername));
GetPlayerName(playerid, adminname, sizeof(adminname));
new year,month,day;
new hour,minute,second;
getdate(year, month, day);
gettime(hour,minute,second);