Skip to content

Instalación

Instala Cuxial Abastecimiento paso a paso: dependencias, trabajo del supermercado, ítems, convars y orden de arranque.

Cuxial Abastecimiento no necesita importar SQL: crea sus tablas en el primer arranque. Sí necesita un trabajo del framework para el personal del supermercado y los ítems de los productos en tu inventario.

Comprueba las dependencias ​

Estos recursos tienen que estar instalados y funcionando antes de añadir el trabajo:

  • ox_lib
  • oxmysql
  • cuxial_bridge, con uno de los frameworks compatibles: QBox, QBCore o ESX
  • sleepless_interact
  • OneSync activado en el servidor

Otros dos vienen dentro del paquete y se instalan en el paso siguiente: cuxial_jobs y cuxial_supermarket_assets.

Para el supermercado necesitas además:

  • cuxial_banking. El dinero de la tienda está en la cuenta de empresa de su trabajo. Las ventas y las compras al por mayor se ingresan en ella, y las entregas se pagan desde ella. El pago con tarjeta en caja también pasa por ahí.
  • ox_inventory o qb-inventory, para que los clientes reciban los ítems que compran.

cuxial_garages es opcional. Cuando está en marcha, la tripulación recibe las llaves de la furgoneta y las pierde al terminar la partida.

Copia los recursos ​

Coloca las tres carpetas del paquete dentro de tu directorio resources. No cambies los nombres de las carpetas.

  • cuxial_supply
  • cuxial_jobs
  • cuxial_supermarket_assets

Si ya tienes otro trabajo de Cuxial, ya tienes cuxial_jobs. Deja una sola copia, la más reciente.

cuxial_supermarket_assets sustituye el edificio del supermercado de Paleto Bay. Quita o detén cualquier otro MLO de ese mismo supermercado antes de arrancarlo: dos mapas en el mismo sitio se rompen entre sí.

Conserva la carpeta data/seed/ de cuxial_supply. Contiene los huecos de las baldas, las neveras y las cajas del supermercado, y se copia a la base de datos al arrancar.

Crea el trabajo del supermercado ​

El personal del supermercado pertenece al trabajo del framework supermarket. El número de grado decide qué puede hacer cada empleado:

GradoPuestoPuede
0ReponedorCoger cajas del almacén y reponer las baldas
1CajeroTodo lo anterior, y cobrar a los clientes en caja
2EncargadoTodo lo anterior, y abrir el panel de gestión
3JefeTodo lo anterior, y poner los precios del lineal

El nombre del trabajo y los números de grado se cambian en store de shared/config.lua. Los nombres de los grados y los sueldos los eliges tú.

qbx_core/shared/jobs.lua
lua
['supermarket'] = {
    label = 'Supermercado',
    defaultDuty = true,
    offDutyPay = false,
    grades = {
        [0] = { name = 'Reponedor', payment = 50 },
        [1] = { name = 'Cajero', payment = 75 },
        [2] = { name = 'Encargado', payment = 100 },
        [3] = { name = 'Jefe', isboss = true, payment = 150 },
    },
},

Reponer y cobrar exige estar de servicio (store.duty). Los jugadores entran de servicio con el sistema de servicio de tu framework; defaultDuty = true los pone de servicio al conectarse.

Cuxial Banking crea una cuenta de empresa para cada trabajo de tu framework al arrancar. Reinicia cuxial_banking (o el servidor) después de añadir el trabajo para que exista la cuenta supermarket.

Añade los ítems ​

Cada producto da un ítem al comprarlo en el supermercado. Añade los que tu inventario aún no tenga. Los nombres visibles y los pesos son un ejemplo: ajústalos a tu servidor.

ox_inventory/data/items.lua
lua
['raw_chicken'] =      { label = 'Pollo', weight = 200 },
['eggs'] =             { label = 'Huevos', weight = 200 },
['tomato'] =           { label = 'Tomates', weight = 200 },
['lettuce'] =          { label = 'Lechugas', weight = 200 },
['potato'] =           { label = 'Patatas', weight = 200 },
['onion'] =            { label = 'Cebollas', weight = 200 },
['milk'] =             { label = 'Leche', weight = 200 },
['flour'] =            { label = 'Harina', weight = 200 },
['raw_beef'] =         { label = 'Carne de res', weight = 200 },
['champagne'] =        { label = 'Champán', weight = 200 },
['whisky'] =           { label = 'Whisky', weight = 200 },
['noodles'] =          { label = 'Fideos instantáneos', weight = 200 },
['noodles_seafood'] =  { label = 'Fideos de marisco', weight = 200 },
['tomato_soup'] =      { label = 'Sopa de tomate', weight = 200 },
['veg_soup'] =         { label = 'Sopa de verduras', weight = 200 },
['tuna'] =             { label = 'Atún en lata', weight = 200 },
['sweetcorn'] =        { label = 'Maíz dulce', weight = 200 },
['ketchup'] =          { label = 'Kétchup', weight = 200 },
['mustard'] =          { label = 'Mostaza', weight = 200 },
['cereal'] =           { label = 'Cereales', weight = 200 },
['bread'] =            { label = 'Pan de molde', weight = 200 },
['chips'] =            { label = 'Patatas fritas', weight = 200 },
['chocolate'] =        { label = 'Chocolatinas', weight = 200 },
['candy'] =            { label = 'Caramelos', weight = 200 },
['water'] =            { label = 'Agua mineral', weight = 200 },
['cola'] =             { label = 'Refresco de cola', weight = 200 },
['sprunk'] =           { label = 'Sprunk', weight = 200 },
['detergent'] =        { label = 'Detergente', weight = 200 },
['dish_soap'] =        { label = 'Lavavajillas', weight = 200 },
['cleaner'] =          { label = 'Limpiador en espray', weight = 200 },
['shampoo'] =          { label = 'Champú', weight = 200 },
['soap'] =             { label = 'Jabón de manos', weight = 200 },
['toothpaste'] =       { label = 'Pasta de dientes', weight = 200 },
['hair_gel'] =         { label = 'Gomina', weight = 200 },
['shaving_foam'] =     { label = 'Espuma de afeitar', weight = 200 },
['sugar'] =            { label = 'Azúcar', weight = 200 },
['soy_sauce'] =        { label = 'Salsa de soja', weight = 200 },
['rum'] =              { label = 'Ron', weight = 200 },
['vodka'] =            { label = 'Vodka', weight = 200 },
['tequila'] =          { label = 'Tequila', weight = 200 },
['beer'] =             { label = 'Barril de cerveza', weight = 200 },
['fruit_orange'] =     { label = 'Naranja', weight = 200 },
['fruit_pineapple'] =  { label = 'Piña', weight = 200 },
['fruit_strawberry'] = { label = 'Fresa', weight = 200 },
['fruit_cherry'] =     { label = 'Cereza', weight = 200 },
['fruit_banana'] =     { label = 'Banana', weight = 200 },
['raw_pork'] =         { label = 'Cerdo crudo', weight = 200 },
['salmon'] =           { label = 'Salmón', weight = 200 },
['fish_fillet'] =      { label = 'Filete de pescado', weight = 200 },
['shrimp'] =           { label = 'Gambas', weight = 200 },
['lobster'] =          { label = 'Langosta', weight = 200 },
['cheese'] =           { label = 'Queso', weight = 200 },
['cream'] =            { label = 'Nata', weight = 200 },
['avocado'] =          { label = 'Aguacate', weight = 200 },
['chili'] =            { label = 'Chile', weight = 200 },
['fruit_lime'] =       { label = 'Lima', weight = 200 },
['mint'] =             { label = 'Menta', weight = 200 },
['rice'] =             { label = 'Arroz', weight = 200 },
['pasta'] =            { label = 'Pasta', weight = 200 },
['beans'] =            { label = 'Frijoles', weight = 200 },
['nori'] =             { label = 'Alga nori', weight = 200 },
['syrup'] =            { label = 'Sirope', weight = 200 },
['coffee_beans'] =     { label = 'Café en grano', weight = 200 },
['tea_leaves'] =       { label = 'Té', weight = 200 },
['ice'] =              { label = 'Hielo', weight = 200 },

Con qb-inventory, añade los mismos nombres de ítem a qb-core/shared/items.lua. El ítem de cada producto está en item de data/products.lua: si lo prefieres, apúntalo a un ítem que ya tengas.

El editor avisa, en cada producto, cuando su ítem no existe en tu inventario.

Configura las convars ​

Todas son opcionales.

server.cfg
cfg
# Idioma del trabajo (incluye en y es)
setr ox:locale "es"

# Webhook de Discord para los registros del trabajo
set cuxial_supply_webhook "https://discord.com/api/webhooks/..."

# Trazas de depuración en la consola
setr cuxial_supply_debug "0"

El webhook va en server.cfg, nunca en shared/config.lua. El nombre de la convar se cambia en logs.convar. Se lee al arrancar el recurso: ponla encima de las líneas ensure.

Arranca los recursos ​

Arranca el trabajo después de sus dependencias y de tu framework. cuxial_jobs y cuxial_supermarket_assets van antes que cuxial_supply:

server.cfg
cfg
ensure ox_lib
ensure oxmysql
# tu framework aquí (qbx_core, qb-core o es_extended)
# tu inventario aquí (ox_inventory o qb-inventory)
ensure cuxial_bridge
ensure sleepless_interact
ensure cuxial_banking
# opcional
ensure cuxial_garages
ensure cuxial_jobs
ensure cuxial_supermarket_assets
ensure cuxial_supply

No hay SQL que ejecutar. En el primer arranque el trabajo crea las tablas cuxial_jobs_* que comparten todos los trabajos de Cuxial (cada fila lleva su trabajo) y sus tablas cuxial_supply_*: stock, pedidos, historial, libro de movimientos, capa del editor, huecos y reserva del supermercado, giro de productos y cuxial_supply_seed, que recibe el contenido de data/seed/. install/cuxial_supply.sql es una copia de referencia.

cuxial_supermarket_assets añade un mapa y props. Reinicia el servidor después de instalarlo, no solo el recurso, y reconecta para que todos los clientes lo carguen.

Comprueba que funciona ​

  1. Entra en el servidor y abre el mapa. El blip de abastecedor marca el NPC del trabajo en Grapeseed y el del supermercado marca la tienda de Paleto Bay.
  2. Ve al NPC y usa la opción de interacción. Se abre el panel del trabajo.
  3. Elige la línea de la granja avícola y pulsa el botón de empezar. Aparece una furgoneta junto al NPC y el HUD muestra el siguiente paso.
  4. Escribe /supplyreset para cancelar la partida de prueba. La furgoneta desaparece.
  5. Como staff, escribe /supplyrestock para llenar el supermercado y entra: aparecen productos en las baldas.
  6. Ponte el trabajo supermarket, entra de servicio y comprueba que los palés del almacén ofrecen Coger caja.

Siguiente: mira cómo funciona todo en el juego en la Guía de funciones y ajústalo en Configuración.

© Cuxial