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
- Zombies have a chance to infect on hit (default: 10%)
- Infected players take periodic damage
- Cure with antidote (purchasable at hospital or crafted)
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:
- Survival items (bandages, food, water)
- Crafting materials (scrap, metal, plastic)
- Weapon parts (pistol/SMG/shotgun components)
- Rare weapons (very low chance)
- Ammo
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,
})