# GM:HandlePlayerArmorReduction

- **Ortam:** Sunucu
- **İngilizce aslı:** https://wiki.facepunch.com/gmod/GM:HandlePlayerArmorReduction
- **Çeviri tarihi:** 2025-09-08

```lua
GM:HandlePlayerArmorReduction( Player ply, CTakeDamageInfo dmginfo )
```

## Açıklama

Oyuncu hasar aldığında, oyuncunun zırh azalmasını işlemek için çağrılır.

> **DOĞRULAMA:** Diğer hasar kancaları (hook) ile olan çağrılma sırasını netleştirin.

## Argümanlar

1. [Player](https://gmod.tr/wiki/Player) **ply**: Hasarı alan oyuncu.
2. [CTakeDamageInfo](https://gmod.tr/wiki/CTakeDamageInfo) **dmginfo**: Alınan hasar.

### Örnek

Varsayılan Half-Life 2 zırh azaltma sistemi.

```lua
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
```

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/GM:HandlePlayerArmorReduction
