Scripted Entities

Yazılımlı Varlıklar (veya Gönderildi.kısaca s) tamamen Lua'da kodlanmış özel varlıklardır.

Genellikle ayrı bir şekilde tanımlanırlar. .lua Dosya lua/entities/ Dosya.

Farklılık Motor Kuruluşları Kullanamayacağınız bir şey. Mülkiyet Kancaları motor birimleri üzerinde.

Yazılımlı Varlık Tipleri

6 farklı türde Scripted Entity vardır:

ENT. Type Açıklama
nextbot Daha iyi navigasyona sahip yeni tip bir NPC.

Hepsi. NextBot İşlevler ve kancalar da bu varlıklarda kullanılabilir.
anim Oyun dünyasında görsel ve/veya fiziksel varlığı olan normal bir varlık, aletler veya hayal edebileceğiniz her şey gibi.
fırça Çoğunlukla Hammer Seviye Düzenleyicisi ile çok yakından kullanılır.
noktası Genellikle oyun dünyasında görsel veya fiziksel bir temsili olmayan, mantıksal varlıklar gibi yalnızca sunucu kenarında bulunan bir varlık.
Filtrele Trigger ile birlikte kullanılan farklı bir "nokta" varlığı (brush türü) varlıklar.
Ai. 2004 Kaynak Motoru NPC sistemi birimi

Senaryo yazma

Aşağıdakiler ile kullanılabilir: Yazılımlı Varlıklar:

Aşağıdakiler ile kullanılabilir: Yazılı Silahlar (Ayrıca olarak da bilinir) SWEPs:

Aşağıdaki örnek betikler içine yerleştirilir. lua/entitiesEğer varlık oluşturma hakkında daha derinlemesine bir ders istersen, buraya tıklayın.

Örnek

Basit bir dosya. Gönderildi. İstemci ve sunucu üzerinde çalışan bir betik. Dosyayı adlandırabilirsiniz barrel.lua ya da adını taşıyan bir klasöre yerleştirin barrel Ve ona bir isim ver. shared.luaFiziksel bir varil yaratır ve yok edilebilir.

AddCSLuaFile() ENT.Type = "anim" ENT.Base = "base_anim" -- Yumurta menüsünde görünen isim. ENT.PrintName = "Explosive Barrel" ENT.Information = "Shoot to explode." ENT.Author = "You!" ENT.Spawnable = true -- Varlığın spawn menüsünde bulunduğu kategori. ENT.Category = "Other" - Bunlar özel varlık değişkenleri, onları değiştirmekten çekinmeyin! ENT.ExplosionDamage = 100 ENT.ExplosionRadius = 250 - Bu özel değişken varlığın sonsuza kadar patlamasını engeller. ENT.HasExploded = false -- Bu kod varlık oluşturulduğunda çalıştırılır. function ENT:Initialize() self:SetModel("models/props_c17/oildrum001_explosive.mdl") - Yalnızca sunucuda fizik ayarlayın çünkü müşteri üzerinde yaparsanız garip sorunlar yaratma eğilimindedir. if SERVER then self:PhysicsInit(SOLID_VPHYSICS) self:SetMoveType(MOVETYPE_VPHYSICS) self:SetSolid(SOLID_VPHYSICS) end local phys = self:GetPhysicsObject() - Bu, yaratıldığında havada sıkışmak yerine varlığı düşürecek. if ( IsValid(phys) ) then phys:Wake() end - Bu, varlığın silinmesine izin vermek için gereklidir. if ( SERVER ) then self:PrecacheGibs() end end - Hasar gördüğünde patlar! function ENT:OnTakeDamage(damageInfo) if self.HasExploded then return Eğer varlık zaten patlamışsa şifreyi burada durdurun. end local newEffectData = EffectData() -- util. Effect'da kullanılacak yeni bir EffectData oluşturur. newEffectData:SetOrigin(self:GetPos()) newEffectData:SetMagnitude(100) newEffectData:SetScale(1) - Patlama etkisini yarat! util.Effect("Explosion",newEffectData) - Varlığı parçalara ayırır. (Vektör gibslere yukarı doğru kuvvet ekler) self:GibBreakServer(Vector(0,0,10)) - Bunu doğruya ayarlamak varlığın tekrar patlamasını engeller. self.HasExploded = true self:Remove() end function ENT:OnRemove() if ( SERVER ) then - Patlama hasarı. -- (Son iki değişken özel ve üstte değiştirilebilir) util.BlastDamage(self,self,self:GetPos(),self.ExplosionRadius,self.ExplosionDamage) end end

Örnek

A. Gönderildi. Üç yazılımdan oluşan bu dosyayı varlığınızın adını taşıyan bir klasöre yerleştirin.

Kod

-- cl_init.lua include("shared.lua") -- Bu müşteri üzerinde shared.lua çalışır

Kod

-- init.lua -- Müşteriye paylaşılan ve cl_init gönder AddCSLuaFile("shared.lua") AddCSLuaFile("cl_init.lua") include("shared.lua") -- Bu sunucuda shared.lua çalışıyor. -- Bu kod varlık oluşturulduğunda çalıştırılır. function ENT:Initialize() self:SetModel("models/props_c17/oildrum001_explosive.mdl") self:PhysicsInit(SOLID_VPHYSICS) self:SetMoveType(MOVETYPE_VPHYSICS) self:SetSolid(SOLID_VPHYSICS) local phys = self:GetPhysicsObject() - Bu, yaratıldığında havada sıkışmak yerine varlığın düşmesini sağlayacak. if ( IsValid( phys ) ) then phys:Wake() end - Bu, varlığın silinmesine izin vermek için gereklidir. self:PrecacheGibs() end - Hasar gördüğünde patlar! function ENT:OnTakeDamage(damageInfo) if self.HasExploded then return Eğer varlık zaten patlamışsa şifreyi burada durdurun. end local newEffectData = EffectData() -- util. Effect'da kullanılacak yeni bir EffectData oluşturur. newEffectData:SetOrigin(self:GetPos()) newEffectData:SetMagnitude(100) newEffectData:SetScale(1) - Patlama etkisini yarat! util.Effect("Explosion", newEffectData) - Varlığı parçalara ayırır. (Vektör gibslere yukarı doğru kuvvet ekler) self:GibBreakServer(Vector(0, 0, 10)) - Bunu doğruya ayarlamak varlığın tekrar patlamasını engeller. self.HasExploded = true self:Remove() end function ENT:OnRemove() - Patlama hasarı. -- (Son iki değişken özel ve üstte değiştirilebilir) util.BlastDamage( self, self, self:GetPos(), self.ExplosionRadius, self.ExplosionDamage ) end

Kod

-- shared.lua AddCSLuaFile() ENT.Type = "anim" ENT.Base = "base_anim" -- Yumurta menüsünde görünen isim. ENT.PrintName = "Explosive Barrel" ENT.Information = "Shoot to explode." ENT.Author = "You!" ENT.Spawnable = true -- Varlığın spawn menüsünde bulunduğu kategori. ENT.Category = "Other" - Bunlar özel varlık değişkenleri, onları değiştirmekten çekinmeyin! ENT.ExplosionDamage = 100 ENT.ExplosionRadius = 250 - Bu özel değişken varlığın sonsuza kadar patlamasını engeller. ENT.HasExploded = false

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