--[[ 3 4 20 25 ]] local tex = dxCreateTexture("assets/collisionsmoke.dds", "dxt5") local shader_smoke = dxCreateShader("assets/shader.fx", 0, 0, false) dxSetShaderValue (shader_smoke, "Tex0", tex) local poses = { fire = { effect = "flamethrower", speed = 2, -- sound = {"genrl", 45, 0}, sound = "assets/ogon.mp3", looped = false, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, }, smoke = { effect = "flamethrower", speed = 3, -- sound = {"genrl", 136, 28}, sound = "assets/dym.mp3", looped = true, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, {446.95074462891, -1874.7642822266, 6.9921875}, {442.87677001953, -1874.8898925781, 6.9921875}, {440.09805297852, -1874.9036865234, 6.9921875}, {436.75503540039, -1874.9097900391, 6.9921875}, {432.47747802734, -1874.8896484375, 6.9921875}, {429.20907592773, -1874.8920898438, 6.9921875}, }, } local effects = {} local keys = { fire = "1", smoke = "2", } function addEffect(key, state) if not getElementData(localPlayer, "access.effect") then return end for t, v in pairs (keys) do dxSetShaderValue (shader_smoke, "isFire", t == "fire") if v == key then triggerServerEvent ("sync_effect", resourceRoot, t, state == "down") break end end end bindKey(keys.fire, "both", addEffect) bindKey(keys.smoke, "both", addEffect) function setEffectToggle (t, state) if effects[t] then for i, eff in ipairs (effects[t]) do if eff.el and isElement(eff.el) then eff.state = state end end end end addEvent ("sync_effect", true) addEventHandler ("sync_effect", resourceRoot, setEffectToggle) -- playSFX("genrl", 136, 83, false) -- playSFX("genrl", 45, 0, false) -- playSFX("genrl", 136, 28, false) local sounds = {} addEventHandler ("onClientHUDRender", root, function() for t, data in pairs (effects) do for i, eff in ipairs (data) do if eff and eff.el and isElement(eff.el) then setEffectDensity(eff.el, eff.state and 1 or 0) if eff.state then if not sounds[t] then sounds[t] = playSound3D (poses[t].sound, 1705.45, 1186.33, 11.29, poses[t].looped) setSoundVolume(sounds[t] , 1) end else if sounds[t] and isElement(sounds[t]) then destroyElement(sounds[t]) end sounds[t] = nil end -- if eff.sound then -- setSoundVolume (eff.sound, eff.state and 1 or 0) -- elseif poses[t].sound and not eff.sound or isSoundFinished(eff.sound) then -- eff.sound = playSound3D (poses[t].sound..".mp3", 1705.45, 1186.33, 11.29, false) -- end end end end end) function isSoundFinished(theSound) return ( getSoundPosition(theSound) == getSoundLength(theSound) ) end addEventHandler ("onClientResourceStart", resourceRoot, function() for t, data in pairs (poses) do for i, pos in ipairs (data) do if pos[1] then local effect = createEffect (poses[t].effect, pos[1], pos[2], pos[3], 0, 0, 0, 100, true) if not effects[t] then effects[t] = {} end table.insert (effects[t], { t = t, el = effect, }) setEffectSpeed (effect, poses[t].speed or 1) setEffectDensity(effect, 0) engineApplyShaderToWorldTexture(shader_smoke, "bullethitsmoke") end end end end)