Entity:PassesFilter
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
Döndürülen Değerler
Ö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