Entity:PassesFilter

  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 fonksiyonunu çağıracaktır.

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 caller
Testin başlatıcısı.

Örneğin bu filtre varlığının kullanıldığı tetikleyici.

2 Entity ent
Varlık filtresine karşı test edilecek varlık.

Döndürülen Değerler

1 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 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.

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

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord