[Ajuda] Bug OnPlayerGiveDamage "Dano Tiro"
#1

Estou com um problema com este script!

Quando tiro vida a alguem eu morro, exemplo, pego numa arma e dou um tiro alguem, ele fica vivo, e eu por ter dado o tiro morro

pawn Код:
forward Descongelar(playerid);
public Descongelar(playerid)
{
    TogglePlayerControllable(playerid,1);
    return 1;
}
public OnPlayerGiveDamage(playerid,damagedid,Float:amount,weaponid)
{
    new Float:LIFE;
    GetPlayerHealth(damagedid,LIFE);
    if(weaponid >= 1 || weaponid <= 54)
    {
        if(LIFE <= 100)
        {
            SendClientMessage(damagedid,-1,"Levou um TIRO!");
            SetPlayerHealth(playerid,GetPlayerHealth(playerid,LIFE)-20);
            TogglePlayerControllable(damagedid,0);
            SetTimerEx("Descongelar",2000,0,"i",damagedid);
            return 1;
        }
        if(LIFE <= 80)
        {
            SendClientMessage(damagedid,-1,"Levou um TIRO!");
            SetPlayerHealth(playerid,GetPlayerHealth(playerid,LIFE)-20);
            TogglePlayerControllable(damagedid,0);
            SetTimerEx("Descongelar",2000,0,"i",damagedid);
            return 1;
        }
        if(LIFE <= 60)
        {
            SendClientMessage(damagedid,-1,"Levou um TIRO!");
            SetPlayerHealth(playerid,GetPlayerHealth(playerid,LIFE)-20);
            TogglePlayerControllable(damagedid,0);
            SetTimerEx("Descongelar",2000,0,"i",damagedid);
            return 1;
        }
        if(LIFE <= 40)
        {
            SendClientMessage(damagedid,-1,"Levou um TIRO!");
            SetPlayerHealth(playerid,GetPlayerHealth(playerid,LIFE)-20);
            TogglePlayerControllable(damagedid,0);
            SetTimerEx("Descongelar",2000,0,"i",damagedid);
            return 1;
        }
        if(LIFE <= 20)
        {
            SendClientMessage(damagedid,-1,"FOI MORTO!");
            SetPlayerHealth(playerid,0);
            return 1;
        }
        return 1;
    }
    return 1;
}
http://pastebin.com/CuqjgwVZ
Reply
#2

Tente trocar damageid por playerid '-' Sу pode ser isto! ( Eu acho )
Reply
#3

ja tentei e acontece a mesma a morte
Reply
#4

no fim do codigo quando й para o player que recebe o dano morrer tens :
Код:
if(LIFE <= 20)
        {
            SendClientMessage(damagedid,-1,"FOI MORTO!");
            SetPlayerHealth(playerid,0);
            return 1;
        }
Traduzindo
se a health for inferior ou igual a 20
envia mensagem para quem recebeu dano !
reduz a health de quem causou dano a 0!
ou seja isso esta trocado .

tens que meter assim:
Код:
if(LIFE <= 20)
        {
            SendClientMessage(playerid,-1,"FOI MORTO!");
            SetPlayerHealth(damagedid,0);
            return 1;
        }
agora envia mensagem para quem disparou e retira vida a quem recebeu o tiro!!!!
Reply
#5

Jб meti no script e sу falta testar, exemplo, se o player que esta levando com as balas ser atingido e quando tiver 10 de vida cair no chao "anim a morrer" serб possivel fazer?

Anim:
pawn Код:
ApplyAnimation(playerid,"PED","KO_skid_front",4.1,0,1,1,1,0);
Da se meter?
pawn Код:
SendClientMessage(playerid,-1,"GRAVEMENTE FERIDO!");
            SetPlayerHealth(damagedid,20);
            ApplyAnimation(playerid,"PED","KO_skid_front",4.1,0,1,1,1,0);
            TogglePlayerControllable(damagedid, 0);
Reply
#6

sim se a anim for essa!
ApplyAnimation(damagedid,"PED","KO_skid_front",4.1,0,1,1,1,1);
Reply
#7

assim?
pawn Код:
if(LIFE <= 20)
        {
            SendClientMessage(playerid,-1,"GRAVEMENTE FERIDO!");
            SetPlayerHealth(damagedid,20);
            ApplyAnimation(damagedid,"PED","KO_skid_front",4.1,0,1,1,1,0);
            TogglePlayerControllable(damagedid, 0);
            return 1;
        }
Reply
#8

Problema:

Ao bateres em um player basta dares um tiro ou soco a ele e quem morre e quem da o dano e nao a quem o recebe!

Alguem me ajuda por favor
Reply
#9

Alguem pode ajudar por favor? Dou todo respeito
Reply
#10

estive a ver isso com mais atenзao agora , ele morre so com o soco porque tens
if(weaponid >= 1 || weaponid <= 54) e deverias ter if(weaponid >= 1 && weaponid <= 54).
outra coisa se tens
if(LIFE <= 100) porque metes a seguir if(LIFE <= 80) se nao vai fazer efeito nenhum.

usa o codigo assim desta forma:
Код:
public OnPlayerGiveDamage(playerid,damagedid,Float:amount,weaponid)
{
    new Float:LIFE;
    GetPlayerHealth(damagedid,LIFE);

    if(GetPlayerWeapon(playerid) >= 1 && GetPlayerWeapon(playerid) <= 40)
    {
       if(LIFE >= 21  && LIFE <= 100)
        {
            SendClientMessage(playerid,-1,"Levou um TIRO!");
            SetPlayerHealth(damagedid,LIFE-20);
            TogglePlayerControllable(damagedid,0);
            SetTimerEx("Descongelar",2000,0,"i",damagedid);
            return 1;
        }

        if(LIFE <= 20)
        {
            SendClientMessage(playerid,-1,"FOI MORTO!");
            SetPlayerHealth(damagedid,0);
            return 1;
        }
        return 1;
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)