[HELP] array index of bounds command setskin -
Luca12 - 03.09.2014
Hello when I use cmd setskin I get this in server log
[23:02:49] [debug] Run time error 4: "Array index out of bounds"
[23:02:49] [debug] AMX backtrace:
[23:02:49] [debug] #0 001aa658 in public cmd_setskin (playerid=1, params[]=@0x028b5a50 "nedim 217") at C:\Users\Barcelona\Desktop\GURP MYSQL Gamemode v4.0.0\gamemodes\GURP.pwn:20250
here is that command
pawn Код:
CMD:setskin(playerid,params[])
{
if(PlayerInfo[playerid][Admin] >= 1337 || IsPlayerAdmin(playerid))
{
new string[128],id,skinid,hIme[2][MAX_PLAYER_NAME];
if(sscanf(params,"ui",id,skinid)) return SCM(playerid,COLOR_GRAD2,"{FFAF00}Koristite: {FFFFFF}/setskin [user name/user ID] [ID skina]");
if(skinid < 1 || skinid > 299) return SCM(playerid,COLOR_GRAD2,"{F81414}[Greska!] {C3C3C3}ID of skin must be between 1 i 299!");
RPIme(id,hIme[0]);
RPIme(playerid,hIme[1]);
PlayerInfo[id][Skin] = skinid;
format(string,sizeof(string),"*Admin %s is set you a skin, skin ID: %d.",hIme[1],skinid);
SendClientMessage(id,SVIJETLOPLAVA,string);
format(string,sizeof(string),"*Postavili ste igracu %s skin,id Skina: %d.",hIme[0],skinid);
SendClientMessage(playerid,COLOR_LIGHTRED,string);
SetPlayerSkin(id,PlayerInfo[id][Skin]);
}
return 1;
}
Re: [HELP] array index of bounds command setskin -
xyzccode - 03.09.2014
Код:
CMD:setskin(playerid,params[])
{
if(PlayerInfo[playerid][Admin] >= 1337 || IsPlayerAdmin(playerid))
{
new string[128],id,skinid,hIme1[MAX_PLAYER_NAME], hIme2[MAX_PLAYER_NAME];
if(sscanf(params,"ui",id,skinid)) return SCM(playerid,COLOR_GRAD2,"{FFAF00}Koristite: {FFFFFF}/setskin [user name/user ID] [ID skina]");
if(skinid < 1 || skinid > 299) return SCM(playerid,COLOR_GRAD2,"{F81414}[Greska!] {C3C3C3}ID of skin must be between 1 i 299!");
RPIme(id,hIme1);
RPIme(playerid,hIme2);
PlayerInfo[id][Skin] = skinid;
format(string,sizeof(string),"*Admin %s is set you a skin, skin ID: %d.",hIme2,skinid);
SendClientMessage(id,SVIJETLOPLAVA,string);
format(string,sizeof(string),"*Postavili ste igracu %s skin,id Skina: %d.",hIme1,skinid);
SendClientMessage(playerid,COLOR_LIGHTRED,string);
SetPlayerSkin(id,PlayerInfo[id][Skin]);
}
return 1;
}
Try now.
Re: [HELP] array index of bounds command setskin -
Luca12 - 03.09.2014
it will send a error the problem is the line PlayerInfo[id][Skin] = skinid;
Re: [HELP] array index of bounds command setskin -
Threshold - 03.09.2014
This should be right:
pawn Код:
CMD:setskin(playerid,params[])
{
if(PlayerInfo[playerid][Admin] < 1337 && !IsPlayerAdmin(playerid)) return 1;
new id, skinid;
if(sscanf(params, "ui", id, skinid)) return SCM(playerid, COLOR_GRAD2, "{FFAF00}Koristite: {FFFFFF}/setskin [user name/user ID] [ID skina]");
if(!(0 <= skinid <= 299)) return SCM(playerid, COLOR_GRAD2, "{F81414}[Greska!] {C3C3C3}ID of skin must be between 1 i 299!");
if(id == INVALID_PLAYER_ID || !IsPlayerConnected(id)) return SCM(playerid, COLOR_GRAD2, "Player is not connected.");
new hIme[2][MAX_PLAYER_NAME], string[75];
RPIme(id, hIme[0]);
RPIme(playerid, hIme[1]);
PlayerInfo[id][Skin] = skinid;
format(string, sizeof(string), "*Admin %s has changed your skin to skin ID: %d.", hIme[1], skinid);
SendClientMessage(id, SVIJETLOPLAVA, string);
format(string, sizeof(string), "*Postavili ste igracu %s skin, id Skina: %d.",hIme[0], skinid);
SendClientMessage(playerid, COLOR_LIGHTRED, string);
SetPlayerSkin(id, PlayerInfo[id][Skin]);
return 1;
}
You haven't really stopped 'id' from being an invalid number. So if you enter a player who is not connected, it is most likely going to crash.