Cómo funcionan las integraciones#
El núcleo de Guitar Pro nunca se comunica directamente con tu framework, tu target ni tu recurso de notificaciones. Cada uno de ellos está detrás de un pequeño archivo sin cifrar en custom/ o client/custom/, y el recurso elige el correcto según lo que ya se está ejecutando:
Capa | Compatible | Sin ella |
|---|---|---|
Framework | es_extended · qb-core · qbx_core | Standalone: las máquinas son gratuitas, el progreso se guarda por licencia de FiveM y los nombres se toman del nombre de jugador de FiveM. |
Target | ox_target, con | Un aviso flotante [E] en cada máquina, la opción predeterminada. |
Notificaciones | qs-interface | Notificaciones de ox_lib. |
Aviso 3D | qs-textui | Una etiqueta de texto dibujada sobre la máquina. |
HUD | qs-interface | Solo se ocultan el HUD y el radar propios del juego en la máquina. |
Clima y hora | Renewed-Weathersync · qb-weathersync · vSync · av_weather · cd_easytime | El reloj se sobrescribe directamente para el jugador que toca. |
Arcades | qs-arcades | Las máquinas se colocan solo con el creador. |
No hay integración de inventario, ítems ni teléfono: nada en Guitar Pro es un ítem. Cada integración opcional se degrada en silencio: si falta un recurso, su parte vuelve al comportamiento integrado y no se produce ningún error.
Frameworks#
El framework se detecta una sola vez, al iniciar Guitar Pro, comprobando si ya se inició es_extended, qb-core o qbx_core. Qbox funciona a través del puente de QBCore. El framework solo se usa para tres cosas: quién es el jugador, cuál es su nombre y cobrar el precio de la partida:
Framework | Clave del jugador | Nombre mostrado | Dinero |
|---|---|---|---|
ESX | El identificador de ESX | El nombre del personaje | Efectivo o la cuenta bancaria |
QBCore / Qbox | El citizen id | Nombre y apellido |
|
Standalone | La licencia de FiveM | El nombre de jugador de FiveM | Ninguno: todas las máquinas son gratuitas |
Las puntuaciones, niveles, puntos y guitarras se guardan con la clave del jugador, así que en un servidor multipersonaje cada personaje tiene su propio progreso. Si la detección elige el framework equivocado, fuérzalo en config/main.lua:
Config.Framework = 'qb' -- 'esx', 'qb' or 'standalone'Otro framework#
Cada framework es una carpeta en custom/ con un client.lua y un server.lua. Para admitir uno que no está en la lista, copia custom/standalone/ a custom/myframework/, completa las funciones de servidor para tu framework y configura Config.Framework = 'myframework':
-- custom/myframework/server.lua
local framework = {}
function framework:getIdentifier(source) end -- a stable id for this player
function framework:getName(source) end -- the name shown on boards
function framework:getMoney(source, method) end -- method: 'money' (cash) or 'bank'
function framework:removeMoney(source, amount, method) end
function framework:addMoney(source, amount, method) end
return frameworkInteractuar con la máquina#
De forma predeterminada aparece un aviso flotante [E] - Guitar Pro a menos de 2.2 m de una máquina, dibujado por qs-textui cuando está en ejecución. Para usar ox_target en su lugar:
Config.UseTarget = trueLa opción se añade al propio modelo de la máquina, así que todas las máquinas — colocadas, configuradas o gestionadas — la tienen. El registro está en client/custom/target.lua; para qb-target u otro target, cambia la llamada addModel allí y conserva la línea game:join(m) que ejecuta.
Notificaciones y el HUD#
Cada mensaje — dinero insuficiente, el compañero se fue, un nuevo récord del servidor — pasa por una sola función en client/custom/main.lua. Usa qs-interface cuando está en ejecución y ox_lib en caso contrario. Para usar tu propio recurso de notificaciones, reemplaza su contenido:
-- client/custom/main.lua
function Notification(msg, type) -- type: 'info', 'success' or 'error'
exports['okokNotify']:Alert('Guitar Pro', msg, 4000, type)
endMientras un jugador está en una máquina, el HUD y el radar del juego se ocultan, y con ellos el HUD de qs-interface; ambos vuelven cuando se va. Para otro HUD, añade sus llamadas de ocultar y mostrar a SetCustomHud(visible) en el mismo archivo. PlayGameSound y DrawText3D también están ahí.
Sincronización de clima y hora#
El escenario cinemático fuerza la noche para el jugador que toca, para que las luces se vean bien. Un script de clima que siga imponiendo la hora del servidor lucharía contra eso, así que Guitar Pro pausa los conocidos para ese jugador mientras toca y les devuelve el control después: Renewed-Weathersync, qb-weathersync, vSync, av_weather y cd_easytime. Solo cambia la pantalla del jugador que toca; el resto del servidor mantiene su clima y su hora.
Para otro script de clima, añade sus eventos de pausa y reanudación a applyStageTime en client/custom/main.lua. Para no tocar la hora en absoluto, configura Config.Stage.forceNight = false.
qs-arcades#
qs-arcades coloca máquinas de Guitar Pro dentro de sus propios arcades como máquinas gestionadas. Se comportan como cualquier otra máquina — dos pads, todos los modos, puntuaciones y progresión — con tres diferencias:
Aquí se juega gratis; el arcade cobra la entrada, si es que cobra algo.
Cada jugador solo ve las máquinas del arcade en el que está. Todos los arcades comparten un mismo interior, así que dos arcades distintos pueden tener una máquina en las mismas coordenadas.
Nunca se escriben en la base de datos ni aparecen en el creador. qs-arcades las vuelve a crear en cada inicio y desaparecen cuando se detiene.
No hay nada que configurar: inicia qs-arcades después de Guitar Pro. Los exports que usa se enumeran en Comandos y exports.
Idiomas#
Se incluyen 41 traducciones en locales/: ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk, ur, vi y zh. Elige una con Config.Locale.
Los archivos de idioma se leen al iniciar el recurso, así que editar uno solo requiere un reinicio. Para añadir un idioma, copia locales/en.json, traduce los valores y nombra el archivo con su código. Cualquier clave que falte en una traducción vuelve al inglés, con una advertencia en consola que la nombra.
Dos cosas más allá del texto de la interfaz se pueden traducir:
Los nombres de los escenarios van en
stages.<id>y sustituyen alabelenConfig.Stage.stages.Los nombres de las setlists van de
select.tier_1aselect.tier_7. La lista se lee hacia arriba hasta que falta un número, así que añadirtier_8y siguientes funciona sin cambiar código, hasta 60. Con más sets que nombres, los nombres se repiten y se numeran — OPENING LICKS 2 y así sucesivamente.



