Daсo al esposar.
#1

Bueno, en mi servidor, la variable PlayerCuffed[playerid] == 1 es un jugador ESPOSADO, es decir, con las esposas atrбs (objeto) y la animaciуn, las que vinieron en la 0.3e, en fin, entonces, quise hacer con OnPlayerGiveDamage que cuando un esposado golpea a otro, no le saque vida al que recibe el daсo, porque se supone que las manos quedan atrбs.. Hice йsto pero sigue sacando vida.

pawn Код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    static Float:danio, Float:vida, Float:chaleco;
    if(damagedid != INVALID_PLAYER_ID)
    {
        if(PlayerCuffed[damagedid] == 1)
        {
            switch(weaponid)
            {
                case 0: danio = 0.0;
                case 1: danio = 0.0;
                default: danio = amount;
            }
        }
    }
    GetPlayerHealth(playerid, vida);
    GetPlayerArmour(playerid, chaleco);
    if(chaleco)
    {
        if(chaleco > danio) SetPlayerArmour(playerid, chaleco-danio);
        else
        {
            SetPlayerArmour(playerid, 0.0);
            chaleco = danio-chaleco;
            if(chaleco >= vida) SetPlayerHealth(playerid, 0.0);
            else SetPlayerHealth(playerid, vida-chaleco);
        }
    }
    else
    {
        if(vida > danio) SetPlayerHealth(playerid, vida-danio);
        else SetPlayerHealth(playerid, 0.0);
    }
    return 1;
}
їSi cambio if(PlayerCuffed[damagedid] == 1) por if(PlayerCuffed[playerid] == 1) funcionarб? es que no sй, no creo que funcione.
Reply
#2

pawn Код:
public OnPlayerGiveDamage(playerid, damagedid, ...)
Parбmetros:
playerid = El jugador que hizo daсo.
damagedid = El jugador que recibiу daсo.

Bбsicamente con ese script estas detectando si el jugador que recibiу daсo estб esposado y el resto no servirнa de nada, ya que estas detectando el resto por parte del jugador esposado...
Reply
#3

їCуmo podrнa hacerlo entonces?
Reply
#4

Supongo que cambiando "damagedid" por "playerid" y "playerid" por "damagedid"

pawn Код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    static Float:danio, Float:vida, Float:chaleco;
    if(playerid != INVALID_PLAYER_ID)
    {
        if(PlayerCuffed[playerid] == 1)
        {
            switch(weaponid)
            {
                case 0: danio = 0.0;
                case 1: danio = 0.0;
                default: danio = amount;
            }
        }
    }
    GetPlayerHealth(damagedid, vida);
    GetPlayerArmour(damagedid, chaleco);
    if(chaleco)
    {
        if(chaleco > danio) SetPlayerArmour(damagedid, chaleco-danio);
        else
        {
            SetPlayerArmour(damagedid, 0.0);
            chaleco = danio-chaleco;
            if(chaleco >= vida) SetPlayerHealth(damagedid, 0.0);
            else SetPlayerHealth(damagedid, vida-chaleco);
        }
    }
    else
    {
        if(vida > danio) SetPlayerHealth(damagedid, vida-danio);
        else SetPlayerHealth(damagedid, 0.0);
    }
    return 1;
}
Reply
#5

Es raro, siguen quitando daсo.
Reply
#6

pawn Код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    static Float:danio, Float:vida, Float:chaleco;
    if(playerid != INVALID_PLAYER_ID)
    {
        if(PlayerCuffed[playerid] == 1 && GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CUFFED)
        {
            switch(weaponid)
            {
                case 0: danio = 0.0;
                case 1: danio = 0.0;
                default: danio = amount;
            }
        }
        GetPlayerHealth(damagedid, vida);
        GetPlayerArmour(damagedid, chaleco);
        if(chaleco)
        {
            if(chaleco > danio) SetPlayerArmour(damagedid, chaleco-danio);
            else
            {
                SetPlayerArmour(damagedid, 0.0);
                chaleco = danio-chaleco;
                if(chaleco >= vida) SetPlayerHealth(damagedid, 0.0);
                else SetPlayerHealth(damagedid, vida-chaleco);
            }
        }
        else
        {
            if(vida > danio) SetPlayerHealth(damagedid, vida-danio);
            else SetPlayerHealth(damagedid, 0.0);
        }
    }
    return 1;
}
GetPlayerSpecialAction
Reply
#7

Aъn sigue igual, me sacan vida.
Reply
#8

Intenta asi

pawn Код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    static Float:danio, Float:vida, Float:chaleco;
    GetPlayerHealth(damagedid, vida);
    GetPlayerArmour(damagedid, chaleco);
    if(playerid != INVALID_PLAYER_ID)
    {
        if(PlayerCuffed[playerid] == 1 && GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CUFFED)
        {
            switch(weaponid)
            {
                case 0: danio = 0.0;
                case 1: danio = 0.0;
                default: danio = amount;
            }
    SetPlayerHealth(damagedid, vida);
    SetPlayerArmour(damagedid, chaleco);
        }
       
        if(chaleco)
        {
            if(chaleco > danio) SetPlayerArmour(damagedid, chaleco-danio);
            else
            {
                SetPlayerArmour(damagedid, 0.0);
                chaleco = danio-chaleco;
                if(chaleco >= vida) SetPlayerHealth(damagedid, 0.0);
                else SetPlayerHealth(damagedid, vida-chaleco);
            }
        }
        else
        {
            if(vida > danio) SetPlayerHealth(damagedid, vida-danio);
            else SetPlayerHealth(damagedid, 0.0);
        }
    }
    return 1;
}
Reply
#9

playerid ID del jugador que daсa.
damagedid ID del jugador que es daсado.
amount El monto de vida/armadura que pierde el jugador
weaponid La arma que causo el daсo.


https://sampwiki.blast.hk/wiki/OnPlayerGiveDamage_Es

pawn Код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    if(damagedid != INVALID_PLAYER_ID) //<---------- damagedid
    {
        static Float:damage, Float:vida, Float:chaleco;
        GetPlayerHealth(damagedid, vida);
        GetPlayerArmour(damagedid, chaleco);
        if(PlayerCuffed[damagedid] == 1 && GetPlayerSpecialAction(damagedid) == SPECIAL_ACTION_CUFFED)
        {
            switch(weaponid)
            {
                case 0: amount = 0.0; //<---------- amount
                case 1: amount = 0.0; //<---------- amount
                default: damage = amount;
            }
            printf("Jugador[%i] con Esposas Perdio [%f] de Daсo", damagedid, amount);
        }
        else
        {
            if(chaleco)
            {
                SetPlayerArmour(damagedid, 0.0);
                chaleco = damage-chaleco;
                if(chaleco >= vida) SetPlayerHealth(damagedid, 0.0);
                else SetPlayerHealth(damagedid, vida-chaleco);
                printf("Jugador[%i] sin Esposas y con chaleco Perdio [%f] de Daсo", damagedid, amount);
            }
            else
            {
                if(vida > damage) SetPlayerHealth(damagedid, vida-damage);
                else SetPlayerHealth(damagedid, 0.0);
                printf("Jugador[%i] sin Esposas y sin chaleco Perdio [%f] de Daсo", damagedid, amount);
            }
            printf("Jugador[%i] sin Esposas Perdio [%f] de Daсo", damagedid, amount);
        }
    }
    return 1;
}
Edit: intenta tambien en le call OnPlayerTakeDamage, y mira lo ke dice la wiki de OnPlayerGiveDamage
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)