GM:HandlePlayerArmorReduction
Açıklama
Oyuncu hasar aldığında, oyuncunun zırh azalmasını işlemek için çağrılır.
Diğer hasar kancaları (hook) ile olan çağrılma sırasını netleştirin.
Argümanlar
Örnek
Varsayılan Half-Life 2 zırh azaltma sistemi.
function GM:HandlePlayerArmorReduction( ply, dmginfo )
-- Eğer zırh yoksa veya özel hasar türleriyse, zırhı atla
if ( ply:Armor() <= 0 || bit.band( dmginfo:GetDamageType(), DMG_FALL + DMG_DROWN + DMG_POISON + DMG_RADIATION ) != 0 ) then return end
local flBonus = 1.0 -- Her bir Zırh Puanı, 1/x can puanı değerindedir
local flRatio = 0.2 -- Zırh, hasarın %80'ini alır
if ( GetConVar( "player_old_armor" ):GetBool() ) then
flBonus = 0.5
end
local flNew = dmginfo:GetDamage() * flRatio
local flArmor = (dmginfo:GetDamage() - flNew) * flBonus
if ( !GetConVar( "player_old_armor" ):GetBool() ) then
if ( flArmor < 1.0 ) then flArmor = 1.0 end
end
-- Bu, sahip olduğumuzdan daha fazla zırh kullanır mı?
if ( flArmor > ply:Armor() ) then
flArmor = ply:Armor() * ( 1 / flBonus )
flNew = dmginfo:GetDamage() - flArmor
ply:SetArmor( 0 )
else
ply:SetArmor( ply:Armor() - flArmor )
end
dmginfo:SetDamage( flNew )
end
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord