29.08.2012, 12:42
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;
}