mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
70 lines
1.6 KiB
Lua
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)
|