4ªU9nutscripts/vscriptsmapspawn_addon™ò͸ÿyÿÿ ::JukeboxHorde <- { delay = 8.0, used = false, triggerTime = -1.0, hooked = {}, keyword = "jukebox" } ::OnJukeboxUsed <- function() { if (JukeboxHorde.used) return JukeboxHorde.used = true JukeboxHorde.triggerTime = Time() + JukeboxHorde.delay } ::SpawnHorde <- function() { Director.PlayMegaMobWarningSounds() local director = Entities.FindByClassname(null, "info_director") if (director != null) EntFire("info_director", "ForcePanicEvent") else SendToServerConsole("director_force_panic_event") } ::ScanJukeboxes <- function() { local entity = Entities.First() while (entity != null) { local index = entity.GetEntityIndex() if (!(index in JukeboxHorde.hooked)) { local model = entity.GetModelName().tolower() local name = entity.GetName().tolower() if (model.find(JukeboxHorde.keyword) != null || name.find(JukeboxHorde.keyword) != null) { entity.ConnectOutput("OnPressed", "OnJukeboxUsed") entity.ConnectOutput("OnPlayerUse", "OnJukeboxUsed") entity.ConnectOutput("OnPlayerTouch", "OnJukeboxUsed") JukeboxHorde.hooked[index] <- true } } entity = Entities.Next(entity) } } ::ThinkJukeboxHorde <- function() { if (JukeboxHorde.used) { if (JukeboxHorde.triggerTime > 0 && Time() >= JukeboxHorde.triggerTime) { JukeboxHorde.triggerTime = -1.0 SpawnHorde() return 10.0 } return (JukeboxHorde.triggerTime > 0) ? 0.25 : 10.0 } ScanJukeboxes() return 2.0 } local entity = Entities.First() if (entity != null) { entity.ValidateScriptScope() AddThinkToEnt(entity, "ThinkJukeboxHorde") }