Usage
How to Play
Starting a match
- Approach a dartboard - using a target system interaction prompt will appear.
- Choose Create Lobby and optionally set a cash wager.
- A nearby player approaches the same board and requests to join your lobby.
- As the lobby owner, accept or decline the join request.
- Once the opponent is in the lobby, the owner starts the game.
Taking a turn
- Aim at the dartboard and press LMB to throw.
- Each turn consists of 3 darts.
- After all 3 darts are thrown the turn passes to the opponent automatically.
Winning
The first player to bring their score to exactly 0 wins - but the final dart must land on a double segment. Failing to hit a double on the finishing throw busts the turn.
Bust rules
A turn is busted (no score change, turn passes) if:
- The thrown score would bring the total below 0
- The thrown score would bring the total to exactly 1
- The total reaches 0 but the finishing dart was not a double
Spectating
Other players standing near the board can select Spectate to watch an active match. Scores and each thrown dart are synced in real time.
Wagers
- Both players must have enough cash to cover the wager before the game starts.
- The full wager is collected at game start and paid out to the winner.
- If a player forfeits mid-match, the opponent receives the full wager.
- If a player disconnects, the opponent also receives the full wager.
- If both players cancel the game before completion (no forfeit), the wager is refunded.
Boards
Dartboards are managed entirely in-game by admins. All boards are stored in the database and loaded automatically on startup - no config edits or restarts are needed.
Placing a dartboard
| Command | Permission | Description |
|---|---|---|
/placedartboard | group.admin | Enter placement mode to position a dartboard in the world |
- Run
/placedartboard. - A preview prop appears and follows your cursor. Move it to the desired surface.
- Press LMB to confirm placement, or ESC to cancel.
- The board is saved to the database and spawned for all online players immediately.
The command name and required permission can be changed in editable/sv_config.lua.
Removing a dartboard
Admins see an additional Remove Dartboard (Admin) option in the target menu when looking at any placed dartboard. Selecting it removes the board from the database and despawns it for all online players immediately.
Configuration
editable/cl_config.lua
| Option | Default | Description |
|---|---|---|
Config.DartboardModel | prop_dart_bd_cab_01 | Prop model used for the dartboard |
Config.DartboardModelName | "prop_dart_bd_cab_01" | String name of the prop model (must match above) |
Config.DartboardsRenderDistance | 50.0 | Distance at which dartboard props are streamed in |
Config.Keybinds.ThrowDarts | 142 (LMB) | Control ID for throwing a dart |
Config.Keybinds.ConfirmPlaceDartboard | 24 (LMB) | Control ID for confirming placement |
Config.Keybinds.CancelPlaceDartboard | 200 (ESC) | Control ID for cancelling placement |
editable/sv_config.lua
| Option | Default | Description |
|---|---|---|
Config.LogWebhookURL | "" | Discord webhook URL for logging wager events and dartboard placement/removal (leave empty to disable) |
Config.PlaceDartboardCommandName | "placedartboard" | Name of the admin placement command |
Config.PlaceDartboardCommandRestriction | "group.admin" | Ace permission required to use the command |