26.12.2014, 21:40
Sem reformular tudo tem como no onplayergivedamage ou takedamage, colcoar pra se tiver com a variavel CAPACETE[playerid] == 1, tomar menos 20% de dano em todos os tiros?
new Float:hp;
GetPlayerHealth(playerid, hp);
if(CAPACETE[playerid] == 1)
{
SetPlayerHealth(playerid, hp-5);
}
else
{
SetPlayerHealth(playerid, hp-10);
}
|
Na callback OnPlayerTakeDamage ou OnPlayerGiveDamage, vocк pode utilizar de GetPlayerHealth+SetPlayerHealth... Mas vou dar um conselho amigo, isto nгo vai dar certo... A callback й chamada antes do dano, ou seja, em players lagados nгo vai funcionar corretamente.
|
na public OnPlayerTakeDamage: new Float:Health, Float:RestoreAmount = Floatmul(Floatdiv(amount, 100.0), 20.0);//20% GetPlayerHealth(playerid, Health); SetPlayerHealth(playerid, Floatadd(Health, RestoreAmount));
|
Na verdade se ele usar a OnplayerTakeDamage corretamente funciona atй em players lagados, visto que o health vai ser "aumentado" e logo apуs seria diminuido...
Код:
na public OnPlayerTakeDamage: new Float:Health, Float:RestoreAmount = Floatmul(Floatdiv(amount, 100.0), 20.0);//20% GetPlayerHealth(playerid, Health); SetPlayerHealth(playerid, Floatadd(Health, RestoreAmount)); |
if(CAPACETE[playerid] == 3) {
new Float:Floatmul, Float:Floatdiv;
new Float:Health, Float:RestoreAmount = Floatmul(Floatdiv(amount, 100.0), 50.0);//50%
GetPlayerHealth(playerid, Health);
SetPlayerHealth(playerid, Floatadd(Health, RestoreAmount));
// error 012: invalid function call, not a valid address
// warning 215: expression has no effect
// warning 215: expression has no effect
// error 001: expected token: ";", but found ")"
// fatal error 107: too many error messages on one line
// todos os erros na linha:
// new Float:Health, Float:RestoreAmount = Floatmul(Floatdiv(amount, 100.0), 50.0);//50%
}
|
Float:RestoreAmount = floatmul(floatdiv(amount, 100.0), 50.0); |
if(ARMADURA[playerid] > 0) {
if(ARMADURA[playerid] == 1) {
new Float:Health, Float:RestoreAmount = floatmul(floatdiv(amount, 100.0), 10.0);
new Float:Sum;
GetPlayerHealth(playerid, Health);
Sum = Health + RestoreAmount;
SetPlayerHealth(playerid, Sum);
}
else if(ARMADURA[playerid] == 2) {
new Float:Health, Float:RestoreAmount = floatmul(floatdiv(amount, 100.0), 20.0);
new Float:Sum;
GetPlayerHealth(playerid, Health);
Sum = Health + RestoreAmount;
SetPlayerHealth(playerid, Sum);
}
else if(ARMADURA[playerid] == 3) {
new Float:Health, Float:RestoreAmount = floatmul(floatdiv(amount, 100.0), 30.0);
new Float:Sum;
GetPlayerHealth(playerid, Health);
Sum = Health + RestoreAmount;
SetPlayerHealth(playerid, Sum);
}
}