OCT ZOMBIES | ZOMBIE FRAMEWORK | Standalone, Custom Bite Animations, Safezones .. And much more

OCT ZOMBIES

WHAT PLAYER EXPERIENCE

  • HIGH Performance Zombie Framework (resmon 0.03ms on bad clients)
  • Active zombie zones with localized outbreaks and roaming
  • Custom Bite animations
  • Real aggro behavior: zombies detect players in range, chase, and bite with cooldown-based damage
  • Chance-based tank zombies with significantly higher health for special encounters
  • Times where Zombies have more HP then usual
  • Safe zones where combat is disabled and zombies are forced out
  • Optional guard zones with aggressive NPC guards that defend areas and attack trespassers
  • Scent masking: loot nearby corpses to temporarily hide your scent from zombies

CORE SYSTEM

  • Spawn Zones with radius, leash, max population, activation radius, and spawn cooldown control
  • Wander Spawns that create small roaming groups around players outside of zones
  • No-Spawn Zones to protect towns, events, or custom areas
  • Safe Zones that block friendly fire and enforce zombie exclusion
  • Guard Zones that spawn defensive NPCs with their own aggro and leash rules
  • Admin Protection command to opt out of zombie/guard aggro for staff
  • Admin Mode Spawn and Controll Zombies

SCENT MASKING SYSTEM

  • Use a prompt on nearby corpses to activate a 10-minute scent mask
  • Timer feedback with periodic updates and optional progress bar support
  • Mask breaks instantly if the player shoots or deals damage
  • While active, zombies ignore the local player as a target

AUDIO SYSTEM

  • Play audio files or sounds (from YouTube) exactly around nearby zombies for maximum immersion. Pseudo3D Sound
  • Smart volume scaling across multiple zombies ensures a clean, non-overlapping sound experience.
  • The closer players get to a zombie, the more intense the sound becomes.
  • Dynamic Audio Radius and Max Volume Configurable
  • Performance Optimized. Efficient audio handling, even with large numbers of active zombies.

LOOT System

  • Enable or disable the entire loot system
  • Define the base probability of zombies dropping loot upon death.
  • Adjust how likely it is for items to drop, giving you full control over loot frequency.
  • Configure a separate chance for weapons to drop instead of standard items.
  • Set the maximum number of items a single zombie can drop.
  • Server Side Security

CONFIG HIGHLIGHTS

  • Adjust zombie aggro radius, aggro tick rate, bite damage, and bite cooldown
  • Set max spawn distances, blips, and custom blip sprite
  • Define unlimited spawn zones, guard zones, safe zones, and no-spawn zones
  • Customize wandering spawns: count, intervals, radii, relax distance, despawn distance, corpse timeout
  • Choose zombie ped models and outfits (a large list is already built-in)
  • Change locale and notification text in lang.lua and config/notify.lua
  • Set Damage/Health for Zombies Invidual for each Zombie
  • Exports and Open Files for Custom Features

INCLUDES

  • HIGH PERFORMANCE ZOMBIE Framework with many Features (ESCROW)
  • Full configuration files and localization support
  • Admin command
  • Bridge for Implementing new Features
  • Exports

COMMING SOON

  • Bossfights
  • Bloodmoon Integration (Can send you the files on discord for it too)
  • More Special Zombies
  • Many More Features…

VIDEO
CLICK HERE
PREVIEW CAN BE HOSTED
ASK FOR IT ON DISCORD.

INFORMATIONS

Dependencies

VORP, RSG OR CUSTOM FRAMEWORK

Language
 "de", "en", "pl", "pt", "tr", "es", "fr", "nl", "ru", "it"
YOU CAN ADD MORE IF YOU NEED
Config-File
Config = {
  -- Locale / debug
  Framework               = "VORP", -- "Vorp" or "RSG"
  Locale                  = "en",   -- language key defined in lang.lua (e.g., "de", "en", "pl", "pt", "tr", "es", "fr", "nl", "ru", "it")
  DebugPrints             = false,   -- enable debug prints in console
  DebugZombieChase        = false,   -- debug lines for zombie chase paths; depends on DebugPrints
  DebugWander             = false,   -- debug lines for wander paths; depends on DebugPrints

  -- Core gameplay tuning
  MaxSpawnDistance        = 50,   -- max distance from player where zombies can spawn
  ShowBlips               = true, -- show blips for zombies
  BlipSprite              = -839369609, -- blip icon
  AggroRadius             = 35.0, -- radius in meters for zombies to detect players
  AggroTick               = 500,  -- time in ms between aggro checks
  ZombieNearestTargeting  = true, -- true: target nearest player within aggro radius; false: random within radius

  ZoneActivationRadius    = 220.0, -- default distance players must be within for a zone to stay active
  MinZoneActivationRadius = 120.0, -- absolute minimum activation radius; helps avoid zones deactivating too aggressively

  -- Damage and combat settings
  BiteAnimDict = "amb_creatures_mammal@world_wolf_bite@idle", -- Bite Anim Dict
  BiteAnimName = "attack_fwd",                                -- Clip in Dict
  BiteCooldown = 2500,                                        -- Cooldown between bites in ms
  BiteDamage   = 40,                                          -- Damage per bite
  EnablePlayerSpawnAttackProtection = true,                   -- If true, zombies wait before they can damage newly spawned players
  PlayerSpawnZombieAttackDelayMs = 3000,                     -- Zombies can attack a player only after this delay post-spawn

  IndividualDamage = true,                                   -- If true, each zombie has its own damage; if false, all zombies do the damage set in BiteDamage
  IndividualHealth = true,                                   -- If true, each zombie has its own health; if false, all zombies have the same health
  SpawnZoneCorpseDespawnSeconds = 60,                        -- Dead spawnzone zombies are removed after this many seconds

  -- Safe zones where zombies cannot attack
  SafeZones = {
    Tumbleweed  = { x = -5514.3438, y = -2910.1174, z = 4.6435,  radius = 12.0 },
    Tumbleweed2 = { x = -5491.1143, y = -2934.5688, z = 3.0450,  radius = 12.0 },
    Marktplatz  = { x = -5632.7314, y = -3807.7476, z = -23.1440, radius = 50.0 }
  },

  -- Guard zones (NPC guards attack if players get close)
  GuardZones = {
	  { name = "Guard_Schloss_brücke",   x = 960.5521,  y = -6822.1489, z = 50.3010, heading = 0.0, radius = 40.0, max = 2, leash = 60.0 },
	  { name = "Guard_Schloss_wald",     x = 866.6871,  y = -6967.8970, z = 55.5410, heading = 0.0, radius = 40.0, max = 2, leash = 60.0 },
	  { name = "Guard_Brücke",           x = 1250.1482, y = -7093.9277, z = 41.7651, heading = 0.0, radius = 40.0, max = 3, leash = 60.0 },
  },

  NoSpawnZones = {
    -- Zones where zombies will not spawn
    { x = 1283.7483, y = -6866.7793, z = 43.3905, radius = 2500.0 },  -- Guarma
    { x = -3679.3979, y = -2610.9373, z = -14.0843, radius = 140.0 }, -- Amadillo
    { x = -5514.8652, y = -2935.5625, z = -2.1969, radius = 140.0 }, -- Tumbleweed
    { x = -5990.4771, y = -3250.0862, z = -21.6630, radius = 100.0 }, -- Gaptoridge Dorf

  },

  SpawnZones = { 
    -- Zones where zombies can spawn
    -- Leash: max distance from center where zombies can move to
    -- Radius: radius around center where zombies can spawn
    -- Max: max number of zombies allowed in this zone at once

    {name = "Amadillo", x =-3679.3979, y = -2610.9373, z = -14.0843, leash  = 400.0, radius = 140.0, max = 12},
    {name = "Tumbleweed", x = -5514.8652, y = -2935.5625, z = -2.1969, leash  = 400.0, radius = 140.0, max = 12},
    {name = "Gaptoridge Dorf", x = -5990.4771, y = -3250.0862, z = -21.6630, leash  = 200.0, radius = 100.0, max = 5},
    {name = "BigPosition1", x = -4813.2974, y = -2722.9421, z = -14.2978, leash  = 400.0, radius = 200.0, max = 8},

  },

  -- Roles that can use admin protection commands /adminprotect
  AdminCommand = {"admin", "support", "vip"},

  -- Ambiant Zombie Settings
  Ambiant = {
    spawnCount = 2,          -- how many wander zombies are spawned per wave per player
    spawnIntervalMs = 60000, -- delay between spawn waves per player

    minRadius = 12.0,        -- minimum spawn distance around the player
    maxRadius = 26.0,        -- maximum spawn distance around the player

    relaxDistance = 65.0,    -- if zombie is farther than this, aggro is removed and it wanders again
    despawnDistance = 115.0, -- if zombie is farther than this, it will be despawned

    corpseTimeoutMs = 60000, -- dead wander zombie cleanup timer
    scanIntervalMs = 5000,   -- server scan tick for spawn/despawn checks

    clusterRadius = 40.0,    -- nearby players within this radius share a spawn budget
    clusterMaxZombies = 8,   -- max active+pending wander zombies in one cluster
  },

  ZombieSounds = {
    enabled = true,              -- enable zombie sounds
    SoundsInSafeZones = false,   -- if false, zombies won't play sounds when inside safe zones; if true, they will play sounds regardless of zone (but still won't aggro)
    radius = 10.0,               -- max distance for players to hear zombie sounds
    volume = 0.1,                -- volume multiplier for zombie sounds (0.0 to 1.0)
    playIntervalMs = 15000,      -- average interval between sounds per zombie
    YoutubeLinks = {
      "https://www.youtube.com/watch?v=CzcgWV7-YCQ",
      "https://www.youtube.com/watch?v=AUdpBJvrkio",
      "https://www.youtube.com/watch?v=Ox7JOd1YMPg",
    },

    EnableFiles = false,          -- If true, will play sound files from the specified directory instead of YouTube links
    SoundDirectory = "sounds/",   -- Directory where sound files are located (used if EnableFiles is true)
    Files = {                     -- List of sound file names (with extensions) to play if EnableFiles is true
      "zombie1.ogg",
      "zombie2.ogg",
      "zombie3.ogg",
    }
  }
}

if Lang and type(Lang.use) == "function" and Config.Locale then
  Lang.use(Config.Locale)
end

Peds
Config.LootSystem = {
    EnableLootSystem = true,  -- Master switch to enable or disable the loot system in case you want your own custom implementation
    DropChance = 70,  -- Base chance for a ped to drop loot upon death
    ItemChance = 70,  -- Chance for an item to drop from a ped
    GunChance = 1,    -- Chance for a weapon to drop instead of an item
    MaxItems = 3,     -- Maximum number of items that can drop from a single ped
    ClaimMaxDistance = 16.0, -- Max distance between player and corpse when server validates loot claim
    StrictZombieValidation = false, -- If true, server requires zombie markers/models; keep false on RSG if claims are rejected

  LootTable = { -- Example loot table with items and their respective drop chances
    {name = 'water', chance = 70, label = 'Water', type = 'item', amount = math.random(1, 5)},
    {name = 'bread', chance = 20, label = 'Bread', type = 'item', amount = math.random(1, 5)},
    {name = 'WEAPON_REVOLVER_CATTLEMAN', chance = 1, label = 'Cattleman Revolver', type = 'weapon'},
  }
}

Config.ZombiePedModels = { 
  {model = 'CS_MrAdler', outfit = 1, damage = 40, health = 200},
  {model = 'CS_ODProstitute', outfit = 0, damage = 30, health = 150},
  {model = 'CS_SwampFreak', outfit = 0, damage = 35, health = 180},
  {model = 'CS_Vampire', outfit = 0, damage = 50, health = 250},
  {model = 'CS_ChelonianMaster', outfit = 0, damage = 25, health = 120},
  {model = 'RE_Voice_Females_01', outfit = 0, damage = 20, health = 100},
  {model = 'RE_SavageAftermath_Males_01', outfit = 0, damage = 30, health = 150},
  {model = 'RE_SavageAftermath_Males_01', outfit = 1, damage = 30, health = 150},
  {model = 'RE_SavageAftermath_Males_01', outfit = 2, damage = 30, health = 150},
  {model = 'RE_SavageWarning_Males_01', outfit = 3, damage = 35, health = 180},
  {model = 'RE_SavageWarning_Males_01', outfit = 4, damage = 35, health = 180},
  {model = 'RE_SavageWarning_Males_01', outfit = 5, damage = 35, health = 180},
  {model = 'RE_SavageWarning_Males_01', outfit = 6, damage = 35, health = 180},
  {model = 'RE_SavageAftermath_Males_01', outfit = 3, damage = 30, health = 150},
  {model = 'RE_SavageAftermath_Males_01', outfit = 4, damage = 30, health = 150},
  {model = 'RE_SavageAftermath_Females_01', outfit = 0, damage = 25, health = 120},
  {model = 'RE_SavageAftermath_Females_01', outfit = 1, damage = 25, health = 120},
  {model = 'RE_CorpseCart_Males_01', outfit = 0, damage = 20, health = 100},
  {model = 'RE_CorpseCart_Males_01', outfit = 1, damage = 20, health = 100},
  {model = 'RE_CorpseCart_Males_01', outfit = 2, damage = 20, health = 100},
  {model = 'RE_LostFriend_Males_01', outfit = 0, damage = 15, health = 80},
  {model = 'RE_LostFriend_Males_01', outfit = 1, damage = 15, health = 80},
  {model = 'RE_LostFriend_Males_01', outfit = 2, damage = 15, health = 80},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 0, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 1, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 2, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 3, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 4, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 5, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 6, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 7, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 8, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 9, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 10, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 11, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 12, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 13, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 14, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 15, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 16, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 17, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 18, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 19, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 20, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 21, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 22, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 23, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 24, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 25, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 26, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 27, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 28, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 29, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 30, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 31, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 32, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 33, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 34, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 35, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 36, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 37, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 38, damage = 10, health = 50},
  {model = 'A_F_M_ArmCholeraCorpse_01', outfit = 39, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 0, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 1, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 2, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 3, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 4, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 5, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 6, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 7, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 8, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 9, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 10, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 11, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 12, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 14, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 15, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 16, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 17, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 18, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 19, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 20, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 21, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 22, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 23, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 24, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 25, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 28, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 29, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 30, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 34, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 35, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 36, damage = 10, health = 50},
  {model = 'A_M_M_ArmCholeraCorpse_01', outfit = 37, damage = 10, health = 50},
  {model = 'U_M_M_CircusWagon_01', outfit = 0, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 0, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 3, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 4, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 5, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 8, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 15, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 16, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 17, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 18, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 19, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 20, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 21, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 22, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 23, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 24, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 25, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 30, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 31, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 33, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 34, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 35, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 36, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 37, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 41, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 45, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 46, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 47, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 48, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 49, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 50, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 52, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 53, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 54, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 55, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 56, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 59, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 67, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 68, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 69, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 72, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 73, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 74, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 81, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 82, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 83, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 85, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 86, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 88, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 89, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 90, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 91, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 92, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 93, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 94, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 95, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 96, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 97, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 98, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 99, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 100, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 101, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 102, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 103, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 104, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 107, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 108, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 110, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 111, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 112, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 113, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 114, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 115, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 116, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 117, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 118, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 120, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 122, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 125, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 126, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 127, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 128, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 130, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 131, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 132, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 133, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 134, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 136, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 137, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 138, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 139, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 141, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 142, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 143, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 148, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 149, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 158, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 159, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 160, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 161, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 162, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 163, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 164, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 165, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 167, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 168, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 170, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 175, damage = 10, health = 50},
  {model = 'A_M_M_UniCorpse_01', outfit = 180, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 0, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 1, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 2, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 4, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 5, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 6, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 7, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 8, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 11, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 12, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 16, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 17, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 18, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 19, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 20, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 21, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 22, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 23, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 24, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 25, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 26, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 37, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 38, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 39, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 40, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 41, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 42, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 43, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 44, damage = 10, health = 50},
  {model = 'A_F_M_UniCorpse_01', outfit = 48, damage = 10, health = 50},
  {model = 'U_M_M_APFDeadMan_01', outfit = 0, damage = 10, health = 50}
}

TEBEX

DISCORD

|-------------------------------------|----------------------------|
| Code is accessible | No/Config and Lang Open |
| Subscription-based | No |
| Lines (approximately) | 9000+ |
| Requirements | VORP/RSG/CUSTOM |
| Support | Yes |

4 Likes

The script is really very powerful and clean. It is very easy to use. I can only recommend it.

2 Likes

Changelog:

  • Added RSG Core Support
  • HP System for Each ped Toggle
  • Individual Damage setting toggle
  • Added Open client and Serverside file
  • Notify System Adjustments
  • PlayerOnSpawn Protection fix
  • Ambiant Zombie Settings edit.
  • Spawn System Adjustments
  • Added alot of Exports (Docs in Discord or in the files)

Changelog:

  • Added Pseudo3D Sound System
  • Added Loot System

Great work! We’ve been lacking good zombie scripts lately. I love that you’re constantly updating it to meet our needs. This has the potential to be the best one on the market. Definitely worth.

1 Like

Forgot some Changelog posts here :smiley:

CHANGELOG VERSION: 1.1

  • Changed some stuff on the Sync Part to fix the GetNetworkObject Warning
  • Added Toggle for Mask Scent
  • Added Config Point for the Duration of Mask Scent
  • Added Config Point for the Cooldown Duration
  • Added Controller Support Keys as a fallback.
  • Changed the Zombie Audio System (also fixing the Print comming from the Youtube Embeded)
  • Loot Bugfix where It was able to loot normal NPCs
  • Performance Update GuardZones
  • Performance Update Zombie Zones
  • Performance Update Scent System
  • Improvement of the Sound System 3D Audio

CHANGELOG VERSION: 1.2

  • If redemrp_progressbars is installed on the server it will show the progressbar on MaskScent more Progressbar support comming soon
  • Fixed the new Sync issue that came with the last update → Reliable network event overflow
  • Added AllowPlayersToRefreshMaskScent → if true players can Refresh their Mask Scent before it runns out and goes in cooldown
  • Added RemoveMaskScentOnDamage → Will Remove the Scent Masking if player does any damage
  • Added DisableInSpawnZones → If true, the ambient spawn system will not spawn zombies in spawnzones,safezone and guardzones
  • Random Vanish Zombies Fix (Error also came with the new Sync)

CHANGELOG VERSION: 1.3

  • Fixed Mask Scent Bug where the Prompt Disappeared
  • ADDED ZM MENU /ZM for the Zombie Manager to controll/move/delete/spawn Zombies ⁠
  • Added Scent Mask Settings
  • Structure Changes some Code Clean Ups and Recodes :salute:
  • /spawnZombie [amount] for Admins to Spawn Zombies

ABOUT THE ZM MENU

  • Controlls: W | A | S | D to Move the Cam
  • SHIFT for Faster Movement | CRTL FOR FLYING DOWNWARDS
  • Marking Zombies: HOLD RIGHT MOUSE BUTTON WHILE DRAGING THE BOX WITH THE LEFT MOUSE BUTTON to Mark Zombies,
  • UNMARK by PRESSING R KEY
  • PRESSING DELETE KEY will DELETE ALL MARKED ZOMBIES