Config
Config = {}
-- ════════════════════════════════════════════════════════════════════════════════
-- CORE SETTINGS
-- ════════════════════════════════════════════════════════════════════════════════
Config.targetResource = "ox_target" -- Interaction system: "ox_target" or "qb-target"
Config.enableLoot = true -- Enable zombie loot drops (set to false to disable all loot)
Config.lootMode = "instant" -- Loot pickup mode:
-- "instant" = item goes directly into inventory
-- "interact" = requires interacting with zombie body
Config.lootObjectModel = "prop_money_bag_01" -- Object model for loot drops (only used in "interact" mode)
Config.enableJacking = false -- Allow zombies to pull players out of vehicles
Config.canRagdoll = true -- Allow zombies to enter ragdoll state
Config.replaceGasParticle = true -- Replace gas particle with custom particle
Config.disableWeaponWhip = true -- Disable weapon whip
Config.zombiesBlips = true -- Enable blips for zombies on the minimap
Config.playerAffectRadiusBlip = true -- Enable an circle overlay showing the radius in which player is detected by zombies
Config.debug = true -- Enable debug mode: on-screen overlay (location, zombie counts, player state, config),
-- ox_lib zone boundary visualization, and verbose console logging
-- (spawn/despawn events, aggro triggers, zone enter/exit)
Config.gameBucket = 0 -- Routing bucket for zombie spawns (must match the bucket your players are in)
-- ════════════════════════════════════════════════════════════════════════════════
-- COMBAT LIMITS
-- Controls how many zombies can attack the player simultaneously
-- ════════════════════════════════════════════════════════════════════════════════
Config.combatLimits = {
primaryCount = 6, -- Max zombies performing melee attacks at once
secondaryCount = 4, -- Max zombies surrounding/taunting the player
populationPedCount = 10, -- Max ambient NPCs that may join combat
}
-- ════════════════════════════════════════════════════════════════════════════════
-- SPAWN SETTINGS
-- Night time multiplier and zone archetype system
-- ════════════════════════════════════════════════════════════════════════════════
Config.nightTimeSpawnMultiplier = 1.15 -- Spawn count multiplied by this during night time (stacks with zone multiplier)
Config.nightTime = { -- Define night time hours for spawn multiplier (game time, not real time)
beginHour = 21,
beginMinute = 0,
endHour = 5,
endMinute = 0
}
Config.defaultArchetype = "urban" -- Fallback archetype for GTA zones not listed in Config.zoneMapping
Config.affectDangerZones = false -- If true, zone archetype multipliers also apply inside danger zones
-- ════════════════════════════════════════════════════════════════════════════════
-- ZONE ARCHETYPES
-- Define spawn profiles by environment type instead of per-zone.
-- Each archetype controls: spawn multiplier, type distribution, loot table,
-- and default zombie model pool (defaultZombieModels).
--
-- NOTE: spawnChances values are WEIGHTS, not percentages - they do NOT need to
-- sum to 100. The system sums all weights and picks proportionally.
-- Example: { ["default"] = 70, ["tank"] = 10 } means 87.5% default, 12.5% tank.
-- ════════════════════════════════════════════════════════════════════════════════
Config.zoneArchetypes = {
--[[
Military / Secure Facilities
Fort Zancudo, Humane Labs, N.O.O.S.E, Bolingbroke Penitentiary.
]]
military = {
multiplier = 1.4,
spawnChances = {
["default"] = 58,
["tank"] = 10,
["juggernaut"] = 10,
["exploder"] = 10,
["skeleton"] = 6,
["splitter"] = 6,
},
lootTable = "military",
defaultZombieModels = { "s_m_y_blackops_02", "s_m_y_blackops_03", "s_m_y_marine_01", "s_m_y_marine_02", "s_m_y_marine_03", "csb_ramp_marine", "csb_mweather" },
},
--[[
Prison / Correctional Facilities
Bolingbroke Penitentiary.
]]
prison = {
multiplier = 1.2,
spawnChances = {
["default"] = 82,
["tank"] = 12,
["exploder"] = 6,
},
lootTable = "default",
defaultZombieModels = { "s_m_m_prisguard_01", "s_m_y_prismuscl_01", "s_m_y_prisoner_01", "s_m_y_ranger_01", "ig_rashcosvki", "u_m_y_prisoner_01" },
},
--[[
Industrial / Port Zones
Airports, power stations, ports, container yards.
]]
industrial = {
multiplier = 1.2,
spawnChances = {
["default"] = 82,
["screamer"] = 8,
["exploder"] = 6,
["tank"] = 4,
},
lootTable = "industrial",
defaultZombieModels = { "G_M_M_Zombie_01", "G_M_M_Zombie_05", "u_m_y_corpse_01", "ig_gustavo_02", "u_m_y_zombie_01" },
},
--[[
Downtown / City Center
Pillbox Hill, Legion Square, Mission Row, Downtown.
]]
downtown = {
multiplier = 1.2,
spawnChances = {
["default"] = 88,
["screamer"] = 8,
["splitter"] = 2,
["tank"] = 2,
},
lootTable = "downtown",
defaultZombieModels = { "IG_Zombie_DJ_01", "u_f_y_corpse_01", "u_f_y_corpse_02", "u_f_m_corpse_01", "u_m_y_corpse_01", "u_m_o_tramp_01", "a_f_m_tramp_01", "a_f_m_trampbeac_01", "a_m_m_tramp_01", "a_m_m_trampbeac_01", "a_m_o_tramp_01", "u_m_y_zombie_01", "g_m_m_zombie_05", "G_M_M_Zombie_01", "u_m_o_filmnoir", "u_m_m_prolsec_01" },
},
--[[
Urban / City Neighborhoods
Residential and commercial districts across Los Santos.
]]
urban = {
multiplier = 1.0,
spawnChances = {
["default"] = 86,
["screamer"] = 8,
["exploder"] = 2,
["summoner"] = 2,
["tank"] = 2,
},
lootTable = "default",
defaultZombieModels = { "IG_Zombie_DJ_01", "u_f_y_corpse_01", "u_f_y_corpse_02", "u_f_m_corpse_01", "u_m_y_corpse_01", "u_m_o_tramp_01", "a_f_m_tramp_01", "a_f_m_trampbeac_01", "a_m_m_tramp_01", "a_m_m_trampbeac_01", "a_m_o_tramp_01", "u_m_y_zombie_01", "g_m_m_zombie_05", "G_M_M_Zombie_01", "u_m_o_filmnoir", "u_m_m_prolsec_01" },
},
--[[
Suburban / Coastal
Beach areas, quieter neighborhoods, golf courses, bluffs.
]]
suburban = {
multiplier = 1.0,
spawnChances = {
["default"] = 91,
["screamer"] = 5,
["exploder"] = 2,
["skeleton"] = 2,
},
lootTable = "default",
defaultZombieModels = { "a_f_y_runner_01", "a_m_y_runner_01", "a_m_y_golfer_01", "a_f_y_golfer_01", "a_m_y_yoga_01", "a_f_y_hipster_01", "a_m_y_hipster_01", "a_f_m_fatwhite_01", "a_m_m_socenlat_01", "a_f_y_bevhills_01", "a_m_y_bevhills_01", "u_f_y_corpse_01", "u_f_m_corpse_01", "u_m_y_corpse_01", "G_M_M_Zombie_01" },
},
--[[
Coastal / Beach
Vespucci Beach, Del Perro Beach, Procopio Beach.
]]
coastal = {
multiplier = 1.0,
spawnChances = {
["default"] = 93,
["screamer"] = 5,
["animal"] = 5
},
lootTable = "default",
defaultZombieModels = { "a_m_o_beach_01", "a_m_y_beach_01", "a_m_y_beach_02", "a_f_y_beach_01", "a_f_m_beach_01", "a_f_y_runner_01", "a_m_y_runner_01", "a_m_y_runner_02", "ig_gustavo_02", "u_f_y_corpse_01", "u_m_y_corpse_01" },
},
--[[
Small Town
Paleto Bay, Sandy Shores, Grapeseed.
]]
small_town = {
multiplier = 1.0,
spawnChances = {
["default"] = 84,
["animal"] = 5,
["screamer"] = 5,
["skeleton"] = 2,
["trainer"] = 2,
["exploder"] = 2,
},
lootTable = "default",
defaultZombieModels = { "a_m_m_hillbilly_01", "a_m_m_hillbilly_02", "a_m_m_rurmeth_01", "cs_old_man1a", "cs_old_man2", "u_m_o_tramp_01", "u_m_y_corpse_01", "u_m_y_zombie_01", "G_M_M_Zombie_01", "a_f_o_indian_01" },
},
--[[
Rural / Wilderness
Mountains, forests, deserts, rivers, farmland.
]]
rural = {
multiplier = 0.8,
spawnChances = {
["default"] = 76,
["animal"] = 20,
["skeleton"] = 2,
["trainer"] = 2,
},
lootTable = "rural",
defaultZombieModels = { "a_f_o_indian_01", "a_m_m_hillbilly_01", "a_m_m_hillbilly_02", "a_m_m_indian_01", "a_m_m_rurmeth_01", "a_m_y_hiker_01", "a_f_y_hiker_01", "cs_old_man1a", "cs_old_man2", "s_m_y_construct_01", "u_m_o_tramp_01", "u_m_y_zombie_01" },
},
}
-- ════════════════════════════════════════════════════════════════════════════════
-- ZONE → ARCHETYPE MAPPING
-- Assign each GTA zone to an archetype.
-- Unmapped zones fall back to Config.defaultArchetype.
-- ════════════════════════════════════════════════════════════════════════════════
Config.zoneMapping = {
-- Military / Secure
ARMYB = "military", -- Fort Zancudo
HUMLAB = "military", -- Humane Labs and Research
NOOSE = "military", -- N.O.O.S.E
-- Prison
JAIL = "prison", -- Bolingbroke Penitentiary
-- Industrial / Ports
AIRP = "industrial", -- Los Santos Airport
CYPRE = "industrial", -- Cypress Flats
ELYSIAN = "industrial", -- Elysian Island
PALMPOW = "industrial", -- Palmer-Taylor Power Station
TERMINA = "industrial", -- Terminal
ZP_ORT = "industrial", -- Port of South Los Santos
ZQ_UAR = "industrial", -- Davis Quartz
-- Downtown
DOWNT = "downtown", -- Downtown
DTVINE = "downtown", -- Downtown Vinewood
LEGSQU = "downtown", -- Legion Square
PBOX = "downtown", -- Pillbox Hill
SKID = "downtown", -- Mission Row
TEXTI = "downtown", -- Textile City
-- Urban
ALTA = "urban", -- Alta
BANNING = "urban", -- Banning
BURTON = "urban", -- Burton
CHAMH = "urban", -- Chamberlain Hills
DAVIS = "urban", -- Davis
DELSOL = "urban", -- La Puerta (Del Sol)
EAST_V = "urban", -- East Vinewood
EBURO = "urban", -- El Burro Heights
HAWICK = "urban", -- Hawick
KOREAT = "urban", -- Little Seoul
LMESA = "urban", -- La Mesa
LOSPUER = "urban", -- La Puerta
MURRI = "urban", -- Murrieta Heights
RANCHO = "urban", -- Rancho
SANAND = "urban", -- San Andreas
STAD = "urban", -- Maze Bank Arena
STRAW = "urban", -- Strawberry
VINE = "urban", -- Vinewood
WVINE = "urban", -- West Vinewood
MOVIE = "urban", -- Richards Majestic
-- Suburban
CHIL = "suburban", -- Vinewood Hills
CHU = "suburban", -- Chumash
DELPE = "suburban", -- Del Perro
GOLF = "suburban", -- GWC and Golfing Society
HORS = "suburban", -- Vinewood Racetrack
LDAM = "suburban", -- Land Act Dam
MIRR = "suburban", -- Mirror Park
MORN = "suburban", -- Morningwood
OCEANA = "suburban", -- Pacific Ocean
PBLUFF = "suburban", -- Pacific Bluffs
RGLEN = "suburban", -- Richman Glen
RICHM = "suburban", -- Richman
ROCKF = "suburban", -- Rockford Hills
RTRAK = "suburban", -- Redwood Lights Track
VCANA = "suburban", -- Vespucci Canals
VESP = "suburban", -- Vespucci
-- Coastal / Beach
BEACH = "coastal", -- Vespucci Beach
DELBE = "coastal", -- Del Perro Beach
PROCOB = "coastal", -- Procopio Beach
-- Small Town
GRAPES = "small_town", -- Grapeseed
PALETO = "small_town", -- Paleto Bay
SANDY = "small_town", -- Sandy Shores
-- Rural / Wilderness
ALAMO = "rural", -- Alamo Sea
BANHAMC = "rural", -- Banham Canyon Dr
BHAMCA = "rural", -- Banham Canyon
BRADP = "rural", -- Braddock Pass
BRADT = "rural", -- Braddock Tunnel
CALAFB = "rural", -- Calafia Bridge
CANNY = "rural", -- Raton Canyon
CCREAK = "rural", -- Cassidy Creek
CMSW = "rural", -- Chiliad Mountain
DESRT = "rural", -- Grand Senora Desert
ELGORL = "rural", -- El Gordo Lighthouse
GALFISH = "rural", -- Galilee
GREATC = "rural", -- Great Chaparral
HARMO = "rural", -- Harmony
LACT = "rural", -- Land Act Reservoir
LAGO = "rural", -- Lago Zancudo
MTCHIL = "rural", -- Mount Chiliad
MTGORDO = "rural", -- Mount Gordo
MTJOSE = "rural", -- Mount Josiah
NCHU = "rural", -- North Chumash
PALCOV = "rural", -- Paleto Cove
PALFOR = "rural", -- Paleto Forest
PALHIGH = "rural", -- Palomino Highlands
SANCHIA = "rural", -- San Chianski Mountain Range
SLAB = "rural", -- Stab City
TATAMO = "rural", -- Tataviam Mountains
TONGVAH = "rural", -- Tongva Hills
TONGVAV = "rural", -- Tongva Valley
WINDF = "rural", -- Ron Alternates Wind Farm
ZANCUDO = "rural", -- Zancudo River
}
-- ════════════════════════════════════════════════════════════════════════════════
-- THREAD & SPAWN SETTINGS
-- Core performance and spawn mechanic parameters
-- ════════════════════════════════════════════════════════════════════════════════
Config.threadSettings = {
threadInterval = 2000, -- Main script loop interval in ms (2s)
spawnPedsAllOverMap = true, -- true = zombies spawn across the entire map
-- false = zombies only spawn inside danger zones
globalRespawnCooldown = 150000, -- Global zombie respawn time in ms (150s)
baseZombieCount = 8, -- Base zombies when 1+ player is in a square (solo experience)
zombiesPerAdditionalPlayer = 5, -- Scaling factor per additional player (diminishing returns via sqrt)
maxZombiesCountInSquare = 40, -- Hard cap on zombies in a single sector regardless of multiplier
despawnLootObjectsInterval = 60000, -- Dropped loot cleanup interval in ms (60s)
particlesRenderDistance = 80.0, -- Particle effect render distance
soundsListenDistance = 20.0, -- Zombie sound hearing distance
chanceToSpawn = { -- Fallback spawn weights per type (same system as archetype spawnChances)
["default"] = 75, -- Used when no zone archetype provides spawnChances
["screamer"] = 8,
["exploder"] = 6,
["splitter"] = 5,
["summoner"] = 3,
["tank"] = 3,
}
}
-- ════════════════════════════════════════════════════════════════════════════════
-- MAP SECTORS
-- Map division for global spawn system
-- ════════════════════════════════════════════════════════════════════════════════
Config.squares = {
size = 350, -- Single sector size in meters (the map is divided into a grid of these squares)
height = 500, -- Sector height for 3D detection (covers vertical space like bridges, tunnels)
}
-- ════════════════════════════════════════════════════════════════════════════════
-- DISTANCES
-- Spawn and despawn distance control
-- ════════════════════════════════════════════════════════════════════════════════
Config.distances = {
spawnDistance = {
min = 40.0, -- Minimum spawn distance from player
max = 70.0, -- Maximum spawn distance from player
},
spawnRadiusIncrement = 5.0, -- Radius increase (in meters) per failed canSpawnZombieAtCoords check
despawnDistance = 120.0, -- Zombies further than this from all players get deleted
}
-- ════════════════════════════════════════════════════════════════════════════════
-- DETECTION DISTANCES
-- Global stimulus detection ranges. These are properties of the stimulus
-- (how loud a horn is), not properties of the zombie type.
-- ════════════════════════════════════════════════════════════════════════════════
Config.detectionDistances = {
sprint = 30.0, -- How far sprinting attracts zombies
vehicle = 40.0, -- Vehicle with engine running detection
horn = 110.0, -- Vehicle horn detection
}
-- ════════════════════════════════════════════════════════════════════════════════
-- DEAD BODY MANAGEMENT
-- Controls how dead zombie bodies are handled
-- ════════════════════════════════════════════════════════════════════════════════
Config.deadBody = {
deleteTime = 20000, -- How long dead bodies persist in ms (20s)
deleteOnSafeZone = true, -- Delete zombie bodies when they're inside a safe zone
}
-- ════════════════════════════════════════════════════════════════════════════════
-- ZOMBIE TYPE DEFAULTS
-- Base values applied to every type. Types only need to specify fields that
-- differ from these defaults.
-- ════════════════════════════════════════════════════════════════════════════════
Config.typeDefaults = {
health = 200,
armor = 0,
speed = 1.0,
instantHeadShotKill = false,
lootTable = "default",
reactToPlayerDistance = 20.0,
loseTargetDistance = 70.0,
loseTargetTimeout = 30000,
reactToShots = true,
reactToSprint = true,
reactToPlayerInVehicle = true,
reactToPlayerInVehicleHonk = true,
wanderInArea = true,
wanderInAreaDistance = 5.0,
}
-- ════════════════════════════════════════════════════════════════════════════════
-- ZOMBIE TYPES
-- Each type defines stats, detection ranges, and special abilities.
-- Fields not listed here use Config.typeDefaults.
--
-- Only include fields you want to change - omitted fields use Config.typeDefaults.
-- Set a detection field to false to disable it entirely (e.g. reactToShots = false).
--
-- All available fields:
--
-- ["example"] = {
-- -- Required
-- model = { "model_name" }, -- Ped model(s) to spawn (random pick)
--
-- -- Base stats (override typeDefaults)
-- health = 200, -- Max health
-- armor = 0, -- Armor value
-- speed = 1.0, -- Movement speed multiplier
-- instantHeadShotKill = false, -- One-shot headshot kill
-- lootTable = "default", -- Loot table name (from Config.lootTables, or "default" for zone-based)
--
-- -- Detection (override typeDefaults, set to false to disable)
-- -- Detection distances (sprint, gunfire, vehicle, horn, wander) are global - see Config.detectionDistances
-- reactToPlayerDistance = 20.0, -- Range to detect player on foot and enter combat
-- loseTargetDistance = 70.0, -- Range at which zombie starts losing interest
-- loseTargetTimeout = 30000, -- Time in ms to keep pursuing after exceeding loseTargetDistance (0 = instant)
-- reactToShots = true, -- React to nearby gunshots
-- reactToSprint = true, -- React to sprinting players
-- reactToPlayerInVehicle = true, -- React to vehicles with engine running
-- reactToPlayerInVehicleHonk = true, -- React to horn
-- wanderInArea = true, -- Wander when idle (no target)
--
-- -- Visual
-- damagePacks = { "Fall", "SCR_Shark" }, -- Ped damage overlays applied on spawn
-- damagePackCount = { min = 2, max = 4 }, -- How many random damage packs to apply
-- movementClipset = "clipset_name", -- Custom movement clipset (overrides model default)
-- strafeClipset = "clipset_name", -- Custom strafe clipset (overrides model default)
-- noZombieClipset = true, -- Skip zombie walk/strafe animations entirely
-- screenEffect = "CayoMage", -- Screen effect when player is near this zombie
-- screenEffectDistance = 15.0, -- Range for screen effect
--
-- -- Combat
-- weapon = "WEAPON_MUSKET", -- Weapon to give (default: weapon_unarmed)
-- combatRange = 0, -- GTA combat range: 0=short/defensive, 1=medium, 2=long
-- shootRate = 40, -- GTA shoot rate (lower = slower)
-- maxEngageDistance = 12, -- Max distance AI will engage from
-- flee = true, -- Flee from player instead of fighting
--
-- -- Abilities (only include the ones this type uses)
-- explodeOnDeath = true, -- Explode when killed (dead man's switch)
-- explodeDamageScale = 1.0, -- Explosion damage multiplier
-- scream = true, -- Scream to attract nearby zombies
-- screamDistance = 30.0, -- Range to trigger scream
-- screamAggroRadius = 110.0, -- Radius to aggro existing zombies
-- summon = true, -- Summon new zombies via ritual animation
-- summonDistance = 20.0, -- Range to trigger summoning
-- summonPeds = { ["default"] = 2 }, -- Types and counts to summon per ritual
-- toxic = true, -- Emit toxic gas cloud
-- toxicDistance = 2.0, -- Gas damage radius
-- toxicDelay = 20000, -- Delay between gas attacks (ms)
-- toxicDamageScale = 1.0, -- Gas damage multiplier
-- splitter = true, -- Split into copies on death
-- splitCount = 2, -- Number of copies
-- splitZombieType = "splitter", -- Type of the copies
-- replicate = true, -- Summon animals (trainer)
-- replicateDistance = 35.0, -- Detection range (replaces reactToPlayerDistance)
-- replicateCount = 2, -- Animals per summon wave
-- maxReplicateStages = 3, -- Max summon waves
-- replicateCoolDown = 10000, -- Cooldown between waves (ms)
-- replicateZombieType = "animal", -- Type of summoned creatures
-- replicateSpeedMultiplier = 1.8, -- Speed boost while summoning
-- additionalSpawnReduction = 1, -- Reduce default spawns to compensate for extras
-- },
-- ════════════════════════════════════════════════════════════════════════════════
Config.types = {
--[[
Default Zombie
Standard enemy with no special abilities.
Medium durability and speed.
]]
["default"] = {
model = { "G_M_M_Zombie_05", "G_M_M_Zombie_01", "IG_Zombie_DJ_01", "u_f_y_corpse_01", "u_f_m_corpse_01", "u_m_m_prolsec_01", "u_m_o_filmnoir", "u_m_y_corpse_01", "u_m_o_tramp_01", "u_m_y_zombie_01", "ig_gustavo_02" },
reactToPlayerDistance = 15.0,
damagePacks = { "Fall", "BigHitByVehicle", "Explosion_Large" },
damagePackCount = { min = 2, max = 4 },
},
--[[
Splitter
Splits into copies when damaged.
Lower health but harder to eliminate completely.
]]
["splitter"] = {
model = { "G_M_M_Zombie_04" },
speed = 1.15,
splitter = true,
splitCount = 2,
splitZombieType = "splitter",
additionalSpawnReduction = 1,
},
--[[
Screamer
Emits a terrifying scream that attracts nearby zombies.
High durability, priority target.
]]
["screamer"] = {
model = { "mp_f_deadhooker" },
health = 250,
speed = 1.1,
scream = true,
screamDistance = 30.0,
screamAggroRadius = 110.0,
},
--[[
Summoner
Uses a magic staff to summon new zombies.
Medium durability, slower movement.
]]
["summoner"] = {
model = { "G_F_M_UndeadMage", "G_M_M_Zombie_03" },
health = 300,
summon = true,
summonDistance = 20.0,
summonPeds = { ["default"] = 2 },
additionalSpawnReduction = 1,
screenEffect = "CayoMage",
screenEffectDistance = 15.0,
},
--[[
Exploder
Explodes on death (dead man's switch).
Medium durability, dangerous in close quarters.
]]
["exploder"] = {
model = { "G_M_M_Zombie_02" },
health = 200,
speed = 1.1,
explodeOnDeath = true,
explodeDamageScale = 0.5,
},
--[[
Tank
Massive zombie with huge HP pool.
Slow but extremely durable.
]]
["tank"] = {
model = { "G_M_M_Zombie_02" },
health = 550,
armor = 50,
speed = 0.9,
lootTable = "tank",
reactToPlayerDistance = 15.0,
},
--[[
Juggernaut
Armored zombie emitting toxic fumes.
Highest durability, deals area damage.
]]
["juggernaut"] = {
model = { "u_m_y_juggernaut_01" },
health = 450,
armor = 100,
speed = 0.85,
lootTable = "juggernaut",
toxic = true,
toxicDistance = 2.0,
toxicDelay = 15000,
toxicDamageScale = 1.0,
screenEffect = "CayoToxicWater",
screenEffectDistance = 5.0,
},
--[[
Skeleton
Undead warrior armed with a musket.
Defensive ranged attacker - stays back and shoots, walks normally (no zombie shamble).
]]
["skeleton"] = {
model = { "IG_Skeleton_01" },
instantHeadShotKill = true,
lootTable = "skeleton",
weapon = "WEAPON_MUSKET",
noZombieClipset = true,
combatRange = 0,
shootRate = 40,
maxEngageDistance = 12,
},
--[[
Animal
Zombie animals - coyotes, boars, deer.
Low health, melee only, doesn't react to vehicles.
]]
["animal"] = {
model = { "a_c_coyote_02", "a_c_boar_02", "a_c_deer_02" },
health = 100,
weapon = "WEAPON_ANIMAL",
reactToPlayerInVehicle = false,
reactToPlayerInVehicleHonk = false,
},
--[[
Trainer
Summons and controls animals. When the trainer dies, all its animals die too.
Does not react to gunshots, sprinting or vehicles - only detects players within replicateDistance.
Moves toward the player at increased speed while summoning.
]]
["trainer"] = {
model = { "ig_hunter" },
health = 300,
reactToPlayerDistance = false,
reactToShots = false,
reactToSprint = false,
reactToPlayerInVehicle = false,
reactToPlayerInVehicleHonk = false,
flee = true,
replicate = true,
replicateDistance = 35.0,
replicateCount = 2,
maxReplicateStages = 3,
replicateCoolDown = 10000,
replicateZombieType = "animal",
replicateSpeedMultiplier = 1.8,
additionalSpawnReduction = 2,
},
}
-- ════════════════════════════════════════════════════════════════════════════════
-- WEAPON AGGRO RADIUS
-- Per-weapon radius that determines how far gunshots attract zombies.
-- ════════════════════════════════════════════════════════════════════════════════
Config.weaponAggroRadius = {
default = 80.0, -- Used for any weapon not listed below
-- Melee (quiet)
[`WEAPON_UNARMED`] = 3.0,
[`WEAPON_BAT`] = 5.0,
[`WEAPON_KNIFE`] = 5.0,
[`WEAPON_MACHETE`] = 5.0,
[`WEAPON_HATCHET`] = 5.0,
[`WEAPON_SWITCHBLADE`] = 5.0,
[`WEAPON_BOTTLE`] = 5.0,
[`WEAPON_DAGGER`] = 5.0,
[`WEAPON_NIGHTSTICK`] = 5.0,
[`WEAPON_WRENCH`] = 5.0,
[`WEAPON_HAMMER`] = 5.0,
[`WEAPON_CROWBAR`] = 5.0,
[`WEAPON_GOLFCLUB`] = 5.0,
[`WEAPON_POOLCUE`] = 5.0,
[`WEAPON_FLASHLIGHT`] = 5.0,
[`WEAPON_KNUCKLE`] = 5.0,
[`WEAPON_STONE_HATCHET`] = 5.0,
[`WEAPON_BATTLEAXE`] = 5.0,
[`WEAPON_CANDYCANE`] = 5.0,
-- Pistols
[`WEAPON_PISTOL`] = 60.0,
[`WEAPON_PISTOL_MK2`] = 60.0,
[`WEAPON_COMBATPISTOL`] = 60.0,
[`WEAPON_PISTOL50`] = 70.0,
[`WEAPON_HEAVYPISTOL`] = 70.0,
[`WEAPON_APPISTOL`] = 55.0,
[`WEAPON_SNSPISTOL`] = 50.0,
[`WEAPON_SNSPISTOL_MK2`] = 50.0,
[`WEAPON_VINTAGEPISTOL`] = 60.0,
[`WEAPON_REVOLVER`] = 80.0,
[`WEAPON_REVOLVER_MK2`] = 80.0,
[`WEAPON_DOUBLEACTION`] = 80.0,
[`WEAPON_NAVYREVOLVER`] = 80.0,
[`WEAPON_MARKSMANPISTOL`] = 65.0,
[`WEAPON_CERAMICPISTOL`] = 55.0,
[`WEAPON_PISTOLXM3`] = 60.0,
[`WEAPON_GADGETPISTOL`] = 55.0,
[`WEAPON_STUNGUN`] = 15.0,
[`WEAPON_STUNGUN_MP`] = 15.0,
[`WEAPON_FLAREGUN`] = 70.0,
[`WEAPON_RAYPISTOL`] = 60.0,
-- SMGs
[`WEAPON_MICROSMG`] = 70.0,
[`WEAPON_SMG`] = 75.0,
[`WEAPON_SMG_MK2`] = 75.0,
[`WEAPON_ASSAULTSMG`] = 75.0,
[`WEAPON_MINISMG`] = 65.0,
[`WEAPON_COMBATPDW`] = 70.0,
[`WEAPON_MACHINEPISTOL`] = 65.0,
[`WEAPON_TECPISTOL`] = 70.0,
[`WEAPON_RAYCARBINE`] = 75.0,
-- Shotguns
[`WEAPON_PUMPSHOTGUN`] = 90.0,
[`WEAPON_PUMPSHOTGUN_MK2`] = 90.0,
[`WEAPON_SAWNOFFSHOTGUN`] = 80.0,
[`WEAPON_ASSAULTSHOTGUN`] = 90.0,
[`WEAPON_BULLPUPSHOTGUN`] = 85.0,
[`WEAPON_HEAVYSHOTGUN`] = 95.0,
[`WEAPON_MUSKET`] = 100.0,
[`WEAPON_DBSHOTGUN`] = 90.0,
[`WEAPON_COMBATSHOTGUN`] = 90.0,
[`WEAPON_AUTOSHOTGUN`] = 85.0,
-- Assault Rifles
[`WEAPON_ASSAULTRIFLE`] = 100.0,
[`WEAPON_ASSAULTRIFLE_MK2`] = 100.0,
[`WEAPON_CARBINERIFLE`] = 100.0,
[`WEAPON_CARBINERIFLE_MK2`] = 100.0,
[`WEAPON_ADVANCEDRIFLE`] = 95.0,
[`WEAPON_SPECIALCARBINE`] = 100.0,
[`WEAPON_SPECIALCARBINE_MK2`] = 100.0,
[`WEAPON_BULLPUPRIFLE`] = 95.0,
[`WEAPON_BULLPUPRIFLE_MK2`] = 95.0,
[`WEAPON_COMPACTRIFLE`] = 90.0,
[`WEAPON_MILITARYRIFLE`] = 105.0,
[`WEAPON_HEAVYRIFLE`] = 105.0,
[`WEAPON_TACTICALRIFLE`] = 100.0,
-- LMGs
[`WEAPON_MG`] = 110.0,
[`WEAPON_COMBATMG`] = 110.0,
[`WEAPON_COMBATMG_MK2`] = 110.0,
[`WEAPON_GUSENBERG`] = 100.0,
-- Snipers
[`WEAPON_SNIPERRIFLE`] = 105.0,
[`WEAPON_HEAVYSNIPER`] = 110.0,
[`WEAPON_HEAVYSNIPER_MK2`] = 110.0,
[`WEAPON_MARKSMANRIFLE`] = 105.0,
[`WEAPON_MARKSMANRIFLE_MK2`] = 105.0,
[`WEAPON_PRECISIONRIFLE`] = 105.0,
-- Heavy / Explosives
[`WEAPON_RPG`] = 110.0,
[`WEAPON_GRENADELAUNCHER`] = 105.0,
[`WEAPON_MINIGUN`] = 110.0,
[`WEAPON_RAILGUN`] = 110.0,
[`WEAPON_RAILGUNXM3`] = 110.0,
[`WEAPON_HOMINGLAUNCHER`] = 110.0,
[`WEAPON_COMPACTLAUNCHER`] = 105.0,
[`WEAPON_FIREWORK`] = 100.0,
[`WEAPON_EMPLAUNCHER`] = 100.0,
[`WEAPON_RAYMINIGUN`] = 110.0,
[`WEAPON_GRENADE`] = 100.0,
[`WEAPON_PIPEBOMB`] = 100.0,
[`WEAPON_MOLOTOV`] = 90.0,
[`WEAPON_STICKYBOMB`] = 100.0,
[`WEAPON_PROXMINE`] = 100.0,
[`WEAPON_BZGAS`] = 80.0,
[`WEAPON_SMOKEGRENADE`] = 50.0,
[`WEAPON_FLARE`] = 60.0,
-- Add any weapon hash here with custom radius
}
-- ════════════════════════════════════════════════════════════════════════════════
-- SUPPRESSOR SETTINGS
-- Weapons with suppressors attached get their aggro radius multiplied by this value.
-- The suppressor components list covers all vanilla GTA V suppressors.
-- ════════════════════════════════════════════════════════════════════════════════
Config.suppressorMultiplier = 0.5 -- Weapon aggro radius is multiplied by this when a suppressor is attached (0.5 = half the noise)
Config.suppressorComponents = {
`COMPONENT_AT_PI_SUPP`, -- Pistol suppressor (Combat Pistol, AP Pistol, Heavy Pistol, etc.)
`COMPONENT_AT_PI_SUPP_02`, -- Pistol suppressor 2 (Pistol, Pistol MK2, SNS Pistol MK2)
`COMPONENT_AT_AR_SUPP`, -- Rifle suppressor (Carbine, Advanced, Bullpup, Marksman, etc.)
`COMPONENT_AT_AR_SUPP_02`, -- Rifle suppressor 2 (Assault Rifle, Special Carbine, Sniper, etc.)
`COMPONENT_AT_SR_SUPP`, -- Shotgun suppressor (Pump Shotgun)
`COMPONENT_AT_SR_SUPP_03`, -- Sniper suppressor (Pump Shotgun MK2, Heavy Sniper MK2)
`COMPONENT_CERAMICPISTOL_SUPP`, -- Ceramic Pistol suppressor
`COMPONENT_PISTOLXM3_SUPP`, -- WM 29 Pistol suppressor
}
-- ════════════════════════════════════════════════════════════════════════════════
-- LOOT TABLES
-- Define items dropped by zombies
-- ════════════════════════════════════════════════════════════════════════════════
Config.lootTables = {
-- IMPORTANT: All item names below MUST match your inventory system exactly.
-- Default - balanced survival loot (used by urban and suburban archetypes)
["default"] = {
maxItems = 2,
chance = 20,
items = {
{ item = "bread", min = 1, max = 1, chance = 18 },
{ item = "water_bottle", min = 1, max = 1, chance = 18 },
{ item = "bandage", min = 1, max = 2, chance = 15 },
{ item = "cloth", min = 1, max = 3, chance = 15 },
{ item = "ammo-9", min = 2, max = 8, chance = 12 },
{ item = "wood", min = 2, max = 6, chance = 10 },
{ item = "stone", min = 1, max = 4, chance = 8 },
{ item = "metal", min = 1, max = 2, chance = 4 },
}
},
-- Military - combat supplies, ammo, and advanced materials
["military"] = {
maxItems = 3,
chance = 30,
items = {
{ item = "ammo-rifle", min = 5, max = 15, chance = 22 },
{ item = "ammo-9", min = 5, max = 20, chance = 18 },
{ item = "ammo-shotgun", min = 3, max = 10, chance = 12 },
{ item = "bandage", min = 1, max = 2, chance = 12 },
{ item = "metal", min = 2, max = 4, chance = 12 },
{ item = "bread", min = 1, max = 1, chance = 10 },
{ item = "hqm", min = 1, max = 2, chance = 8 },
{ item = "medkit", min = 1, max = 1, chance = 6 },
}
},
-- Industrial - crafting materials and tools
["industrial"] = {
maxItems = 2,
chance = 22,
items = {
{ item = "metal", min = 2, max = 5, chance = 22 },
{ item = "stone", min = 2, max = 6, chance = 18 },
{ item = "ammo-9", min = 3, max = 10, chance = 12 },
{ item = "wood", min = 2, max = 5, chance = 12 },
{ item = "cloth", min = 1, max = 3, chance = 10 },
{ item = "ammo-rifle", min = 2, max = 8, chance = 10 },
{ item = "bandage", min = 1, max = 2, chance = 8 },
{ item = "hqm", min = 1, max = 1, chance = 5 },
}
},
-- Downtown - scavenged civilian supplies
["downtown"] = {
maxItems = 2,
chance = 22,
items = {
{ item = "bread", min = 1, max = 2, chance = 20 },
{ item = "water_bottle", min = 1, max = 2, chance = 20 },
{ item = "bandage", min = 1, max = 2, chance = 15 },
{ item = "cloth", min = 1, max = 3, chance = 12 },
{ item = "ammo-9", min = 2, max = 10, chance = 12 },
{ item = "ammo-rifle", min = 2, max = 6, chance = 8 },
{ item = "medkit", min = 1, max = 1, chance = 4 },
{ item = "metal", min = 1, max = 2, chance = 4 },
}
},
-- Rural - natural resources and survival basics
["rural"] = {
maxItems = 2,
chance = 15,
items = {
{ item = "wood", min = 3, max = 10, chance = 25 },
{ item = "stone", min = 2, max = 6, chance = 20 },
{ item = "cloth", min = 1, max = 4, chance = 15 },
{ item = "bread", min = 1, max = 1, chance = 12 },
{ item = "water_bottle", min = 1, max = 1, chance = 12 },
{ item = "bandage", min = 1, max = 1, chance = 8 },
{ item = "ammo-9", min = 1, max = 5, chance = 5 },
{ item = "metal", min = 1, max = 1, chance = 3 },
}
},
-- ── Type-Specific Tables ─────────────────────────────────────────────────
-- These override zone-based loot when a zombie type has lootTable = "<name>".
-- Harder-to-kill types reward better loot regardless of where they died.
-- Tank - armored brute, rewards heavy materials and ammo
["tank"] = {
maxItems = 3,
chance = 35,
items = {
{ item = "metal", min = 2, max = 5, chance = 22 },
{ item = "ammo-rifle", min = 5, max = 15, chance = 18 },
{ item = "ammo-9", min = 5, max = 15, chance = 15 },
{ item = "hqm", min = 1, max = 2, chance = 12 },
{ item = "bandage", min = 1, max = 3, chance = 12 },
{ item = "medkit", min = 1, max = 1, chance = 10 },
{ item = "bread", min = 1, max = 2, chance = 8 },
{ item = "water_bottle", min = 1, max = 1, chance = 3 },
}
},
-- Juggernaut - toughest kill in the game, best possible drops
["juggernaut"] = {
maxItems = 3,
chance = 40,
items = {
{ item = "hqm", min = 1, max = 3, chance = 18 },
{ item = "metal", min = 3, max = 6, chance = 18 },
{ item = "medkit", min = 1, max = 1, chance = 15 },
{ item = "ammo-rifle", min = 8, max = 20, chance = 15 },
{ item = "bandage", min = 1, max = 3, chance = 12 },
{ item = "ammo-shotgun", min = 5, max = 12, chance = 10 },
{ item = "ammo-9", min = 5, max = 15, chance = 8 },
{ item = "bread", min = 1, max = 1, chance = 4 },
}
},
-- Skeleton - ranged undead, drops ammo-focused loot
["skeleton"] = {
maxItems = 2,
chance = 28,
items = {
{ item = "ammo-rifle", min = 5, max = 15, chance = 25 },
{ item = "ammo-9", min = 5, max = 15, chance = 20 },
{ item = "ammo-shotgun", min = 3, max = 8, chance = 15 },
{ item = "metal", min = 1, max = 3, chance = 12 },
{ item = "bandage", min = 1, max = 2, chance = 10 },
{ item = "cloth", min = 1, max = 3, chance = 10 },
{ item = "hqm", min = 1, max = 1, chance = 5 },
{ item = "bread", min = 1, max = 1, chance = 3 },
}
},
}
-- ════════════════════════════════════════════════════════════════════════════════
-- SAFE ZONE SETTINGS
-- Global safe zone behavior settings
-- ════════════════════════════════════════════════════════════════════════════════
Config.safeZoneGracePeriod = 10000 -- How long the player stays invincible after leaving a safe zone in ms (10s, 0 to disable)
-- ════════════════════════════════════════════════════════════════════════════════
-- SAFE ZONE DEFAULTS
-- Base values applied to every safe zone. Zones only need to specify fields
-- that differ from these defaults (coords is always required).
-- Sub-tables (blip, zoneBlip, zoneMarker) are merged field-by-field - you can
-- override just the label without repeating sprite/color/scale.
-- ════════════════════════════════════════════════════════════════════════════════
Config.safeZoneDefaults = {
zoneRadius = 100.0,
disableWeapons = true,
invincible = true,
disablePvP = true,
ghostMode = false,
passThroughPlayers = false,
zoneMarker = { enabled = false, color = { 0, 255, 0 }, alpha = 100 },
blip = { enabled = true, sprite = 176, color = 2, scale = 1.0, label = "Safe Zone" },
zoneBlip = { enabled = true, radius = 100.0, color = 2 },
}
-- ════════════════════════════════════════════════════════════════════════════════
-- DANGER ZONE DEFAULTS
-- Base values applied to every danger zone. Zones only need to specify fields
-- that differ from these defaults (coords and pedsToSpawn are always required).
-- Sub-tables (blip, zoneBlip, zoneMarker) are merged field-by-field - you can
-- override just the label without repeating sprite/color/scale.
-- ════════════════════════════════════════════════════════════════════════════════
Config.dangerZoneDefaults = {
zoneRadius = 100.0,
healthMultiplier = 1.0,
respawnCooldown = 200000, -- in ms (200s)
zoneMarker = { enabled = false, color = { 255, 0, 0 }, alpha = 100 },
blip = { enabled = true, sprite = 630, color = 1, scale = 1.0, label = "Danger Zone" },
zoneBlip = { enabled = true, radius = 180.0, color = 1 },
}
-- ════════════════════════════════════════════════════════════════════════════════
-- ZONES
-- Safe and danger zone definitions
-- ════════════════════════════════════════════════════════════════════════════════
Config.zones = {
--[[
Safe Zones
Areas where zombies cannot spawn.
Ideal for bases, shops, spawn points.
Only specify fields that differ from Config.safeZoneDefaults.
Required: coords. Optional: any field from safeZoneDefaults.
]]
safeZones = {
{
coords = vector3(-2292.4773, 370.4102, 174.6017),
blip = { enabled = true, label = "Observatory" },
}
},
--[[
Danger Zones
Areas with increased zombie spawns and unique types.
Higher rewards, greater challenge.
Only specify fields that differ from Config.dangerZoneDefaults.
Required: coords, pedsToSpawn. Optional: blip.label (defaults to "Danger Zone").
]]
dangerZones = {
{ -- Humane Labs
coords = vector3(3525.9617, 3716.9829, 36.6426),
blip = { label = "Humane Labs" },
pedsToSpawn = {
["default"] = 3,
["juggernaut"] = 2,
["exploder"] = 2,
["tank"] = 1,
["summoner"] = 1,
},
healthMultiplier = 1.3,
},
{ -- Bolingbroke Penitentiary
coords = vector3(1714.4968, 2560.5166, 45.5648),
blip = { label = "Bolingbroke Penitentiary" },
pedsToSpawn = {
["default"] = 3,
["tank"] = 2,
["exploder"] = 1,
["summoner"] = 1,
},
healthMultiplier = 1.3,
},
{ -- Fort Zancudo
coords = vector3(-2131.0125, 3140.4380, 32.8101),
blip = { label = "Fort Zancudo" },
pedsToSpawn = {
["tank"] = 3,
["skeleton"] = 3,
["juggernaut"] = 1,
["exploder"] = 1,
},
healthMultiplier = 1.4,
},
{ -- LS Airport
coords = vector3(-1251.8574, -2938.4165, 13.9469),
zoneRadius = 120.0, -- Larger than default 100.0
blip = { label = "LS Airport" },
pedsToSpawn = {
["default"] = 4,
["exploder"] = 2,
["splitter"] = 2,
["tank"] = 1,
},
healthMultiplier = 1.3,
},
{ -- N.O.O.S.E
coords = vector3(2521.6023, -384.2304, 93.0671),
blip = { label = "N.O.O.S.E" },
pedsToSpawn = {
["tank"] = 2,
["juggernaut"] = 2,
["skeleton"] = 1,
["exploder"] = 1,
},
healthMultiplier = 1.3,
},
}
}
Last updated