Envi Scripts Documentation
  • 👋Introduction
  • 🌉Envi-Bridge
  • ⚙️Compatibility
  • 🖨️Licensing
  • 📒Premium Scripts
    • ❔FAQ / COMMON ISSUES
    • ‼️FIRST STEPS (READ FIRST)
    • ⭐Useful Resources
    • 👀Envi FiveM Showcase Server
    • 💊Envi-Addictions
      • ❗First Time Setup
      • Inventory Setup
      • Exports and Commands
      • Config File
    • 📸Envi-Camera
      • ❗First Steps
      • Inventory Setup
      • Editable Functionality
      • Complete Lens Kit
      • Printing Photos
      • Ped Reactions
      • Exports
      • Config File
    • 🪚Envi-ChopShop
      • Inventory Setup
      • How to Chop
      • Props for AntiCheats
      • Editable Functionality
      • Config File
    • 🪣Envi-Dumpsters
      • Common Issues
      • Inventory Setup
      • Editable Functionality
      • Exports
      • Exclusive Zones
      • Survival Items
      • Shopping Carts
      • Hobo Bowling
      • Hobo Taxi
      • Rats and Racoons
      • Config File
      • V2 Config
    • 💺Envi-Ejector-Seats
      • Inventory Setup
      • How to Eject
      • Editable Functionality
      • Config File
    • 🔥Envi-Flamethrower (Standalone)
      • Common Issues
      • Inventory Setup
      • Refueling
      • Editable Functionality
      • Config File
    • 🪽Envi-Flight-Suits
      • Inventory Setup
      • Flight Suits
      • Config File
    • 🍜Envi-Food-Truck
      • ❗VooDoo Required
      • Common Issues
      • Inventory Setup
      • Adding Additional Grill Items
      • Unique Shops with Liveries
      • Spawning the Trucks
      • Using the Trucks
      • Exports
      • Config File
    • 💍Envi-Forever-Rings
      • Inventory Setup
      • Editable Functionality
      • Ring Shop MLO
      • Config File
    • 💻Envi-Hack-Minigames (Standalone)
      • The Worm
      • Password
      • Firewall
      • Node Runner
      • Config File
    • 🎞️Envi-HUD
      • ❗First Time Setup
      • Common Issues
      • Inventory Setup
      • Adding Custom Weapons
      • Change Logo
      • Custom Fonts
      • Converting Notifications
      • Converting Progress Bars
      • Editable Functionality
      • Settings Save Location
      • Exports and Events
      • Commands
      • Vehicle Control
      • Anti Muscle Spasm
      • Ragdoll
      • Config File
    • 🎇Envi-Items
      • Inventory Setup
      • Config File
    • 🚑Envi-Medic
      • Common Issues
      • Fully Disable Transport to Hospital
      • Failsafe
      • Ambulance Scripts
      • Vehicle Fuel
      • Vehicle Keys
      • Exports
      • Config File
    • ☄️Envi-MethVan
      • Common Issues
      • Inventory Setup
      • Cooking Process
      • Editable Functionality
      • Adding a Vehicle
      • Config File
    • 🍃Envi-Megablower9000 (Standalone)
      • Inventory Setup
      • Config File
    • 👯Envi-Population (Standalone)
      • ❗Initial Setup
      • Common Issues
      • Config File
    • 🗒️Envi-Prescriptions
      • Common Issues
      • Inventory Setup
      • Editable Functionality
      • Config File
    • 🔧Envi-Sabotage
      • ❗First Time Setup
      • Common Issues
      • Inventory Setup
      • Exports
    • 🛒Envi-Shops
      • Common Issues
      • Inventory Setup
      • Exports
      • Editable Functionality
      • Config File
    • 📱Envi-Trap-Phone
      • Common Issues
      • Inventory Setup
      • Commands
      • Exports
      • Adding Custom Drugs
      • Using the Phone
      • Disabling Extra Services
      • Config Files
        • config.lua
        • dialogueSettings.lua
        • extraServices.lua
        • gangZoneSettings.lua
        • personalitySettings.lua
        • specialContactSettings.lua
    • 👰Envi-Weddings
      • Inventory Setup
      • Starting Info
      • Manually Removing Data
      • Commands
      • Config File
    • 🎅Envi Xmas-Weapons (Standalone)
      • Inventory Setup
      • Config File
    • 🗡️Envi-Zombie-Weapons (Standalone)
      • Inventory Setup
    • 🧟‍♂️Envi-Zombies
Powered by GitBook
On this page
  • Prerequisites
  • Config Preview
  • NetGameEvent Crash
  • Zombie Horde Game Mode
  • Survivor Vs Zombies Game Mode
  • Config Options
  • 1. Hud
  • 2. Sounds
  • 3. Free Roam Settings
  • 4. Arcade Locations
  • 5. Weapon Settings
  • 6. Blank Map Config
  1. Premium Scripts

Envi-Zombies

Envi-Zombies Official Documentation

PreviousInventory Setup

Last updated 7 months ago

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


Prerequisites

  • 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

Config Preview

NetGameEvent Crash

add the below code to your server.cfg file

increase_pool_size "netGameEvent" 400

Zombie Horde Game Mode

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.

Survivor Vs Zombies Game Mode

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 Options

1. Hud

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)
        },
    },
}

2. Sounds

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
    },
}

3. Free Roam Settings

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,
}

4. Arcade Locations

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',
}

5. Weapon Settings

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'},
    },
}

6. Blank Map Config

['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,
                -- },
            },
        },
    },
📒
🧟‍♂️
Preview
56KB
config.lua
Page cover image