Billiards: 8-ball pool for ESX, QBCore and Qbox

Billiards: 8-ball pool for ESX, QBCore and Qbox

$22.00

Add to Basket

Two players, one table, real rules. The server calculates every shot, both players and all spectators watch the same result in a top-down table view, and the game remembers who is good at it. Play for fun or for a cash stake that both players confirm first.

Escrow edition. The game code is protected with Cfx.re Asset Escrow. The config, the language files, the framework bridge and the hooks stay readable, so you can change settings, texts and integrations. If you want to edit the game code itself, choose the Source Access edition.

The game

  • 8-ball for two players with simplified WPA-style rules: the table stays open after the break, the first ball pocketed afterwards decides solids or stripes.
  • Fouls give the opponent ball in hand: cue ball pocketed, no ball hit, wrong ball hit first. An optional rail rule can be switched on.
  • The 8 has to be called (click a pocket or press 1–6). Pocket it early, with a foul or in the wrong pocket and you lose.
  • Who breaks is drawn at random (or host/guest, set in the config).
  • 45-second shot clock. A timeout is a foul; three in a row count as a forfeit.
  • Forfeit by button, disconnect, character switch, going down or walking away from the table (with a warning first). A disconnect before the first shot aborts the game and both stakes go back.

Physics on the server

  • Calculated only on the server in fixed 1 ms steps: friction, ball-to-ball and ball-to-rail collisions, pocket jaws.
  • Simplified spin: follow, draw and side spin off the rail.
  • Same position plus same shot gives the same result. The server limits power, spin and angle and rejects invalid values, so a modified client cannot fake the result of a shot.
  • All tables share one physics budget of about 1 ms per server tick, so several tables can run at once without stalling the server.

Table view

  • Top-down view with cloth, wooden rails, diamonds, pockets and numbered balls.
  • Aim guide up to the first contact (can be switched off), power bar and spin picker on the ball graphic.
  • Scoreboard with names, whose turn it is, solids or stripes, pocketed balls, pot and time left. The shot clock shows the server's actual deadline.
  • The opponent and spectators see the cue move live.
  • Click sounds generated in the browser, no sound files. The view hides in the pause menu and can be toggled with a command or a key.
  • In the world, players hold a cue at the table and lean over it for their own shot.

Tables

  • Uses the pool tables of the base map when they are there and spawns its own table when they are not.
  • No preset tables: place yours in game in seconds with /billiardsadmin place. It snaps to the pool tables of the base map, no coordinates to copy.
  • One game per table. Anyone nearby can watch.

For fun or for money

  • "For fun" counts for the leaderboard only. "With stake" uses cash or bank money (config), $100–$25,000 by default.
  • Both players confirm the stake themselves. Nothing is taken until both have confirmed and both can pay.
  • The pot is held by the server and stored in the database. Optional house fee (0 % by default, at most 50 %): a hook puts it on your society account, otherwise it is removed from the economy.
  • Admin abort or server restart without a result: both get their stake back. Players who are offline are paid on their next login.
  • If the database does not confirm the booking, nothing is taken. A crash in the middle of a booking is never guessed: the case is listed for an admin (/billiardsadmin unclear) to decide.

Leaderboard

  • Per character: games, wins, losses, balls pocketed, run-outs, current and best streak, net winnings.
  • Only properly played games count, so opening a table and forfeiting at once does not farm wins.

For server owners

  • Admin commands: list running games, list tables, abort a game (stakes go back), place and manage tables, list and resolve unclear money cases.
  • Admin rights through ACE or your framework's groups.
  • Logs in the console and to Discord webhooks, with an optional separate channel for money.
  • Hooks for your own medical script, log system and notifications, an extra rule before a game starts, an event after every finished game and the house fee.
  • Target: ox_target, qb-target or a built-in help text with key E. Notifications through ox_lib, your framework or the GTA feed.
  • No items needed. Database tables are created automatically.

Frameworks and languages

  • ESX Legacy, QBCore and Qbox, detected automatically.
  • English and German included. Add your own language in the locales folder.
  • Documentation in English and German.

Requirements

  • ESX Legacy, QBCore or Qbox
  • oxmysql
  • ox_lib
  • OneSync
  • Optional: ox_target or qb-target
  • Escrow: the server's license key must belong to the Cfx.re account that bought the script.

Installation

  1. Download novus_billiards from your Cfx.re Keymaster (Granted Assets) and put the folder into your resources.
  2. Add ensure novus_billiards to your server.cfg after oxmysql, ox_lib and your framework.
  3. Start the server. The database tables are created on the first start. Set the language in config.lua and place your tables in game with /billiardsadmin place.

Support

Questions or a bug? Join the Novus Scripts Discord: https://discord.gg/xUbffz5b8J. Please have your Tebex transaction ID ready.