Код:
#include <a_samp>
stock PlayFreezeAnim(playerid,animlib[],animname[])return ApplyAnimation(playerid,animlib,animname,4.1,0,1,1,0,0,1);
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid,bodypart)
{
if(GetPlayerTeam(playerid)!=GetPlayerTeam(damagedid))
{
if(IsPlayerStreamedIn(playerid,damagedid) && GetPlayerState(damagedid) == PLAYER_STATE_SPAWNED)
{
if(weaponid==22||weaponid==23||weaponid==24||weaponid==25||weaponid==26||weaponid==27||
weaponid==28||weaponid==29||weaponid==30||weaponid==31||weaponid==32||weaponid==33||
weaponid==34)
{
if(damagedid != INVALID_PLAYER_ID)
{
new HitAnimRifle[][]=
{
"HIT_back",
"HIT_behind",
"HIT_front",
"HIT_L",
"HIT_R"
};
new HitAnimDS[][]=
{
"HIT_front",
"HIT_GUN_BUTT",
"HIT_walk"
};
new AnimL[30],AnimN[30],Float:health, Float:armour;
GetAnimationName(GetPlayerAnimationIndex(playerid), AnimL, sizeof(AnimL), AnimN, sizeof(AnimN));
GetPlayerHealth(damagedid, health);
GetPlayerArmour(damagedid, armour);
if(weaponid==24||weaponid==25)
{
new randhit = random(sizeof(HitAnimDS));
if(armour==0 && health>=60 || armour==100 && health==100)
PlayFreezeAnim(damagedid,"PED",HitAnimDS[randhit]);
}
if(weaponid==33||weaponid==34)
{
new randhit = random(sizeof(HitAnimRifle));
if(armour==0 && health>=70 || armour==100 && health==100)
PlayFreezeAnim(damagedid,"PED",HitAnimRifle[randhit]);
}
if(armour > 0)
{
if(amount>armour)
{
new Float:dmg;
dmg = amount - armour;
health = health - dmg;
SetPlayerArmour(damagedid,0.0);
SetPlayerHealth(damagedid,health);
}
else
{
armour = armour - amount;
SetPlayerArmour(damagedid, armour);
}
}
else if(armour == 0)
{
if(health <= amount)
{
SetPlayerHealth(damagedid,0.0);
CallRemoteFunction("OnPlayerDeath","ddd",damagedid,playerid,weaponid);
}
else
{
health=health-amount;
SetPlayerHealth(damagedid,health);
}
}
CallRemoteFunction("OnPlayerTakeDamage","ddfd",damagedid,playerid,amount,weaponid,bodypart);
}
}
}
}
return 1;
}