Cuxial Tablet has six pages, chosen from the bar at the top. This page explains what each one does for the player and how the staff edits all of it from the admin panel.
Opening the tablet
F1 opens and closes it. The character takes a tablet prop in the left hand and plays an animation while it is open. By default it does not open while the player is dead, swimming, driving or cuffed; as a passenger it does. With tablet.rememberPage the tablet reopens on the last page visited; otherwise it opens on tablet.startPage.
Pages can be turned off one by one in tablet.pages. A page that is off disappears from the bar and cannot be opened with the exports.
Profile
The player's ID card, their accounts, their current job and grade, the hours worked and the minutes of the current session. Below it, two lists:
- Vehicles: name, plate and whether each one is in the garage, out, destroyed or impounded.
- Properties: name, address and type (house, apartment, garage or business).
Both lists come from adapters that read your own resources. Out of the box, vehicles come from qbx_vehicles and properties from nolag_properties; without them the lists are empty. See Hooks.
News
A front page with featured and trending entries, a category filter and a feed. Five kinds of entry:
| Type | What it holds |
|---|---|
| Article | Title, excerpt, thumbnail and body |
| Gallery | A set of images |
| Video | A video link |
| Event | A date and place |
| Poll | Options the readers vote on, one vote per character |
Readers open an entry, like it and vote in polls. An entry becomes trending when it reaches news.autoTrendingLikeThreshold likes, and the news.trendingCount most liked entries are shown at the top.
Players whose job is in news.publisherJobs, and the staff, see a Write button. They pick the type, the category, the title and the content, and the entry is published at once for everyone. Authors can delete their own entries; the staff can delete any.
Live streams
Players whose job is in live.broadcasterJobs, and the staff, can go live from the news page. The broadcaster gives the stream a title, takes a camera prop on the shoulder and the gameplay camera becomes the stream: what they look at is what viewers see. The mouse wheel zooms, Backspace stops the stream, and the microphone can be turned on and off from the tablet.
When a stream starts, everyone on the server gets an on-screen alert. Viewers open it from the list of active streams and watch inside the tablet, with a chat limited to live.chat.maxLen characters and live.chat.perMinute messages per minute, and quick reactions. A stream ends when the broadcaster stops it, disconnects, reaches live.maxDurationSec or the staff cuts it from the admin panel. A stream accepts up to live.maxViewers viewers.
The video travels through the media module of Cuxial Bridge. With the relay configured, broadcasters publish at the quality set in live.enc; without it, the video goes through the game server at reduced quality. See Installation.
Jobs online
Each service in data/jobs_online.lua is a card with its name, image, colour and how many players are on duty right now. Counts are refreshed every jobs.onlineRefreshSec seconds. Cards are ordered by priority and grouped by category.
City jobs
A catalogue of jobs the player can start on their own, from data/jobs_city.lua: image, name and description. The Start button closes the tablet and, depending on jobs.city.startMode:
waypoint: marks the job's coordinates on the map.event: fires a client event with the job id, so your own job resource takes over.
Crosshair
A studio to build a custom crosshair that replaces the game's one.
- Library: 146 presets in ten categories (minimal, classic, brackets, rings, tactical, geometric, cyber, directional, composite and avant-garde). Pick one as a starting point.
- Layers: up to
crosshair.maxLayerslayers of six kinds (dot, cross, circle, chevron, bracket and T-bar), each with its own size, thickness, gap, length, opacity, colour, outline and rotation. The global colour applies to layers without a colour of their own. - Dynamic spread: the gap grows while moving, sprinting or driving and shrinks while aiming, with a smoothing factor.
- Per weapon: one profile for each weapon group (melee, pistol, SMG, rifle, shotgun, sniper, heavy and throwable). The tablet switches as the player changes weapon.
- Always show: draw the crosshair even when not aiming.
- Codes: every crosshair can be copied as a text code and pasted by another player.
- Gallery: players publish up to
crosshair.gallery.maxPerPlayercrosshairs with a name. Others browse them by most liked, best of the week or newest, like them and use them with one click. The staff deletes entries from the admin panel. - Hitmarker: a marker on hit (cross, X, ring or dot) with a sound, a duration and a damage number floating over the target. Each player adjusts it, within what
crosshair.allowHitmarkerandcrosshair.allowDamageNumbersallow.
The crosshair is saved on the server per character and applied again on every connection. The staff can read and overwrite any player's crosshair from the admin panel.
VIP
The VIP page holds the coin economy. Coins live in a money account of your framework (vip.account), so any resource that gives money to that account gives coins. The page has seven tabs.
Shop
A catalogue of items paid with coins, filtered by category and sorted by featured, newest or price. Each card shows the price, the stock left when vip.stockMode = 'perItem', the new label during vip.newDays days and the top sellers label on the vip.topSellersCount most sold items of the last 30 days.
| Feature | How it works |
|---|---|
| Flash offers | A discount with an end date. The price shows crossed out and a countdown runs on the card. |
| Limited items | An end date after which the item leaves the shop. |
| Packs | One main item plus extra items delivered together. |
| Loyalty requirement | An item can require a loyalty tier. |
| Themed category | Items with a theme get a special card style. |
| 3D view | Items marked preview3d show a View in 3D button: the weapon floats in front of the camera, can be rotated and bought from there. |
| Cart | Up to vip.cart.maxItems lines, paid in one go. |
| Wishlist | Items saved on the player's own PC. |
| Gifts | Buy an item for an online player with a message. The gift waits in the recipient's inbox and is delivered when they claim it. A fee of vip.gift.feePct percent can be added. |
Prices include the loyalty discount of the buyer. If the inventory cannot carry the item, the purchase is refunded.
Wallet
The balance, the movement history and two actions:
- Transfer coins to an online player, with
vip.wallet.transfer.feePctpercent lost as a fee, a minimum per transfer and a daily cap per player. - Redeem a code of the form
VIP-XXXX-XXXXcreated by the staff. Each code gives coins or an item, has a number of uses and an optional expiry, and can be redeemed once per character.
Daily
A cycle of daily.cycleDays rewards, one per day, defined in data/daily.lua. The rules:
- A reward can be claimed once every
daily.claimWindowHourshours. - Each claim adds one day to the streak.
- Coin rewards get a bonus of
daily.streakBonusPctpercent per streak day, capped atdaily.streakBonusMaxPctpercent. Item rewards are not multiplied. - If more than
daily.graceHourshours pass without claiming, the streak is at risk: the next claim restarts it at 1. Withdaily.breakStreakOnMiss = falsethe streak never breaks. - While the streak is at risk, the player can rescue it by paying
daily.rescue.pricecoins, up todaily.rescue.maxPerCycletimes per cycle. - When the cycle is complete it starts again from day 1. The last day can be marked as a milestone.
- Players in a loyalty tier with
extraDailyDayget one extra day at the end of each cycle, repeating the last reward.
Pass
A season pass with pass.totalTiers levels and pass.xpPerLevel XP per level. Each level has a free reward and a premium reward, defined in data/pass.lua. Premium is activated for the season by paying pass.premiumPrice coins.
XP comes from:
| Source | XP |
|---|---|
| Claiming the daily reward | pass.xpSources.daily |
| Spending coins in the shop or on cases | pass.xpSources.shopPerCoin per coin |
| Completing a job | pass.xpSources.jobComplete, through cuxial_jobs or the EmitJobCompleted export |
| Playing | pass.xpSources.playtimePerMin per minute online |
| Weekly missions | The XP of each mission |
Rewards are claimed level by level or all at once. Every week, pass.missions.weeklyCount missions are picked from data/missions.lua; the week resets on pass.missions.resetDay. Missions count completed jobs, minutes played, daily claims, coins spent, metres travelled or cases opened.
Changing the season name or number from the admin panel starts a new season: every player begins again at level 1 and the previous progress is kept in the database.
Cases
Cases are tiers defined in data/cases.lua, each with a price and a probability for every rarity. The pool of possible drops is shared and each drop has a rarity. Opening a case:
- The player picks a tier and how many to open at once, among
cases.multiOpen. - The server decides the result and charges the coins.
- The tablet plays a roulette strip that stops on the winning card.
With cases.showOdds the odds per rarity are shown on each tier. With cases.pity.enabled, a player who opens cases.pity.legendaryAfter cases without a legendary gets one guaranteed on the next opening. Drops that do not fit in the inventory go to the gifts inbox to be claimed later.
History
Every VIP movement of the character: purchases, cases, daily rewards, pass rewards, transfers, codes, gifts, loyalty and staff adjustments, with a filter by source.
Loyalty
Tiers reached by the total of coins spent in the shop, on cases and on premium, defined in vip.loyalty.tiers. Each tier has a discount on the shop and may add an extra daily reward day. The total never decreases, so a tier is never lost.
Admin panel
/tabletadmin opens the panel for staff with the admin permission. Everything saved from it goes to the database and applies at once to every player, without restarting. Six tabs:
| Tab | What it edits |
|---|---|
| Settings | Every section of shared/config.lua that is editable live: tablet, VIP, daily, pass, cases, news, live, crosshair and jobs, plus the online and city job catalogues. Coordinates of a city job can be picked in the world with the placement tool. |
| Shop | The catalogue: create, edit, disable and reorder items, with an item picker that searches your inventory. |
| Pass & daily | The rewards of each pass level, the daily cycle and the weekly missions. |
| Cases | Tiers, probabilities and the drop pool, with a simulator that opens a tier many times and shows the resulting distribution. |
| Operations | Find a player by name, server id or citizenid and see their VIP state; give or take coins; give pass XP; reset the daily reward; read or overwrite their crosshair; cut a live stream; delete a gallery entry; create and disable codes and see who redeemed them. |
| Statistics | Coins spent per day, number of buyers, best-selling items and cases opened by tier, over 7 or 30 days. |
Each section shows whether it is at factory values or modified. A section can be reset to factory values, and the whole configuration can be exported as JSON and imported again on another server. When another staff member saves, the panel reloads and keeps your unsaved edits.
Two settings need the players to reconnect: the tablet key and the key that stops a live stream. The panel marks them.
