Personalización
Todo lo que está pensado para que lo cambies está en cuatro carpetas abiertas: config/, locales/, bridge/ e items/. El resto del Lua está protegido con escrow.
Qué archivo decide qué
Sección titulada «Qué archivo decide qué»| Archivo | Qué decide | ¿Abierto? |
|---|---|---|
config/config.lua | Idioma, sistema de interacción, notificaciones, entregas, minería sin conexión, el NPC vendedor y su blip | Sí |
config/warehouses.lua | Los tres almacenes: precio, huecos para rigs, imagen, dónde llegas, dónde caen las cajas; la salida y el blip de los almacenes propios | Sí |
config/shop.lua | Cada pieza de la tienda del portátil: precio, vatios, hashrate, categoría | Sí |
config/cryptos.lua | Las monedas: nombre, precio base, volatilidad, dificultad, color, icono | Sí |
config/webhook.lua | Los dos webhooks de Discord. Solo se carga en el servidor | Sí |
locales/*.lua | Todos los textos, en el juego y en el portátil | Sí |
bridge/bridge_client.lua | Notificaciones, texto de ayuda, callbacks y el wrapper de ox_target / qb-target / drawtext | Sí |
bridge/bridge_server.lua | Jugadores, dinero, nombres e ítems a través de fmLib | Sí |
items/ | Definiciones de ítems para ox, qb y ESX, y los iconos de los ítems | Sí |
html/ | La tienda del vendedor y la pantalla del portátil, más las imágenes de los almacenes en html/img/ | Sí, sin escrow |
mic_crypto_props/ | Los modelos en streaming y las vistas previas 3D que muestra el portátil | Solo recursos gráficos |
General — config/config.lua
Sección titulada «General — config/config.lua»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.Locale | Qué archivo de locales/ se usa | 'en' |
Config.Interaction | ox_target, qb-target o drawtext (un aviso de Pulsa E) | 'ox_target' |
Config.CustomLaptopNotificacions | true: los mensajes de la tienda y de las operaciones aparecen como avisos en la pantalla del portátil. false: las notificaciones normales de tu framework | true |
Config.ReceiveProductsDirectlyToInventory | true: las piezas compradas en el portátil van directamente al inventario. false: se deja una caja en el almacén para recogerla | false |
Config.OfflineMining | Si los rigs minan mientras el propietario está desconectado | true |
Config.OfflineRate | A qué velocidad funciona la minería sin conexión. 1.0 es velocidad completa, 0.5 la mitad | 1.0 |
El nombre de la opción CustomLaptopNotificacions está escrito así en el archivo: respeta esa ortografía.
El vendedor — Config.NPC y Config.Blip
Sección titulada «El vendedor — Config.NPC y Config.Blip»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.NPC.model | Modelo de ped del vendedor | s_m_y_ammucity_01 |
Config.NPC.coords | Dónde está el vendedor, con su orientación | Junto al puerto |
Config.NPC.scenario | Qué está haciendo el vendedor | WORLD_HUMAN_CLIPBOARD |
Config.NPC.interactDistance | Lo cerca que tienes que estar | 2.5 |
Config.Blip.enable | Mostrar al vendedor en el mapa | true |
Config.Blip.sprite / color / scale | Aspecto del blip | 478 / 5 / 0.8 |
Config.Blip.name | Nombre del blip | Crypto Warehouse Shop |
Almacenes — config/warehouses.lua
Sección titulada «Almacenes — config/warehouses.lua»| Almacén | id | Precio | Huecos para rigs (rigSlots) |
|---|---|---|---|
| Pequeño | warehouse_small | 50.000 | 8 |
| Mediano | warehouse_medium | 150.000 | 21 |
| Grande | warehouse_large | 350.000 | 37 |
Cada almacén tiene estos campos:
| Campo | Qué hace |
|---|---|
id | Nombre interno. Deja los tres ids como están |
name, description | Texto de la tienda, del archivo de idioma |
price | Coste, que se paga en efectivo o con el banco; elige el comprador |
rigSlots | El número que se muestra en la tienda |
image | Imagen de la tienda, de html/img/ |
security, power | Etiquetas que se muestran en la tienda |
viewCoords | Adónde lleva View al comprador para echar un vistazo antes de pagar |
insideCoords | Dónde apareces al entrar; la salida también está aquí |
packageCoords | Dónde cae la caja de la entrega |
Encima de la lista:
| Opción | Qué hace | Por defecto |
|---|---|---|
Config.ExitCoords | Por dónde sale todo el mundo, sea cual sea el almacén en el que estaba | Junto al vendedor |
Config.WarehouseBlips | Sprite, color y escala del blip de los almacenes que tienes | 478, verde, 0.7 |
La tienda — config/shop.lua
Sección titulada «La tienda — config/shop.lua»Config.Shop.Categories define las cuatro pestañas de la tienda del portátil (GPUs, PSUs, ventiladores, racks). Config.Shop.Items es la lista de piezas. Las compras en el portátil siempre se pagan desde el banco.
| Campo | Qué hace |
|---|---|
id | El nombre del ítem. Tiene que coincidir con un ítem de tu inventario y con un modelo de mic_crypto_props |
category | gpus, psus, fans o racks |
label, description | Texto de la tienda, del archivo de idioma |
price | Coste |
image | Nombre del archivo del icono |
watts | Para GPUs y ventiladores: lo que consumen. Para PSUs: lo que aportan |
hashrate | Solo GPUs: GH/s por tarjeta |
temperature, cooling | Calor por GPU y refrigeración por ventilador, que usa la tabla de equilibrio del principio del archivo. Esta versión no los aplica en el juego: lo que se controla es la potencia |
Precios por defecto:
| Pieza | Precio | Pieza | Precio |
|---|---|---|---|
| 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 |
El bloque de comentarios al principio de config/shop.lua calcula qué PSUs y ventiladores necesita cada gama de GPU para un rig completo. Léelo antes de cambiar watts: es la forma más rápida de que todas las gamas se puedan seguir montando.
Cómo se comprueba la potencia. Al instalar una GPU o un ventilador, el consumo total del rig (todas las GPUs y ventiladores) más la pieza nueva tiene que caber dentro del total de sus PSUs. Si no cabe, la pieza se rechaza con un mensaje de potencia insuficiente.
Las monedas — config/cryptos.lua
Sección titulada «Las monedas — config/cryptos.lua»Vienen cuatro monedas. Añade o quita entradas libremente; una moneda nueva se añade a la tabla del mercado en el siguiente arranque.
| Moneda | Nombre | Precio 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 | Qué hace |
|---|---|
label | Nombre que se muestra en el portátil, del archivo de idioma |
short | Ticker |
basePrice | El precio en torno al que oscila la moneda |
range | Cuánto puede oscilar, en porcentaje hacia arriba o hacia abajo |
difficulty | Cuanto más alta, más lento es minarla |
color, icon | Color e icono de Font Awesome en el portátil |
Cómo se mueve el mercado. Cada 15 minutos, cada moneda recibe un precio nuevo: su basePrice desplazado hacia arriba o hacia abajo una cantidad aleatoria dentro del porcentaje de range. El precio se guarda, así que sobrevive a un reinicio.
Cómo paga la minería. Los propietarios reparten el hashrate de su almacén entre monedas con los deslizadores del portátil. Cada minuto, cada moneda gana GH/s asignados × 0,01 ÷ dificultad. Una tarjeta Badger (0,10 GH/s) en MWX produce 0,001 MWX por minuto. El hashrate que no está asignado a ninguna moneda no mina nada.
Operaciones. Comprar una moneda cobra el dinero del banco del jugador que está en el portátil; vender lo ingresa en el banco del jugador que está en el portátil. Los saldos pertenecen al almacén, así que cualquiera con quien lo compartas puede operar con ellos.
Webhooks — config/webhook.lua
Sección titulada «Webhooks — config/webhook.lua»| Opción | Qué se registra |
|---|---|
Config.WebhookBuy | Cada compra de cripto en el exchange |
Config.WebhookSell | Cada venta de cripto en el exchange |
Cada mensaje incluye el nombre del personaje, sus identificadores license, steam y discord (el de Discord como mención), la moneda, la cantidad y el total. Deja una URL vacía para desactivar ese log. El texto del mensaje está en el archivo de idioma (webhook_buy, webhook_sell).
Este archivo solo se carga en el servidor, así que las URLs nunca se envían a los jugadores.
Idiomas
Sección titulada «Idiomas»En locales/ vienen once: en, es, fr, de, it, pt, nl, ar, ja, ko, ru. Pon el código en Config.Locale.
Para añadir uno, copia locales/en.lua a un archivo nuevo con el nombre de tu código, cambia la línea Locales['en'] por tu código, traduce la parte derecha de cada línea y pon Config.Locale con ese código. El portátil y la tienda del vendedor leen el mismo archivo.
Una clave que falte en tu archivo aparece como Translation [xx][key] does not exist: no hay respaldo en inglés, así que conserva todas las claves de en.lua.
Algunos avisos están escritos en inglés en el código con escrow (el texto de ayuda Press E to place Rig / install GPU y la etiqueta Collect Package) y no salen del archivo de idioma.
El bridge
Sección titulada «El bridge»bridge/ está abierto para que puedas adaptar el script a lo que use tu servidor.
| Archivo | Qué cubre |
|---|---|
bridge/bridge_client.lua | Detección del framework, Bridge.Notify, Bridge.ShowHelpNotification, callbacks y todas las interacciones: targets de entidad, zona y modelo para ox_target, qb-target, o el bucle de drawtext integrado |
bridge/bridge_server.lua | Detección del framework, jugadores, efectivo y banco, nombres de personaje y AddItem / HasItem / RemoveItem / RegisterUsableItem a través de fmLib |
Otro recurso de notificaciones: cambia Bridge.Notify en los dos archivos.
Otro recurso de target: las tres funciones Add…Interaction y sus correspondientes Remove… en bridge_client.lua son los únicos sitios donde se tocan los targets.
Otro framework: el bloque de detección del principio de cada archivo y las funciones de dinero, jugador y nombre son todo lo que hay. Los ítems no dependen del framework: pasan por fmLib.
Cuentas de dinero. Los almacenes se pagan con cash o bank (elige el comprador); las compras en el portátil y las operaciones usan bank. En ESX, cash es el dinero del jugador y bank la cuenta bancaria.