> For the complete documentation index, see [llms.txt](https://alpy-scripts-1.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alpy-scripts-1.gitbook.io/docs/resources/alpy-holdup-creator.md).

# Alpy HoldUP creator

Alpy HoldUP Creator is a production-ready robbery management resource for FiveM ESX servers. It provides a sleek in-game admin panel that allows server administrators to create and configure robbery locations in real time — no server restarts, no file editing required.All robbery data is saved automatically and synced instantly to every connected player.

***

### Requirements

* ESX Legacy
* ox\lib
* A supported inventory system (ESX default, qs-inventory or ox\inventory)

***

### Installation

1. Place the AlpyRobbery folder inside your resources directory
2. Add ensure AlpyRobbery to your server.cfg
3. Open config.lua and configure your admin identifiers and inventory system
4. Start your server — no database setup required

***

### Admin Commands

| Command                                      | Description                                 |
| -------------------------------------------- | ------------------------------------------- |
| /holdupmenu                                  | Opens the in-game admin UI                  |
| /holdupreload                                | Reloads all robberies from the save file    |
| /holduplist                                  | Lists all configured robberies in chat      |
| /holdupcooldown \[player\_id] \[robbery\_id] | Resets a specific player's cooldown         |
| /holdupmyid                                  | Displays your identifiers for use in config |

***

### Features

In-Game Admin PanelOpen /holdupmenu to access the full robbery management UI. Create new robberies, edit existing ones, or delete them — all without leaving the game. Changes are broadcast to all players instantly.Coordinate GrabbingWhile in the create/edit form, click Get from Player to automatically capture your current in-game position as the robbery coordinates. A red marker will appear at the location for visual confirmation.Per-Robbery ConfigurationEvery robbery is fully independent and supports the following settings:

* Display name and internal ID
* Zone detection radius
* Robbery duration (countdown timer)
* Cooldown period after completion
* Minimum online officers required to start
* Alert job (which job receives police notifications)
* Required item to initiate (with optional remove-on-use)
* Reward type (cash, bank transfer or black money)
* Minimum and maximum reward amount
* Custom map blip (sprite, color, scale, name)

Player ExperienceWhen a player enters a robbery zone, an interaction prompt appears via ox\lib. Pressing E sends a server-side validation request. If approved, a countdown timer is displayed. The robbery is cancelled automatically if the player moves too far from the zone or dies.Police AlertsUpon a successful robbery, all online players with the configured alert job receive a notification and a temporary map blip showing the robbery location.Live Deletion HandlingIf an admin deletes a robbery while a player is actively robbing it, the robbery is cancelled on the client immediately with no desync.Anti-Exploit

* Server-side completion time verification (minimum 90% of expected duration)
* Rate limiting on robbery start attempts
* Movement distance cancellation

***

### Supported Languages

English, German, French, Spanish, Italian, Dutch, Polish, Portuguese, Russian, Slovenian

***

### Admin Access

Admin permissions are configured in config.lua. You can grant access by:

* ESX group — e.g. "admin", "superadmin" (recommended)
* Identifier — Steam, license or Discord ID

Run /holdupmyid in-game to retrieve your identifiers.

### Server Events (Client → Server)

These are triggered from the client and handled server-side.

| Event                     | Payload                                     | Description                              |
| ------------------------- | ------------------------------------------- | ---------------------------------------- |
| alpy:robbery:requestStart | { robberyId }                               | Player requests to start a robbery       |
| alpy:robbery:complete     | { robberyId, elapsedTime, serverStartTime } | Player reports robbery completion        |
| alpy:robbery:cancel       | { robberyId }                               | Player cancels an active robbery         |
| alpy:admin:saveRobbery    | Full robbery object                         | Admin saves a new or edited robbery      |
| alpy:admin:deleteRobbery  | { robberyId }                               | Admin deletes a robbery                  |
| alpy:admin:requestCoords  | (none)                                      | Admin requests their current coordinates |

***

### Client Events (Server → Client)

These are triggered from the server and handled client-side.

| Event                      | Payload                                  | Description                                         |
| -------------------------- | ---------------------------------------- | --------------------------------------------------- |
| alpy:robbery:startApproved | { robberyId, startTime }                 | Server approves robbery start                       |
| alpy:robbery:startDenied   | { reason, extra }                        | Server denies robbery start                         |
| alpy:robbery:reload        | Full robberies table                     | Syncs all robbery data to the client                |
| alpy:police:alert          | { robberyId, label, coords, playerName } | Sends robbery alert to police job players           |
| alpy:police:alertBlip      | { coords, sprite, color }                | Creates alert blip on police map                    |
| alpy:admin:openUI          | { robberies, isAdmin }                   | Opens the admin NUI panel                           |
| alpy:admin:sendCoords      | (none)                                   | Triggers client to capture and return player coords |
| alpy:admin:refreshUI       | Full robberies table                     | Refreshes the open admin UI list                    |
