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_keyitem to open - Unlocked - plays an open-lid animation; interact to receive loot
- Locked - guarded by a flare particle effect; requires a
- 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 inopen/server/server.lua- called by the server at the end of each wave; use it for custom reward logic, reputation, or analytics
Requirements
oxmysqlox_libprp-bridge