Lo que falla con más frecuencia, qué significa realmente y qué hacer al respecto. La mayoría de estos casos se reducen a un paso de Instalación o a un valor de config/main.lua.
Instalación y acceso#
"You don't have permission to use /pingpongcreator."
El ace de Config.Creator.permission — command.pingpongcreator salvo que lo hayas cambiado — no te está concedido. Añádelo a un grupo al que pertenezcas y reinicia el servidor; los aces se leen cuando se ejecuta server.cfg.
add_ace group.admin command.pingpongcreator allow
add_principal identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx group.adminSi renombraste el permiso, el ace que concedas debe coincidir exactamente con Config.Creator.permission.
qs-pingpong no inicia, y la consola indica una dependencia que falta
Ping Pong necesita OneSync, ox_lib, oxmysql y pingpong-objects en ejecución antes que él. Comprueba que pingpong-objects está en tu carpeta de recursos con exactamente ese nombre, que cada dependencia se inicia con ensure encima de qs-pingpong y que OneSync está activado en el servidor.
Las mesas desaparecen tras un reinicio, o la consola muestra "Table … qs_pingpong_tables doesn't exist"
No se importó la base de datos. Ping Pong no crea sus tablas: importa database/sql.sql y reinicia. Las mesas colocadas antes de eso nunca se guardaron y hay que volver a colocarlas.
"Server framework loaded: standalone" en un servidor ESX, QBCore o Qbox
El framework se inició después de Ping Pong, así que no estaba ahí para detectarlo: las apuestas no mueven dinero y los nombres salen de FiveM. Mueve el ensure del framework encima de qs-pingpong, o fuerza el modo con Config.Framework = 'esx' (o 'qb').
"Missing locale key" o "Locale file not found" en la consola
A tu traducción le faltan algunas claves, o Config.Locale indica un archivo que no existe. Ambos casos son inofensivos (el inglés rellena los huecos), pero comprueba que el código es uno de los 41 de locales/ y copia las claves que falten desde en.json.
Aparece una gran esfera translúcida alrededor de una mesa durante las partidas
Es la zona de espectadores, que se dibuja porque Config.Debug está activado — viene activado por defecto. Pon Config.Debug = false y reinicia.
Mesas#
El aviso [E] - Ping Pong no aparece
Una de estas tres cosas:
Config.UseTarget = true— el aviso se reemplaza por opciones de ox_target.Estás a más de 2.5 m del centro de la mesa (
Config.InteractDistance). Colócate en un extremo o a un lado.Ya estás en una partida.
Una mesa no aparece
Las mesas solo se generan a menos de 30 m (Config.StreamDistance). Si estás cerca y sigue sin aparecer, su modelo no se pudo cargar; la consola F8 dice Model load timeout. Revisa Config.Creator.model si lo cambiaste.
"Model could not be loaded. Check Config.Creator.models."
El modo de colocación no pudo cargar Config.Creator.model en 3 segundos: el nombre es incorrecto, o el modelo no forma parte del juego ni de un recurso en streaming. Vuelve a poner `prop_table_tennis` para probar.
La mesa flota o se hunde en el suelo
La mira de colocación cae en la primera superficie que encuentra; una alfombra u otro prop cuentan. Abre la mesa en el creador, pulsa Reposition, apunta al suelo despejado y corrígela con la rueda del ratón, 5 cm por paso.
El precio o los interruptores de modo de una mesa no tienen efecto
Se guardan con la mesa pero no se aplican en esta versión: las partidas son gratis en todas las mesas y se ofrecen todos los modos de Config.Modes. Para quitar un modo, borra su línea de Config.Modes.
Config.AutoDetect = true no hace nada
Las mesas de los mapas no se detectan en esta versión; Config.AutoDetect y Config.TableModel no se usan. Coloca cada mesa con /pingpongcreator — encima de la mesa propia del mapa si quieres.
Jugar#
"You don't have enough money. You need $…"
La apuesta es mayor que el efectivo del jugador: las apuestas usan efectivo, no el banco, salvo que hayas cambiado las funciones de dinero (Integraciones). Contra el bot aparece el mismo mensaje cuando la apuesta está por debajo de Config.Betting.min — el control deslizante empieza en No Bet, así que una apuesta pequeña como $50 se rechaza con el mínimo por defecto de $100.
"No players nearby"
No hay nadie más a menos de 15 m de la mesa, medidos desde la mesa, no desde ti (Config.NearbyPlayerRadius).
"No player selected"
Se confirmaron los ajustes de la partida para un duelo sin elegir antes un oponente. Es lo que hace la opción de ox_target Play vs Player en esta versión. Desafía desde el menú [E] en su lugar, que muestra primero la lista de jugadores — con Config.UseTarget = false.
"This player already has a pending challenge" / "You already sent a challenge"
Cada jugador puede tener un desafío enviado y uno en espera a la vez. Espera la respuesta, o a que la invitación caduque a los 30 segundos.
"This table is already in use."
Se está jugando un duelo en esa mesa, o se acaba de aceptar un desafío para ella. Espera a que termine, o usa otra mesa.
La raqueta atraviesa la pelota
No podía golpear en ese momento. La raqueta se ve tenue (y no puede golpear) durante medio segundo al inicio de cada punto y hasta que la apartas de la pelota; después de un golpe espera 350 ms (Config.Physics.hitCooldown); y solo golpea una pelota que viene hacia ti. Echa la raqueta hacia atrás y vuelve a encontrar la pelota.
Las devoluciones son lentas, o siempre van al mismo sitio
La velocidad y la dirección dependen de cómo se mueve el ratón cuando la raqueta toca la pelota. Una raqueta quieta solo bloquea la pelota de vuelta; da un golpe rápido hacia delante para darle velocidad y barre hacia un lado para colocarla.
La pelota da tirones para el segundo jugador en un duelo
El jugador que aceptó el desafío sigue la pelota de quien desafió, así que un ping alto se ve como pequeñas correcciones. Tres valores lo ajustan:
Config.MpTickMs = 16 -- ms between updates; lower = more updates
Config.MpCorrection = 0.35 -- 0-1; higher follows the challenger's ball more tightly
Config.MpSnapDistance = 0.5 -- metres of drift before the ball jumps into placeUn duelo no cambió la clasificación
Solo puntúan los duelos que terminan con un ganador después de al menos 15 segundos (Config.Leaderboard.minMatchDuration). Un duelo que alguien abandonó, una partida contra el bot o Config.Leaderboard.enabled = false nunca puntúan.
Las apuestas no mueven dinero
Ping Pong se está ejecutando en standalone; la consola dice Server framework loaded: standalone. Inicia tu framework antes que él, como se indica arriba.
Mensajes#
Todos los mensajes salen del archivo de idioma de Config.Locale. Los que más preguntan los jugadores:
Clave | Mensaje | Significado |
|---|---|---|
| You don't have enough money. You need $… | No hay suficiente efectivo para la apuesta, o, contra el bot, una apuesta fuera de |
| This table is already in use. | Hay un duelo en curso en esa mesa. |
| Your opponent has left the match. | Se fue o se desconectó. Si había apuesta, te quedas con el bote. |
| No players nearby | No hay nadie a menos de 15 m de la mesa. |
| No player selected | Se confirmaron los ajustes del duelo sin elegir oponente. |
| This player already has a pending challenge | Otra persona lo desafió primero. |
| You already sent a challenge | Tu desafío anterior aún no ha recibido respuesta. |
| The opponent doesn't have enough money for this bet | Se comprueba al enviar el desafío. |
| The challenger no longer has enough money | Se vuelve a comprobar al aceptar el desafío; el desafío se descarta. |
| … declined your challenge | Pulsó Decline. |
| Challenge expired | Pasaron 30 segundos sin respuesta. |
| Challenge was cancelled | El jugador al que desafiaste se desconectó antes de responder. |
| You don't have permission to use /pingpongcreator. | El ace del creador no te está concedido. |
| Model could not be loaded. Check Config.Creator.models. |
|
¿Sigues atascado? Abre un ticket e incluye las líneas
[qs-pingpong:…]de la consola de tu servidor, tu consola F8 y tuconfig/main.lua.



