SA-MP Forums Archive
[Ajuda] Bug OnPlayerGiveDamage "Dano Tiro" - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Bug OnPlayerGiveDamage "Dano Tiro" (/showthread.php?tid=323197)



[Ajuda] Bug OnPlayerGiveDamage "Dano Tiro" - Sergiosousa - 04.03.2012

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


Re: [Duvida] Bug OnPlayerGiveDamage "Dano Tiro" - ApeloForum - 04.03.2012

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


Respuesta: [Duvida] Bug OnPlayerGiveDamage "Dano Tiro" - Sergiosousa - 04.03.2012

ja tentei e acontece a mesma a morte


Re: [Duvida] Bug OnPlayerGiveDamage "Dano Tiro" - telmo_ferreira - 04.03.2012

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!!!!


Respuesta: [Duvida] Bug OnPlayerGiveDamage "Dano Tiro" - Sergiosousa - 04.03.2012

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);



Re: [Duvida] Bug OnPlayerGiveDamage "Dano Tiro" - telmo_ferreira - 04.03.2012

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


Respuesta: [Duvida] Bug OnPlayerGiveDamage "Dano Tiro" - Sergiosousa - 04.03.2012

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



Respuesta: [Duvida] Bug OnPlayerGiveDamage "Dano Tiro" - Sergiosousa - 04.03.2012

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


Respuesta: [Duvida] Bug OnPlayerGiveDamage "Dano Tiro" - Sergiosousa - 05.03.2012

Alguem pode ajudar por favor? Dou todo respeito


Re: [Duvida] Bug OnPlayerGiveDamage "Dano Tiro" - telmo_ferreira - 05.03.2012

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