ApplyDamage(issuerid,playerid,Float:Damage, weaponid)
{//Применение или обращение урона к игроку (В зависимости от знака)
new Float:health, Float:armour;
GetPlayerArmour(playerid,armour);
GetPlayerHealth(playerid,health);
if(health <1) return 1;
PlayerArmour[playerid] = armour;
PlayerHealth[playerid] = health;
if(armour>0)
{
if(Damage > armour)
{
PlayerArmour[playerid] = 0;
SetPlayerArmourSafe(playerid, PlayerArmour[playerid]);
}
PlayerArmour[playerid] = PlayerArmour[playerid] - Damage;
SetPlayerArmourSafe(playerid, PlayerArmour[playerid]);
}
else
{
if(PlayerHealth[playerid]<1)
{
PlayerHealth[playerid] = 0;
OnPlayerDeath(playerid, issuerid, weaponid);
// èëè
// CallRemoteFunction("OnPlayerDeath", "iii",damagedid, playerid,weaponid);
}
PlayerHealth[playerid] = PlayerHealth[playerid] - Damage;
SetPlayerHealthSafe(playerid, PlayerHealth[playerid]);
}
}
if(LastNetworkUpdate[damagedid]+2>gettime() && IsPlayerAimingAC(playerid, damagedid))
{// damagedid íå àôê
DemandDamage[damagedid]+=amount;
if(DemandDamage[damagedid]>MAX_DEMAND_DAMAGE)
{
ApplyDamage(playerid,damagedid,DemandDamage[damagedid],weaponid);
}
LastDamagedBy[damagedid]=playerid;
LastDamage[damagedid]=amount;
}
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
new Float: vida, Float: armadura, Float: dmg;
GetPlayerArmour(damagedid, armadura);
GetPlayerHealth(damagedid, vida);
if(armadura > 0)
{
if(amount > armadura)
{
dmg = amount - armadura;
vida = vida - dmg;
SetPlayerArmour(damagedid, 0.0);
SetPlayerHealth(damagedid, vida);
return 1;
}
armadura = armadura - amount;
SetPlayerArmour(damagedid, armadura);
}
if(armadura < 1)
{
vida = vida - amount;
SetPlayerHealth(damagedid, vida);
}
return true;
}
|
Почему бы вам не использовать один из публичных способов? Так же работает и с бронёй.
|
|
хм... сейчас тестил этот способ, получается что сервер опирается на данные от клиента который наносит повреждения... а если такой клиент будет отправлять завышенные цифры?
|
|
Что мешает поставить серверные цифры? Единственно что не точно - это гранаты и дробовики.
|