Personalização
Tudo o que você deve alterar está em quatro pastas abertas: config/, locales/, bridge/ e items/. O restante do código Lua possui proteção escrow.
Qual arquivo decide o quê
Seção intitulada “Qual arquivo decide o quê”| Arquivo | O que ele decide | Aberto? |
|---|---|---|
config/config.lua | Idioma, sistema de interação, notificações, entregas, mineração offline, o NPC vendedor e seu blip | Sim |
config/warehouses.lua | Os três armazéns: preço, vagas de rig, imagem, onde você chega, onde as caixas caem; configurações de saída e blip de propriedade | Sim |
config/shop.lua | Cada peça na loja do laptop: preço, watts, hashrate, categoria | Sim |
config/cryptos.lua | As moedas: nome, preço base, volatilidade, dificuldade, cor, ícone | Sim |
config/webhook.lua | Os dois webhooks do Discord. Carregado apenas no servidor | Sim |
locales/*.lua | Todos os textos, no jogo e no laptop | Sim |
bridge/bridge_client.lua | Notificações, texto de ajuda, callbacks e o wrapper de ox_target / qb-target / drawtext | Sim |
bridge/bridge_server.lua | Jogadores, dinheiro, nomes e itens através do fmLib | Sim |
items/ | Definições de itens para ox, qb e ESX, e os ícones dos itens | Sim |
html/ | A loja do vendedor e a tela do laptop, além das imagens dos armazéns em html/img/ | Sim, sem escrow |
mic_crypto_props/ | Os modelos transmitidos (streamed) e as pré-visualizações 3D que o laptop mostra | Apenas assets |
Geral — config/config.lua
Seção intitulada “Geral — config/config.lua”| Opção | O que faz | Padrão |
|---|---|---|
Config.Locale | Qual arquivo em locales/ é usado | 'en' |
Config.Interaction | ox_target, qb-target ou drawtext (um aviso Pressione E) | 'ox_target' |
Config.CustomLaptopNotificacions | true: mensagens da loja e negociações aparecem como avisos na tela do laptop. false: notificações normais do seu framework | true |
Config.ReceiveProductsDirectlyToInventory | true: peças compradas no laptop vão direto para o inventário. false: uma caixa é deixada no armazém para ser recolhida | false |
Config.OfflineMining | Se as rigs mineram enquanto o dono está desconectado | true |
Config.OfflineRate | Velocidade da mineração offline. 1.0 é velocidade total, 0.5 metade | 1.0 |
O nome da opção CustomLaptopNotificacions está escrito dessa forma no arquivo — mantenha a grafia.
O vendedor — Config.NPC e Config.Blip
Seção intitulada “O vendedor — Config.NPC e Config.Blip”| Opção | O que faz | Padrão |
|---|---|---|
Config.NPC.model | Modelo de ped do vendedor | s_m_y_ammucity_01 |
Config.NPC.coords | Onde o vendedor fica, com direção | Perto do porto |
Config.NPC.scenario | O que o vendedor está fazendo | WORLD_HUMAN_CLIPBOARD |
Config.NPC.interactDistance | Quão perto você precisa estar | 2.5 |
Config.Blip.enable | Mostrar o vendedor no mapa | true |
Config.Blip.sprite / color / scale | Aparência do blip | 478 / 5 / 0.8 |
Config.Blip.name | Nome do blip | Crypto Warehouse Shop |
Armazéns — config/warehouses.lua
Seção intitulada “Armazéns — config/warehouses.lua”| Armazém | id | Preço | Vagas de rig (rigSlots) |
|---|---|---|---|
| Pequeno | warehouse_small | 50,000 | 8 |
| Médio | warehouse_medium | 150,000 | 21 |
| Grande | warehouse_large | 350,000 | 37 |
Cada armazém possui estes campos:
| Campo | O que faz |
|---|---|
id | Nome interno. Mantenha os três ids como estão |
name, description | Texto da loja, vindo do arquivo de idioma |
price | Custo, pago em dinheiro ou banco — o comprador escolhe |
rigSlots | O número mostrado na loja |
image | Imagem na loja, vinda de html/img/ |
security, power | Rótulos mostrados na loja |
viewCoords | Para onde Visualizar envia o comprador para olhar antes de pagar |
insideCoords | Onde você chega ao entrar; a saída também fica aqui |
packageCoords | Onde a caixa de entrega aparece |
Acima da lista:
| Opção | O que faz | Padrão |
|---|---|---|
Config.ExitCoords | Onde todos saem, independentemente do armazém em que estavam | Ao lado do vendedor |
Config.WarehouseBlips | Sprite, cor e escala do blip para os armazéns que você possui | 478, verde, 0.7 |
A loja — config/shop.lua
Seção intitulada “A loja — config/shop.lua”Config.Shop.Categories define as quatro abas da loja do laptop (GPUs, PSUs, ventoinhas, racks). Config.Shop.Items é a lista de peças. Compras no laptop são sempre pagas pelo banco.
| Campo | O que faz |
|---|---|
id | O nome do item. Deve corresponder a um item no seu inventário e a um modelo em mic_crypto_props |
category | gpus, psus, fans ou racks |
label, description | Texto da loja, vindo do arquivo de idioma |
price | Custo |
image | Nome do arquivo de ícone |
watts | Para GPUs e ventoinhas: quanto consome. Para PSUs: quanto fornece |
hashrate | Apenas GPUs: GH/s por placa |
temperature, cooling | Calor por GPU e resfriamento por ventoinha, usados pela tabela de balanceamento no topo do arquivo. Esta versão não aplica isso no jogo — apenas a energia é exigida |
Preços padrão:
| Peça | Preço | Peça | Preço |
|---|---|---|---|
| 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 |
O bloco de comentários no topo de config/shop.lua detalha quais PSUs e ventoinhas cada nível de GPU precisa para uma rig completa. Leia-o antes de alterar watts — é a maneira mais rápida de manter cada nível montável.
Como a energia é verificada. Quando uma GPU ou ventoinha é instalada, o consumo total da rig (todas as GPUs e ventoinhas) mais a nova peça deve caber dentro do total de suas PSUs. Se não couber, a peça é recusada com uma mensagem de energia insuficiente.
As moedas — config/cryptos.lua
Seção intitulada “As moedas — config/cryptos.lua”Quatro moedas já vêm configuradas. Adicione ou remova entradas livremente; uma nova moeda é adicionada à tabela de mercado na próxima inicialização.
| Moeda | Nome | Preço 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 | O que faz |
|---|---|
label | Nome mostrado no laptop, vindo do arquivo de idioma |
short | Símbolo (ticker) |
basePrice | O preço em torno do qual a moeda oscila |
range | O quanto ela pode oscilar, em porcentagem para mais/menos |
difficulty | Quanto maior, mais lento para minerar |
color, icon | Cor e ícone do Font Awesome no laptop |
Como o mercado se move. A cada 15 minutos, cada moeda recebe um novo preço: seu basePrice sobe ou desce por um valor aleatório dentro de range por cento. O preço é salvo, sobrevivendo a reinicializações.
Como a mineração paga. Os donos dividem o hashrate do seu armazém entre as moedas com os controles deslizantes do laptop. A cada minuto, cada moeda ganha GH/s alocado × 0.01 ÷ difficulty. Uma placa Badger (0.10 GH/s) em MWX gera 0.001 MWX por minuto. Hashrate não alocado a uma moeda não minera nada.
Negociação. Comprar uma moeda retira o dinheiro do banco do jogador que está no laptop; vender deposita no banco do jogador que está no laptop. Os saldos pertencem ao armazém, portanto qualquer pessoa com quem você o compartilhe pode negociá-los.
Webhooks — config/webhook.lua
Seção intitulada “Webhooks — config/webhook.lua”| Opção | O que é registrado |
|---|---|
Config.WebhookBuy | Cada compra de cripto na corretora |
Config.WebhookSell | Cada venda de cripto na corretora |
Cada mensagem contém o nome do personagem, seus identificadores license, steam e discord (o do Discord como menção), a moeda, a quantidade e o total. Deixe uma URL vazia para desativar esse log. O texto da mensagem fica no arquivo de idioma (webhook_buy, webhook_sell).
Este arquivo é carregado apenas no servidor, de modo que as URLs nunca são enviadas aos jogadores.
Idiomas
Seção intitulada “Idiomas”Onze vêm em locales/: en, es, fr, de, it, pt, nl, ar, ja, ko, ru. Defina Config.Locale com o código desejado.
Para adicionar um, copie locales/en.lua para um novo arquivo com o nome do seu código, altere a linha Locales['en'] para o seu código, traduza o lado direito de cada linha e defina Config.Locale para ele. O laptop e a loja do vendedor leem o mesmo arquivo.
Uma chave ausente no seu arquivo aparece como Translation [xx][key] does not exist — não há fallback para o inglês, então mantenha todas as chaves de en.lua.
Alguns avisos estão escritos em inglês no código protegido por escrow (o texto de ajuda Press E to place Rig / install GPU e o rótulo Collect Package) e não vêm do arquivo de idioma.
A bridge
Seção intitulada “A bridge”A pasta bridge/ é aberta para que você possa adaptar o script ao que o seu servidor utiliza.
| Arquivo | O que cobre |
|---|---|
bridge/bridge_client.lua | Detecção de framework, Bridge.Notify, Bridge.ShowHelpNotification, callbacks e todas as interações: targets de entidade, zona e modelo para ox_target, qb-target ou o loop drawtext |
bridge/bridge_server.lua | Detecção de framework, jogadores, dinheiro e banco, nomes de personagens e AddItem / HasItem / RemoveItem / RegisterUsableItem através do fmLib |
Um resource de notificação diferente: altere Bridge.Notify em ambos os arquivos.
Um resource de target diferente: as três funções Add…Interaction e suas parceiras Remove… em bridge_client.lua são os únicos lugares onde os targets são tocados.
Um framework diferente: o bloco de detecção no topo de cada arquivo e as funções de dinheiro, jogador e nome são tudo o que existe. Os itens não dependem do framework — eles passam pelo fmLib.
Contas de dinheiro. Os armazéns são pagos com cash ou bank (o comprador escolhe); compras e negociações no laptop usam bank. No ESX, cash é o dinheiro em mãos do jogador e bank é a conta bancária.