Lumo Cards
Callbreak, Teen Patti, Rummy and Blackjack at a real 3D table.
Version 1.1.0 · Frameworks QBCore · Qbox · ESX · standalone
Installation · Config files · Exports & events · Changelog
Four card games played at a real table in the GTA world: Callbreak, Teen Patti, Rummy and Blackjack. Players sit down together, the cards are real props on the table, and you play by clicking your cards and the buttons on the table mat with the mouse. There is no 2D card screen.
Each placed table is set to one game or to any game, where the host picks the game in the lobby.
QBCore · Qbox · ESX · Standalone (detected automatically) · by Lumo · https://lumo-server.tebex.io/
Features
- Four games, one table system:
- Callbreak (कलब्रेक): 4 players, call your tricks, spades are trump.
- Teen Patti (तीन पत्ती): 2–4 players, chip stacks, blind or seen bets, pack, show. The pot limit forces a showdown.
- Rummy (रमी): 13 cards, 2–4 players, two decks and a wild joker rank. The server finds your best melds, groups them in your hand and tells you when you can declare.
- Blackjack: 1–4 players against the house dealer. Hit, stand, double; blackjack pays 3:2.
- Per-table game setting in the admin panel: lock a table to one game, or let the host choose.
- Turn timer (
Config.TurnSeconds): an idle player's turn is played for them, so nobody can stall a table. - Real 3D cards: the hand fans out in front of you, other players' hands sit as face-down piles, and played cards slide into the middle. The trick sweeps to the winner.
- DUI table mat in the centre: names, chips/points, whose turn with a countdown, the game's buttons (call grid, Chaal / Pack, Draw / Declare, Hit / Stand ...), round reports and the final scoreboard, all drawn on the table itself.
- Two cameras: a close seated view to read your cards, and a wide view of the whole table. Switch with the mouse wheel or V.
- Play against AI (Callbreak, Teen Patti, Rummy): solo games fill the empty seats with bots, and an NPC sits in each bot's chair. The host can also fill the empty seats with bots from the table. Blackjack solo is just you against the dealer.
- Admin table placement (
/callbreaktables): fly camera and gizmo, a choice of table and chair models, auto-arranged chairs. Saved to the database and spawned for everyone. - Players sit down in their chair (scenario seating, with the seat height tuned per chair model).
- Server-authoritative: hands are private, and every call and card is checked on the server. Distance checks apply to hosting, joining and challenges.
- Optional real money: a stake per player for Callbreak and Rummy (the winner takes the pot), and a buy-in for Teen Patti and Blackjack that is paid back as chips at the end. Refunded on abandon. Tables with bots never use real money. There is also an optional item reward.
- Challenge a player from the target eye, plus spectators and a leaderboard.
- Themed lobby panel docked on the left, so the table stays visible.
- 0.00 ms idle: work only runs near a table or while you play.
Requirements
| Resource | Needed? |
|---|---|
| oxmysql | Required |
| qb-core / qbx_core / es_extended | Optional, detected automatically (standalone works too) |
| ox_target / qb-target | Optional. Without one, players walk up and press E |
| object_gizmo + ox_lib | Needed to move/rotate props in the admin placement tool |
| ox_lib / qb-menu | Optional: nicer leaderboard and prompts (falls back to chat / GTA help text) |
Installation
- Put the
lumo-cardsfolder in yourresourcesfolder. - In
server.cfg, ensure it after oxmysql, your framework and your target:ensure oxmysql ensure ox_lib ensure qb-core # or qbx_core / es_extended / nothing ensure ox_target # or qb-target / nothing ensure object_gizmo ensure lumo-cards - Start the server. The database tables are created automatically. (
lumo-cards.sqlis included if you prefer to import it by hand.) - In game, as an admin, run
/callbreaktables→ + New table here → place it → Save. Players can now walk up and play.
Full step-by-step guide: Installation.
Commands
| Command | Who | What |
|---|---|---|
/callbreaktables | Admin | Place, edit, move, delete tables |
/cards or /callbreak | Everyone | Open the lobby while standing at a table |
/callbreakboard [game] | Everyone | Top 10 players by wins (teenpatti, rummy, blackjack; default Callbreak) |
Admins are the groups in Config.Admin.permissions (QBCore/Qbox: admin, god; ESX: add superadmin) or anyone with the ACE in Config.Admin.ace.
Controls (at the table)
| Input | Action |
|---|---|
| Mouse | Click a card to play or discard it; click the buttons on the mat (call, bet, draw, hit ...) |
| Mouse wheel / V | Switch between the close and the whole-table camera |
| Backspace ×2 | Leave the table |
How to play
The host sits down and picks the game. Others join from the lobby. The host presses Start on the mat, or Fill with bots. A table starts by itself once every seat is taken.
Callbreak
- Spades (♠) are always trump. Everyone gets 13 cards.
- Call: each player says how many tricks (1–13) they will win.
- Play: follow the led suit. If you can't, you must play a spade (over-trumping if you can); otherwise discard.
- Score: make your call and you get
call + 0.1per extra trick. Miss it and you losecall. - Highest total after
Config.Roundsrounds wins.
Teen Patti
- Everyone pays the boot and gets 3 cards face down. You start blind; See cards whenever you like.
- On your turn: blind players pay the stake (Raise doubles it). Seen players pay twice the stake (Chaal) or four times (Raise). Pack folds.
- With two players left, either can ask for a Show. On a tie, the player who asked loses. When the pot reaches
potLimit, everyone still in shows. - Trail › pure sequence › sequence › colour › pair › high card. A-K-Q is the top sequence, then A-2-3. The biggest stack after
handshands wins.
Rummy
- 13 cards each. One card is cut face up, and every card of that rank is a joker.
- On your turn, Draw from deck or Take the open card, then click a card to discard it. A card taken from the open pile can't be thrown straight back.
- Declare appears once your 13 cards are all in melds, with at least two sequences and at least one pure (no joker standing in).
- Losers score their unmelded cards (J/Q/K/A = 10, jokers 0, capped at 80). With no pure sequence, every card counts. Drop before your first discard costs 20, later 40. Lowest total after
roundsdeals wins.
Blackjack
- Everyone bets, gets two cards, and the dealer shows one. Hit, Stand, or Double on your first two cards. The dealer draws to 17.
- A win pays 1:1, a blackjack 3:2, and a tie is a push. The biggest stack after
roundsrounds wins.
Configuration
Everything is in config.lua and commented. The options owners change most:
| Option | Default | What it does |
|---|---|---|
Config.Framework | 'auto' | Force 'qbx', 'qb', 'esx' or 'standalone' |
Config.Target | 'auto' | Force 'ox', 'qb' or 'none' (built-in E prompt) |
Config.AllowSolo | true | Games against AI |
Config.Rounds | 5 | Callbreak deals per game |
Config.TurnSeconds | 30 | Time to act before the table plays for you (0 = off) |
Config.Games | all on | Turn games on or off, buy-ins, boot, pot limit, deals, bet sizes, decks |
Config.Challenge.game | 'callbreak' | What a challenge plays at an "any game" table |
Config.Bet | off | Real money: stake (Callbreak/Rummy) or buy-in (Teen Patti/Blackjack) |
Config.WinReward | off | Chance of an item for the winner |
Config.Admin.tableModels / chairModels | 6 / 5 models | Props offered in the admin panel |
Config.BotPeds | 10 peds | NPC models for AI players |
Config.Table3D | tuned | Camera, card size, felt colour, animation speed |
Seat height: if players sit too high or low on a chair model, change that model's sitZ in Config.Admin.chairModels (metres). For NPCs only, use Config.BotSitZ.
Framework notes
| QBCore | Qbox | ESX | Standalone | |
|---|---|---|---|---|
| Player name | charinfo | charinfo | getName() | FiveM name |
| Stats id | citizenid | citizenid | identifier | license |
| Stakes | ✔ | ✔ | ✔ (cash → money) | disabled |
| Item reward | ✔ (ox_inventory if running) | ✔ | ✔ | — |
| Admin | QBCore permission | group.<name> ACE | player group | ACE |
Troubleshooting
- "Admins only" — add your group to
Config.Admin.permissions, or give yourself the ACE:add_ace group.admin command allow. - "object_gizmo is not running" — install object_gizmo + ox_lib (admins only need it).
- No "Play cards" option — make sure the target resource starts before lumo-cards, or set
Config.Target = 'none'to use the E prompt. - Players sink into or float above a chair — tune
sitZfor that chair model. - Cards show their backs / read upside down —
faceUpRoll/handYawOffset=180.0.
Support
Store, updates and other releases: https://lumo-server.tebex.io/