11.09.2013, 16:54
I've a problem with arrays.. I know that i've to put INVALID_PLAYER_ID but i don't know where D:
Код:
[18:53:06] [debug] Run time error 4: "Array index out of bounds" [18:53:06] [debug] Accessing element at index 65535 past array upper bound 499 [18:53:06] [debug] AMX backtrace: [18:53:06] [debug] #0 0000e3ec in public OnPlayerDeath (0x00000002, 0x0000ffff, 0x000000ff) from IusSilverP2.amx
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(GetPlayerWeapon(killerid) == 38 && wartime == 0 && lvl[playerid] < 10)
{
BanEx(killerid,"AutoBan Minigun"); //Ban if they have a minigun
}
if(happytime == true)
{
if(killerid != INVALID_PLAYER_ID) cookies[killerid] ++;
SendClientMessage(killerid,COLOR_GREEN,"*** Cookie bonus per l'Happy Time!");
}
if(IsPlayerInRangeOfPoint(killerid, 20, 292.8081,-35.4008,1001.5156))
{
new str1[128],name[24];
GetPlayerName(killerid, name, sizeof(name));
format(str1, sizeof(str1), "*** %s и stato automaticamente kickato per aver killato al /negozio!", name);
SendClientMessageToAll(COLOR_RED, str1);
KickWithMessage(killerid, COLOR_RED, "*** Sei stato kickato per aver ucciso al /negozio!");
}
SendDeathMessage(killerid, playerid, reason);//kill list
dinamite[playerid] = 0; //variabile dinamite
if(dinamite[playerid] == 1)
{
DestroyDynamicObject(bombobj);
}
//CONSEGUENZE KILL
heal[playerid] = 0;
rock[playerid] = 0;
if(playerid != INVALID_PLAYER_ID) morti[playerid] ++;//aumentano le morti
if(killerid != INVALID_PLAYER_ID) kills[killerid] ++;//aumentano le kills
if(killerid != INVALID_PLAYER_ID) SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);//aumenta di uno score
if(killerid != INVALID_PLAYER_ID) GivePlayerMoney(killerid, 1000);// ti da soldi
//RICAVO INFORMAZIONI
new nome[MAX_PLAYER_NAME],killer[MAX_PLAYER_NAME];
GetPlayerName(playerid,nome, sizeof(nome));
GetPlayerName(killerid,killer, sizeof(killer));
//SPREE AUMENTA
if(killerid != INVALID_PLAYER_ID) spree[killerid] ++;
if(spree[killerid] == 10)//se lo spree и = 10
{
SendClientMessage(killerid,COLOR_GREEN,"*** Hai ucciso 10 persone di fila e hai ottenuto un cookie!");
SendClientMessage(killerid,COLOR_GREEN,"*** Uccidine altri 10 per ottenere 3 cookies!");
cookies[killerid] ++;
}
if(spree[playerid] == 20)//se lo spree и = 20
{
SendClientMessage(killerid,COLOR_GREEN,"*** Hai ucciso 20 persone di fila e hai ottenuto 3 cookies!");
SendClientMessage(killerid,COLOR_GREEN,"*** Hai raggiunto il massimo killing - spree e il tuo spree и stato azzerato!");
cookies[killerid] += 3;
spree[killerid] = 0;
}
if(playerid != INVALID_PLAYER_ID) spree[playerid] = 0;//spree azzerato in caso di morte
//CASO ADMIN KILL
if(lvl[playerid] > 0) return SendClientMessage(killerid,COLOR_YELLOW,"*** Hai ucciso un admin e hai ricevuto un cookie come ricompensa!"),cookies[killerid] ++, ak[killerid] ++;
//fake kill
if(fakekill[playerid] == 5) return BanEx(playerid,"Fake kill");
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
if(IsPlayerInRangeOfPoint(killerid, 50, x,y,z))
{
fakekill[playerid] ++;
}
if(reason == 50)
{
SendClientMessage(killerid,COLOR_RED,"*** Sei stato ucciso per helikill!");
SetPlayerHealth(killerid,0);
}
if(eventoox[killerid] == 1)
{
new str1[128],name [24];
GetPlayerName(killerid, name, sizeof(name));
format(str1, sizeof(str1), "*** %s и stato automaticamente kickato per aver killato all'evento OX!", name);
SendClientMessageToAll(COLOR_RED, str1);
KickWithMessage(killerid, COLOR_RED, "*** Sei stato kickato per aver ucciso all'evento OX!");
}
if(eventoox[playerid] == 1)
{
eventoox[playerid] = 2;
SendClientMessage(playerid,COLOR_RED,"*** Digita /joinox per tornare all'evento!");
}
if(wanted[playerid] == 1)
{
wanted[playerid] = 0;
cookies[killerid] ++;
new nomes[24],knome[24],stringaw[256];
GetPlayerName(playerid,nomes,24);
GetPlayerName(killerid, knome, 24);
SendClientMessage(killerid,COLOR_YELLOW,"*** Complimenti, hai ucciso il ricercato vincendo un cookie!");
format(stringaw,sizeof(stringaw),"{FFFF00}[WANTED]: {FF00FF}Il Giocatore %s ha ucciso il ricercato %s ricevendo un cookie come premio!",knome,nomes);
SendClientMessageToAll(-1, stringaw);
}
return 1;
}