Skip to content

Customization

Everything you are meant to change is in four open folders: config/, locales/, bridge/ and items/. The rest of the Lua is escrowed.


FileWhat it decidesOpen?
config/config.luaLanguage, interaction system, notifications, deliveries, offline mining, the dealer NPC and its blipYes
config/warehouses.luaThe three warehouses: price, rig spots, image, where you arrive, where boxes land; the exit and owned-blip settingsYes
config/shop.luaEvery part in the laptop shop: price, watts, hashrate, categoryYes
config/cryptos.luaThe coins: name, base price, volatility, difficulty, colour, iconYes
config/webhook.luaThe two Discord webhooks. Loaded on the server onlyYes
locales/*.luaEvery string, in game and on the laptopYes
bridge/bridge_client.luaNotifications, help text, callbacks, and the ox_target / qb-target / drawtext wrapperYes
bridge/bridge_server.luaPlayers, money, names, and items through fmLibYes
items/Item definitions for ox, qb and ESX, and the item iconsYes
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 showsAssets only

OptionWhat it doesDefault
Config.LocaleWhich file in locales/ is used'en'
Config.Interactionox_target, qb-target or drawtext (a Press E prompt)'ox_target'
Config.CustomLaptopNotificacionstrue: shop and trade messages appear as toasts on the laptop screen. false: your framework’s normal notificationstrue
Config.ReceiveProductsDirectlyToInventorytrue: parts bought on the laptop go straight to the inventory. false: a box is dropped in the warehouse to pick upfalse
Config.OfflineMiningWhether rigs mine while the owner is disconnectedtrue
Config.OfflineRateHow fast offline mining runs. 1.0 is full speed, 0.5 half1.0

The option name CustomLaptopNotificacions is spelled that way in the file — keep the spelling.

OptionWhat it doesDefault
Config.NPC.modelPed model of the dealers_m_y_ammucity_01
Config.NPC.coordsWhere the dealer stands, with headingBy the port
Config.NPC.scenarioWhat the dealer is doingWORLD_HUMAN_CLIPBOARD
Config.NPC.interactDistanceHow close you have to be2.5
Config.Blip.enableShow the dealer on the maptrue
Config.Blip.sprite / color / scaleBlip look478 / 5 / 0.8
Config.Blip.nameBlip labelCrypto Warehouse Shop

WarehouseidPriceRig spots (rigSlots)
Smallwarehouse_small50,0008
Mediumwarehouse_medium150,00021
Largewarehouse_large350,00037

Each warehouse has these fields:

FieldWhat it does
idInternal name. Keep the three ids as they are
name, descriptionShop text, from the locale file
priceCost, paid in cash or bank — the buyer picks
rigSlotsThe number shown in the shop
imagePicture in the shop, from html/img/
security, powerLabels shown in the shop
viewCoordsWhere View sends a buyer to look around before paying
insideCoordsWhere you arrive when you enter; the exit is here too
packageCoordsWhere the delivery box lands

Above the list:

OptionWhat it doesDefault
Config.ExitCoordsWhere everybody comes out, whichever warehouse they were inNext to the dealer
Config.WarehouseBlipsSprite, colour and scale of the blip for warehouses you own478, green, 0.7

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.

FieldWhat it does
idThe item name. Must match an item in your inventory and a model in mic_crypto_props
categorygpus, psus, fans or racks
label, descriptionShop text, from the locale file
priceCost
imageIcon file name
wattsFor GPUs and fans: what it draws. For PSUs: what it provides
hashrateGPUs only: GH/s per card
temperature, coolingHeat 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:

PartPricePartPrice
Badger Comm-100450PostOP 500W150
Wiwang PC-G900Whiz Wireless 850W350
eCola OC Edition1,600Merryweather 1600W800
iFruit Pro Max2,800Darrell Brother Fan45
Sprunk Xtreme4,500FlyUS Aero Fan120
Standard 5-Slot Rig1,200Atomic Vortex 120mm250

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.


Four coins ship. Add or remove entries freely; a new coin is added to the market table on the next start.

CoinNameBase pricerangedifficulty
MWXMerryweather Crypto850.50101.0
FLKFleeca Token45.2050.5
PEGPegassi Coin12,500.00255.0
LIFELifeInvader Chain120.75150.8
FieldWhat it does
labelName shown on the laptop, from the locale file
shortTicker
basePriceThe price the coin swings around
rangeHow far it can swing, in percent either way
difficultyHigher is slower to mine
color, iconColour 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.


OptionWhat is logged
Config.WebhookBuyEvery crypto purchase on the exchange
Config.WebhookSellEvery 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.


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.


bridge/ is open so you can point the script at whatever your server runs.

FileWhat it covers
bridge/bridge_client.luaFramework 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.luaFramework 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.