Envi-Zombies
Envi-Zombies Official Documentation
Last updated
Envi-Zombies Official Documentation
Last updated
Welcome to Envi-Zombies a Zombified overhaul for your city to enable you to have roaming zombies if you wish or not complete customisable within configs. With this also comes multiple game modes Survivor V Zombies, Zombie Horde and multiple Survive the Horde
A working FiveM Server.
Basic Understanding of FiveM server setup and resource management.
An up-to-date version of ox_lib
An up-to-date version of either ox_target/qb-target/qtarget or meta_target
add the below code to your server.cfg file
increase_pool_size "netGameEvent" 400
To play a game mode, go to an Arcade Prop or use the command /zombies if enabled!
The host must create the game, and set the map and gamemode.
Players will be able to join via the /zombies menu, and the game will start when host starts it.
Survive as long as you can in a team of up to 4 players!
Earn points by killing zombies, and use them to buy weapons and supplies at the target zones!
- Survivors vs Zombies Game Mode:
This is a big PVP game where you can have unlimited players!
When the game starts you will be assigned a team, Survivors or Zombies.
Zombies must hunt as many Survivors as possible, and kill them to turn them into Zombies.
Survivors must work together to survive as long as they can, and Survive the Night.
Zombies will auto-respawn a few moments after death.
Zombies have Mana and Special Abilities.
Zombie Types:
- Necromancer -- can spawn Hordes of Zombies
- Exploder -- can Explode and Self-Destruct
- Sprinter -- Sprints really fast while having Mana
- Jumper -- Can Super Jump while having Mana
Default Key For Necromancer and Exploder Ability: "E" (Change in FiveM Keybinds)
At the End of the Game Timer, the top 10 players of Team will be displayed on the Webhook! (set in server_edit.lua)
Config.HUD = {
['player'] = { -- 'Survivor' HUD - Has More Options as Zombie HUD is only used when playing in minigames
['enabled'] = 'always', -- 'always' or 'minigames' or false
['bloodFX'] = {
['enabled'] = true, -- Less Health = More Intense Blood FX
['enabledOnDeath'] = true, -- If true, the blood FX will show even when the player is dead, even if disabled
['intensity'] = { -- Tweak the intensity of the blood FX if you feel like it's too intense
{threshold = 1, value = 100},
{threshold = 5, value = 95},
{threshold = 10, value = 90},
{threshold = 20, value = 80},
{threshold = 30, value = 70},
{threshold = 40, value = 60},
{threshold = 50, value = 50},
{threshold = 60, value = 40},
{threshold = 70, value = 30},
{threshold = 80, value = 20},
{threshold = 90, value = 10},
{threshold = 100, value = 0}
},
['deathIntensity'] = 100, -- [1-100] - Max level of the blood FX when dead (for those who want a less intense effect at 100%)
},
},
['zombie'] = { -- 'Zombie' HUD - Used in some Game Modes
['enabled'] = true, -- true or false
['bloodFX'] = {
['intensity'] = 69, -- [1-100] - Intensity level of the blood FX (for those who want a less intense Zombie effect)
},
},
}
Config.Sounds = {
zombieSounds = {
['enabled'] = true, -- true or false
['maxVolume'] = 0.4, -- [0-1] - Volume level of the sounds
},
gameMusic = {
['enabled'] = true, -- true or false
['maxVolume'] = 1.0, -- [0-1] - Volume level of the sounds
},
}
Config.FreeRoamZombies = true
Config.OnFootZombiesOnly = true -- if true, zombies will not spawn in vehicles/around vehicles - reducing performance usage
Config.SpawnExtraZombies = false -- THIS SHOULD ONLY BE USED FOR SERVERS THAT DO NOT HAVE A HIGH NPC DENSITY OR HAVE NO NPCS SPAWNING - Do not use otherwise as it will not be great for performance
Config.ExtraZombiesSpawnAmount = 10 -- The amount of zombies that will spawn around the player when the free roam zombies feature is enabled
Config.ExtraZombiesSpawnDistance = 30 -- The distance from the player that zombies will spawn
Config.SafeZones = { -- Areas where zombies will not spawn
[1] = {
name = "Example Safe Zone",
points = {
vec3(-1048.1771, -1683.7151, 2.0), -- make sure all the Z coords match
vec3(-1244.6178, -1844.8206, 2.0),
vec3(-1770.1569, -899.3431, 2.0),
vec3(-1620.7841, -799.3641, 2.0)
},
debug = false,
height = 50,
onEnter = function(self)
Framework.Notify("You have entered a safe zone.")
-- Custom Code to execute when entering the safe zone
end,
onExit = function(self)
Framework.Notify("You have exited a safe zone.")
-- Custom Code to execute when exiting the safe zone
end,
inside = function(self)
-- Custom Code to execute while inside the safe zone
end
}
-- Add more safe zones as needed
}
Config.DangerZones = { -- Areas where extra zombies will infinitely spawn
[1] = {
name = "Graveyard",
points = {
vec3(-1828.4775, -220.0930, 43.0), -- make sure all the Z coords match
vec3(-1642.7863, -118.6478, 43.0),
vec3(-1600.0540, -182.9996, 43.0),
vec3(-1725.2013, -332.8840, 43.0),
vec3(-1781.7599, -296.1264, 43.0),
},
debug = false,
height = 50,
onEnter = function(self)
Framework.Notify("You have entered a danger zone.")
-- Custom Code to execute when entering the danger zone
end,
onExit = function(self)
Framework.Notify("You have exited a danger zone.")
-- Custom Code to execute when exiting the danger zone
end,
inside = function(self)
-- Custom Code to execute while inside the danger zone (once every 10 seconds)
end
}
-- Add more danger zones as needed
}
Config.Sprinters = {
enabled = true,
speedLevel = 1.1,
}
Config.ZombieReactDistance = {
FreeRoam = 50.0,
Game = 350.0,
}
Config.ArcadeLocations = {
[1] = {
style = 1, -- 1 = RED, 2 = GREEN
coords = vec3(195.7564, -685.2110, 43.140),
heading = 104.80,
},
[2] = {
style = 2, -- 1 = RED, 2 = GREEN
coords = vec3(190.8334, -690.0688, 43.143),
heading = 10.0,
},
}
Config.ZombieGamesCommand = {
Enabled = true, -- If true, the command will be used to open the Zombie Games menu, if false, players can only open the menu via Targetting the Arcade Props
Command = 'zombies',
}
Config.Weapons = { -- MAKE SURE TO ADD ANY WEAPONS/ITEMS YOU USE TO THIS TABLE FOR AUTO-REMOVAL TO WORK
['weapon_switchblade'] = true,
['weapon_machete'] = true,
['weapon_doubleaction'] = true,
['weapon_pistol'] = true,
['weapon_marksmanpistol'] = true,
['weapon_stungun'] = true,
['weapon_combatmg'] = true,
['weapon_sniperrifle'] = true,
['weapon_autoshotgun'] = true,
['weapon_pumpshotgun'] = true,
['weapon_shotgun'] = true,
['weapon_assaultshotgun'] = true,
['weapon_assaultsmg'] = true,
['weapon_gusenberg'] = true,
['weapon_smg'] = true,
['weapon_bat'] = true,
['weapon_golfclub'] = true,
['weapon_firework'] = true,
['weapon_assaultrifle'] = true,
['weapon_mg'] = true,
['weapon_tacticalrifle'] = true,
['weapon_rpg'] = true,
['weapon_raypistol'] = true,
['weapon_raycarbine'] = true,
['weapon_rayminigun'] = true,
['weapon_dbshotgun'] = true,
['weapon_sawnoffshotgun'] = true,
['weapon_musket'] = true,
['ammo-38'] = true,
['ammo-9'] = true,
['ammo-shotgun'] = true,
['ammo-musket'] = true,
['ammo-45'] = true,
['ammo-rifle'] = true,
['ammo-rifle2'] = true,
['ammo-sniper'] = true,
['ammo-rocket'] = true,
['ammo-laser'] = true,
['ammo-firework'] = true,
['weapon_molotov'] = true,
['weapon_stickybomb'] = true,
['weapon_proxmine'] = true,
['weapon_flamethrower'] = true,
['revive_kit'] = true,
['bandage'] = true,
['heavyarmor'] = true,
['weapon_flashlight'] = true,
}
Config.StartingItems = {
['weapon_flashlight'] = 1,
['ammo-9'] = 100,
}
Config.RandomWeapons = {
Common = {
['weapon_dbshotgun'] = {ammo = 'ammo-shotgun', ammoAmount = 100, label = 'Double Barrel Shotgun'},
['weapon_sawnoffshotgun'] = {ammo = 'ammo-shotgun', ammoAmount = 100, label = 'Sawed Off Shotgun'},
['weapon_pumpshotgun'] = {ammo = 'ammo-shotgun', ammoAmount = 100, label = 'Pump Shotgun'},
['weapon_musket'] = {ammo = 'ammo-musket', ammoAmount = 100, label = 'Musket'},
['weapon_gusenberg'] = {ammo = 'ammo-45', ammoAmount = 100, label = 'Gusenberg'},
['weapon_smg'] = {ammo = 'ammo-9', ammoAmount = 100, label = 'SMG'},
['weapon_bat'] = {ammo = nil, ammoAmount = nil, label = 'Bat'},
['weapon_golfclub'] = {ammo = nil, ammoAmount = nil, label = 'Golf Club'},
},
Rare = {
['weapon_firework'] = {ammo = 'ammo-firework', ammoAmount = 100, label = 'Firework'},
['weapon_assaultrifle'] = {ammo = 'ammo-rifle2', ammoAmount = 100, label = 'Assault Rifle'},
['weapon_sniperrifle'] = {ammo = 'ammo-sniper', ammoAmount = 10, label = 'Sniper Rifle'},
['weapon_mg'] = {ammo = 'ammo-rifle2', ammoAmount = 100, label = 'MG'},
['weapon_assaultshotgun'] = {ammo = 'ammo-shotgun', ammoAmount = 100, label = 'Assault Shotgun'},
['weapon_tacticalrifle'] = {ammo = 'ammo-rifle', ammoAmount = 100, label = 'Tactical Rifle'},
},
Legendary = {
['weapon_flamethrower'] = {ammo = nil, ammoAmount = nil, label = 'Flamethrower'},
-- Envi-Flamethrower - https://envi-scripts.tebex.io/package/6391692 --
['weapon_rpg'] = {ammo = 'ammo-rocket', ammoAmount = 100, label = 'RPG'},
['weapon_raypistol'] = {ammo = nil, ammoAmount = nil, label = 'Ray Pistol'},
['weapon_raycarbine'] = {ammo = 'ammo-laser', ammoAmount = 100, label = 'Ray Carbine'},
['weapon_rayminigun'] = {ammo = 'ammo-laser', ammoAmount = 100, label = 'Ray Minigun'},
['weapon_autoshotgun'] = {ammo = 'ammo-shotgun', ammoAmount = 100, label = 'Auto Shotgun'},
},
}
['Map_Name'] = {
['id'] = 1,
['imageUrl'] = './imgs/map-1.png',
['title'] = 'Title',
['description'] = 'Description.',
['enabled'] = true,
['startingLevel'] = 1,
['mapName'] = 'Apartments',
['barricadeStartingCost'] = 5, -- Amount of points it costs to set up a barricade * Number of the current round
['locations'] = {
['mainZone'] = {
['startingCoords'] = vec3(0, 0, 0),
['coords'] = vec3(0, 0, 0),
['size'] = vec3(0, 0, 0),
['rotation'] = 0,
},
['weapons'] = {
['weapon_switchblade'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Switchblade',
unlockLevel = 1,
price = 7,
},
['weapon_machete'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Machete',
unlockLevel = 2,
price = 15,
},
['ammo_station_1'] = { --- NEW AMMO STATION STRUCTURE FOR MULTIPLE ZONES IN ONE LOCATION
coords = vec3(0, 0, 0),
heading = 0.0,
ammoTypes = {
{
weapon = 'ammo-38',
label = '.38 Ammo - (Revolver)',
unlockLevel = 3,
ammoAmount = 25,
price = 2,
},
{
weapon = 'ammo-9',
label = '9mm Ammo - (Pistol/SMG)',
unlockLevel = 5,
ammoAmount = 50,
price = 5,
},
{
weapon = 'ammo-rifle2',
label = '7.62 Ammo - (Assault Rifle/ MG)',
unlockLevel = 14,
ammoAmount = 50,
price = 15,
},
{
weapon = 'ammo-rifle',
label = '5.56 Ammo - (Combat MG)',
unlockLevel = 14,
ammoAmount = 50,
price = 15,
},
{
weapon = 'ammo-shotgun',
label = 'Shotgun Ammo',
unlockLevel = 8,
ammoAmount = 50,
price = 10,
},
{
weapon = 'ammo-sniper',
label = 'Sniper Ammo',
unlockLevel = 16,
ammoAmount = 15,
price = 25,
},
},
},
['weapon_doubleaction'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Double Action Revolver',
unlockLevel = 4,
price = 20,
},
['weapon_pistol'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Pistol',
unlockLevel = 6,
price = 25,
},
['weapon_marksmanpistol'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Marksman Pistol',
unlockLevel = 6,
price = 25,
},
['weapon_stungun'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Tazer',
unlockLevel = 6,
price = 25,
},
['mystery'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Meet the Lucky-Lucky Man',
unlockLevel = 7,
price = 50,
-- we need extra info for mystery weapons
pedModel = 'cs_chrisformage',
pedLocation = vec3(0, 0, 0),
pedHeading = 0.0,
},
['weapon_pumpshotgun'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Pump Shotgun',
unlockLevel = 9,
price = 35,
},
['weapon_smg'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'SMG',
unlockLevel = 10,
price = 50,
},
['weapon_proxmine'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Proximity Mine',
unlockLevel = 11,
price = 25,
},
['weapon_assaultsmg'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Assault SMG',
unlockLevel = 12,
price = 50,
},
['weapon_stickybomb'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Sticky Bomb',
unlockLevel = 13,
price = 35,
},
['weapon_assaultrifle'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Assault Rifle',
unlockLevel = 15,
price = 65,
},
['weapon_sniperrifle'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Sniper Rifle',
unlockLevel = 17,
price = 150,
},
['weapon_molotov'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Molotov Cocktail',
unlockLevel = 18,
price = 25,
},
['weapon_combatmg'] = {
coords = vec3(0, 0, 0),
heading = 0.0,
label = 'Combat MG',
unlockLevel = 19,
price = 250,
},
},
['barricades'] = {
[1] = {
prop = `prop_mp_barrier_02b`,
coords = vec3(0, 0, 0),
heading = 0.0,
},
[2] = {
prop = `prop_mp_barrier_02b`,
coords = vec3(0, 0, 0),
heading = 0.0,
},
[3] = {
prop = `prop_mp_barrier_02b`,
coords = vec3(0, 0, 0),
heading = 0.0,
},
},
['zombieSpawns'] = {
[1] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[2] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[3] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[4] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[5] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[6] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[7] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[8] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[9] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[10] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[11] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[12] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[13] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[14] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
-- ROOFTOPS --
[15] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[16] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[17] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[18] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[19] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[20] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
},
['houndSpawns'] = {
[1] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[2] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
[3] = {
coords = vec3(0, 0, 0),
heading = 0.0,
},
-- [4] = {
-- coords = vec3(-104.8309, -1604.2607, 31.7656),
-- heading = 41.0,
-- },
-- [5] = {
-- coords = vec3(-160.9557, -1584.7341, 34.7584),
-- heading = 285.0,
-- },
-- [6] = {
-- coords = vec3(-139.2715, -1558.4769, 34.4280),
-- heading = 220.0,
-- },
},
},
},