Antes de empezar#
Antes de instalar Billiards (Pool), asegúrate de que tu servidor cumple los requisitos mínimos. Dos recursos y OneSync son obligatorios; todo lo demás es opcional y se detecta solo.
Requisito | Estado | Notas |
|---|---|---|
| Obligatorio | Acceso a la base de datos. La tabla se instala sola. |
| Obligatorio | Callbacks, el menú Pool y las notificaciones por defecto. |
OneSync | Obligatorio | El recurso no se inicia sin él. txAdmin lo activa por defecto. |
Framework | Opcional | ESX, QBCore o Qbox — se detecta automáticamente. Sin uno, funciona en modo standalone: todas las mesas son gratis y las apuestas no se cobran ni se pagan. |
| Opcional | Notificaciones de Quasar Interface en lugar de las de ox_lib. |
| Opcional | Quasar Text UI para el aviso [E] sobre la mesa, en lugar del texto flotante integrado. |
Todo lo específico del framework o de terceros está detrás de un pequeño archivo puente sin cifrar, y el recurso elige el adecuado mirando lo que ya está en ejecución:
Capa | Qué se busca |
|---|---|
Framework |
|
Notificaciones |
|
Aviso de la mesa |
|
Cada integración opcional se degrada en silencio. Si falta un recurso, esa parte recurre a la versión integrada; nada da error. Integraciones tiene los detalles y cómo conectar las tuyas.
github.comReleases · overextended/oxmysqlMySQL resource for FXServer.github.comReleases · overextended/ox_libA FiveM resource and script library for Lua and JS.Descargar Billiards#
Tras comprar Billiards (Pool), el recurso se vincula automáticamente a tu cuenta de CFX Portal.
Inicia sesión en el CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Billiards.
Tras extraer la descarga, deberías tener la siguiente carpeta:
qs-billiards/
├── config/ -- config.lua, what you may edit
├── client/custom/ -- notifications, the table prompt and the menu (editable)
├── server/custom/ -- money, permission and names per framework (editable)
├── locales/ -- 41 languages (editable)
├── database/ -- sql.sql, optional
└── web/ -- the in-game interfaceMantén el nombre de la carpeta
qs-billiards. Las actualizaciones se entregan con ese nombre, la comprobación de versión la busca por ese nombre, y todas las rutas y comandos de este manual se refieren a él. Soloconfig/,client/custom/,server/custom/ylocales/se pueden editar; el resto está protegido por el escrow de Cfx.
Instalar el recurso#
Mueve la carpeta qs-billiards al directorio resources de tu servidor. Puede estar en cualquier parte dentro de él, incluida una carpeta de categoría:
resources/
└── [qs]/
└── qs-billiards/Una vez copiada, abre tu server.cfg y asegúrate de que cada dependencia —y todo lo que deba detectar— se inicie antes de Billiards:
# OneSync must be on. txAdmin does this for you; on a plain server.cfg:
set onesync on
ensure oxmysql
ensure ox_lib
# Framework
ensure es_extended
# ensure qb-core
# ensure qbx_core
# Optional
ensure qs-interface
ensure qs-textui
ensure qs-billiardsEl orden de carga importa. El framework se detecta en el momento en que se inicia Billiards, y qs-textui en el momento en que un jugador lo carga, así que un framework que se inicia después no se encuentra y el script funciona en modo standalone: mesas gratis, sin cobrar dinero.
La base de datos#
No hay ningún archivo SQL que importar. Cada vez que se inicia, Billiards se asegura de que su única tabla, qs_pool_tables, exista y la crea si no existe. database/sql.sql contiene la misma sentencia para quien prefiera crearla a mano.
Columna | Contiene |
|---|---|
| El id de la mesa, calculado a partir de su posición; por ejemplo, |
| Posición y orientación, guardadas como JSON. |
| El hash del modelo del prop de la mesa. |
| El nombre que se muestra en el creador. |
| La tarifa de entrada. |
|
|
| Los modos que se ofrecen en esta mesa, como una lista JSON de |
Solo las mesas colocadas con el creador —o editadas en él— obtienen una fila. Las mesas escritas en
Config.Tablesy las que provienen de un mapa se registran de nuevo cada vez que un jugador entra, así que no la necesitan. Las partidas nunca se escriben en la base de datos: viven en la memoria del servidor mientras se juegan.
Dar acceso al creador#
El creador es donde se colocan, se ponen precio y se eliminan las mesas, así que /poolcreator necesita el permiso ACE command.poolcreator. El servidor lo vuelve a comprobar antes de guardar, mover o eliminar una mesa, así que nadie sin él puede cambiar una mesa, envíe lo que envíe su cliente. Cualquiera de estas vías lo concede:
La vía habitual. Da el permiso a tu grupo de admins y pon a tu staff en ese grupo:
add_ace group.admin command.poolcreator allow
add_principal identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx group.adminSi tu server.cfg ya tiene add_ace group.admin command allow —como la mayoría de recetas de txAdmin—, tus admins ya lo tienen.
Para un único constructor de mapas que no deba ser admin:
add_ace identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx command.poolcreator allow¿Prefieres un nombre de permiso propio? Cámbialo en la configuración y concede ese en su lugar:
-- config/config.lua
Config.Creator = {
permission = 'qs.poolcreator',
-- models = { ... },
}add_ace group.admin qs.poolcreator allowReinicia el servidor después de cambiar los ACE. El permiso solo cubre el creador: los comandos de calibración se activan con Config.Debug en su lugar; consulta Comandos y controles.
Configurar el recurso#
Todo está en un archivo, config/config.lua. Se lee cuando se inicia el recurso, así que reinicia qs-billiards después de cambiarlo.
Ajuste | Controla |
|---|---|
| El idioma de las notificaciones y la interfaz. Uno de 41 códigos. |
| Se detecta solo. Establece |
| A qué distancia aparece el aviso [E] (2 m desde el centro del paño) y a qué distancia se renderizan las mesas, las bolas y los tiros de otros jugadores (60 m). |
| La tarifa de entrada para mesas sin precio propio: mesas de la configuración y mesas del mapa. |
| El área en la que debe permanecer un jugador mientras juega: un círculo de 8 m alrededor de la mesa, dibujado en el suelo. Salir de él termina la partida. |
| Qué modos aparecen en Match Settings, cuántos jugadores admite cada uno y la puntuación a la que se juega Straight Pool. |
| El control deslizante de apuestas (de 0 a 5000 en pasos de 100) y lo que paga una victoria contra el bot en cada dificultad. |
| Los modelos de ped del bot, si las apuestas se pagan en efectivo o desde el banco, las dificultades disponibles y lo bien que juega cada una. |
| Las mesas escritas en la configuración, y si las mesas de billar que ya están en tus mapas se detectan solas. |
| El permiso ACE y los modelos de mesa que se ofrecen en el creador. |
| Las teclas usadas en la mesa, como índices de controles de FiveM. |
| La física de las bolas, dónde está el paño en cada modelo de mesa, la postura del jugador y el taco. Ajustado para las mesas incluidas. |
| Oculta los tacos, triángulos y bolas blancas sueltos del mapa a menos de 1,6 m de cada mesa. |
| El dibujado de depuración y los comandos de calibración. Mantenlo en |
Los valores que conviene revisar primero:
Config.Locale = 'en' -- en · es · fr · de · pt · and 36 more
Config.InteractDistance = 2.0 -- how close the [E] prompt appears
Config.PlayPrice = 0 -- fee for config and map tables, 0 = free
Config.LeaveZone = {
enabled = true,
shape = 'circle', -- 'circle' or 'square'
distance = 8.0, -- walk further than this and the game ends
draw = true, -- draw the boundary on the floor
}
Config.Modes = {
eightball = { enabled = true, players = 2, turnBased = true },
nineball = { enabled = true, players = 4, turnBased = true },
straight = { enabled = true, players = 4, turnBased = true, target = 25 },
practice = { enabled = true, players = 1, turnBased = false },
}
Config.Betting = { enabled = true, min = 0, max = 5000, step = 100 }
Config.BotRewards = { difficulty = { easy = 0.5, normal = 1.0, hard = 2.0 } }
Config.Bot = {
pedModels = { `a_m_y_stbla_01`, `a_m_m_business_01`, `a_m_y_hipster_01`, `s_m_y_dealer_01` },
betMethod = 'money', -- bets in 'money' (cash) or 'bank'
}
Config.Debug = false
Config.Physics,Config.Surfaces,Config.PedyConfig.Cueestán ajustados para las dos mesas que incluye el script. No los toques salvo que añadas un modelo de mesa o la pose del jugador se vea mal en tus peds; los comandos de calibración de Uso imprimen los nuevos valores por ti.
Verificar la instalación#
Tras completar la instalación, reinicia tu servidor y busca estas líneas en la consola:
[qs-billiards] Loaded 0 table(s) from SQL.
You are using the latest version of qs-billiards!0 es lo correcto en un servidor nuevo: aún no se ha colocado ninguna mesa. Si la primera línea nunca aparece, oxmysql no está conectado o se inicia después de Billiards. La segunda te indica si hay una actualización disponible.
Después, entra en tu servidor y completa el primer ciclo:
Coloca una mesa
Escribe
/poolcreator, pulsa +, ponle un nombre a la mesa, elige un modelo y pulsa Select en Placement. Apunta al suelo, gírala con Z y X, y haz clic izquierdo. De vuelta en el creador, pulsa Save Table. La mesa aparece donde apuntaste.Juega contra el bot
Acércate a la mesa hasta que aparezca [E] - Set up a game of pool, pulsa E y elige Play vs Bot. Elige 8-Ball y Normal, deja la apuesta en No Bet y pulsa Ready. Un ped ocupa su lugar en el extremo de la mesa.
Haz el saque
Empiezas con bola en mano: mueve la bola blanca con W A S D y pulsa E para colocarla. Gira el taco con A y D, mantén pulsado el botón derecho del ratón para cargar potencia y suéltalo para tirar.
A partir de aquí, Uso cubre el creador por completo, las demás formas de añadir mesas, las partidas entre jugadores, las apuestas y las reglas de cada modo.



