Skip to content

Configuration

Client (config/general.lua)

adminCommand

  • Type: string | nil
  • Default: "hordeadmin"
  • Description: Chat command that opens the admin location editor. Set to nil to disable the command entirely.

testingCommand

  • Type: string | nil
  • Default: "hordetest"
  • Description: Chat command used for development testing. Set to nil to disable.

bypassQueueCommand

  • Type: string | nil
  • Default: "hordobypass"
  • Description: Chat command that allows admins to bypass a disabled horde queue and enter directly. Set to nil to disable.

debug

  • Type: boolean
  • Default: false
  • Description: Enables verbose debug prints to the server and client console. Set to false before going live.

Server (config/sv_config.lua)

The server config controls interiors, waves, perks, rewards, the shop, and all gameplay parameters. Key sections are described below.

interiors

  • Type: table
  • Description: Array of interior definitions. Each interior is an independently running horde game instance. Fields per interior:
    • key (string) - unique identifier used in database queries (e.g. "syndicate")
    • name (string) - display name shown in the admin editor menu
    • insideCoords (vector4) - teleport destination when entering the interior
    • hardMode (boolean) - enables extra admin edit modes (crates, fire zones, poison zones) and additional gameplay modifiers for this interior

waves

  • Type: table
  • Description: Ordered list of wave definitions. Each wave controls how many enemies spawn, their ped models, health, armour, weapons, and any special properties (e.g. explosive on death). The server cycles through waves sequentially.

perks

  • Type: table
  • Description: Pool of perk cards presented to players between waves. Each perk has:
    • id (string) - unique identifier
    • name (string) - display name
    • description (string) - shown on the perk card
    • icon (string) - icon name rendered in the NUI
    • isBuff (boolean) - true for player-favouring buffs, false for challenge debuffs
    • Effect fields (damageModifier, defenseModifier, maxHealth, movementSpeed, unlimitedSprint, noSprintJump, damageReflect, shootingSelfDamage, oneHealth, pedDamageModifier) - applied to all players when the perk wins the vote

shop

  • Type: table
  • Description: Configuration for the in-wave currency shop. Contains:
    • weapons - pool of purchasable weapon items with prices; rerollCost to re-randomise the section
    • items - pool of purchasable consumable/utility items with prices; rerollCost to re-randomise
    • perks - pool of purchasable perks available mid-wave; rerollCost to re-randomise

finalShop

  • Type: table
  • Description: Supply items offered in the final shop that opens after the last wave. Each entry has a name, price, and count. Players can reroll the selection before ending the session.

crates

  • Type: table
  • Description: Loot tables for the interactable crates placed in the interior. Defines which items (and their quantities) are given when a crate is opened. Separate pools can be defined for locked vs unlocked crates.

bodies

  • Type: table
  • Description: Loot tables for searchable NPC bodies. Defines item pools, counts, and rarity weights for body-search rewards.

reviveItem

  • Type: string
  • Default: "horde_revive"
  • Description: Item name consumed when a player revives a downed teammate inside the horde.

currency

  • Type: table
  • Description: Rules for awarding in-game horde currency to players. Typically configured per kill, headshot, or wave completion.

storageLocations

  • Type: table
  • Description: Array of external stash objects placed outside the interior. Each entry defines:
    • coords (vector3) - world position
    • rotation (vector3) - object rotation
    • model (hash) - prop model to spawn

Admin Commands

CommandConfig keyDescription
/hordeadminconfig.adminCommandOpens the interior selector and activates the in-game placement editor
/hordetestconfig.testingCommandTesting shortcut; behaviour defined in sv_config.lua
/hordobypassconfig.bypassQueueCommandBypasses queue restrictions to enter the horde immediately

Admin Editor Controls

When edit mode is active (entered via /hordeadmin → select interior):

KeyAction
Left ClickPlace item at cursor position
ECycle to next edit mode (DROP → NPC → CRATE → FIRE → POISON)
Left ArrowRotate preview left (NPC / CRATE / FIRE / POISON modes)
Right ArrowRotate preview right (NPC / CRATE / FIRE / POISON modes)
Target interactDelete an existing stash, spawn, or object

INFO

CRATE, FIRE, and POISON edit modes are only available for interiors with hardMode = true.


Developer Integration

waveCompleted(identifier, wave)

Open hook in open/server/server.lua. Called by the server at the end of every wave.

ParameterTypeDescription
identifierstringThe interior key of the running game instance
wavenumberThe wave number that just completed

Use this to award reputation, trigger external events, log stats, or anything else your server requires:

lua
function waveCompleted(identifier, wave)
    -- Example: give reputation for completing a wave
    print(('Wave %d completed in interior: %s'):format(wave, identifier))
end