EFFECT

Bu kancalar (hook) bir Lua efekti içerisinde kullanılır. Lua efektleri ya /lua/effects dizininde ya da bir oyun modunda /gamemodes/<oyunmoduadı>/entities/effects dizininde saklanır.

Efektler, sınıf adı (classname) class CLuaEffect olan varlıklardır (entity) ve bu nedenle, Entity fonksiyonları onlar üzerinde (self argümanı kullanılarak) kullanılabilir.

Bir EFFECT, EFFECT:Init, EFFECT:Render ve isteğe bağlı olarak EFFECT:Think kancalarının bir kombinasyonu kullanılarak oluşturulur. Başka bir yol ise, tüm partikülleri Init kancasında tek seferde oluşturmak ve diğer kancaları hiç kullanmamaktır.

Örnek

Init ve Think kancalarının bir kombinasyonunu kullanarak bir partikül efekti oluşturur.

function EFFECT:Init( data ) -- CEffectData paylaşılan bir nesne olduğundan, onu sadece saklayıp özelliklerini daha sonra kullanamayız -- Bunun yerine, özelliklerin kendilerini saklarız self.offset = data:GetOrigin() + Vector( 0, 0, 0.2 ) self.angles = data:GetAngles() self.particles = 4 end function EFFECT:Think() return true end function EFFECT:Render() local emitter = ParticleEmitter( self.offset, false ) for i=0, self.particles do local particle = emitter:Add( "effects/softglow", self.offset ) if particle then particle:SetAngles( self.angles ) particle:SetVelocity( Vector( 0, 0, 15 ) ) particle:SetColor( 255, 102, 0 ) particle:SetLifeTime( 0 ) particle:SetDieTime( 0.2 ) particle:SetStartAlpha( 255 ) particle:SetEndAlpha( 0 ) particle:SetStartSize( 1.6 ) particle:SetStartLength( 1 ) particle:SetEndSize( 1.2 ) particle:SetEndLength( 4 ) end end emitter:Finish() end

Örnek

Sadece Init kancasını kullanarak bir partikül efekti oluşturur. Bu efekti bir döngüde kullanmak için, her çizilen karede (frame) bu efektin yeni bir örneğini oluşturmak gerekir.

function EFFECT:Init( data ) local vOffset = data:GetOrigin() + Vector( 0, 0, 0.2 ) local vAngle = data:GetAngles() local emitter = ParticleEmitter( vOffset, false ) for i=0,4 do local particle = emitter:Add( "effects/softglow", vOffset ) if particle then particle:SetAngles( vAngle ) particle:SetVelocity( Vector( 0, 0, 15 ) ) particle:SetColor( 255, 102, 0 ) particle:SetLifeTime( 0 ) particle:SetDieTime( 0.2 ) particle:SetStartAlpha( 255 ) particle:SetEndAlpha( 0 ) particle:SetStartSize( 1.6 ) particle:SetStartLength( 1 ) particle:SetEndSize( 1.2 ) particle:SetEndLength( 4 ) end end emitter:Finish() end function EFFECT:Think() return false end function EFFECT:Render() end

Entity'den metotları miras alır.

Olaylar

EFFECT:EndTouch()
ENTITY:EndTouch fonksiyonunun efekt alternatifi.
Vector EFFECT:GetTracerShootPos( Vector pos, Weapon ent, number attachment )
Silah mermi izi (tracer) efektleri için, bir izin (trace) "gerçek" başlangıç pozisyonunu almak için kullanılır. "Gerçek" ile kastedilen, 3. şahıs görünümünde 3. şahıs pozisyonunun, 1. şahıs görünümünde ise 1. şahıs pozisyonunun kullanılacağıdır.
EFFECT:Init( CEffectData effectData )
Efekt oluşturulduğunda çağrılır.
EFFECT:PhysicsCollide( table colData, PhysObj collider )
Efekt herhangi bir şeyle çarpıştığında çağrılır.
EFFECT:Render()
Efektin oluşturulması (render) gerektiğinde çağrılır.
EFFECT:StartTouch()
ENTITY:StartTouch fonksiyonunun efekt alternatifi.
boolean EFFECT:Think()
Efektin düşünmesi (think) gerektiğinde çağrılır, efekti sonlandırmak için false döndürün.
EFFECT:Touch()
ENTITY:Touch fonksiyonunun efekt alternatifi.

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