prp-zombies

Tiered redzone zombie system with infection, corpse loot, and survival mechanics.

Features

Zombie Types

Type Damage Speed Behavior
Normal 3 2.0 Standard zombie
Fast 2 3.0 Quick but weaker
Tank 5 1.0 Slow, high damage, hard to ragdoll

Tiered Redzones

Difficulty scales with zone tier:

Tier Max Zombies Spawn Rate Loot Bonus Zombie Types
1 2 12s 1.0x Normal only
2 3 10s 1.3x Normal, Fast
3 4 8s 1.6x Normal, Fast, Tank
4 5 6s 2.0x Fast, Tank only

Infection System

Zone Fatigue

The longer you stay in one zone, spawns decrease:

Time in Zone Spawn Rate Loot Rate
0-5 min 100% 100%
5-10 min 75% 90%
10-15 min 50% 70%
15-20 min 25% 50%
20+ min 10% 25%

Leave the zone for 10 minutes to reset fatigue.

Corpse Loot

Server-authoritative loot from zombie corpses:

Configuration

Zombie Settings

Config.InfectionChance = 10           -- % per hit
Config.MaxZombiesPerPlayer = 5
Config.SpawnRadius = 50.0
Config.DespawnTime = 15000            -- ms

Redzone Definitions

Config.RedZones = {
    -- Tier 1: Starter
    { 
        coords = vector3(-2050.86, -574.93, 4.78), 
        radius = 350.0, 
        tier = 1, 
        name = 'Del Perro Beach' 
    },
    
    -- Tier 4: Endgame
    { 
        coords = vector3(5062.93, -5100.92, 1.26), 
        radius = 480.0, 
        tier = 4, 
        name = 'Cayo Perico' 
    },
}

Safe Zones

Config.SafeZones = {
    -- Hospital
    { coords = vector3(311.0, -590.0, 43.0), radius = 80.0 },
    -- Police Station
    { coords = vector3(428.0, -981.0, 30.0), radius = 70.0 },
}

Hospital Antidote

Config.EnableHospitalAntidote = true
Config.AntidotePrice = 750
Config.HospitalAntidoteLocation = vector3(310.31, -581.51, 42.27)

Loot Table

Config.ZombieLootItems = {
    -- Common
    { item = 'bandage', min = 1, max = 1, chance = 30 },
    { item = 'water', min = 1, max = 1, chance = 25 },
    { item = 'money', min = 5, max = 50, chance = 20 },
    
    -- Uncommon
    { item = 'scrapmetal', min = 1, max = 2, chance = 15 },
    { item = 'ammo-9', min = 3, max = 10, chance = 15 },
    
    -- Rare
    { item = 'WEAPON_KNIFE', min = 1, max = 1, chance = 4 },
    { item = 'antidote', min = 1, max = 1, chance = 1 },
    
    -- Very Rare
    { item = 'WEAPON_PISTOL', min = 1, max = 1, chance = 0.5 },
}

Commands

Command Description
zombies:doctor Run diagnostics (console)

Integration

prp-zombies can receive noise events from other scripts:

-- Export
exports['prp-zombies']:OnNoiseEvent({
    source = source,
    coords = playerCoords,
    intensity = 2.0,
})

-- Event
TriggerServerEvent('prp-zombies:noise', {
    coords = playerCoords,
    intensity = 2.0,
})