-- LUA Script - precede every function and global member with lowercase name of script + '_main' local U = require "scriptbank\\utillib" local rad = math.rad local deg = math.deg local min = math.min local max = math.max local torches = {} local torchimages = torchimages or ParticlesLoadImage( "effectbank\\particles\\flame.dds", 10 ) function ignitetorch2_init( e ) Include( "utillib.lua" ) CollisionOff( e ) end local function update( t, aY ) local lxo, lyo, lzo = U.Rotate3D( -5.4, 0, 0, 0, aY, 0 ) local rxo, ryo, rzo = U.Rotate3D( 5.5, 0, 0, 0, aY, 0 ) if ( t.emitter2 ~= nil ) then ParticlesSetOffset( t.emitter2, min( rxo - 0.1, rxo + 0.1 ), 23, min( rzo - 0.1, rzo + 0.1 ), max( rxo - 0.1, rxo + 0.1 ), 23, max( rzo - 0.1, rzo + 0.1 ) ) end if ( t.emitter3 ~= nil ) then ParticlesSetOffset( t.emitter3, min( lxo - 0.1, lxo + 0.1 ), 21, min( lzo - 0.1, lzo + 0.1 ), max( lxo - 0.1, lxo + 0.1 ), 21, max( lzo - 0.1, lzo + 0.1 ) ) end end function ignitetorch2_main( e ) local torch = torches[ e ] if torch == nil then torches[ e ] = { state = 'idle', emitter1 = ParticlesGetFreeEmitter() } ParticlesAddEmitterEx( torches[ e ].emitter1, 1, 1, -- Offset: minX minY minZ maxX maxY maxZ -0.1, 25, -0.1, 0.1, 25, 0.1, -- Scale: startMin startMax endMin endMax 2, 3, 5, 10, -- Speed (vector): minX minY minZ maxX maxY maxZ 0, 0.1, 0, 0, 0.1, 0, -- Rotate Z: minZ maxZ, Lifemin Lifemax -0.0, 0.0, 167, 267, -- Alpha: startMin startMax endMin endMax 95, 95, 0, 0, -- Freq, entityid, limbindex, particleimage, imageframes 10, e, 0, torchimages, 64 ) torches[ e ].emitter2 = ParticlesGetFreeEmitter() ParticlesAddEmitterEx( torches[ e ].emitter2, 1, 1, -- Offset: minX minY minZ maxX maxY maxZ 5.4, 23, -0.1, 5.6, 23, 0.1, -- Scale: startMin startMax endMin endMax 2, 3, 5, 10, -- Speed (vector): minX minY minZ maxX maxY maxZ 0, 0.1, 0, 0, 0.1, 0, -- Rotate Z: minZ maxZ, Lifemin Lifemax -0.0, 0.0, 167, 267, -- Alpha: startMin startMax endMin endMax 95, 95, 0, 0, -- Freq, entityid, limbindex, particleimage, imageframes 10, e, 0, torchimages, 64 ) torches[ e ].emitter3 = ParticlesGetFreeEmitter() ParticlesAddEmitterEx( torches[ e ].emitter3, 1, 1, -- Offset: minX minY minZ maxX maxY maxZ -5.5, 21, -0.1, -5.3, 21, 0.1, -- Scale: startMin startMax endMin endMax 2, 3, 5, 10, -- Speed (vector): minX minY minZ maxX maxY maxZ 0, 0.1, 0, 0, 0.1, 0, -- Rotate Z: minZ maxZ, Lifemin Lifemax -0.0, 0.0, 167, 267, -- Alpha: startMin startMax endMin endMax 95, 95, 0, 0, -- Freq, entityid, limbindex, particleimage, imageframes 10, e, 0, torchimages, 64 ) return end local pX, pY, pZ = g_PlayerPosX, g_PlayerPosY + 31, g_PlayerPosZ if GetGamePlayerStatePlayerDucking() == 1 then pY = pY - 10 end local aX, aY, aZ = rad( g_PlayerAngX ), rad( g_PlayerAngY ), rad( g_PlayerAngZ ) local XO, YO, ZO = U.Rotate3D ( 10, -16, 50, aX, aY, aZ ) local lx, ly, lz = pX + XO, pY + YO, pZ + ZO ResetPosition( e, lx, ly, lz ) ResetRotation( e, 0, deg( aY), 0 ) update( torch, aY ) end