# Entity:PassesFilter

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

```lua
boolean Entity:PassesFilter( Entity caller, Entity ent )
```

## Açıklama

Varlığın, varlık filtresinden geçip geçmediğini test eder.

Bu, "filter" türündeki scriptli varlıklarda [ENTITY:PassesFilter](https://gmod.tr/wiki/Entity:PassesFilter) fonksiyonunu çağıracaktır.

> **NOT:** Bu fonksiyon sadece "filter" türündeki varlıklar üzerinde çalışır. ( filter_* varlıkları, oyunun temel filtre varlıkları dahil )

## Argümanlar

1. [Entity](https://gmod.tr/wiki/Entity) **caller**: Testin başlatıcısı. Örneğin bu filtre varlığının kullanıldığı tetikleyici.
2. [Entity](https://gmod.tr/wiki/Entity) **ent**: Varlık filtresine karşı test edilecek varlık.

## Döndürülen Değerler

1. [boolean](https://gmod.tr/wiki/boolean): Varlığın, varlık filtresinden geçip geçmediği.

### Örnek

Hammer varlıklarını Lua aracılığıyla kontrol etmek için kullanıma hazır varlık (örneğin `trigger_teleport` için). Bu varlık, bir [CRecipientFilter](https://gmod.tr/wiki/CRecipientFilter) gibi çalışır: filtrenin her tetikleyici için izin verilen ve verilmeyen varlıkların bir listesi vardır. Unutmayın, sadece oyuncuları değil, başka varlıkları da ekleyebilirsiniz.

```lua
-- entities/filter_lua.lua
ENT.Type = "filter" -- Bu ayarlanmalıdır, yoksa varlık çalışmaz
ENT.Base = "base_filter" -- Temel

function ENT:Initialize()
	self.Lists = {} -- Listeler oluşturuluyor
end

function ENT:AttachToEntity(ent) -- Filtreyi varlığa ekler
	ent:SetSaveValue("m_hFilter", self)
	self.Lists[ent] = {}
end

function ENT:AddPlayer(ent, ply, shouldTrigger) -- Oyuncuyu listeye ekler. `shouldTrigger` oyuncunun bu varlığı kullanıp kullanamayacağına karar verir
	if not self.Lists[ent] then
		error("Önce filtreyi varlığa ekleyin")
	end

	self.Lists[ent][ply] = not shouldTrigger
end

function ENT:AddAllPlayers(ent, shouldTrigger) -- Tüm oyuncuları ekler. ENT:AddPlayer ile aynıdır
	if not self.Lists[ent] then
		error("Önce filtreyi varlığa ekleyin")
	end

	for k, v in ipairs(player.GetAll()) do
		self.Lists[ent][v] = not shouldTrigger
	end
end

function ENT:PassesFilter(trigger, ent) -- Varlığın çekirdeği. Bu, varlığın tetikleyiciyi kullanıp kullanamayacağına karar verir.
	return not self.Lists[trigger][ent]
end

-- autorun/server/filter.lua (bu sadece bir kullanım örneğidir)
local function CreateLuaFilter()
	if LuaFilter then
		LuaFilter:Remove() -- Eğer varlığımız zaten mevcutsa, onu kaldır
	end

	LuaFilter = ents.Create("filter_lua") -- Varlığı oluşturur
	LuaFilter:Spawn()

	for k, v in ipairs(ents.FindByClass("trigger_teleport")) do -- Haritadaki tüm trigger_teleport'ları varlığımıza ekliyoruz
		LuaFilter:AttachToEntity(v) -- Ekle
		LuaFilter:AddAllPlayers(v, false) -- Tüm oyuncuları ekle ve onlar için filtreyi `false` olarak ayarla. Böylece hiçbir oyuncu ışınlayıcıyı tetikleyemez
		LuaFilter:AddPlayer(v, Entity(1), true) -- İlk oyuncuyu hariç tut. Bu, ilk oyuncunun ışınlayıcıyı kullanabilmesini sağlar.
	end
end

hook.Add("InitPostEntity", "CreateLuaFilter", CreateLuaFilter) -- Bu, harita yüklendiğinde varlığı otomatik olarak oluşturur
hook.Add("PostCleanupMap", "CreateLuaFilter", CreateLuaFilter) -- Bu, harita temizliğinden sonra varlığı otomatik olarak oluşturur
```

- [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/Entity:PassesFilter
