Configurations
All configuration is done in public/shared/config.lua (CityTourConfig). Restart the resource after changing values.
General
Debug
boolean
false
Enable extra logs in F8 / server console. Set false on production.
Locale
string
"en"
Language code. Options: "en", "pt". Must match a file in public/shared/locales/.
Theme
string
"default"
NUI theme key from public/shared/themes.json (default | custom).
Bridge
Bridge.Framework
string
"auto" | "qb-core" | "qbx_core" | "es_extended"
Framework to use. "auto" detects automatically.
Bridge.Inventory
string
"auto" | "ox_inventory" | "qb-inventory" | "qs-inventory"
Inventory system.
Bridge.Interaction
string
"drawtext" | "target"
How players interact with placed boards. Default is "target".
Bridge.Target
string
"auto" | "ox_target" | "qb-target"
Target system when Interaction = "target".
Bridge.Notify
string
"auto" | "ox_lib" | "qbcore" | "esx" | "native"
Notification system.
Notify Options (ox_lib)
NotifyOptions.position
string
"top-right"
ox_lib toast position (top-right, top-left, top, bottom-right, …).
NotifyOptions.duration
number
4500
Toast duration (ms).
Interaction Options
DrawText (when Bridge.Interaction = "drawtext")
World text floats above the nearest board. Two actions:
[E] Play City Tour
E
Interact (create / join lobby / open / spectate)
[G] Pick up board
G
Pick up idle board (owner or admin) — item returned
keyDisplay
string
"E"
Letter shown for play (must match the bound control).
pickupKeyDisplay
string
"G"
Letter shown for pickup.
pickupControlId
number
47
FiveM control ID for pickup. 47 = G.
You may add optional label / pickupLabel strings. If omitted, locales citytour.interact_board and citytour.pickup_board are used.
If you change controlId / pickupControlId, also update keyDisplay / pickupKeyDisplay so the on-screen letter matches the real key.
Target (when Bridge.Interaction = "target")
label
string
"City Tour Table"
Text shown on target option.
icon
string
"fas fa-building"
Icon (Font Awesome for ox_target).
distance
number
3.5
Aim distance to show the option.
ACE & Commands
ACE.Admin
string
"cdev_citytour.admin"
ACE permission for admin features.
Commands.Admin
string
"citytouradmin"
Admin panel command.
Commands.Place
string
"citytourplace"
Admin place command.
Commands.Delete
string
"citytourdelete"
Admin delete nearest board.
Commands.Gaming
string
"citytourgaming"
Gaming hub (profile / rank / history).
Commands.Balance
string
"citytourbalance"
Layout calibrator.
Item
Item.enabled
boolean
true
Enable item placement.
Item.name
string
"citytour_board"
Item name in inventory (must match).
The display name in the inventory UI comes from your items.lua, not from this config.
Props
Board, dice, pawns, buildings, and cash stacks. Must match stream files unless you replace models.
Props.board
"cdev_citygame_board"
Board model.
Props.die
"cdev_citygame_player_dice_small"
Fallback dice model.
Props.dieSmall
"cdev_citygame_player_dice_small"
In-match dice model.
Props.DieAnim.spinMs
950
Spin duration (ms).
Props.DieAnim.bounceHeight
0.11
Bounce height (m).
Props.DieAnim.pairSpread
0.028
Pair spacing.
Props.DieAnim.faces[1..6]
See config
Face-up attach rotations.
Props.pawns.*
cdev_citygame_player_red/blue/green/yellow
Pawn models per color.
Props.Buildings.city[1..4]
houses 1–3 + hotel
City upgrade models.
Props.Buildings.paradise[1]
"cdev_citygame_beach_house"
Beach house (level 1 only).
Props.Buildings.hotel
"cdev_citygame_hotel"
Used if city[4] is missing.
Props.Buildings.height
0.0
Extra Z on buildings.
Props.Buildings.maxLevel
4
City max (hotel).
Props.Buildings.scale
w/h per type
Visual scale.
Props.CashStacks.enabled
true
Spawn cash piles at seats.
Props.CashStacks.seatFactor
0.55
Distance toward seat (0–1).
Props.CashStacks.height
-0.008
Local Z (calibrate with /citytourbalance).
Props.CashStacks.spread
0.035
Lateral spacing.
Props.CashStacks.model
"prop_cash_pile_02"
Cash pile model.
Props.CashStacks.tiers
in-match cash → count
Visual tier by capital.
Furniture (kit mode)
Furniture.tableModel
string
"prop_table_02"
Table under the board.
Furniture.chairModel
string
"prop_chair_02"
Chair per seat.
Furniture.spawnTable
boolean
true
Spawn table + chairs with the board.
Furniture.boardLift
number
-0.048
Extra Z after the board bottom is aligned to the tabletop.
Furniture.boardGroundZ
number
-0.035
Extra Z when the board sits on world ground (no kit).
Furniture.boardOffset
table
{x=0,y=0}
Fine XY if board pivot is off-center.
Furniture.chairFaceOffset
number
180.0
Extra yaw so chairs face the table.
Furniture.chairs
table
4 cardinal seats
Kit chair ring offsets.
Furniture.colorSeats
table
per color
Seat side mapping for sit / cash.
Placement Mode
Placement.raycastDistance
number
20.0
Raycast distance (m).
Placement.maxDistanceFromPlayer
number
6.0
Max place distance (m).
Placement.minDistanceFromPlayer
number
1.4
Min place distance (m).
Placement.ghostAlpha
number
180
Ghost prop alpha (0–255).
Placement.smooth
number
0.35
Ghost smoothing (0–1).
Placement.heightStep
number
0.03
Height nudge per PageUp / PageDown.
Placement.Keybinds.place
number
38
Confirm place (E).
Placement.Keybinds.cancel
number
73
Cancel (X). ESC still cancels too.
Placement.Keybinds.scrollUp/Down
number
15/14
Rotate board.
Placement.Keybinds.fineRotate
number
21
Shift for fine rotation.
Placement.Keybinds.rotateLeft/Right
number
174/175
Arrow rotate.
Placement.Keybinds.toggleKit
number
47
Toggle furniture kit (G).
Placement.Keybinds.ground
number
22
Snap to ground (SPACE).
Placement.Keybinds.heightUp/Down
number
10/11
PageUp / PageDown.
Sit Animation
Sit.Enable
boolean
true
Sit ped when joining lobby / match.
Sit.Chair.*
table
See config
Kit mode: chair anim + ped offset.
Sit.Floor.seatDistance
number
1.15
Board-only seat distance from board center (m).
Sit.Floor.Anims
table
jetski owner idle
Board-only floor sit anim.
Cinema Camera
Camera.defaultDistance
number
1.75
Default orbit distance.
Camera.minDistance
number
0.42
Min zoom.
Camera.maxDistance
number
4.5
Max zoom.
Camera.minHeight
number
0.12
Min height above board.
Camera.maxHeight
number
2.8
Max height above board.
Camera.defaultHeight
number
1.05
Default height.
Camera.lookAtZ
number
0.08
Look-at height on board.
Camera.rotateSpeed
number
90.0
A/D orbit speed (deg/sec).
Camera.elevateSpeed
number
1.6
W/S elevate speed (m/sec).
Camera.zoomStep
number
0.12
Zoom step per scroll.
Camera.fov
number
42.0
Cinema FOV.
Camera.Controls
table
W/S/A/D
Elevate / rotate control IDs.
Sync (spectators)
Sync.interestRadius
number
6.0
Players inside receive table FX / spectator sync.
Sync.leaveHysteresis
number
1.0
Extra meters before leave (anti-flicker).
Sync.idleWaitMs
number
750
Loop sleep when far from tables.
Sync.nearWaitMs
number
100
Loop sleep when near a table.
Sync.debugDraw
boolean
false
Draw sync radius rings when Debug is on.
Distances
Distances.InteractionDistance
number
3.5
DrawText / interact prompt distance (m).
Distances.ActionMaxDistance
number
6.0
Server distance check for table actions.
Match
Match.MinPlayers
number
2
Minimum seats when creating a lobby (clamped 2–4).
Match.MaxPlayers
number
4
Maximum seats when creating a lobby (clamped 2–4).
Match.TurnTimeoutSec
number
60
Default turn timer when host enables it.
Match.TimerPresets
table
{30,45,60,90,120}
Lobby timer preset buttons (seconds).
Match.DisconnectPauseSec
number
90
Pause after disconnect before forfeit.
Match.Colors
table
red/blue/green/yellow
Playable colors.
Match.InitRollGapMs
number
1200
Delay between initiative dice reveals.
Match.InitRollLeadMs
number
500
Delay before first initiative roll.
Match.InitRollEndMs
number
900
Delay after last initiative roll.
Match.Controls.roll
number
38
Roll dice while cinema cam (E).
NPC / AI
Npc.enabled
boolean
true
Allow AI opponents. Required for Singleplayer.
Npc.DisplayNames
table
Tour Bot / City Dealer / Rival AI
Bot names.
Npc.PedModels
table
business peds
World ped models at seats.
Npc.ThinkDelayMs
table
{min=900, max=2400}
Think delay before an AI action.
Npc.BuyAggression
number
0.72
Chance the AI buys empty land (0–1).
Npc.UpgradeAggression
number
0.55
Chance the AI upgrades when it can.
In-match economy
These values are fictitious match capital, not GTA cash (except Real-mode entry / pot).
Economy.StartingCash
number
2000000
Cash each player starts with.
Economy.PassStartBonus
number
300000
Paid when passing Start.
Economy.IslandBail
number
200000
Cost to leave Lost Island by paying.
Economy.IslandTurns
number
3
Turns stuck on Lost Island.
Economy.BailRollSameTurn
boolean
true
Default for the host toggle. If the host turns it off, paying bail ends the turn. Freed from Lost Island still lets you roll this turn.
Economy.TaxPercent
number
10
% of cash + owned property value, paid to the bank on the Tax space (after São Paulo). Rounded down.
Economy.MaxPropertyLevel
number
4
City: land=0, houses 1–3, hotel=4. Paradise max is 1.
Economy.MaxRentMultiplier
number
10
Cap for fallback rent math.
Economy.HotelRequiresFullSet
boolean
false
If true, hotel needs a complete color group. Default Business Tour: houses and hotel without a full set. Full set still doubles rent.
Economy.HotelSameTurnBlocked
boolean
true
Cannot buy a hotel on the same turn you completed that country's set (including a doubles extra turn).
Economy.ThreeDoublesToIsland
boolean
true
Three doubles in a row send you to Lost Island (no walk), unless Freed from Lost Island was already played.
Economy.AutoRollOnTimeout
boolean
true
AFK timeout: roll + buy empty land only.
Property buy / rent / repurchase numbers live in public/shared/property_economy.lua. Change numbers only.
Property prices (public/shared/property_economy.lua)
Global table: CityTourPropertyPrices. Keys must match city / beach ids in public/shared/board.lua (madrid, bali, rome, …).
buy
land, house1, house2, house3, hotel
land, house1 only
rent
same keys
land, house1
repurchase
2× invested buy total per level
Present in the file; beaches cannot be repurchased in play
Example (Spain city):
Change numbers only. Do not add functions, extra keys, or rename ids unless you also change board.lua. Restart the resource after edits.
Groups in board.lua: Spain (Granada / Sevilla / Madrid) · Paradise (Bali, Cyprus, Dubai, Nice) · China · Italy · Germany · UK (London / Sydney) · USA · France · Brazil.
Modes (Fun / Real / Singleplayer)
Modes.Fun.enabled
boolean
true
In-game capital only. Changes ranking.
Modes.Real.enabled
boolean
true
Entry fee → pot. Changes ranking.
Modes.Real.MinEntry
number
100
Minimum Real entry.
Modes.Real.MaxEntry
number
100000
Maximum Real entry.
Modes.Real.EntryPresets
table
{100,500,1000,5000}
Quick-select entry buttons.
Modes.Real.Accounts
table
cash / bank / vip
Allowed entry accounts. vip uses the VIP bridge.
Modes.Real.DefaultAccount
string
"cash"
Default selected account.
Modes.Real.DefaultSplit
table
70 / 20 / 10
1st / 2nd / 3rd % of the pot.
Modes.Real.OptionalRakePercent
number
0
% taken from the pot before split. 0 = off.
Modes.Singleplayer.enabled
boolean
true
1 human vs AI. No rank, no Real money.
Modes.Singleplayer.playerCount
number
4
Seats (1 human + 3 AI at default).
Lobby leave / cancel refunds a paid Real entry. Pot payout uses Api.AddMoney on the account the player used (cash, bank, or vip).
Luck cards
Luck.enabled
boolean
true
Enable Chance spaces.
Luck.MaxHeldCards
number
3
Max holdable cards in hand.
Luck.FineAmount
number
150000
Fine card amount.
Luck.BirthdayGift
number
80000
Birthday gift per other player.
Luck.BlackoutTurns
number
2
Electricity Outage duration (turn endings).
Luck.ScarTurns
number
1
Visual scar after sabotage / destroy.
Luck.RouletteMs
number
1800
Chance roulette spin (ms).
The host can switch Default (all cards) or Custom (pick cards) when creating the lobby. Enabled cards have equal chance. If every card is off, Chance skips the turn.
Deck ids live in public/shared/board.lua → CityTourBoard.LuckCards. Card titles / bodies are locales (citytour.card_*).
rent_x2
Holdable
Next rent you collect is doubled. Not used if that landing collects $0 (blackout).
rent_half
Holdable
Next rent you pay is halved.
free_island
Holdable
Play it. On the island: free now and roll this turn (bail-roll toggle does not apply). Off island: next island / three doubles does not trap you. Holding it unused does nothing.
protection
Holdable
Blocks the next sabotage / destroy / blackout / earthquake on your properties.
earthquake
Instant
Out of the draw until any house exists. Every building loses one level. Protection blocks the first hit.
go_to
Instant
Click a highlighted city and land there (buy / rent / upgrade).
sabotage
Instant
Out of the draw until an opponent city has a house. Click one city to drop one building level. Beaches cannot be chosen.
cut_power
Instant
Click a city: no rent for BlackoutTurns turn endings.
royal_gift
Instant
Click one of your cities; it goes to a random opponent (buildings stay).
world_championship
Instant
Teleport to World Championships. Each other player pays 50,000 if they can.
invitation
Instant
Teleport to World Tour, then pick any other space to travel to. No extra Start bonus for the teleport to World Tour.
fine
Instant
Pay Luck.FineAmount (default 150,000) to the bank.
happy_birthday
Instant
Each other player pays Luck.BirthdayGift (default 80,000) if they can.
start_over
Instant
Return to Start and collect Economy.PassStartBonus.
destroy_build
Instant
Out of the draw until an opponent city has a house. Flatten that city to empty land. Owner keeps the tile. Beaches cannot be chosen.
World Championships (50,000) and World Tour (100,000) amounts are engine values (also used when you land on those spaces). Fine / birthday / Start bonus are config.
Win conditions
WinConditions.OwnFullSide
boolean
true
Win by owning every purchasable tile on one board side. Always on.
WinConditions.OwnAllParadise
boolean
true
Default on; host can turn this off in the lobby. Four beaches (land is enough).
WinConditions.OwnCompleteGroup
boolean
true
Default on; host can turn this off. One full color group (e.g. Spain's three cities).
WinConditions.HighestValueFallback
boolean
true
Richest player wins once every city and paradise is owned. Always on.
Last standing (everyone else bankrupt / left) also ends the match.
Rating & Badges
Rating.DefaultPoints
number
1000
Starting points for new players.
Rating.MinPoints
number
1000
Floor points.
Rating.MaxPoints
number
6000
Ceiling points.
Rating.WinDelta
number
50
Points gained on win.
Rating.LossDelta
number
30
Points lost on loss.
Rating.ForfeitDelta
number
40
Points lost on forfeit.
Rating.PageSize
number
10
Ranking rows per page in hub.
Rating.Badges
table
See below
Rank badges by minimum points.
Default Badges
5500
GM
Grandmaster
4800
M
Master
4000
D
Diamond
3200
P
Platinum
2400
G
Gold
1800
S
Silver
1400
B
Bronze
1000
R
Rookie
Match History
MatchHistory.MaxEntriesPerPlayer
number
20
Max matches kept per player (FIFO trim).
MatchHistory.PageSize
number
10
History rows per page in hub.
Board layout (visual)
BoardLayout.spaceCount
number
32
Ring size.
BoardLayout.pawnHeight
number
0.0
Global pawn Z.
BoardLayout.stackFormation
number
2
0 line X · 1 line Y · 2 2×2 only when 4 pawns share a space. 2 and 3 pawns always sit in a line. Tune in /citytourbalance → Peões · pilha.
BoardLayout.stackSpacing
number
0.016
Pawn stack spacing.
BoardLayout.stackYaw
number
0.0
Extra rotation (degrees) of the stack around the sit point. /citytourbalance 8/2, R = 180°.
BoardLayout.stackScale
number
0.85
Stack scale.
BoardLayout.dieZ
number
0.0
Dice height.
BoardLayout.cashHeight
number
-0.022
Cash pile height.
BoardLayout.pawnScale
number
1.0
Base pawn scale.
BoardLayout.MoveAnimation
table
280ms / lift 0.035
Pawn hop timing / height.
BoardLayout.Outline
table
See config
Legal / blocked / hover outline.
Balance calibrator
Balance.step
number
0.005
Default nudge step (m).
Balance.stepFine
number
0.001
Fine nudge step (m).
Balance.autoMeshTrack
boolean
true
Seed track size from the board mesh on first run.
Balance.showOnlyActiveLayer
boolean
true
Draw only the active calibration layer.
Balance.groupMinGap
number
0.0015
Minimum gap between grouped cells.
Balance.guideArrowYawOffset
number
0.0
Extra yaw on guide arrows.
Balance.Keybinds
table
Numpad
Up/down/cycle/fine/save/cancel/propagate keys.
Game rules (what players actually do)
32-space ring, counter-clockwise from Start. One pawn per player. Two dice. Doubles grant an extra turn after decisions. Three doubles send you to Lost Island (you do not walk those spaces) unless Freed from Lost Island was already played.
Buy. Land on empty city or paradise → optional buy.
Rent. Land on a rival city or beach → pay rent. Full color group doubles rent. Rome (festival) can charge one house level higher if the owner has all of Italy and Rome is not a hotel.
Upgrade. Land on your city to buy the next building (no full-set required by default). Paradise: land, then house 1 only (the beach prop appears at house 1). You cannot buy a hotel on the same turn you completed that country.
Repurchase. After paying rent on a rival city, you may buy it for the repurchase total (2× invested). Buildings stay. Beaches cannot be repurchased. A city with a hotel cannot be repurchased.
Tax. One Tax space (after São Paulo). Pay TaxPercent (default 10%) of cash + current property value to the bank. Rounded down. If cash is short, sell to the bank at half value or go bankrupt.
Lost Island. Landing on the island space or three doubles. Stay IslandTurns turns. Leave with doubles, bail, or playing Freed from Lost Island. Host toggle “roll after bail” only affects paying bail. The card still lets you roll this turn.
World Championships. Collect 50,000 from each other player who can pay.
World Tour. Pick any other space on the board and go there now. Resolve that space as if you had landed on it (buy, rent, Chance, Tax, Lost Island, and so on). No bank payout.
Bankruptcy. Sell properties to the bank at half repurchase (invested buy total) until the debt is paid, or you are out.
Custom Themes
Cdev City Tour ships one official look and a documented custom template for buyers. Every UI color (backgrounds, text, borders, fills, accents, shadows, seats, board groups) is a token in public/shared/themes.json.
Themes Config (public/shared/config.lua)
Themes File (public/shared/themes.json)
Structure:
default— full color map applied whenTheme = "default"custom— pairs of_comment+ empty value for each token
Example from custom:
✏️ How to create a custom theme
Set
Theme = "custom"inpublic/shared/config.lua.Open
public/shared/themes.json.In the
customobject, fill the color keys you want (leave others as"").Keys starting with
_are documentation only — never put a color there.Save and restart
cdev_citytour.
Gold accent example (change only these; the rest stays default):
If you change text to a dark color (light theme), also set textOnAccent to a light color (#ffffff) so buttons on accent stay readable.
📋 Theme keys
Default values below are the official look. Leave a custom key as "" to keep that default.
Surfaces
bg
#161619
Main / page background
bgPanel
#161619
Panel background (lobby, hub, match sidebar)
bgPanelSolid
#161619
Solid panel background (no transparency)
bgInput
#1f1f22
Input fields, chips, header-like surfaces
headerBg
#1f1f22
Panel header background
bgHover
#29292c
Hover fill (rows, icon buttons)
bgActive
rgba(114, 137, 218, 0.18)
Active / selected fill (tabs, toggles)
bgElevated
#1c1c20
Raised cards / floating match windows
bgInset
#111114
Inset wells / inner frames
bgDeep
#121214
Deep recessed surface
bgAlt
#1a1a1d
Alternate dark surface
bgRow
#252528
List / row surface
bgCard
#1f1f23
Secondary card surface
Borders and fills
border
rgba(255, 255, 255, 0.07)
Default panel / card border
borderActive
rgba(114, 137, 218, 0.45)
Active / focused border
borderInput
#55595f
Input field border
borderSubtle
rgba(255, 255, 255, 0.08)
Subtle card border
borderFaint
rgba(255, 255, 255, 0.06)
Faint divider / header line
borderStrong
rgba(255, 255, 255, 0.12)
Stronger border
borderMuted
rgba(255, 255, 255, 0.1)
Muted border
borderHover
rgba(255, 255, 255, 0.22)
Hover border
fillSubtle
rgba(255, 255, 255, 0.03)
Very faint fill
fillMuted
rgba(255, 255, 255, 0.04)
Soft fill
fillSoft
rgba(255, 255, 255, 0.05)
Soft highlight fill
Accent (blue) and gold
accent
#7289da
Primary accent (buttons, links, highlights)
accentHover
#6579c5
Primary accent hover
accentMuted
rgba(114, 137, 218, 0.28)
Soft accent fill
accentSoft
rgba(114, 137, 218, 0.16)
Accent selected fill
accentFill
rgba(114, 137, 218, 0.14)
Accent chip fill
accentGlow
rgba(114, 137, 218, 0.4)
Accent glow / hover wash
gold
#e8a038
Secondary gold (lobby toggles)
goldMuted
rgba(232, 160, 56, 0.28)
Gold muted fill
goldSoft
rgba(232, 160, 56, 0.18)
Gold selected fill
goldBorder
rgba(232, 160, 56, 0.45)
Gold selected border
goldFill
rgba(232, 160, 56, 0.08)
Gold faint fill
Text
text
#ffffff
Primary text / headings
textSecondary
#c8c8d0
Secondary text
textMuted
#5f6369
Muted labels / hints
textDim
#5f6369
Dimmed / placeholder text
textOnAccent
#ffffff
Text on accent / colored buttons
textSoft
#e8e8ee
Softer body text
textBright
#eeeef2
Bright body text
textOnBadge
#1a1208
Ink on colored rank badges
Status, buttons, overlay, shadows
success
#22c55e
Success / win / ready
successMuted
rgba(34, 197, 94, 0.16)
Success background wash
successBorder
rgba(34, 197, 94, 0.45)
Success border
successLight
#86efac
Light success text
error
#ef4444
Error / loss / danger
errorMuted
rgba(239, 68, 68, 0.12)
Error background wash
errorBorder
rgba(239, 68, 68, 0.3)
Error border
errorLight
#f87171
Light error text
errorSoft
#fca5a5
Softer error text
warning
#f59e0b
Warning / timer / pending
warningMuted
rgba(245, 158, 11, 0.16)
Warning background wash
warningBorder
rgba(245, 158, 11, 0.4)
Warning border
warningLight
#fde68a
Light warning text
scrollbarThumb
rgba(255, 255, 255, 0.28)
Scrollbar thumb
scrollbarThumbHover
rgba(114, 137, 218, 0.4)
Scrollbar thumb hover
btnSecondary
#29292c
Secondary button background
btnSecondaryHover
#353539
Secondary button hover
overlay
transparent
Overlay / backdrop
shadow
rgba(0, 0, 0, 0.45)
Default drop-shadow
shadowMid
rgba(0, 0, 0, 0.5)
Medium drop-shadow
shadowStrong
rgba(0, 0, 0, 0.55)
Strong drop-shadow
shadowSoft
rgba(0, 0, 0, 0.35)
Soft drop-shadow
Seats and board groups
red
#e5484d
Red seat / pawn
blue
#3b82f6
Blue seat / pawn
green
#22c55e
Green seat / pawn
yellow
#eab308
Yellow seat / pawn
groupSpain
#fb7185
Board group Spain
groupChina
#f87171
Board group China
groupItaly
#4ade80
Board group Italy
groupGermany
#94a3b8
Board group Germany
groupUk
#60a5fa
Board group UK
groupUsa
#818cf8
Board group USA
groupFrance
#93c5fd
Board group France
groupBrazil
#34d399
Board group Brazil
groupParadise
#2dd4bf
Board group Paradise / beaches
⚠️ Important
Only colors can be changed; icons and layout are fixed.
Theme is server config only — players cannot switch themes in-game.
Use hex (
#7289da) or CSS (rgba(114, 137, 218, 0.18)).Empty
customvalues always fall back to default.Do not delete the
defaulttheme block.Do not put a color on keys that start with
_— those are comments only.
Custom Framework, Inventory, Notify, Target & VIP
Cdev City Tour uses a bridge system for framework, inventory, notifications, target, and VIP. By default it auto-detects supported systems. If you use a custom or unsupported system, edit the bridge files under public/bridge/.
Bridge config (public/shared/config.lua)
Custom Framework
Edit public/bridge/framework/server.lua and public/bridge/framework/client.lua.
Add a new entry to FrameworkSystems with: getFrameworkName, notify, getPlayer, getCitizenId, money helpers (getCashOnHand, getBankBalance, addMoney, removeMoney), and init.
Set Bridge.Framework = "your_framework" in config.
Custom Inventory
Edit public/bridge/inventory/server.lua.
Implement addItem, removeItem, getItemCount, hasItem for your system, then set Bridge.Inventory = "your_inventory".
Custom Notify
Edit public/bridge/notify/client.lua.
Add a branch in send() for your notify system, then set Bridge.Notify = "your_notify" (or use "native").
Custom Target
Edit public/bridge/target/client.lua.
Add your target attach/detach logic for board (and kit furniture) entities.
Alternatively, set Bridge.Interaction = "drawtext" to avoid target entirely.
Custom VIP
Edit public/bridge/vip/server.lua. Implement Vip.GetBalance, Vip.Remove, Vip.Add.
Buyer-editable folders
public/shared/config.lua
All tunables
public/shared/property_economy.lua
Buy / rent / repurchase numbers
public/shared/board.lua
Spaces, groups, luck deck ids
public/shared/layout.lua + layout_override.json
Visual layout
public/shared/locales/*.json
Strings
public/shared/themes.json
UI themes
public/bridge/**
Framework / inventory / target / notify / VIP
public/server/api.lua
Admin / money / notify hooks
public/client/api.lua
Client helpers for other resources
sql/citytour.sql
Optional manual MySQL install
Last updated