Configuration

This is the doc that contains the full config.lua for Zombies, so you can get a full look at what is all configurable.

-- If you are looking for support or wanting to suggest features, please visit our Discord: https://discord.gg/VTjZDgV95y

Config = {}

-- Debugging: set to true to enable server-console debug prints
Config.Debug = false

-- Death/Revive Events (for better death detection with ambulance scripts)
Config.DeathEvent = "hospital:client:CheckIn" -- Event triggered when player dies/checked in
Config.ReviveEvent = "hospital:client:Revive" -- Event triggered when player is revived

-- Horde System
Config.HordeRadius = 15.0 -- Radius for zombies to join horde when another zombie targets a player

-- General Settings
Config.GlobalSpawning = true -- Global spawning: when false, zombies only spawn in RedZones and Nest spawns
Config.MaxZombiesPerPlayer = 8 -- Max zombies spawned per player
-- Spawn distance range from player (randomized between min and max for immersion)
Config.SpawnDistance = {
    min = 30, -- Minimum distance to spawn zombies from player
    max = 60 -- Maximum distance to spawn zombies from player
}

Config.DespawnDistance = 180.0 -- Distance to despawn zombies
Config.ZombieSpawnDelay = 70000 -- Delay between spawn checks (ms)

-- Regular Zombie Settings
Config.ZombieSettings = {
    health = 200, -- Base health
    damage = 15, -- Base damage
    vehicleDamage = 15, -- Base vehicle damage
    speed = 1.4, -- Base speed multiplier
    attackRange = 2.0, -- Melee attack range
    attackDelay = 1500 -- MS between attacks
}

-- Zombie Appearance Settings
Config.ZombieAppearance = {
    -- Movement clipsets (randomly chosen)
    clipsets = {
        "move_m@drunk@verydrunk",
        "move_m@injured",
        "move_m@hobo@a",
        "move_m@alien"
    },
    -- Base movement settings
    movementRate = 0.70, -- Base movement rate override
    maxSpeed = 4.0, -- Max entity speed
    -- Damage and blood effects
    damagePack = "Fall", -- Damage pack to apply
    bloodDamage = 3, -- Blood damage level
    -- Animation settings
    disableAmbientAnims = true, -- Disable ambient animations
    disableAmbientBaseAnims = true,
    disableGestures = true,
    disableVisemeAnims = true,
    -- Combat attributes
    fleeAttributes = 0, -- 0 = no flee
    combatMovement = 0, -- 0 = stationary
    combatAbility = 0, -- 0 = poor
    accuracy = 1, -- Low accuracy
    -- Animation pool (upper body overlays)
    anims = {
        { dict = "special_ped@zombie@base", anim = "base" },
        { dict = "special_ped@zombie@monologue_6@monologue_6c", anim = "iamthevinewoodzombie_2" },
        { dict = "special_ped@zombie@monologue_6@monologue_6b", anim = "iamthevinewoodzombie_1" },
        { dict = "special_ped@zombie@monologue_6@monologue_6g", anim = "iamthevinewoodzombie_6" },
        { dict = "special_ped@zombie@monologue_6@monologue_6d", anim = "iamthevinewoodzombie_3" },
        { dict = "special_ped@zombie@monologue_6@monologue_6f", anim = "iamthevinewoodzombie_5" },
        { dict = "special_ped@zombie@monologue_6@monologue_6a", anim = "iamthevinewoodzombie_0" }
    },
    -- Thread intervals (in ms)
    headTiltInterval = {min = 3000, max = 7000}, -- Random head tilt
    speedPulseInterval = {min = 1200, max = 2600}, -- Speed variation
    animCheckInterval = 2000 -- Ensure animation is playing
}

-- Hearing and Vision Settings
Config.ZombieHearing = {
    enabled = true, -- Enable hearing system
    gunshot = 100.0, -- Range zombies can hear gunshots
    gunshotSuppressed = 40.0, -- Range zombies can hear suppressed gunshots
    sprinting = 20.0, -- Range zombies can hear running
    walking = 10.0, -- Range zombies can hear walking
    crouching = 5.0, -- Range zombies can hear crouching
    vehicle = 85.0, -- Range zombies can hear vehicles
    shout = 30.0 -- Range zombies can hear shouting
}

-- Day/Night Settings
Config.DayNightEnabled = true
Config.NightStart = 20 -- 8 PM
Config.NightEnd = 6 -- 6 AM 
Config.NightZombieMultiplier = 1.4 -- 40% more zombies at night
Config.NightZombieDamageMultiplier = 1.3 -- 30% more damage at night
Config.NightZombieSpeedMultiplier = 1.4 -- 40% faster zombies at night

-- Combat options
Config.InstantHeadshots = true -- If true, headshots instantly kill zombies (client must send headshot flag)
Config.InstantHeadshotsExcludeBosses = true -- If true, bosses are immune to instant headshots

Config.AllowZombieLadderClimbing = true -- If true, zombies are allowed to use ladders when pathing
Config.AllowZombieClimbovers = true -- If true, zombies are allowed to use climbovers when pathing (low obstacles)

-- Sync/networking options
Config.Sync = {
    interpolationTime = 200 -- ms to interpolate between position updates for synced entities
}

-- AI Behavior
Config.AI = {
    updateRate = 200, -- ms between AI updates (faster reaction)
    attackDelay = 1000, -- ms between attacks (faster attacks)
    targetSwitchCooldown = 2000 -- ms before switching targets to prevent erratic behavior
}

-- Safezones (No zombie spawns)
Config.SafeZones = {
    {
        name = "Yellowjack",
        coords = vector3(1991.07, 3047.72, 54.53),
        radius = 50.0,
        disableWeapons = true, -- Disable weapons in this safezone
        disableZombieAttacks = true, -- Prevent zombies from attacking players in this zone
        takeDamage = false, -- If true, players will still take damage (for contested zones)
        -- Damage protection options:
        protectFromFire = true, -- Prevent fire/environmental damage
        protectFromPlayers = true, -- Prevent damage from other players
        showWarning = false, -- Show a warning message when entering
        warningText = "Safe Zone - Weapons Disabled", -- Custom warning text
        blip = {
            enabled = true,
            sprite = 60,
            iconSprite = 304,
            color = 3,
            scale = 0.8,
            shortRange = true,
            text = "Safe Zone - Yellowjack"
        }
    }
}

-- Red Zones (High zombie density, stronger zombies)
Config.RedZones = {
    {
        name = "Military Base",
        coords = vector3(-2047.8, 2955.6, 32.8),
        radius = 300.0,
        zombieMultiplier = 2.0, -- 2x more zombies
        healthMultiplier = 1.5, -- 50% more health
        damageMultiplier = 1.8, -- 80% more damage
        bossChance = 0.15, -- 15% chance to spawn boss
        blip = {
            enabled = true,
            sprite = 161,
            color = 1,
            scale = 1.0,
            shortRange = true,
            alpha = 120,
            text = "Red Zone - Military"
        }
    },
    {
        name = "Prison",
        coords = vector3(1679.0, 2513.0, 45.5),
        radius = 200.0,
        zombieMultiplier = 1.7,
        healthMultiplier = 1.4,
        damageMultiplier = 1.6,
        bossChance = 0.12,
        blip = {
            enabled = true,
            sprite = 161,
            color = 1,
            scale = 0.95,
            shortRange = true,
            alpha = 120,
            text = "Red Zone - Prison"
        }
    }
}

-- Zombie Models (used for normal zombie spawns)
Config.ZombieModels = {
    {model = "a_m_y_runner_01", weight = 20},
    {model = "a_m_y_runner_02", weight = 20},
    {model = "a_f_y_runner_01", weight = 15},
    {model = "a_m_m_hillbilly_01", weight = 15},
    {model = "a_m_y_beachvesp_01", weight = 10},
    {model = "a_m_y_hipster_01", weight = 10},
    {model = "a_f_m_beach_01", weight = 10},
    {model = "a_m_m_business_01", weight = 12},
    {model = "a_f_m_business_02", weight = 12},
    {model = "a_m_y_business_01", weight = 8},
    {model = "a_f_y_business_01", weight = 8},
    {model = "a_f_y_juggalo_01", weight = 10},
    {model = "a_m_m_beach_01", weight = 10},
    {model = "a_m_m_eastsa_02", weight = 10},
    {model = "a_m_m_hillbilly_01", weight = 10},
    {model = "a_m_m_malibu_01", weight = 10},
    {model = "a_m_m_mexlabor_01", weight = 10},
    {model = "a_m_m_polynesian_01", weight = 10},
    {model = "a_m_m_rurmeth_01", weight = 10},
    {model = "a_m_m_salton_02", weight = 10},
    {model = "a_m_m_skater_01", weight = 10},
    {model = "a_m_m_skidrow_01", weight = 10},
    {model = "a_m_m_soucent_04", weight = 10},
    {model = "a_m_m_tennis_01", weight = 10},
    {model = "a_m_o_acult_02", weight = 10},
    {model = "a_m_y_genstreet_01", weight = 10},
    {model = "a_m_y_genstreet_02", weight = 10},
    {model = "a_m_y_methhead_01", weight = 10},
    {model = "a_m_y_salton_01", weight = 10},
    {model = "a_m_y_stlat_01", weight = 10},
    {model = "s_m_y_cop_01", weight = 10},
    {model = "s_m_y_prismuscl_01", weight = 10}
}

-- Boss Zombie Settings
Config.BossZombies = {
    enabled = true,
    spawnChance = 0.05, -- 5% chance to spawn a boss
    models = {
        {model = "u_m_y_zombie_01", weight = 50},
        {model = "ig_dale", weight = 30},
        {model = "u_m_m_jesus_01", weight = 20}
    },
    health = 1000,
    damage = 50,
    vehicleDamage = 60,
    speed = 1.2,
    scale = 1.3, -- Make them bigger
    attackRange = 3.0
}

--- SECTION: Nest System ---

-- Nest System
Config.NestSystem = {
    enabled = true,
    nestLocations = {
        vector3(1679.0, 2513.0, 45.5),
        vector3(240.0, -880.0, 30.0),
        vector3(1747.84, 3045.42, 60.87),
        vector3(1398.89, 3005.31, 39.55),
        vector3(617.58, 2714.12, 41.04),
        vector3(745.15, 1284.34, 359.3),
        vector3(326.01, 96.44, 98.72),
        vector3(226.38, -99.65, 68.89),
        vector3(-106.65, -56.61, 55.36),
        vector3(-433.06, -433.98, 31.8),
        vector3(-48.37, -1078.2, 25.78),
        vector3(-187.34, -1393.64, 29.83),
        vector3(152.6, -1291.31, 28.07),
        vector3(479.07, -1277.23, 28.55),
        vector3(355.05, -665.81, 28.34),
        vector3(-542.49, -658.51, 32.27), 
        vector3(-698.19, -984.24, 19.39),
        vector3(-579.44, -1154.05, 21.18),
        vector3(-81.43, -1480.27, 31.27),
        vector3(1679.0, 2513.0, 45.5),
        vector3(240.0, -880.0, 30.0),
        vector3(1747.84, 3045.42, 60.87),
        vector3(1398.89, 3005.31, 39.55),
        vector3(617.58, 2714.12, 41.04),
        vector3(745.15, 1284.34, 359.3),
        vector3(326.01, 96.44, 98.72),
        vector3(226.38, -99.65, 68.89),
        vector3(-106.65, -56.61, 55.36),
        vector3(-433.06, -433.98, 31.8),
        vector3(-48.37, -1078.2, 25.78),
        vector3(-187.34, -1393.64, 29.83),
        vector3(152.6, -1291.31, 28.07),
        vector3(479.07, -1277.23, 28.55),
        vector3(355.05, -665.81, 28.34),
        vector3(-542.49, -658.51, 32.27), 
        vector3(-698.19, -984.24, 19.39),
        vector3(-579.44, -1154.05, 21.18),
        vector3(-81.43, -1480.27, 31.27),
        vector3(229.62, -1726.6, 28.06),
        vector3(487.88, -2060.16, 24.14),
        vector3(1416.13, -1761.63, 64.92),
        vector3(1161.36, -949.2, 47.39),
        vector3(1016.97, -193.23, 69.27),
        vector3(-1786.24, 73.37, 68.81),
        vector3(-2169.54, -399.93, 12.38),
        vector3(91.46, 3629.87, 38.69),
        vector3(-921.55, 5410.71, 36.44),
        vector3(-1640.32, 4851.74, 59.84),
        vector3(-2204.98, 4253.64, 46.52),
        vector3(-2145.77, 3477.22, 28.84),
        vector3(-1549.14, 2396.2, 24.97),
        vector3(221.94, 2988.56, 41.55),
        vector3(-236.7, 3916.54, 37.24),
        vector3(1907.19, 4931.93, 47.97),
        vector3(2423.49, 5126.5, 45.86),
        vector3(119.08, 6547.2, 30.44),
        vector3(-326.59, 6274.94, 30.49),
        vector3(-1154.19, 2665.12, 17.09),
        vector3(1560.88, 6448.96, 22.86),
        vector3(1483.76, 3589.16, 34.38),
        vector3(1626.44, 3566.87, 34.15),
        vector3(1847.67, 3924.07, 32.05),
        vector3(887.29, 3655.04, 31.84),
        vector3(913.94, 3546.12, 32.79),
        vector3(1343.31, 3130.99, 40.05),
        vector3(715.04, 3210.9, 38.13),
        vector3(1103.26, 3446.55, 32.92),
        vector3(2046.59, 3445.44, 42.77),
        vector3(2802.66, 3472.48, 54.19),
        vector3(2754.87, 4423.67, 47.58),
        vector3(2679.39, 3899.85, 41.24),
        vector3(2450.04, 4040.16, 36.61),
        vector3(2458.86, 4589.91, 35.91),
        vector3(2671.5, 4861.87, 43.68),
        vector3(3785.84, 4435.09, 4.1),
        vector3(2892.96, 5027.41, 30.6),
        vector3(-662.95, 5257.91, 75.44),
        vector3(762.9, 4179.81, 39.59),
        vector3(1012.72, 4455.63, 50.34),
        vector3(1670.99, 4519.19, 35.31),
        vector3(1683.78, 3917.54, 31.95),
        vector3(2258.75, 5611.66, 53.45),
        vector3(2483.44, 5584.43, 43.85),
        vector3(1957.99, 3770.16, 31.2),
        vector3(2534.24, 2618.72, 36.94),
        vector3(2787.21, 1655.15, 23.49),
        vector3(2718.68, 1364.48, 23.52),
        vector3(2585.6, 389.82, 107.46),
        vector3(2408.55, -460.53, 70.79),
        vector3(1715.45, -1648.61, 111.52),
        vector3(1442.45, -2595.74, 47.21),
        vector3(184.78, -2617.84, 5.02),
        vector3(-301.32, -2588.52, 5.0),
        vector3(-910.49, -2926.52, 12.94),
        vector3(-1465.81, -3102.96, 13.14),
        vector3(-983.08, -2992.24, 12.94),
        vector3(-1251.81, -2298.26, 12.95),
        vector3(-1091.29, -1689.56, 3.6),
        vector3(-1318.14, -1220.7, 3.83),
        vector3(-1372.11, -573.19, 29.25),
        vector3(-1025.33, -509.87, 35.44),
        vector3(-734.09, -194.71, 36.0),
        vector3(-833.87, 438.42, 86.88),
        vector3(-716.49, 984.21, 236.99),
        vector3(438.94, 881.07, 197.25),
        vector3(-3108.1, 1295.54, 19.23),
        vector3(133.85, 4460.4, 79.7),
        vector3(195.04, 1882.39, 171.7),
        vector3(860.42, 1952.33, 87.87)
    },
    nestRadius = 25.0, -- Radius of nest influence
    zombiesPerNest = 8, -- Zombies that spawn from a nest
    maxZombiesFromNests = 40, -- Max total zombies that can be active from nests
    OnlyNightSpawning = false, -- If true, nests won't be active in the day. (edit start/end night settings above.)
    NightZombiesPerNestMultiplier = 1.2, -- Multiplier for number of zombies spawned per nest at night
    -- Particle/smoke settings for nest visuals
    particle = {
        enabled = true,
        asset = "core", -- ptfx asset name
        effect = "exp_grd_grenade_smoke", -- particle effect name (gas-like smoke)
        scale = 2.0, -- particle scale
        offsetZ = 0.0, -- vertical offset from nest coords
        emitters = 5, -- number of particle emitters per nest (for denser effect)
        color = { r = 0.5, g = 0.5, b = 0.5 }, -- color in RGB format - note: not all ptfx support color changes, may be ignored.
        distance = 100.0 -- distance from player to show particles
    },
    blip = {
        enabled = false,
        sprite = 310, -- Skull blip
        color = 1, -- Red
        scale = 0.8,
        shortRange = true,
        text = "Zombie Nest"
    },
    respawnTime = 300 -- Time in seconds before nest can respawn zombies if player is still nearby (5 minutes)
}

--- SECTION: Special Zombies and Settings ---

-- Special Zombie Types
Config.SpecialZombies = {
    fire = {
        name = "Fire Zombie",
        health = 300,
        damage = 20,
        vehicleDamage = 25,
        speed = 1.1,
        attackRange = 2.5,
        models = {
            {model = "a_m_y_runner_01", weight = 50},
            {model = "a_m_y_runner_02", weight = 50}
        },
        effects = {
            fire = true -- Could add fire effects later
        }
    },
    gas = {
        name = "Gas Zombie",
        health = 250,
        damage = 18,
        vehicleDamage = 22,
        speed = 0.9,
        attackRange = 2.0,
        models = {
            {model = "a_m_m_hillbilly_01", weight = 50},
            {model = "a_m_m_rurmeth_01", weight = 50}
        },
        effects = {
            gas = true -- Could add gas effects later
        }
    },
    armored = {
        name = "Armored Zombie",
        health = 400,
        damage = 25,
        vehicleDamage = 30,
        speed = 0.8,
        attackRange = 2.2,
        models = {
            {model = "s_m_y_cop_01", weight = 50},
            {model = "s_m_y_prismuscl_01", weight = 50}
        },
        effects = {
            armored = true
        }
    }
}

-- Special Nest System
Config.SpecialNestSystem = {
    enabled = true,
    specialNestLocations = {
        {coords = vector3(-2047.8, 2955.6, 32.8), type = "fire"}, -- military base
        {coords = vector3(3516.28, 3783.46, 28.92), type = "gas"}, -- humane labs 
        {coords = vector3(240.0, -880.0, 30.0), type = "armored"} -- prison
    },
    nestRadius = 25.0, -- Radius of nest influence
    zombiesPerNest = 8, -- Zombies that spawn from a special nest
    maxZombiesFromNests = 40, -- Max total zombies that can be active from special nests
    OnlyNightSpawning = false, -- If true, special nests won't be active in the day. (Night: 20pm - 6am)
    -- Particle/smoke settings for nest visuals (different colors for special)
    particle = {
        enabled = false,
        asset = "core",
        effect = "exp_grd_grenade_smoke",
        scale = 2.5, -- Larger scale for special
        offsetZ = 0.0,
        emitters = 7, -- More emitters
        color = { r = 1.0, g = 0.0, b = 0.0 }, -- Red for special
        distance = 100.0
    },
    blip = {
        enabled = true,
        --sprite = 310,
        color = 49, -- Orange for special
        scale = 1.0,
        shortRange = true,
        text = "Special Zombie Nest"
    }
}

--- SECTION: Other Settings ---

-- Audio Settings
Config.Audio = {
    enabled = true,
    maxDistance = 20.0, -- max range zombie sounds can be heard
    volume = 0.2, -- master volume for zombie sounds (0.0 to 1.0)
    playerUpdateInterval = 250, -- ms for listener updates
}

-- Performance Settings
Config.Performance = {
    updateRate = 500, -- How often to update zombie AI (ms)
    maxSpawnAttempts = 5, -- Max attempts to find valid spawn
    cleanupDeadZombies = true,
    cleanupDelay = 30000 -- Remove dead zombies after 30 seconds
}

-- Apocalypse Mode (disables world density & ambience when enabled)
Config.Apocalypse = {
    -- If true players will start with Apocalypse mode active on resource start
    enabled = true, -- if false it will disable "Apocalypse mode completely"
    disableDensity = true, -- if true, it will disable world density.
    disableDispatch = true, -- if true, ambience when enabled.
}

-- Looting System
Config.Looting = {
    enabled = true,
    -- Use target system (qb-target/ox_target/qtarget/bt-target) or press E prompt
    useTarget = true,
    -- Max items per corpse (to prevent over-looting)
    maxItemsPerCorpse = 3,
    -- Loot tables for zombies (chance-based items)
    lootTables = {
        regular = {
            {item = "water", chance = 30, amount = {1,3}}, -- 30% chance - Common drink
            {item = "sandwich", chance = 25, amount = {1,2}}, -- 25% chance - Food item
            {item = "bandage", chance = 20, amount = {1,2}}, -- 20% chance - Medical supply
            {item = "pistol_ammo", chance = 15, amount = {1,5}}, -- 15% chance - Ammunition
            {item = "metalscrap", chance = 10, amount = {1,3}}, -- 10% chance - Crafting material
        },
        boss = {
            {item = "water", chance = 40, amount = {2,5}}, -- 40% chance - Common drink
            {item = "sandwich", chance = 35, amount = {2,4}}, -- 35% chance - Food item
            {item = "bandage", chance = 30, amount = {2,4}}, -- 30% chance - Medical supply
            {item = "pistol_ammo", chance = 25, amount = {5,10}}, -- 25% chance - Ammunition
            {item = "metalscrap", chance = 20, amount = {3,6}}, -- 20% chance - Crafting material
            {item = "antidote", chance = 10, amount = {1,1}}, -- 10% chance - Infection cure
            {item = "advancedrepairkit", chance = 15, amount = {1,1}}, -- 15% chance - Rare repair item
        }
    },
    -- Corpse despawn delay after looting is complete (seconds)
    corpseDespawnDelay = 30,
}

-- Infection System
Config.Infection = {
    enabled = true,
    -- Infection timer (time until death if not cured) in seconds
    infectionTime = 300, -- 5 minutes in seconds
    -- Chance to infect on bite (0.0 to 1.0)
    biteChance = 0.02, -- 2%
    -- Cure item name
    cureItem = "antidote",
    -- Allow zombie to the an infected player
    allowZombiesToAttackInfected = false,
    -- Symptoms
    symptoms = {
        blur = true, -- Screen blur
        heartbeat = true, -- Heartbeat sound
        walkStyle = "move_m@injured", -- Walking animation clipset
        screenEffect = true, -- Custom HTML screen effect
        periodicDamage = 0.3 -- HP drain per second
    }
}

return Config
-- End of Config.lua

This script also comes with an unlocked shared/framework.lua, this class can be used to edit the frameworks functions and apply your own scripts to support.

Last updated