Antes de empezar#
Antes de instalar Tutorial Creator, asegúrate de que tu servidor cumple los requisitos mínimos. Solo es obligatorio un recurso de base de datos; todo lo demás es opcional y se detecta solo.
Requisito | Estado | Notas |
|---|---|---|
oxmysql o mysql-async | Obligatorio | Guarda los tutoriales que creas y quién los ha visto ya. Las tablas se crean solas. |
Framework | Opcional | QBCore, Qbox, ESX o qs-core — detección automática. En modo standalone funciona con permisos ace y la licencia del jugador. |
Notificaciones | Opcional |
|
Pantallas de personaje y spawn | Opcional |
|
Cada capa se busca en este orden, y gana la primera que se encuentre en ejecución:
Capa | Orden de detección |
|---|---|
Framework |
|
Base de datos |
|
Notificaciones |
|
Nada de esto necesita ox_lib. Cada línea específica del framework vive en la carpeta abierta custom/, así que si falta una integración, solo esa parte funciona en modo standalone.
Descargar Tutorial Creator#
Después de comprar Tutorial Creator, el recurso se vincula automáticamente a tu cuenta de CFX Portal.
Inicia sesión en CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Tutorial Creator.
Después de extraer la descarga, deberías tener la siguiente carpeta:
qs-tutorial/
├── shared/config.lua -- the config
├── custom/ -- framework layer and notifications (yours to edit)
├── presets/ -- the eight bundled tutorials, as JSON
├── locales/ -- 41 translations
├── images/ -- portraits, logos, slides
├── videos/ -- WebM clips
├── audio/ -- music and sound
├── database/sql.sql -- the schema, if you prefer to import it by hand
└── client/ server/ web/ -- the resource itselfMantén el nombre de la carpeta
qs-tutorial. Cada export y evento que llaman tus otros scripts está escrito comoexports['qs-tutorial']yqs-tutorial:…, y los scripts de multipersonaje buscan exactamente ese nombre.
Instalar el recurso#
Mueve la carpeta qs-tutorial al directorio de recursos de tu servidor. Puede estar en cualquier lugar dentro de él, incluida una carpeta de categoría:
resources/
└── [qs]/
└── qs-tutorial/Una vez copiada, abre tu server.cfg y asegúrate de que la base de datos, tu framework y tus pantallas de personaje se inician antes de Tutorial Creator:
ensure oxmysql
# Framework (one of them)
ensure qb-core
# ensure qbx_core
# ensure es_extended
# ensure qs-core
# Optional
ensure ox_lib
ensure qb-multicharacter
ensure qb-spawn
ensure qs-tutorialEl orden de carga importa para la base de datos: el driver se busca cuando el recurso se inicia, y si en ese momento no está en ejecución ni oxmysql ni mysql-async, no se puede guardar nada. La detección del framework es más tolerante — con Config.Framework = 'auto', un framework que se inicia tarde se detecta unos segundos después — pero iniciarlo primero sigue siendo la configuración limpia.
La base de datos#
No tienes que importar nada. En cada inicio, Tutorial Creator ejecuta CREATE TABLE IF NOT EXISTS para sus tres tablas. database/sql.sql contiene las mismas sentencias en SQL plano — pégalo en HeidiSQL o phpMyAdmin si tu usuario de base de datos no tiene permiso para crear tablas.
Tabla | Contiene |
|---|---|
| Cada tutorial que guardas en el creador, una fila por tutorial. |
| Qué tutorial está activo. |
| Quién ha visto qué: una fila por personaje y tutorial, con el último paso alcanzado y si se terminó. |
Los ocho tutoriales incluidos no están en la base de datos. Vienen en
presets/y dentro de la interfaz, así que no hay nada que precargar y la superposición se dibuja correctamente incluso antes de que el cliente haya hablado con el servidor. Las tablas solo contienen lo que creas tú.
Quién puede abrir el creador#
Cualquiera puede ver el tutorial, pero /tutorialcreator — donde se crean los tutoriales y se activan — es para el staff. Cualquiera de estas opciones lo concede:
Funciona en cualquier servidor, con o sin framework. Añade el ace a un grupo y pon a tu staff en ese grupo en server.cfg:
add_ace group.admin command.tutorialcreator allow
add_principal identifier.license:your_license_here group.adminEl nombre del ace es Config.Creator.permission en shared/config.lua.
Cualquier grupo listado en Config.Creator.adminGroups — admin, superadmin y god por defecto:
Config.Creator = {
command = 'tutorialcreator',
permission = 'command.tutorialcreator',
adminGroups = { 'admin', 'superadmin', 'god' },
}ESX lee el grupo del jugador, QBCore y Qbox usan la comprobación de permisos propia del core, y qs-core lee el grupo o permiso del jugador. La comprobación está en custom/<framework>/server.lua si necesitas que funcione de otra forma.
El permiso se comprueba una vez por sesión, la primera vez que el jugador escribe el comando. Alguien a quien se le da acceso mientras está conectado debe reconectarse para que funcione.
Configurar el recurso#
La configuración es corta a propósito — el tutorial en sí, sus cámaras, su aspecto y su comportamiento viven en el creador. Lo que puedes abrir y editar:
Archivo | Contenido |
|---|---|
| Idioma, framework, los tres comandos, inicio automático, streaming de cámara, tu hook del HUD, datos del servidor y comandos bloqueados. |
| Qué adaptador de framework se carga, cómo se muestran las notificaciones y la comprobación del grupo de administradores. |
| Un pequeño adaptador por framework: quién es el jugador y a qué grupo pertenece. |
| Los ocho tutoriales incluidos. Es más fácil cambiarlos en el creador, donde al guardar se conserva tu copia. |
| Las traducciones. |
| Tus archivos multimedia. Todo lo que pongas aquí aparece en los selectores del creador. |
Los valores que conviene revisar primero:
Config.Language = 'en' -- any file in locales/
Config.Framework = 'auto' -- 'auto' | 'qs' | 'esx' | 'qb' | 'standalone'
Config.Tutorial = {
command = 'tutorial', -- plays the live tutorial on demand
resetCommand = 'resettutorial', -- forgets what this character has watched
autoStart = true, -- play it by itself on first spawn
autoStartDelay = 5000, -- ms after spawn (and after the spawn screens close)
defaultTutorial = 'welcome', -- used until you set one live
updateInterval = 250, -- ms between player data pushes while it plays
enableControlsWhenFocus = false, -- let the game keep reading keys during it
}
Config.Cinematic = {
focusStreaming = true, -- load the world at the camera. Leave this on.
teleportPlayer = false, -- also move the ped to each shot. Rarely needed.
streamWait = 900, -- ms a shot may spend loading between steps
maxStreamWait = 8000, -- ms for the first shot, hidden by the fade
restoreWeather = true, -- put the weather back when it ends
restoreTime = true, -- put the clock back when it ends
}
Config.Server = { -- read by text elements bound to these values
name = 'Quasar Roleplay',
discord = 'discord.gg/quasar-store',
website = 'quasar-store.com',
}
Config.MaxTutorials = 45 -- how many may be saved; the bundled ones do not count
Config.Debug = false -- print what the resource is doingSi un tutorial se reproduce solo una vez, se puede saltar o congela al jugador se define por tutorial, en la pestaña Settings del creador — no en este archivo.
Config.HudyConfig.Actionsse explican en Integraciones y Uso.
Verificar la instalación#
Después de completar la instalación, reinicia tu servidor y lee la consola. Dos líneas confirman las capas que eligió:
[qs-tutorial] framework loaded: qb
[qs-tutorial] storage driver: oxmysqlframework loaded: standalone significa que no se encontró ningún framework — correcto en un servidor standalone, un problema de orden de carga en otro caso. Un no database resource found en rojo significa que no se guardará nada; consulta Errores comunes.
Luego entra a tu servidor y recorre el primer ciclo:
Míralo como jugador
Un personaje nuevo recibe el tutorial activo unos segundos después de aparecer — Welcome to the city hasta que elijas otro. En un personaje que ya lo ha visto,
/tutoriallo reproduce bajo demanda.Abre el creador
/tutorialcreatorse abre en el selector: los ocho tutoriales incluidos, todo lo que hayas guardado y Start from nothing.Hazlo tuyo y actívalo
Elige uno, cambia una línea de narración, pulsa Save y luego Set live. Todos los jugadores conectados tienen la nueva versión al instante.
A partir de aquí nada necesita reinicio. Cada cámara, línea, elemento y ajuste se cambia en el creador y se envía a los jugadores en cuanto se guarda. La única excepción son los archivos multimedia: los que añadas a
images/,videos/oaudio/necesitan reiniciar el recurso para poder servirse.



