Skip to content

Configuration

All gameplay settings are in config.lua. Client integration stubs are in the editable/ folder.

General

Debug

  • Type: boolean
  • Default: false
  • Description: Enables the client debug overlay (zombie HP, AI task, zone counts). Set to false before going live.

DebugPrints

  • Type: boolean
  • Default: false
  • Description: Enables verbose spawn and player-tracking logs via lib.print.debug (server and client). Toggle on only when troubleshooting spawns.

DebugCell

  • Type: boolean
  • Default: false
  • Description: Shows an on-screen overlay with your current grid cell ID, spawn zone, GTA zone, density limits, and ped list. Use this to find cell IDs when configuring CellLocations or CellZoneOverrides.

Spawn

SpawnTickRate

  • Type: number (milliseconds)
  • Default: 6500
  • Description: How often the server checks and spawns zombies/animals per zone.

ClientSpawnPerTick

  • Type: number
  • Default: 2
  • Description: Maximum entities requested from a client per spawn tick.

NewDensity

  • Type: boolean
  • Default: true
  • Description: Uses the grid-based density system. Spawn positions are picked in the lowest-density cell near the player.

SpawnRadiusMin / SpawnRadiusMax

  • Type: number (metres)
  • Default: 50.0 / 100.0
  • Description: Ring around the player where the client picks spawn positions. Zombies appear off-screen between these distances when possible.

DayMultiplier / NightMultiplier

  • Type: number
  • Default: 1.0 / 1.5
  • Description: Zombie density multiplier during day (06:00–20:00) and night (20:00–06:00).

AnimalDayMultiplier / AnimalNightMultiplier

  • Type: number
  • Default: 1.0 / 0.5
  • Description: Animal density multiplier for day and night.

zombieDespawnTimeout / animalDespawnTimeout

  • Type: number (seconds)
  • Default: 60
  • Description: Time before an inactive entity is removed when no players are subscribed.

deadBodyTimeout

  • Type: number (seconds)
  • Default: 180
  • Description: How long dead zombie bodies persist.

AI Behaviour

zombieTargetTimeout

  • Type: number (seconds)
  • Default: 60
  • Description: How long a zombie keeps chasing a target before giving up.

canGetPedOutOfVehicle

  • Type: boolean
  • Default: true
  • Description: Allows zombies to attempt pulling the player out of a vehicle.

chaseDistance

  • Type: number
  • Default: 75.0
  • Description: Maximum chase distance before a zombie stops pursuing.

meleeAttackRange / animalMeleeAttackRange / vehicleMeleeAttackRange

  • Type: number (metres)
  • Default: 2.5 / 3.0 / 6.0
  • Description: Melee attack range for zombies against players on foot, animals, and players in vehicles.

overwriteVisible

  • Type: table
  • Description: Detection range (metres) by player movement state. Keys: default, stealth, walk, run, sprint, on_vehicle.

overwriteNoises

  • Type: table
  • Description: Footstep/vehicle noise radius by movement state. Higher values attract zombies from farther away.

ignoreExplosionNoise

  • Type: number[]
  • Description: Explosion type IDs that should not create noise events.

defaultWeaponNoiseRadius / weaponNoiseRadius / silencedWeaponNoiseMultiplier / weaponNoiseDuration

  • Description: Gunshot noise settings. weaponNoiseRadius maps weapon names to custom radii. Silenced weapons use defaultWeaponNoiseRadius * silencedWeaponNoiseMultiplier.

Safe Zones

SafeZoneBlips

  • Type: table
  • Description: Map blip settings for safe zones (label, color, alpha, scale, sprite, shortRange).

SafeZones

  • Type: table[]
  • Description: Safe zone definitions. Each entry:
FieldTypeDescription
coordsvector3Centre of the safe zone
radiusnumberSafe zone radius
labelstringDisplay name
blipbooleanShow on map
stashCoordsvector3Personal stash interaction point
clothingStoreCoordsvector3Clothing rack interaction point
barbertableBarber NPC (model, coords as vector4)

SafeZoneStash

  • Type: table
  • Description: Stash settings: maxSlots, maxWeight, label, interactionDistance.

SafeZoneClothingStore

  • Type: table
  • Description: interactionDistance for clothing rack targets.

No-Spawn & Red Zones

NoSpawnZones

  • Type: table[]
  • Description: Areas where zombies and animals never spawn. Each entry has coords and radius.

RedZoneBlips

  • Type: table
  • Description: Map blip settings for red zones.

RedZones

  • Type: table
  • Default: {}
  • Description: High-difficulty areas. Each entry can include:
FieldTypeDescription
coordsvector3Centre position
radiusnumberZone radius
labelstringBlip label override
zombieMultipliernumberSpawn density multiplier
healthMultipliernumberZombie health multiplier
damageMultipliernumberZombie damage multiplier
carDamageMultipliernumberVehicle damage multiplier
zombieTypestableWeighted zombie type pool (same format as Config.ZombieTypes entries)

Nests

NestBlips

  • Type: table
  • Description: Map blip settings for active nests (enabled, label, color, scale, sprite, shortRange).

NestSpawnTickRate / NestSpawnPerTick / NestSpawnCount / ScreamerAlertRadius

  • Description: Nest regeneration interval, spawn rate, default zombie limit per nest, and screamer alert radius.

NestZones

  • Type: table[]
  • Description: Predefined nest spawn areas on the map. Each entry:
FieldTypeDescription
coordsvector3Zone centre
radiusnumberArea where nests can appear
barrelCountnumberBarrels per nest
nestRadiusnumberNest influence radius
barrelRadiusnumberBarrel spread radius
nestZombies / nestZombieMultipliernumberZombie count and spawn multiplier
nestHealthMultipliernumberHealth multiplier for nest zombies
maxNestsnumberMax active nests in this zone
nestRegenerationTimenumberSeconds before a destroyed nest regenerates
nestModelshash[]Prop models for the nest object
barrelHealth / nestHealthnumberDestructible object health
nestWeaponstableWeapon hash → damage multiplier for destroying nests

NestWeapons

  • Type: table
  • Description: Global weapon damage multipliers used when damaging nest objects and barrels.

NestZombieTypes

  • Type: table
  • Description: Weighted zombie type pool used when spawning zombies from nests.

Zombie Types

ZombieTypes

  • Type: table
  • Description: All zombie archetypes. Each key is a type ID used in spawns and commands.
FieldTypeDescription
labelstringDisplay name
weightnumberSpawn weight for random selection (0 = never spawned randomly)
healthnumberBase health
damagenumberMelee damage to players
carDamagenumberEngine damage when attacking vehicles
movementSpeednumberMovement speed multiplier
canBeStompedbooleanCan be killed by running over
screambooleanScreamer behaviour
screamAlertRadius / screamCooldownnumberScreamer settings
customModelshash[]Ped model overrides
proofsboolean[]Entity proof flags
particle / auraParticletableLooping particle effects (lib, name, scale)
projectiletableRanged attack (speed, distance, cooldown, damage, area, fire/toxic/electrocute)
deathExplosiontableExplosion on death (damage, radius)
bleedOnHitbooleanApplies bleed damage over time
behaviorTypestringSet to "animal" for animal AI
hostilebooleanWhether animal-type peds attack players

Spawn grid & location settings

The map is divided into a 34×50 grid (1700 cells). Each cell has a numeric ID (e.g. 1316). The server assigns every cell a spawn zone key (e.g. CHU, LEGSQU, or DEFAULT) based on built-in chunk data. Spawn density and ped pools are resolved from that zone, with optional overrides per cell or circular area.

How spawn resolution works

Player position
  → Grid cell ID                    (e.g. 1316)
  → Spawn zone                      (CellZoneOverrides → chunk map → DefaultZone)
  → Base map location               (mapLocations[zone] → DefaultMapLocation)
  → Cell override                   (CellLocations[cellId], merged on top)
  → Spawn area override             (SpawnAreas entry at coords, merged on top)
ConceptWhat it is
Cell IDGrid square from player coordinates. Enable DebugCell to see yours in-game.
Spawn zoneServer grouping key used for spawn caps and mapLocations lookup. Not the same as the GTA zone name from GetNameOfZone.
GTA zoneNative zone abbreviation (LEGSQU, CHU, etc.) shown in debug only.
Map locationResolved settings: humansList, animalsList, maxZombies, maxAnimals.

Spawn positions are picked by the client in a ring SpawnRadiusMinSpawnRadiusMax around the player. The server controls how many entities exist per spawn zone and which ped list to use when creating them.

Finding your cell ID

Set Config.DebugCell = true, stand where you want custom settings, and note the Cell value on screen. Use that number in CellLocations or CellZoneOverrides.

DefaultZone

  • Type: string
  • Default: 'DEFAULT'
  • Description: Spawn zone key assigned to grid cells with no chunk mapping. Cells using this key fall back to DefaultMapLocation unless overridden.

DefaultMapLocation

  • Type: table
  • Description: Fallback spawn settings when the spawn zone has no entry in mapLocations (including DEFAULT).
FieldTypeDescription
humansListstringKey from pedLists for zombie models
animalsListstringKey from pedLists for wildlife models
maxZombiesnumberBase max zombies for players in this spawn zone
maxAnimalsnumberBase max animals for players in this spawn zone
lua
Config.DefaultMapLocation = {
    humansList = 'city',
    animalsList = 'animals',
    maxZombies = 26,
    maxAnimals = 8,
}

mapLocations

  • Type: table
  • Description: Per spawn zone settings. Keys are GTA zone abbreviations (CHU, SANDY, LEGSQU, ARMYB, etc.). Used when a cell’s spawn zone matches that key.
FieldTypeDescription
humansListstringKey from pedLists for zombie models
animalsListstringKey from pedLists for wildlife models
maxZombiesnumberBase max zombies in this spawn zone
maxAnimalsnumberBase max animals in this spawn zone
lua
Config.mapLocations['LEGSQU'] = {
    humansList = 'city',
    animalsList = 'animals',
    maxZombies = 40,
    maxAnimals = 4,
}

CellZoneOverrides

  • Type: table ([cellId] = zoneKey)
  • Description: Force a grid cell to use a specific spawn zone key and its mapLocations entry. Useful when chunk mapping leaves a downtown cell on DEFAULT but you want LEGSQU settings.
lua
Config.CellZoneOverrides = {
    [1316] = 'LEGSQU',
}

CellLocations

  • Type: table ([cellId] = mapLocationFields)
  • Description: Per-cell overrides merged on top of the zone’s map location. Only include fields you want to change.
lua
Config.CellLocations = {
    [1316] = {
        humansList = 'military',
        maxZombies = 50,
        maxAnimals = 2,
    },
}

SpawnAreas

  • Type: table[]
  • Description: Circular areas with custom spawn settings. Checked by player/spawn coordinates. If multiple areas overlap, the first matching entry in the list wins.
FieldTypeRequiredDescription
coordsvector3YesCentre of the area
radiusnumberYesRadius in metres
labelstringNoDebug label (not used by spawn logic)
humansListstringNoOverride ped list for zombies
animalsListstringNoOverride ped list for animals
maxZombiesnumberNoOverride max zombies
maxAnimalsnumberNoOverride max animals
lua
Config.SpawnAreas = {
    {
        coords = vector3(195.0, -1012.0, 29.0),
        radius = 150.0,
        label = 'Legion Square',
        humansList = 'military',
        maxZombies = 50,
        maxAnimals = 2,
    },
}

Runtime density boosts

For temporary events, use the AddAreaMultiplier export instead of editing config. See Exports.


Ped Lists & Map Density

pedLists

  • Type: table
  • Description: Named pools of GTA ped model strings. Referenced by map location settings via humansList and animalsList.

AnimalModels

  • Type: table
  • Description: Maps animal model names to GTA relationship group hashes.

Damage Config

DamageConfig

  • Type: table
  • Description: Weapon damage multipliers split into three categories:
KeyDescription
PlayersDamage dealt to players by each weapon
ZombiesDamage dealt to zombies by each weapon
AnimalsDamage dealt to animals by each weapon

Weapon keys are weapon hashes (e.g. `WEAPON_BAT`). Values are multipliers applied on top of base damage.


Editable integration

The editable/ folder contains client-side hooks you must implement for your server setup. These files are loaded before the main client scripts.

editable/cl_ui.lua

FunctionCalled when
OpenClothingMenu()Player uses the clothing rack in a safe zone
OpenTattooMenu()Player uses the tattoo interaction
OpenWardrobeMenu()Player uses the wardrobe interaction
OpenBarberMenu()Player interacts with the barber NPC

editable/cl_inventory.lua

FunctionCalled whenDefault
DisarmPlayer()Player enters a safe zonebridge.inv.disarm()

editable/cl_perks.lua

FunctionReturnsUsed for
GetElementalResistance()number (0.0–1.0)Reduces elemental zombie damage
GetGritFortitude()number (0.0–1.0)Reduces melee zombie damage
GetHeadshotCritChance()numberHeadshot critical hit chance
GetCritChance()numberGeneral critical hit chance
GetCritMultiplier()numberCritical hit damage multiplier
GetZombieStagger()numberChance to stagger zombies on hit

editable/cl_hud.lua

FunctionCalled when
OnZombieHitPlayer()Player is hit by a zombie melee attack
OnRegisterCompassWaypoint(id, coords, icon, color)Optional — implement to hook your compass/HUD
OnRemoveCompassWaypoint(id)Optional — implement to hook your compass/HUD

DisarmPlayer default

editable/cl_inventory.lua ships with bridge.inv.disarm(). Override this file if your server needs custom disarm logic.


Admin Commands

CommandPermissionDescription
/zombies_toggleadminToggle zombie spawning on/off
/zombies_spawn [type] [health]adminSpawn one zombie near you
/zombies_bomb [count]adminSpawn multiple zombies (default: 10)
/zombies_debugadminToggle debug overlay

Server Convars

See Installation — Server convars for zombieMultiplier, zombieSpawnMultiplier, animalMultiplier, animalSpawnMultiplier, and allowOnlyCharacterCreation.