OnPlayerDeath Arrays
#2

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


Messages In This Thread
OnPlayerDeath Arrays - by ReshiramZekrom - 11.09.2013, 16:54
Re: OnPlayerDeath Arrays - by Konstantinos - 11.09.2013, 17:05

Forum Jump:


Users browsing this thread: 1 Guest(s)