Personalizzazione
Tutto ciò che è pensato per essere modificato si trova in quattro cartelle aperte: config/, locales/, bridge/ e items/. Il resto del codice Lua è protetto da escrow.
Quale file decide cosa
Sezione intitolata “Quale file decide cosa”| File | Cosa decide | Aperto? |
|---|---|---|
config/config.lua | Lingua, sistema di interazione, notifiche, consegne, mining offline, l’NPC venditore e il suo blip | Sì |
config/warehouses.lua | I tre magazzini: prezzo, postazioni rig, immagine, punto di arrivo, punto di consegna pacchi; impostazioni di uscita e blip posseduti | Sì |
config/shop.lua | Ogni componente nel negozio del laptop: prezzo, watt, hashrate, categoria | Sì |
config/cryptos.lua | Le monete: nome, prezzo base, volatilità, difficoltà, colore, icona | Sì |
config/webhook.lua | I due webhook Discord. Caricato solo lato server | Sì |
locales/*.lua | Ogni stringa di testo, in gioco e sul laptop | Sì |
bridge/bridge_client.lua | Notifiche, testo di aiuto, callback e il wrapper per ox_target / qb-target / drawtext | Sì |
bridge/bridge_server.lua | Giocatori, denaro, nomi e oggetti tramite fmLib | Sì |
items/ | Definizioni degli oggetti per ox, qb ed ESX, e le icone degli oggetti | Sì |
html/ | Il negozio del venditore e lo schermo del laptop, più le immagini dei magazzini in html/img/ | Sì, non escrowed |
mic_crypto_props/ | I modelli in streaming e le anteprime 3D mostrate dal laptop | Solo asset |
Generale — config/config.lua
Sezione intitolata “Generale — config/config.lua”| Opzione | Cosa fa | Predefinito |
|---|---|---|
Config.Locale | Quale file in locales/ viene utilizzato | 'en' |
Config.Interaction | ox_target, qb-target o drawtext (un avviso Premi E) | 'ox_target' |
Config.CustomLaptopNotificacions | true: i messaggi del negozio e degli scambi appaiono come toast sullo schermo del laptop. false: notifiche normali del tuo framework | true |
Config.ReceiveProductsDirectlyToInventory | true: i pezzi acquistati sul laptop vanno dritti nell’inventario. false: viene lasciata una scatola nel magazzino da raccogliere | false |
Config.OfflineMining | Se i rig continuano a minare mentre il proprietario è disconnesso | true |
Config.OfflineRate | Velocità del mining offline. 1.0 è velocità piena, 0.5 metà | 1.0 |
Il nome dell’opzione CustomLaptopNotificacions è scritto esattamente così nel file — mantieni questa ortografia.
Il venditore — Config.NPC e Config.Blip
Sezione intitolata “Il venditore — Config.NPC e Config.Blip”| Opzione | Cosa fa | Predefinito |
|---|---|---|
Config.NPC.model | Modello ped del venditore | s_m_y_ammucity_01 |
Config.NPC.coords | Dove si trova il venditore, con rotazione | Vicino al porto |
Config.NPC.scenario | Cosa sta facendo il venditore | WORLD_HUMAN_CLIPBOARD |
Config.NPC.interactDistance | Quanto devi essere vicino | 2.5 |
Config.Blip.enable | Mostra il venditore sulla mappa | true |
Config.Blip.sprite / color / scale | Aspetto del blip | 478 / 5 / 0.8 |
Config.Blip.name | Nome del blip | Crypto Warehouse Shop |
Magazzini — config/warehouses.lua
Sezione intitolata “Magazzini — config/warehouses.lua”| Magazzino | id | Prezzo | Postazioni rig (rigSlots) |
|---|---|---|---|
| Piccolo | warehouse_small | 50,000 | 8 |
| Medio | warehouse_medium | 150,000 | 21 |
| Grande | warehouse_large | 350,000 | 37 |
Ogni magazzino ha questi campi:
| Campo | Cosa fa |
|---|---|
id | Nome interno. Mantieni i tre id così come sono |
name, description | Testo del negozio, preso dal file della lingua |
price | Costo, pagato in contanti o banca — sceglie l’acquirente |
rigSlots | Il numero mostrato nel negozio |
image | Immagine nel negozio, presa da html/img/ |
security, power | Etichette mostrate nel negozio |
viewCoords | Dove il pulsante Visualizza manda l’acquirente per dare un’occhiata |
insideCoords | Dove arrivi quando entri; anche l’uscita si trova qui |
packageCoords | Dove atterra la scatola delle consegne |
Sopra l’elenco:
| Opzione | Cosa fa | Predefinito |
|---|---|---|
Config.ExitCoords | Dove escono tutti, indipendentemente dal magazzino in cui si trovavano | Accanto al venditore |
Config.WarehouseBlips | Sprite, colore e scala del blip per i magazzini che possiedi | 478, verde, 0.7 |
Il negozio — config/shop.lua
Sezione intitolata “Il negozio — config/shop.lua”Config.Shop.Categories imposta le quattro schede del negozio sul laptop (GPU, PSU, ventole, rack). Config.Shop.Items è l’elenco dei componenti. Gli acquisti dal laptop vengono sempre pagati tramite banca.
| Campo | Cosa fa |
|---|---|
id | Il nome dell’oggetto. Deve corrispondere a un oggetto nel tuo inventario e a un modello in mic_crypto_props |
category | gpus, psus, fans o racks |
label, description | Testo del negozio, preso dal file della lingua |
price | Costo |
image | Nome del file dell’icona |
watts | Per GPU e ventole: quanto consuma. Per i PSU: quanto fornisce |
hashrate | Solo GPU: GH/s per scheda |
temperature, cooling | Calore per GPU e raffreddamento per ventola, usati dallo schema di bilanciamento in cima al file. Questa versione non li applica in gioco — viene controllata l’energia |
Prezzi predefiniti:
| Componente | Prezzo | Componente | Prezzo |
|---|---|---|---|
| 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 |
Il blocco di commenti in cima a config/shop.lua spiega quali PSU e ventole servono a ciascuna fascia di GPU per un rig completo. Leggilo prima di modificare watts — è il modo più rapido per mantenere ogni fascia assemblabile.
Come viene controllata l’alimentazione. Quando viene installata una GPU o una ventola, il consumo totale del rig (ogni GPU e ventola presente) più il nuovo componente deve rientrare nella capacità totale dei suoi PSU. In caso contrario, il componente viene rifiutato con un messaggio di energia insufficiente.
Le monete — config/cryptos.lua
Sezione intitolata “Le monete — config/cryptos.lua”Sono incluse quattro monete. Puoi aggiungere o rimuovere voci liberamente; una nuova moneta viene aggiunta alla tabella del mercato al successivo avvio.
| Moneta | Nome | Prezzo base | 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 |
| Campo | Cosa fa |
|---|---|
label | Nome mostrato sul laptop, preso dal file della lingua |
short | Sigla (ticker) |
basePrice | Il prezzo attorno al quale oscilla la moneta |
range | Di quanto può oscillare, in percentuale in positivo o negativo |
difficulty | Più è alta, più è lento il mining |
color, icon | Colore e icona Font Awesome sul laptop |
Come si muove il mercato. Ogni 15 minuti ciascuna moneta riceve un nuovo prezzo: il suo basePrice sale o scende di un valore casuale entro la percentuale range. Il prezzo viene salvato, quindi sopravvive ai riavvii.
Come paga il mining. I proprietari dividono l’hashrate del loro magazzino tra le monete usando i cursori sul laptop. Ogni minuto, ciascuna moneta guadagna GH/s allocati × 0.01 ÷ difficulty. Una scheda Badger (0.10 GH/s) su MWX genera 0.001 MWX al minuto. L’hashrate non allocato a una moneta non mina nulla.
Trading. Acquistare una moneta preleva il denaro dalla banca del giocatore al laptop; vendere versa il denaro nella banca del giocatore al laptop. I saldi appartengono al magazzino, quindi chiunque abbia l’accesso condiviso può scambiarli.
Webhook — config/webhook.lua
Sezione intitolata “Webhook — config/webhook.lua”| Opzione | Cosa viene registrato |
|---|---|
Config.WebhookBuy | Ogni acquisto di cripto sull’exchange |
Config.WebhookSell | Ogni vendita di cripto sull’exchange |
Ogni messaggio contiene il nome del personaggio, i suoi identificatori license, steam e discord (quello Discord come menzione), la moneta, la quantità e il totale. Lascia un URL vuoto per disattivare quel log. Il testo del messaggio si trova nel file della lingua (webhook_buy, webhook_sell).
Questo file viene caricato solo lato server, quindi gli URL non vengono mai inviati ai giocatori.
In locales/ sono presenti undici lingue: en, es, fr, de, it, pt, nl, ar, ja, ko, ru. Imposta Config.Locale sul codice desiderato.
Per aggiungerne una, copia locales/en.lua in un nuovo file rinominato con il tuo codice, cambia la riga Locales['en'] con il tuo codice, traduci la parte destra di ogni riga e imposta Config.Locale su di esso. Il laptop e il negozio del venditore leggono lo stesso file.
Una chiave mancante nel tuo file viene mostrata come Translation [xx][key] does not exist — non c’è fallback all’inglese, quindi mantieni tutte le chiavi presenti in en.lua.
Alcuni avvisi sono scritti in inglese nel codice sotto escrow (il testo di aiuto Press E to place Rig / install GPU e l’etichetta Collect Package) e non provengono dal file della lingua.
Il bridge
Sezione intitolata “Il bridge”La cartella bridge/ è aperta così puoi collegare lo script a qualsiasi risorsa usi il tuo server.
| File | Cosa gestisce |
|---|---|
bridge/bridge_client.lua | Rilevamento del framework, Bridge.Notify, Bridge.ShowHelpNotification, callback e ogni interazione: target per entità, zone e modelli per ox_target, qb-target o il ciclo drawtext integrato |
bridge/bridge_server.lua | Rilevamento del framework, giocatori, contanti e banca, nomi dei personaggi e AddItem / HasItem / RemoveItem / RegisterUsableItem tramite fmLib |
Una risorsa di notifiche diversa: modifica Bridge.Notify in entrambi i file.
Una risorsa di target diversa: le tre funzioni Add…Interaction e le rispettive Remove… in bridge_client.lua sono gli unici punti in cui vengono gestiti i target.
Un framework diverso: il blocco di rilevamento in cima a ciascun file e le funzioni per denaro, giocatore e nome sono tutto ciò che serve. Gli oggetti non dipendono dal framework — passano tramite fmLib.
Conti in denaro. I magazzini vengono pagati tramite cash o bank (sceglie l’acquirente); gli acquisti e gli scambi sul laptop usano bank. Su ESX, cash sono i contanti del giocatore e bank è il conto bancario.