Files
wnsrc/lua/pac3/core/server/effects.lua
lifestorm 94063e4369 Upload
2024-08-04 22:55:00 +03:00

70 lines
1.6 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
pac.EffectsBlackList =
{
"frozen_steam",
"portal_rift_01",
"explosion_silo",
"citadel_shockwave_06",
"citadel_shockwave",
"choreo_launch_rocket_start",
"choreo_launch_rocket_jet",
}
if not pac_loaded_particle_effects then
pac_loaded_particle_effects = {}
local files = file.Find("particles/*.pcf", "GAME")
for key, file_name in pairs(files) do
if not pac_loaded_particle_effects[file_name] and not pac.BlacklistedParticleSystems[file_name:lower()] then
game.AddParticles("particles/" .. file_name)
end
pac_loaded_particle_effects[file_name] = true
end
pac.Message('Loaded total ', #files, ' particle systems')
end
util.AddNetworkString("pac_effect_precached")
util.AddNetworkString("pac_request_precache")
function pac.PrecacheEffect(name)
PrecacheParticleSystem(name)
net.Start("pac_effect_precached")
net.WriteString(name)
net.Broadcast()
end
local queue = {}
net.Receive("pac_request_precache", function(len, pl)
local name = net.ReadString()
if table.HasValue(pac.EffectsBlackList, name) then return end
-- Each player gets a 50 length queue
local plqueue = queue[pl]
if plqueue then
if #plqueue<50 then plqueue[#plqueue+1] = name end
else
plqueue = {name}
queue[pl] = plqueue
local function processQueue()
if #plqueue == 0 then
queue[pl] = nil
else
timer.Simple(0.5, processQueue)
pac.PrecacheEffect(table.remove(plqueue,1))
end
end
processQueue()
end
end)