Lo que falla con más frecuencia, lo que significa realmente y qué hacer al respecto. La mayoría son de configuración, no fallos — y el mensaje que ve un jugador suele indicar el motivo exacto.
Instalación y acceso#
El recurso se detiene al iniciar con un error sobre custom.standalone
No había ningún framework en ejecución cuando Lottery Creator arrancó, así que no tenía ningún puente que cargar. Mueve ensure es_extended, ensure qb-core o ensure qbx_core por encima de ensure qs-lottery-creator. No hay modo standalone.
Table 'qs_lottery_vendors' doesn't exist
La base de datos nunca se importó. Importa database/database.sql y reinicia — consulta Instalación → La base de datos.
"You do not have permission to do this." en /lotterycreator
El creador se abre para ESX admin y superadmin, para QBCore y Qbox admin o god o el ace command, y para los trabajos de Config.CreatorJobs. Para un trabajo, grade debe ser false o una lista — un número suelto como grade = 3 no se lee; escribe grade = { 3 } en su lugar.
Las máquinas son invisibles, o "Model … is not valid" al colocarlas
El prop no se está transmitiendo. Asegúrate de que ensure lottery_machine esté en tu server.cfg, y revisa cómo está escrito cualquier prop personalizado en Config.VendorProps. La máquina incluida es lotrrery_vending_machine, con doble r.
Guardar una máquina falla con "Unknown column 'for_sale'"
La tabla es de una versión anterior y la propiedad de jugadores está desactivada, así que las columnas nuevas nunca se añadieron. Ejecuta el ALTER TABLE de Instalación → Actualizar desde una versión anterior, o arranca una vez con Config.Ownership.enabled = true.
Todas las máquinas desaparecieron tras una actualización
database.sql se importó de nuevo. Empieza con DROP TABLE, así que se eliminaron las máquinas, sus dueños y sus ganancias; solo una copia de seguridad de la base de datos las recupera. Las actualizaciones nunca necesitan el archivo — el recurso añade las columnas nuevas por sí solo.
Máquinas y boletos#
Una máquina no tiene opción para comprar un boleto
Por orden de probabilidad:
Está a la venta y no tiene dueño — solo muestra Buy machine. Desmarca For sale en el creador para convertirla en una máquina del servidor.
Tiene dueño y está sin stock — su dueño tiene que reponerla.
Su Access Control la limita a trabajos o rangos que el jugador no tiene.
El recurso de target arranca después de Lottery Creator y no se detectó — mueve su
ensuremás arriba.El jugador está a más de
Config.VendorInteractDistance(2 metros).
Todas las máquinas dejaron de vender tras una actualización
Las máquinas de la versión anterior quedaron a la venta cuando se añadió la nueva columna for_sale, y una máquina a la venta no está en servicio. Desmarca For sale en cada una, o ejecuta:
UPDATE `qs_lottery_vendors` SET `for_sale` = 0 WHERE `owner` IS NULL;"You don't have enough money" con efectivo en mano
Cada máquina cobra de su propia cuenta de pago, que puede ser el banco o el dinero negro en lugar del efectivo. La cuenta aparece en la tarjeta de la máquina en el creador.
Usar el rasca no hace nada
Falta el ítem en las definiciones de tu inventario, o existe con un nombre distinto de Config.VendorDefaults.item. Solo ese ítem abre un rasca: una máquina cuyo Scratch Item es otra cosa entrega un ítem que no se puede rascar. Las definiciones para cada inventario están en Instalación → Añadir el ítem de rasca y gana.
El premio fue al efectivo, no al banco
Comportamiento correcto. Los premios siempre se pagan en la cuenta money, sea cual sea la cuenta con la que se pagó el boleto.
Los jugadores ganan más de lo que gastan
Con la tabla de premios incluida, un rasca paga unos $45 de media frente a un boleto de $30, porque cada una de las seis casillas paga por separado. Sube el peso de NO WIN o baja los premios — Uso → Equilibrarlo tiene la fórmula.
Máquinas con dueño#
"You can't afford this machine."
Las máquinas y las reposiciones se pagan desde Config.Ownership.account — el banco por defecto, no el efectivo. El mismo mensaje aparece cuando una reposición cuesta más de lo que tiene la cuenta.
"You already own the maximum of 2 machines."
El límite es Config.Ownership.maxPerPlayer. Súbelo, o configura 0 para no tener límite.
"Price must be between 5 and 1000."
Los dueños fijan los precios dentro de Config.Ownership.priceLimits. Amplía el rango ahí.
"The machine is already full."
Admite Config.Ownership.maxStock boletos (500 por defecto). Una reposición mayor que el espacio libre carga solo lo que cabe, y cobra solo eso.
El dueño no ve "Manage machine"
La lista de máquinas que posee un jugador se envía cuando entra y después de cada compra o venta, y pertenece al personaje que las compró. Tras cambiar de personaje sin reconectar, vuelve a entrar al servidor.
Un dueño desalojado perdió sus ganancias
Comportamiento correcto. Evict owner borra las ganancias no cobradas y el stock cargado sin reembolso, y lo mismo ocurre al eliminar la máquina en el creador. Pide al dueño que cobre antes, o que venda él mismo la máquina.
La app del teléfono#
La app dice que la lotería no está en ejecución
El teléfono busca un recurso iniciado llamado exactamente qs-lottery-creator. Una carpeta renombrada, o el recurso detenido, da esta respuesta. Si la app se abre pero nunca carga, comprueba que Config.Phone.enabled esté en true — si está desactivado, la lotería no responde al teléfono en absoluto.
No se pueden comprar boletos desde el teléfono
Config.Phone.allowRemotePurchase está desactivado, así que los jugadores tienen que ir a una máquina. Los boletos comprados allí se pueden rascar igualmente en la app.
El precio del teléfono no es el de la máquina
Comportamiento correcto. El teléfono vende a Config.VendorDefaults.price, desde Config.VendorDefaults.account, cobre lo que cobre cualquier máquina.
El historial, los ganadores recientes y el bote se reinician
Se guardan en la memoria del servidor, así que empiezan de nuevo tras reiniciar el servidor o el recurso. Las máquinas, los dueños, las ganancias y el stock están en la base de datos y no se ven afectados.
Códigos de error#
Las respuestas del servidor devuelven un código en lugar de una frase, para que tus scripts puedan reaccionar a ellos. La lista completa:
Código | Significado |
|---|---|
| Ninguna máquina tiene ese id, o se eliminó. |
| El framework no tiene ningún jugador cargado para esa source — normalmente aún está entrando. |
| La máquina está a la venta y no está en servicio. |
| La máquina con dueño no tiene boletos cargados. |
| El boleto no cupo en el inventario. |
| A la cuenta desde la que se paga el boleto le falta dinero. |
| La máquina ya tiene dueño, o no está a la venta. |
| El jugador ya posee |
| La cuenta de propiedad no puede pagar la máquina o la reposición. |
| No se pudo guardar la compra de la máquina. Se devolvió el dinero. |
| Solo el dueño puede hacer eso — o, para el precio del boleto, un administrador. |
| No hay ganancias pendientes. |
| La máquina está llena, o la reposición era de menos de un boleto. |
| El nuevo precio del boleto está fuera de |
|
|
| Alguien que no es administrador del framework usó un control de administrador. |
| La compra desde el teléfono está desactivada. |
| En el teléfono: no hay rasca que usar, o no hay rasca abierto que reclamar. |
| Desde el teléfono: no hay ningún recurso iniciado llamado |
¿Sigues atascado? Abre un ticket e incluye la consola del servidor desde el momento en que arranca Lottery Creator — con
Config.Debug = true— tu framework y su versión, y qué inventario y target usas. Una captura de la consola F8 ayuda con cualquier cosa relativa a la interfaz.



