[debug] Run time error 4: "Array index out of bounds"
#1

Hi guys! Can somebody help me to detect the problem from this script?

Код:
[16:00:55] [debug] Run time error 4: "Array index out of bounds"
[16:00:55] [debug]   Accessing element at index 65535 past array upper bound 499
[16:00:55] [debug] AMX backtrace:
[16:00:55] [debug] #0  0002e848 in public OnPlayerDeath () from gm.amx
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    SetPlayerWantedLevel(playerid, 0);
    new name[MAX_PLAYER_NAME];
    new string[256];
    new playercash;
    new victimteam;
    new Float:px,Float:py,Float:pz;
    new killerteam;
    victimteam = gTeam[playerid];
    killerteam = gTeam[killerid];
    gPlayerSpawned[playerid] = 0;
    PlayerInfo[playerid][pInvWeapon] = 0;
    PlayerInfo[playerid][pInvAmmo] = 0;
    GetPlayerName(playerid, name, sizeof(name));
    PlayerInfo[playerid][pLocal] = 255;
    GetPlayerPos(playerid, px, py, pz);
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
    if( killerid != INVALID_PLAYER_ID )
    {
        if(GetPlayerState(killerid) == 2)
        {
            if(ProxDetectorS(20, killerid, playerid))
            {
                if(!IsPlayerInAnyVehicle(playerid))
                {
                    if(PlayerInfo[killerid][pMember] == 1 || PlayerInfo[killerid][pLeader] == 1 || PlayerInfo[killerid][pMember] == 2 || PlayerInfo[killerid][pLeader] == 2)
                    {
                        SendClientMessage(killerid, COLOR_YELLOW, "** That was a drive-by kill. Don't abuse it.");
                        return 1;
                    }
                    SetPlayerCriminal(killerid, 255, "Manslaughter");
                    return 1;
                }
            }
        }
    }
    if (PlayerInfo[killerid][pAdmin] < 1)
    {
        if(reason == 38)
        {
            new kstring[128];
            new kickname[MAX_PLAYER_NAME];
            if(IsPlayerConnected(killerid))
            {
                GetPlayerName(killerid, kickname, sizeof(kickname));
                format(string, 256, "[ADMIN] [%d]%s just killed a [%d]%s with minigun.", killerid, kickname, playerid, name);
                ABroadCast(COLOR_LIGHTRED, string, 1);
                printf("%s", kstring);
                //Ban(killerid);
            }
        }
        if(reason == 35)
        {
            new kstring[128];
            new kickname[MAX_PLAYER_NAME];
            if(IsPlayerConnected(killerid))
            {
                GetPlayerName(killerid, kickname, sizeof(kickname));
                format(string, 256, "[ADMIN] [%d]%s just killed a player with a flamethrower and has been IP banned.", killerid, kickname);
                ABroadCast(COLOR_LIGHTRED, string, 1);
                printf("%s", kstring);
                Ban(killerid);
            }
        }
        if(reason == 9)
        {
            new kstring[128];
            new kickname[MAX_PLAYER_NAME];
            if(IsPlayerConnected(killerid))
            {
                GetPlayerName(killerid, kickname, sizeof(kickname));
                format(string, 256, "[ADMIN] [%d]%s just killed a player with a chainsaw and has been IP banned.", killerid, kickname);
                ABroadCast(COLOR_LIGHTRED, string, 1);
                printf("%s", kstring);
                Ban(killerid);
            }
        }
        if(reason == 16)
        {
            new kstring[128];
            new kickname[MAX_PLAYER_NAME];
            if(IsPlayerConnected(killerid))
            {
                GetPlayerName(killerid, kickname, sizeof(kickname));
                format(string, 256, "[ADMIN] [%d]%s just killed a player with grenades and has been IP banned.", killerid, kickname);
                ABroadCast(COLOR_LIGHTRED, string, 1);
                printf("%s", kstring);
                Ban(killerid);
            }
        }
        if(reason == 18)
        {
            new kstring[128];
            new kickname[MAX_PLAYER_NAME];
            if(IsPlayerConnected(killerid))
            {
                GetPlayerName(killerid, kickname, sizeof(kickname));
                format(string, 256, "[ADMIN] [%d]%s just killed a player with molotovs and has been IP banned.", killerid, kickname);
                ABroadCast(COLOR_LIGHTRED, string, 1);
                printf("%s", kstring);
                Ban(killerid);
            }
        }
        if(reason == 28)
        {
            new kstring[128];
            new kickname[MAX_PLAYER_NAME];
            if(IsPlayerConnected(killerid))
            {
                GetPlayerName(killerid, kickname, sizeof(kickname));
                format(string, 256, "[ADMIN] [%d]%s just killed a player with a Mac 10, Check him immediately.", killerid, kickname);
                ABroadCast(COLOR_LIGHTRED, string, 1);
                printf("%s", kstring);
            }
        }
        if(reason == 32)
        {
            new kstring[128];
            new kickname[MAX_PLAYER_NAME];
            if(IsPlayerConnected(killerid))
            {
                GetPlayerName(killerid, kickname, sizeof(kickname));
                format(string, 256, "[ADMIN] [%d]%s just killed a player with Tec 9's, Check him immediately.", killerid, kickname);
                ABroadCast(COLOR_LIGHTRED, string, 1);
                printf("%s", kstring);
            }
        }
        if(reason == 36)
        {
            new kstring[128];
            new kickname[MAX_PLAYER_NAME];
            if(IsPlayerConnected(killerid))
            {
                GetPlayerName(killerid, kickname, sizeof(kickname));
                format(string, 256, "[ADMIN] [%d]%s just killed a player with a Lock On Launcher and has been IP banned.", killerid, kickname);
                ABroadCast(COLOR_LIGHTRED, string, 1);
                printf("%s", kstring);
                Ban(killerid);
            }
        }
//--------------------------------------------------------------------------------------------------------------------------------------------
        SetPlayerWantedLevel(killerid, GetPlayerWantedLevel(killerid)+1);
//--------------------------------------------------------------------------------------------------------------------------------------------
    }
    if (gPlayerCheckpointStatus[playerid] > 4 && gPlayerCheckpointStatus[playerid] < 11)
    {
        DisablePlayerCheckpoint(playerid);
        gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
    }
    new caller = Mobile[playerid];
    if(caller != 255)
    {
        if(caller < 255)
        {
            SendClientMessage(caller,  COLOR_GRAD2, "** The line just went dead....");
            CellTime[caller] = 0;
            CellTime[playerid] = 0;
            Mobile[caller] = 255;
        }
        Mobile[playerid] = 255;
        CellTime[playerid] = 0;
    }
    ClearCrime(playerid);
    if(PlayerPaintballing[playerid] != 0)
    {
        PlayerPaintballKills[killerid] ++;
        if(PlayerPaintballKills[killerid] > PaintballWinnerKills)
        {
            new killer[MAX_PLAYER_NAME];
            PaintballWinner = killerid;
            PaintballWinnerKills = PlayerPaintballKills[killerid];
            GetPlayerName(killerid, killer, sizeof(killer));
        foreach(Player,i){
                    if(PlayerPaintballing[i] != 0)
                    {
                        format(string, sizeof(string), "* %s is in the lead with %d Kills.", killer, PaintballWinnerKills);
                        SendClientMessage(i, COLOR_WHITE, string);
                    }
            }
        }
        return 1;
    }
    if(PlayerInfo[playerid][pHeadValue] > 0)
    {
        if(IsPlayerConnected(killerid))
        {
            if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
            {
                if(GoChase[killerid] == playerid)
                {
                    //ConsumingMoney[killerid] = 1;
                    new killer[MAX_PLAYER_NAME];
                    GetPlayerName(killerid, killer, sizeof(killer));
                    GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]);
                    format(string,128,"<< Hitman %s, sheasrula shekveta %s -ze da aigo $%d >>", killer, name, PlayerInfo[playerid][pHeadValue]);
                    SendFamilyMessage(8, COLOR_LIGHTRED, string);
                    format(string,128,"<< Hitmanma sheasrula shekveta shenze da aigo $%d >>", PlayerInfo[playerid][pHeadValue]);
                    SendClientMessage(playerid, COLOR_LIGHTRED, string);
                    PlayerInfo[playerid][pHeadValue] = 0;
                    GotHit[playerid] = 0;
                    GetChased[playerid] = 999;
                    GoChase[killerid] = 999;
                }
            }
        }
    }
    if(victimteam >= 4)
    {
        if(IsPlayerConnected(killerid))
        {
            //new killer[MAX_PLAYER_NAME];
            //GetPlayerName(killerid, killer, sizeof(killer));
            new slice = 100; //$100
            playercash = GetPlayerMoney(playerid);
            if(gTeam[killerid] != 2) { WantedPoints[killerid] += 2; } // + 2 wanted points
            if(SafeTime[playerid] <= 0)
            {
                if(gTeam[killerid] != gTeam[playerid])
                {
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
                }
            }
            if (((gTeam[killerid]) == 1) || ((gTeam[killerid]) == 3 && civnokill) || (gTeam[killerid] == gTeam[playerid] && gTeam[playerid] != 4))
            {
                slice = 0;
            }
            if (((gTeam[killerid]) != 4) && ((gTeam[killerid]) == gTeam[playerid]))
            {
                slice = 0;
            }
            if (playercash > 0)
            {
                GivePlayerMoney(playerid, -slice);
            }
            else
            {
                slice = slice+500;
            }
            //GivePlayerMoney(killerid, slice);
            //GameTextForPlayer(playerid, dmessage, 5000, 2);
            PlayerPlaySound(killerid, 1083, 0.0, 0.0, 0.0);
            if (((gTeam[killerid]) == 3) && reason != 49)
            {
                SetPlayerCriminal(killerid,255, "First Degree Murder");
            }
            else if (((gTeam[killerid]) == 3) && reason == 49)
            {
                SetPlayerCriminal(killerid,255, "Hit And Run");
            }
        }
    }
    else if (victimteam == 2)
    {
        if(IsPlayerConnected(killerid))
        {
            //new killer[MAX_PLAYER_NAME];
            //GetPlayerName(killerid, killer, sizeof(killer));

            if (gTeam[killerid] == 2)
            {
                //format(string, 128, ".: Officer %s murdered Officer %s (%s) and was sued for $%d :.", killer, name, deathreason, suecost);
                PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
                GivePlayerMoney(killerid, -suecost);
                GivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
            }
            else
            {
                //format(string, 128, ".: %s murdered Officer %s (%s) :.", killer, name, deathreason);
            }
            if (gTeam[killerid] >= 3)
            {
                WantedPoints[killerid] += 2; // + 2 wanted points
                if(reason != 49)
                {
                    SetPlayerCriminal(killerid,255, "First Degree Murder");
                }
                else if (reason == 49)
                {
                    SetPlayerCriminal(killerid,255, "Hit And Run");
                }
            }
            if(gTeam[killerid] >= 5 && SafeTime[playerid] <= 0)
            {
//--------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------
                WantedPoints[killerid] += 2;
            }
            //BroadCast(COLOR_RED, string);
        }
    }
    else if (victimteam == 3)
    {
        if(IsPlayerConnected(killerid))
        {
            //new killer[MAX_PLAYER_NAME];
            //GetPlayerName(killerid, killer, sizeof(killer));

            if ((gTeam[killerid]) == 2)
            {
                if(WantedLevel[playerid] < 1)
                {
                    //format(string, 128, ".: Officer %s murdered %s (%s) and was sued for $%d :.", killer, name, deathreason, suecost);
                    PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
                    GivePlayerMoney(killerid, -suecost);
                    GivePlayerMoney(playerid, suecost+10);
                }
            }
            else
            {
                //format(string, 128, ".: %s murdered %s (%s) :.", killer, name,d eathreason);
                WantedPoints[killerid] += 2;
            }
            if (((gTeam[killerid]) >= 3 || (gTeam[killerid]) == 1) && reason != 49)
            {
                SetPlayerCriminal(killerid,255, "First Degree Murder");
            }
            else if (((gTeam[killerid]) >= 3 || (gTeam[killerid]) == 1) && reason == 49)
            {
                SetPlayerCriminal(killerid,255, "Hit And Run");
            }
            //BroadCast(COLOR_RED, string);
        }
    }
    else if (victimteam == 1)
    {
        if(IsPlayerConnected(killerid))
        {
            //new killer[MAX_PLAYER_NAME];
            //GetPlayerName(killerid, killer, sizeof(killer));

            if ((gTeam[killerid]) == 2)
            {
                //format(string, 128, ".: Officer %s murdered Paramedic %s (%s) and was sued for $%d :.", killer, name, deathreason, suecost);
                PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
                GivePlayerMoney(killerid, -suecost);
                GivePlayerMoney(playerid, suecost+10); // +100pays hospital bill
            }
            else if ((gTeam[killerid]) == 1)
            {
                //format(string, 128, ".: Paramedic %s murdered %s (%s) and was sued for $%d :.", killer, name, deathreason, suecost);
                PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
                GivePlayerMoney(killerid, -suecost);
                GivePlayerMoney(playerid, suecost+10); // +100pays hospital bill
            }
            else
            {
                //format(string, 128, ".: %s murdered %s (%s) :.", killer, name, deathreason);
            }
            if (((gTeam[killerid]) == 4) && reason != 49)
            {
                SetPlayerCriminal(killerid,255, "First Degree Murder");
            }
            else if (((gTeam[killerid]) == 3) && reason == 49)
            {
                SetPlayerCriminal(killerid,255, "Hit And Run");
            }
            //BroadCast(COLOR_RED, string);
        }
    }
    if (victimteam >= 3 && WantedPoints[playerid] > 0 && killerteam == 2)
    {
        SetPlayerFree(playerid, killerid, "Got Killed");
    }
    if (BusrouteEast[playerid][0] != 0 || BusrouteWest[playerid][0] != 0)
    {
        if (BusrouteEast[playerid][0] != 0) BusrouteEnd(playerid, BusrouteEast[playerid][1]);
        else if (BusrouteWest[playerid][0] != 0) BusrouteEnd(playerid, BusrouteWest[playerid][1]);
        else BusrouteEnd(playerid, 0);
    }
    if(FarmerVar[playerid] != 0)
    {
        FarmerVar[playerid] = 0;
        DisablePlayerCheckpoint(playerid);
    }
    if(DrugFarmerVar[playerid] != 0)
    {
        DrugFarmerVar[playerid] = 0;
        DisablePlayerCheckpoint(playerid);
    }
    if(SmugglerWork[playerid] != 0)
    {
        SmugglerWork[playerid] = 0;
        DisablePlayerCheckpoint(playerid);
    }
    killerid = INVALID_PLAYER_ID;
    //SetPlayerColor(playerid, COLOR_GRAD2);
    return 1;
}
Reply
#2

you need to check if killerid is not INVALID_PLAYER_ID before using things like gTeam[killerid] and PlayerInfo[killerid][....]
Reply
#3

I noticed you're not using kstring.
Replace
Код:
format(string, 256,
with:
Код:
format(kstring, sizeof(kstring),
That's all I can really tell about the script, I'm not sure how all variables work, but this might be giving you the error.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)