[Pedido] Sniper 1 tiro colete e vida
#1

Alguйm poderia me ajudar? Quero criar um jeito para 1 tiro da sniper arrancar o colete e outro tiro arrancar a vida, alguйm sabe esse cуdigo? Eu tenho esse daqui de baixo, sу que se tiver na distancia de 20.0 o tiro arranca a vida e o colete um pouco de cada, e se tiver muito perto ou muito longe, 1 tiro tira a vida e o colete todo, +rep pra quem puder me ajudar, mto obrigado!

PHP код:
public OnPlayerWeaponShot(playeridweaponidhittypehitidFloat:fXFloat:fYFloat:fZ)  

    if(
hittype == 1)  
    { 
        if(
weaponid == 34
        { 
            new 
Float:armour,Float:xFloat:yFloat:z
            
GetPlayerPos(playeridx,y,z); 
            
GetPlayerArmour(hitidarmour); 
            if(
IsPlayerInRangeOfPoint(hitid20.0xyz))
            { 
                if(
armour >= 1// se o colete for maior ou igual a 1 :
                

                    
SetPlayerArmour(hitid0); // o colete й retirado
                

                else 
// se nao tiver colete a vida й setada a 0 com apenas um tiro
                

                    
SetPlayerHealth(hitid0); 
                } 
            } 
            else 
// se nao tiver na distancia de 20.0 o tiro vai ser normal retirando apenas metade da vida
            

            } 
        } 
    } 
    return 
1

Reply
#2

PHP код:
public OnPlayerWeaponShot(playeridweaponidhittypehitidFloat:fXFloat:fYFloat:fZ)  

    if(
hittype == 1)  
    { 
        if(
weaponid == 34
        { 
            new 
Float:armour,Float:xFloat:yFloat:z
            
GetPlayerPos(playeridx,y,z); 
            
GetPlayerArmour(hitidarmour); 
            if(
IsPlayerInRangeOfPoint(hitid20.0xyz))
            { 
                if(
armour 0// se o colete for maior ou igual a 1 :
                

                    
SetPlayerArmour(hitid0); // o colete й retirado
                

                else 
// se nao tiver colete a vida й setada a 0 com apenas um tiro
                

                    
SetPlayerHealth(hitid0); 
                } 
            } 
            else 
// se nao tiver na distancia de 20.0 o tiro vai ser normal retirando apenas metade da vida
            

                return 
1;
            } 
        } 
    } 
    return 
1

teste
Reply
#3

Quote:
Originally Posted by Wellington1999
Посмотреть сообщение
PHP код:
public OnPlayerWeaponShot(playeridweaponidhittypehitidFloat:fXFloat:fYFloat:fZ)  

    if(
hittype == 1)  
    { 
        if(
weaponid == 34
        { 
            new 
Float:armour,Float:xFloat:yFloat:z
            
GetPlayerPos(playeridx,y,z); 
            
GetPlayerArmour(hitidarmour); 
            if(
IsPlayerInRangeOfPoint(hitid20.0xyz))
            { 
                if(
armour 0// se o colete for maior ou igual a 1 :
                

                    
SetPlayerArmour(hitid0); // o colete й retirado
                

                else 
// se nao tiver colete a vida й setada a 0 com apenas um tiro
                

                    
SetPlayerHealth(hitid0); 
                } 
            } 
            else 
// se nao tiver na distancia de 20.0 o tiro vai ser normal retirando apenas metade da vida
            

                return 
1;
            } 
        } 
    } 
    return 
1

teste
De perto e de longe estб dando o mesmo dano.
Reply
#4

Nгo entendi a explicaзгo. Poderia ser mais claro?
Reply
#5

Quote:
Originally Posted by zPain
Посмотреть сообщение
Nгo entendi a explicaзгo. Poderia ser mais claro?
Vou te explicar, jб consegui colocar a sniper pra tirar a vida e o colete 1 tiro pra zerar cada um. Eu queria um jeito da sniper tirar pouco dano de perto ou nгo tirar nenhum dano de perto.
Reply
#6

PHP код:
/*
    Distвncia >= 20
        - Colete != 0: zera o colete
        - Colete == 0: zera a vida
    Distвncia < 20
        - Colete != 0: nгo danifica
        - Colete == 0: tira 10 de vida.
*/
public OnPlayerWeaponShot(playeridweaponidhittypehitidFloat:fXFloat:fYFloat:fZ)
{
    if(
hittype == 1)
    {
        if(
weaponid == 34)
        {
            static
                
Float:health,
                
Float:armour;
            
GetPlayerHealth(hitidhealth);
            
GetPlayerArmour(hitidarmour);
            new 
Float:distance GetPlayerDistanceFromPoint(playeridfXfYfZ);
            if(
distance >= 20.0)
            {
                if(
armour
                {
                    
SetPlayerArmour(hitid0);
                }
                else
                {
                    
SetPlayerHealth(hitid0);
                }
            }
            else
            {
                if(!
armour)
                {
                    
SetPlayerHealth(hitid, (health 10));
                }
            }
        }
    }
    return 
1;

Reply
#7

Quote:
Originally Posted by zPain
Посмотреть сообщение
PHP код:
/*
    Distвncia >= 20
        - Colete != 0: zera o colete
        - Colete == 0: zera a vida
    Distвncia < 20
        - Colete != 0: nгo danifica
        - Colete == 0: tira 10 de vida.
*/
public OnPlayerWeaponShot(playeridweaponidhittypehitidFloat:fXFloat:fYFloat:fZ)
{
    if(
hittype == 1)
    {
        if(
weaponid == 34)
        {
            static
                
Float:health,
                
Float:armour;
            
GetPlayerHealth(hitidhealth);
            
GetPlayerArmour(hitidarmour);
            new 
Float:distance GetPlayerDistanceFromPoint(playeridfXfYfZ);
            if(
distance >= 20.0)
            {
                if(
armour
                {
                    
SetPlayerArmour(hitid0);
                }
                else
                {
                    
SetPlayerHealth(hitid0);
                }
            }
            else
            {
                if(!
armour)
                {
                    
SetPlayerHealth(hitid, (health 10));
                }
            }
        }
    }
    return 
1;

Com esse comando estб descendo a vida e o colete junto, vocк poderia criar um jeito apenas para a sniper nгo tirar dano nenhum de perto?

OBS: Eu uso a Public OnPlayerGiveDamage para regular/diminuir o dano das armas, serб que estб dando algum conflito?
Reply
#8

Retorne 0 caso a distвncia seja menor ou igual а que vocк considera prуxima.

Ex:
pawn Код:
if(distance <= 10) {
    return 0;
}
Reply
#9

Quote:
Originally Posted by zPain
Посмотреть сообщение
Retorne 0 caso a distвncia seja menor ou igual а que vocк considera prуxima.

Ex:
pawn Код:
if(distance <= 10) {
    return 0;
}
Onde devo colocar este code?

PHP код:
public OnPlayerGiveDamage(playeriddamagedidFloat:amountweaponid)
{
    
PlayerPlaySound(playerid178020.00.00.0);
    
amount amount/2;
    new 
Float:LifeFloat:ColeeteFloat:Dano;
    
GetPlayerArmour(damagedidColeete);
    
GetPlayerHealth(damagedidLife);
    
//if(weaponid == 34){amount = 100;}//sniper
    
if(Coleete 0)
    {
        if(
amount Coleete)
        {
            
Dano amount Coleete;
            
Life Life Dano;
            
SetPlayerArmour(damagedid0.0);
            
SetPlayerHealth(damagedidLife);
            return 
1;
        }
        
Coleete Coleete amount;
        
SetPlayerArmour(damagedidColeete);
    }
    if(
Coleete 1)
    {
        
Life Life amount;
        
SetPlayerHealth(damagedidLife);
    }
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)