Lo que falla con más frecuencia, qué significa realmente y qué hacer al respecto. La mayoría son de configuración, no fallos; y con Config.Debug = true la consola F8 explica buena parte de ellos por sí sola. Actívalo antes de abrir un ticket, y desactívalo después.
Instalación y acceso#
Errores SQL al iniciar, o las máquinas colocadas no se guardan
La tabla qs_vendingmachines nunca se importó, o oxmysql no está en ejecución. Ejecuta [sql]/qs_vendingmachines.sql en tu base de datos y asegúrate de que ensure oxmysql va primero en server.cfg. Las columnas de propiedad que falten en una tabla antigua se añaden automáticamente: no hay nada que volver a importar.
El recurso se detiene al iniciar con un error de framework
No había ningún framework compatible en ejecución cuando se inició, así que no encontró ningún bridge que cargar. Mueve el ensure de tu framework por encima de ensure qs-vendingmachine-creator, o configura Config.Framework a mano; consulta Integraciones.
"Using standalone inventory" se repite en la consola
No se detectó ningún inventario compatible, así que el creador no tiene lista de ítems. El inventario se inicia después de este recurso, o se ha renombrado. Corrige el orden en server.cfg o configura Config.Inventory a mano.
"You do not have permission to do this" en /vendingcreator
El jugador no es administrador del framework (ESX admin o superadmin; QBCore y QBox admin, god o el ace command) y su trabajo y rango no están en Config.CreatorJobs.
El creador falla para un trabajo con un rango configurado
grade en Config.CreatorJobs es una lista. Escribe grade = { 4 } (o { 3, 4 }) en lugar de grade = 4, y false para todos los rangos.
El creador no se abre
Revisa primero la consola F8. Una colocación que quedó en curso se cancela en cuanto se abre el creador, así que volver a intentarlo suele funcionar. Si la lista de ítems del creador está vacía, no se detectó el inventario; consulta el apartado anterior sobre el inventario standalone.
Compras y productos#
Los jugadores pagan pero no reciben nada
El producto no está declarado en la lista de ítems de tu framework o inventario, así que no hay nada que entregar. Decláralo como se muestra en Instalación → Los productos. En ESX, con un inventario que lee la tabla items, debe existir en esa tabla: un archivo Lua por sí solo no basta.
Los productos muestran el icono predeterminado
Falta la imagen en la carpeta de imágenes de tu inventario, o tiene otro nombre. Copia los iconos de [img]/ y renombra expresso.png a espresso.png. En ESX la tabla items no tiene columna de imagen, así que el panel del propietario siempre muestra ahí una imagen predeterminada: es lo esperado y no causa problemas.
Editar la configuración no cambia una máquina colocada
Es el comportamiento correcto. Una máquina colocada guarda su propia lista de productos en la base de datos; Config.MachineTypes solo es la plantilla y la lista de las máquinas del mapa. Edita esa máquina en el creador.
Una máquina expendedora del mapa no responde
Su modelo no está en Config.MachineTypes: GTA tiene varios modelos parecidos. Añade un tipo de máquina con ese prop y empezará a vender. Las máquinas del mapa se detectan a los pocos segundos de acercarte a ellas.
Una máquina solo se ofrece a la venta
Es el comportamiento correcto. Una máquina marcada como For sale no vende nada hasta que un jugador la compra. Desactiva el interruptor en el creador para convertirla en una máquina normal.
Máquinas en propiedad#
El propietario ve "Use" en lugar de "Manage"
La propiedad pertenece al personaje que la compró. Jugar con otro personaje del mismo jugador muestra la máquina como de otra persona. Justo después de entrar, espera un par de segundos: el personaje se reconoce cuando el framework lo ha cargado.
Se rechaza la reposición
El propietario debe llevar las unidades: reponer mueve ítems de su propio inventario. Un hueco admite como máximo Config.Ownable.maxStockPerItem unidades; llegado a ese punto, el panel indica que el hueco ya está lleno.
El propietario no puede añadir un producto nuevo
Es el comportamiento correcto. Qué productos vende una máquina se configura en el creador; el propietario los repone y les cambia el precio. Añade ahí el producto: el stock que ya hay dentro se conserva.
No hay botón "Sell machine"
Config.Ownable.resaleRatio es 0, o la máquina se puso a la venta a un precio de 0; en ambos casos el reembolso sería nulo.
El stock desapareció tras vender la máquina
Es el comportamiento correcto. Al venderla se paga el reembolso más las ganancias sin recoger y se vacía la máquina para el siguiente comprador; el stock de dentro no se devuelve.
Robos#
No aparece el aviso de robo [G]
Configura Config.Debug = true y colócate junto a la máquina: la consola F8 imprime el motivo cada diez segundos. Es uno de estos:
Config.Robbery.enabledestá desactivado.La máquina tiene Can be robbed desactivado en el creador.
Es tuya y
allowSelfRobberyestá desactivado.Sigue en tiempo de espera por un intento reciente.
No llevas
Config.Robbery.item.
Las máquinas que vienen con el mapa nunca se pueden robar; solo las colocadas.
"This machine is empty"
Una máquina con propietario sin stock no tiene nada que robar. El aviso sigue apareciendo, porque un ladrón solo lo descubre intentándolo.
Usar el lockpick desde el inventario no hace nada
Config.Robbery.useItem está desactivado de forma predeterminada, así que el robo empieza con [G]. Si lo activaste y sigue sin hacer nada, otro recurso registró el mismo ítem después que este: gana el último. Vuelve a desactivarlo e inicia el robo desde ese recurso con el evento de Comandos y exports.
La policía no recibe ninguna alerta
La alerta solo se envía el alert.chance% de las veces (70 de forma predeterminada), solo a los jugadores conectados cuyo trabajo está en alert.jobs, y al inicio del robo. Si AlertPolice se sustituyó por una llamada a tu sistema de avisos, cualquier error en ella se imprime en la consola del servidor.
Los tiempos de espera se reinician tras un reinicio
Es el comportamiento correcto. Los tiempos de espera se guardan en memoria, así que reiniciar el recurso los borra.
La app del teléfono#
VendGo dice que el sistema de máquinas expendedoras no está en ejecución
El recurso está detenido, o se renombró su carpeta. El teléfono lo busca exactamente como qs-vendingmachine-creator.
VendGo no está en la App Store
El addon phone-vendingmachine no está en ejecución. Necesita que qs-smartphone y qs-vendingmachine-creator estén iniciados, e imprime VendGo store listing registered cuando funciona. La app se instala desde la App Store, no se coloca en la pantalla de inicio.
Comprar desde el teléfono falla
Config.Phone.allowRemotePurchase está desactivado (la app aún puede explorar y marcar puntos de ruta), o el jugador no tiene el dinero en la propia cuenta de pago de la máquina, que no siempre es efectivo.
Textos e idiomas#
Algunos textos están en inglés
A tu traducción le faltan esas claves (normalmente porque una actualización añadió otras nuevas) y usan el inglés en lugar de romperse. Cópialas de locales/en.json a tu archivo de idioma y tradúcelas.
"Locale … does not exist, falling back to default"
Config.Locale indica un archivo que no está en locales/. Usa el nombre del archivo sin .json: 'es', no 'es-ES'.
¿Sigues atascado? Abre un ticket e incluye tu framework y su versión, tu inventario y ambas consolas (F8 y servidor) con
Config.Debug = true, capturadas mientras reproduces el problema.



