SA-MP Forums Archive
Daсo al esposar. - 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: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Daсo al esposar. (/showthread.php?tid=408648)



Daсo al esposar. - Glimma - 19.01.2013

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.


Respuesta: Daсo al esposar. - EduGTA - 19.01.2013

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



Respuesta: Daсo al esposar. - Glimma - 20.01.2013

їCуmo podrнa hacerlo entonces?


Respuesta: Daсo al esposar. - EduGTA - 20.01.2013

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



Respuesta: Daсo al esposar. - Glimma - 20.01.2013

Es raro, siguen quitando daсo.


Respuesta: Daсo al esposar. - OTACON - 20.01.2013

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


Respuesta: Daсo al esposar. - Glimma - 20.01.2013

Aъn sigue igual, me sacan vida.


Respuesta: Daсo al esposar. - Dardo - 20.01.2013

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



Respuesta: Daсo al esposar. - OTACON - 20.01.2013

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