Revision Difference
GM:EntityTakeDamage#527200
<function name="EntityTakeDamage" parent="GM" type="hook">
<ishook>yes</ishook>
<description>Called when an entity takes damage. You can modify all parts of the damage info in this hook.</description>
<realm>Server</realm>
<predicted>No</predicted>
<args>
<arg name="target" type="Entity">The entity taking damage</arg>
<arg name="dmg" type="CTakeDamageInfo">Damage info</arg>
</args>
<rets>
<ret name="" type="boolean">Return true to completely block the damage event</ret>
</rets>
</function>
<example>
<description>Explosion damage is reduced to players only.</description>
<code>
hook.Add( "EntityTakeDamage", "EntityDamageExample", function( target, dmginfo )
⤶
if ( target:IsPlayer() and dmginfo:IsExplosionDamage() ) then
⤶
dmginfo:ScaleDamage( 0.5 ) // Damage is now half of what you would normally take.
⤶
end
⤶
end )
if ( target:IsPlayer() and dmginfo:IsExplosionDamage() ) then
dmginfo:ScaleDamage( 0.5 ) // Damage is now half of what you would normally take.
end
end )
</code>
</example>
<example>
<description>Players in vehicles takes halved damage.</description>
<code>
hook.Add( "EntityTakeDamage", "EntityDamageExample2", function( target, dmginfo )
⤶
if ( target:IsVehicle() ) then
⤶
if ( target:IsVehicle() ) then
local ply = target:GetDriver()
if ( IsValid(ply) && dmginfo:GetDamage() > 1 ) then
dmginfo:SetDamage(dmginfo:GetDamage() / 2)
ply:TakeDamageInfo(dmginfo)
dmginfo:SetDamage(0)
⤶
⤶
ply:TakeDamageInfo(dmginfo)
⤶
dmginfo:SetDamage(0)
end
⤶
end
⤶
end )
end
end )
</code>
</example>