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