[HELP] array index of bounds command setskin
#1

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;
}
Reply
#2

Код:
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.
Reply
#3

it will send a error the problem is the line PlayerInfo[id][Skin] = skinid;
Reply
#4

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)