Faça assim:
-- // CLIENT-SIDE
addEventHandler( "onClientPlayerDamage", root, function( attacker, weapon, bodypart, loss )
cancelEvent( ); -- // Cancela o dano
if ( attacker == localPlayer ) then -- // Verifica se o 'attacker' é o jogador que está dando dano e não o que está sofrendo o dano
triggerServerEvent( "onClientGotDamage", localPlayer, attacker, weapon, bodypart, loss, source ); -- // Sincroniza o dano
else
if ( weapon == 53 ) then -- // Verifica se o jogador sofreu uma queda
setElementHealth( localPlayer, loss ); -- // Sofreu? Então ele perderá vida
end
end
end );
-- // SERVER-SIDE
local TABLE_DAMAGE = {
-- // [ID da Arma] = Novo Dano
[23] = 20, -- // Pistola Silenciada
[24] = 35, -- // Desert Eagle
[30] = 25, -- // AK-47
};
addEvent( "onClientGotDamage", true ) -- // atirador, arma, bodypart, dano, alvo
addEventHandler( "onClientGotDamage", root, function( attacker, weapon, bodypart, damage, target )
if ( not isPeadDead( attacker ) ) then -- // Caso o atirador esteja morto, o alvo não sofrerá mais danos
local newDamage
local targetArmor = getPedArmor( target ); -- // Obtém o valor do colete (se tiver)
local targetHealth = getElementHealth( target ); -- // Obtém o valor da vida
if ( getElementData( attacker, "mane123" ) ) then -- // A sua verificação, se ele é um "admin"
local g_Damage = TABLE_DAMAGE[ weapon ] or damage;
newDamage = g_Damage;
if ( targetArmor > 0 ) then -- // O alvo tem colete?
setPedArmor( target, targetArmor - newDamage );
else
-- // O alvo não tem colete? Então bora tirar a vida dele.
local h = math.max( targetHealth - newDamage, 0 );
setElementHealth( target, h );
if ( h <= 0 ) then
killPed( target, attacker, weapon, bodypart, false );
end
end
end
end
end );