Customization
Everything you are meant to change is in four open folders: config/, locales/, bridge/ and items/. The rest of the Lua is escrowed.
Which file decides what
Section titled “Which file decides what”| File | What it decides | Open? |
|---|---|---|
config/config.lua | Language, interaction system, notifications, deliveries, offline mining, the dealer NPC and its blip | Yes |
config/warehouses.lua | The three warehouses: price, rig spots, image, where you arrive, where boxes land; the exit and owned-blip settings | Yes |
config/shop.lua | Every part in the laptop shop: price, watts, hashrate, category | Yes |
config/cryptos.lua | The coins: name, base price, volatility, difficulty, colour, icon | Yes |
config/webhook.lua | The two Discord webhooks. Loaded on the server only | Yes |
locales/*.lua | Every string, in game and on the laptop | Yes |
bridge/bridge_client.lua | Notifications, help text, callbacks, and the ox_target / qb-target / drawtext wrapper | Yes |
bridge/bridge_server.lua | Players, money, names, and items through fmLib | Yes |
items/ | Item definitions for ox, qb and ESX, and the item icons | Yes |
html/ | The dealer shop and the laptop screen, plus the warehouse pictures in html/img/ | Yes, not escrowed |
mic_crypto_props/ | The streamed models and the 3D previews the laptop shows | Assets only |
General — config/config.lua
Section titled “General — config/config.lua”| Option | What it does | Default |
|---|---|---|
Config.Locale | Which file in locales/ is used | 'en' |
Config.Interaction | ox_target, qb-target or drawtext (a Press E prompt) | 'ox_target' |
Config.CustomLaptopNotificacions | true: shop and trade messages appear as toasts on the laptop screen. false: your framework’s normal notifications | true |
Config.ReceiveProductsDirectlyToInventory | true: parts bought on the laptop go straight to the inventory. false: a box is dropped in the warehouse to pick up | false |
Config.OfflineMining | Whether rigs mine while the owner is disconnected | true |
Config.OfflineRate | How fast offline mining runs. 1.0 is full speed, 0.5 half | 1.0 |
The option name CustomLaptopNotificacions is spelled that way in the file — keep the spelling.
The dealer — Config.NPC and Config.Blip
Section titled “The dealer — Config.NPC and Config.Blip”| Option | What it does | Default |
|---|---|---|
Config.NPC.model | Ped model of the dealer | s_m_y_ammucity_01 |
Config.NPC.coords | Where the dealer stands, with heading | By the port |
Config.NPC.scenario | What the dealer is doing | WORLD_HUMAN_CLIPBOARD |
Config.NPC.interactDistance | How close you have to be | 2.5 |
Config.Blip.enable | Show the dealer on the map | true |
Config.Blip.sprite / color / scale | Blip look | 478 / 5 / 0.8 |
Config.Blip.name | Blip label | Crypto Warehouse Shop |
Warehouses — config/warehouses.lua
Section titled “Warehouses — config/warehouses.lua”| Warehouse | id | Price | Rig spots (rigSlots) |
|---|---|---|---|
| Small | warehouse_small | 50,000 | 8 |
| Medium | warehouse_medium | 150,000 | 21 |
| Large | warehouse_large | 350,000 | 37 |
Each warehouse has these fields:
| Field | What it does |
|---|---|
id | Internal name. Keep the three ids as they are |
name, description | Shop text, from the locale file |
price | Cost, paid in cash or bank — the buyer picks |
rigSlots | The number shown in the shop |
image | Picture in the shop, from html/img/ |
security, power | Labels shown in the shop |
viewCoords | Where View sends a buyer to look around before paying |
insideCoords | Where you arrive when you enter; the exit is here too |
packageCoords | Where the delivery box lands |
Above the list:
| Option | What it does | Default |
|---|---|---|
Config.ExitCoords | Where everybody comes out, whichever warehouse they were in | Next to the dealer |
Config.WarehouseBlips | Sprite, colour and scale of the blip for warehouses you own | 478, green, 0.7 |
The shop — config/shop.lua
Section titled “The shop — config/shop.lua”Config.Shop.Categories sets the four tabs of the laptop shop (GPUs, PSUs, fans, racks). Config.Shop.Items is the parts list. Laptop purchases are always paid from the bank.
| Field | What it does |
|---|---|
id | The item name. Must match an item in your inventory and a model in mic_crypto_props |
category | gpus, psus, fans or racks |
label, description | Shop text, from the locale file |
price | Cost |
image | Icon file name |
watts | For GPUs and fans: what it draws. For PSUs: what it provides |
hashrate | GPUs only: GH/s per card |
temperature, cooling | Heat per GPU and cooling per fan, used by the balance sheet at the top of the file. This version does not act on them in game — power is what is enforced |
Default prices:
| Part | Price | Part | Price |
|---|---|---|---|
| Badger Comm-100 | 450 | PostOP 500W | 150 |
| Wiwang PC-G | 900 | Whiz Wireless 850W | 350 |
| eCola OC Edition | 1,600 | Merryweather 1600W | 800 |
| iFruit Pro Max | 2,800 | Darrell Brother Fan | 45 |
| Sprunk Xtreme | 4,500 | FlyUS Aero Fan | 120 |
| Standard 5-Slot Rig | 1,200 | Atomic Vortex 120mm | 250 |
The comment block at the top of config/shop.lua works through which PSUs and fans each GPU tier needs for a full rig. Read it before you change watts — it is the quickest way to keep every tier buildable.
How power is checked. When a GPU or fan is installed, the rig’s total draw (every GPU and fan) plus the new part must fit inside the total of its PSUs. If it does not, the part is refused with a not enough power message.
The coins — config/cryptos.lua
Section titled “The coins — config/cryptos.lua”Four coins ship. Add or remove entries freely; a new coin is added to the market table on the next start.
| Coin | Name | Base price | range | difficulty |
|---|---|---|---|---|
MWX | Merryweather Crypto | 850.50 | 10 | 1.0 |
FLK | Fleeca Token | 45.20 | 5 | 0.5 |
PEG | Pegassi Coin | 12,500.00 | 25 | 5.0 |
LIFE | LifeInvader Chain | 120.75 | 15 | 0.8 |
| Field | What it does |
|---|---|
label | Name shown on the laptop, from the locale file |
short | Ticker |
basePrice | The price the coin swings around |
range | How far it can swing, in percent either way |
difficulty | Higher is slower to mine |
color, icon | Colour and Font Awesome icon on the laptop |
How the market moves. Every 15 minutes each coin gets a new price: its basePrice moved up or down by a random amount within range percent. The price is saved, so it survives a restart.
How mining pays. Owners split their warehouse’s hashrate between coins with the laptop sliders. Every minute, each coin earns allocated GH/s × 0.01 ÷ difficulty. One Badger card (0.10 GH/s) on MWX makes 0.001 MWX a minute. Hashrate that is not allocated to a coin mines nothing.
Trading. Buying a coin takes the money from the bank of the player at the laptop; selling pays into the bank of the player at the laptop. Balances belong to the warehouse, so anyone you share it with can trade them.
Webhooks — config/webhook.lua
Section titled “Webhooks — config/webhook.lua”| Option | What is logged |
|---|---|
Config.WebhookBuy | Every crypto purchase on the exchange |
Config.WebhookSell | Every crypto sale on the exchange |
Each message has the character name, their license, steam and discord identifiers (the Discord one as a mention), the coin, the amount and the total. Leave a URL empty to switch that log off. The message text is in the locale file (webhook_buy, webhook_sell).
This file is loaded on the server only, so the URLs are never sent to players.
Languages
Section titled “Languages”Eleven ship in locales/: en, es, fr, de, it, pt, nl, ar, ja, ko, ru. Set Config.Locale to the code.
To add one, copy locales/en.lua to a new file named after your code, change the Locales['en'] line to your code, translate the right-hand side of every line, and set Config.Locale to it. The laptop and the dealer shop read the same file.
A key missing from your file shows as Translation [xx][key] does not exist — there is no fallback to English, so keep every key from en.lua.
A few prompts are written in English in the escrowed code (the Press E to place Rig / install GPU help text and the Collect Package label) and do not come from the locale file.
The bridge
Section titled “The bridge”bridge/ is open so you can point the script at whatever your server runs.
| File | What it covers |
|---|---|
bridge/bridge_client.lua | Framework detection, Bridge.Notify, Bridge.ShowHelpNotification, callbacks, and every interaction: entity, zone and model targets for ox_target, qb-target, or the built-in drawtext loop |
bridge/bridge_server.lua | Framework detection, players, cash and bank, character names, and AddItem / HasItem / RemoveItem / RegisterUsableItem through fmLib |
A different notification resource: change Bridge.Notify in both files.
A different target resource: the three Add…Interaction functions and their Remove… partners in bridge_client.lua are the only places targets are touched.
A different framework: the detection block at the top of each file and the money, player and name functions are all there is. Items do not depend on the framework — they go through fmLib.
Money accounts. Warehouses are paid from cash or bank (the buyer chooses); laptop purchases and trades use bank. On ESX, cash is the player’s money and bank the bank account.