Skip to content

prp-horde

prp-horde is a wave-based survival script where groups of players fight through successive enemy NPC waves inside a dedicated interior. Between waves players vote on perks, spend earned currency in an in-game shop, loot crates and bodies, and manage environmental hazards - all until the final wave is cleared.

Features

Wave Survival

  • Multi-wave gameplay - Players fight through configurable waves of hostile NPCs inside the horde interior
  • Database-driven spawn points - Enemy spawn positions are stored in MySQL and editable in-game by admins; the included SQL seeds the Syndicate interior with 60+ spawn points
  • Headshot detection - Client-side hit registration for headshots; visual marker and custom sound play on confirmation; server notifies the game instance for headshot-specific logic

Perk Voting

  • Between-wave perk screen - After each wave, a NUI panel opens showing three perk cards for all players to vote on; votes are tallied in real time and the winning perk is applied
  • Buff perks - player-favouring effects applied at wave start:
    • Damage modifier (weapon damage multiplier)
    • Defense modifier (incoming damage reduction)
    • Max health increase
    • Movement speed boost
    • Unlimited sprint
  • Debuff perks - challenge modifiers that make the next wave harder:
    • One health (max health capped to 1 HP above death)
    • No sprint / no jump
    • Damage reflect (attacker takes portion of damage dealt)
    • Shooting self damage (player takes damage when firing)
    • Ped damage modifier (enemy weapon damage multiplier)

In-Game Currency Shop

  • Currency system - Players earn currency during waves (e.g. from kills); balance is displayed in the HUD
  • Weapon & item shop - Accessible at the shop prop inside the interior; split into weapons and items sections; each section can be rerolled for a cost
  • Perk shop - Separate perk section within the shop for spending currency on additional perks
  • Final Supplies shop - Opens automatically after the last wave; a curated supply list before exiting; rerollable; closing the UI ends the game session

Loot & Looting

  • Crates - Prop crates scattered throughout the interior:
    • Locked - guarded by a flare particle effect; requires a horde_crate_key item to open
    • Unlocked - plays an open-lid animation; interact to receive loot
  • Body looting - Killed NPC bodies persist as searchable peds; players can interact to loot them
  • Chest - A chest object placed inside the interior where players can store items mid-run; visible on the map blip

Environmental Hazards

  • Fire zones - Prop-based hazard objects (w_ex_arena_landmine_01b) placed in the interior; deal proximity damage to nearby players
  • Poison zones - Prop-based gas cylinders (prop_gascyl_01a) with particle FX; deal scaling proximity damage up to 15 HP/s at close range (within 4 m)
  • Hazards can be toggled enabled/disabled per wave by the server

Revive System

  • Players downed during a wave can be revived by teammates
  • Reviving requires the horde_revive (Horde Health Token) item
  • Revive interact appears on the target when a nearby player is dead

External Storage Locations

  • Stash objects - Configurable persistent prop objects placed outside the interior where players can deposit items between runs

Admin Editor

  • /hordeadmin - Opens a menu to select an interior to edit; teleports the admin inside and enables edit mode
  • Edit modes (cycle with E):
    • DROP - Place loot drop stash positions (left-click to place, delete via target)
    • NPC - Place enemy spawn positions with heading preview; rotate with arrow keys
    • CRATE - Place loot crate objects (hard mode interiors only)
    • FIRE - Place fire hazard zones (hard mode interiors only)
    • POISON - Place poison hazard zones (hard mode interiors only)
  • All placements are saved to MySQL instantly and reflected live for all editing admins
  • Individual stashes, spawn points, and objects can be deleted via target interaction

Developer Integration

  • waveCompleted(identifier, wave) hook in open/server/server.lua - called by the server at the end of each wave; use it for custom reward logic, reputation, or analytics

Requirements

  • oxmysql
  • ox_lib
  • prp-bridge