11.09.2013, 17:05
You need to check if the killer is not invalid player. You do check for invalid ids but in the playerid. Just to know, if the playerid was not valid, OnPlayerDeath would not be called at all. All you need to do is check if killerid is valid:
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason);//kill list
if(killerid != INVALID_PLAYER_ID )
{
if(GetPlayerWeapon(killerid) == 38 && wartime == 0 && lvl[playerid] < 10)
{
BanEx(killerid,"AutoBan Minigun"); //Ban if they have a minigun
}
if(happytime == true)
{
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!");
}
kills[killerid] ++;//aumentano le kills
SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);//aumenta di uno score
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
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[killerid] == 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;
}
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(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);
}
}
if(eventoox[playerid] == 1)
{
eventoox[playerid] = 2;
SendClientMessage(playerid,COLOR_RED,"*** Digita /joinox per tornare all'evento!");
}
dinamite[playerid] = 0; //variabile dinamite
if(dinamite[playerid] == 1)
{
DestroyDynamicObject(bombobj);
}
morti[playerid] ++;//aumentano le morti
heal[playerid] = 0;
rock[playerid] = 0;
return 1;
}