Personalización
Casi todo lo relacionado con una misión (quién la da, qué dice, qué pasa después) se crea en el editor y se guarda en tu base de datos. Los archivos son para las pocas cosas que son iguales en todas las misiones.
Qué archivo decide qué
Sección titulada «Qué archivo decide qué»| Archivo | Qué decide | ¿Abierto? |
|---|---|---|
config.lua | Framework, idioma, cómo hablan los jugadores con los NPCs, color del diálogo, /cancelquest, capturas de pantalla | Sí |
bridge/bridge_server.lua | Dinero, ítems, datos del jugador, callbacks y la comprobación de permisos | Sí |
bridge/bridge_client.lua | Notificaciones, texto de ayuda, datos del jugador y cómo se revive a un jugador | Sí |
locales/*.lua | Todo el texto: editor, ventana de diálogo, notificaciones, logs del webhook | Sí |
install.sql | Las ocho tablas, importadas una vez | Sí |
web/ | El editor, la ventana de diálogo, el minijuego y la barra de progreso (HTML, CSS, JS) | Legible |
client/, server/ | El motor de misiones | Cifrado |
client/game_data/*.lua | Las listas detrás de los selectores del editor: peds, coches, huesos, animaciones, partículas, sonidos, efectos de pantalla | Cifrado |
config.lua
Sección titulada «config.lua»General
Sección titulada «General»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.Framework | Con qué framework se comunica: 'esx' o 'qbcore'. No se detecta solo. En QBox, usa 'qbcore': QBox ejecuta los recursos de QBCore a través de su capa de compatibilidad | 'esx' |
Config.Locale | El idioma del editor, la ventana de diálogo y las notificaciones. Consulta Idiomas | 'en' |
Config.Debug | Está en el archivo; esta versión no muestra nada extra con él | true |
Hablar con los NPCs de misión
Sección titulada «Hablar con los NPCs de misión»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.InteractionType | 'ox_target', 'qb-target' o 'drawtext' (texto 3D y una tecla) | 'ox_target' |
Config.InteractionDistance | A cuántos metros debe estar un jugador para hablar con un NPC | 2.5 |
Config.InteractionKey | El control usado con 'drawtext' y por el nodo Interact in Area. 38 es E | 38 |
Config.ThemeColor | Color de acento de la ventana de diálogo: blue, pink, yellow, red, green, purple, orange, cyan, white o black | "purple" |
Cancelar una misión
Sección titulada «Cancelar una misión»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.EnableCancelQuest | Registra un comando que permite a un jugador abandonar su misión activa | true |
Config.CancelQuestCommand | El nombre del comando, sin la barra | "cancelquest" |
Al cancelar se borra el progreso guardado del jugador en esa misión y se elimina lo que generó.
Capturas de pantalla
Sección titulada «Capturas de pantalla»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.ScreenshotBasic | Permite que el nodo Send Webhook adjunte una captura cuando su casilla de captura está marcada. Necesita screenshot-basic en marcha | true |
Comandos y permisos
Sección titulada «Comandos y permisos»| Comando | Quién puede usarlo | Qué hace |
|---|---|---|
/questcreator | Cualquiera con el ACE mic_questcreator.open | Abre el Quest & Event Creator |
/cancelquest | Todos los jugadores, mientras Config.EnableCancelQuest esté activado | Abandona la misión activa. Se renombra con Config.CancelQuestCommand |
El mismo permiso protege todo lo que el editor guarda, borra, importa y exporta: la comprobación se hace en el servidor, no solo al abrir el menú. Concédelo con una línea add_ace a un identificador o a un grupo; la comprobación en sí está en Bridge.Server.IsPlayerAllowed en bridge/bridge_server.lua, por si prefieres vincularla a tu propio sistema de administración.
Idiomas
Sección titulada «Idiomas»En locales/ vienen trece archivos: en, es, fr, de, it, pt, ru, ja, ko, zh-CN, ar, nl y cs. Pon en Config.Locale el nombre del archivo sin .lua.
Añadir un idioma:
- Copia
locales/en.luay nombra la copia con el código de tu idioma, por ejemplolocales/pl.lua. - Dentro, cambia el nombre de la tabla de
'en'a tu código y traduce el texto de la derecha de cada línea. No toques las claves de la izquierda ni ningún%s. - Añade tu archivo a
shared_scriptsenfxmanifest.lua, con los demás archivos de idioma y por encima deconfig.lua. - Pon
Config.Localecon tu código, y luego hazrefreshy reinicia.
Una clave que falte en tu archivo aparece en el juego como Translation [xx][key] does not exist, lo que te dice exactamente qué línea añadir.
Lo que dicen los NPCs, los títulos de las misiones y los mensajes de las notificaciones no están en los archivos de idioma: los escribes tú en el editor, en el idioma que quieras.
El bridge
Sección titulada «El bridge»Hay dos archivos abiertos entre el motor de misiones y el resto de tu servidor.
bridge/bridge_server.lua
| Función | Para qué sirve |
|---|---|
Bridge.Server.Initialize | Obtiene fmLib y el objeto de ESX o QBCore al arrancar el recurso |
Bridge.Server.RegisterServerCallback | Registra callbacks a través de ESX o QBCore |
Bridge.Server.GetPlayer, GetPlayerParams | Un jugador a través de fmLib, y su identificador, nombre y trabajo |
Bridge.Server.GetMoney, AddMoney, RemoveMoney | Dinero, a través de fmLib |
Bridge.Server.GetItem, AddItem, RemoveItem | Ítems, a través de fmLib, sea cual sea el inventario con el que trabaje fmLib |
Bridge.Server.IsPlayerAllowed | Quién puede abrir y usar el editor. Comprueba el ACE mic_questcreator.open |
bridge/bridge_client.lua
| Función | Para qué sirve |
|---|---|
Bridge.Client.ShowNotification | Todas las notificaciones. Sustituye el contenido para usar tu propio recurso de notificaciones |
Bridge.Client.ShowHelpNotification | El texto de ayuda de arriba a la izquierda |
Bridge.Client.GetPlayerData, IsPlayerLoaded | Datos del jugador, usados por las comprobaciones Has Job e Is Night/Day |
Bridge.Client.TriggerServerCallback | Callbacks a través de ESX o QBCore |
Bridge.Client.RevivePlayer | Lo usa el gestor de muerte. Lanza esx_ambulancejob:revive en ESX o hospital:client:Revive en QBCore y, después, revive de forma nativa si el jugador sigue muerto |
¿Usas otro script de ambulancia? Cambia el evento de Bridge.Client.RevivePlayer por el que escuche tu script. ¿Otro recurso de notificaciones? Cambia Bridge.Client.ShowNotification. Mantén los nombres de las funciones: el motor las llama por su nombre.
Exports
Sección titulada «Exports»Dos exports de cliente permiten que otro recurso use el minijuego y la barra de progreso del quest creator.
| Export | Argumentos | Qué hace |
|---|---|---|
StartMinigame | dificultad (1–5), velocidad (1–5), rondas, callback | Abre el minijuego tipo ganzúa. El callback recibe true o false |
StartProgressBar | duración en milisegundos, etiqueta | Muestra la barra de progreso integrada |
Llámalos sobre mic_questcreator desde un script de cliente.
Eventos de la comunidad y exportación
Sección titulada «Eventos de la comunidad y exportación»Community Events, en el editor, lista los eventos que han compartido otros servidores; importa uno y se añade a tus eventos como cualquier otro. La lista se descarga de GitHub, así que tu servidor necesita acceso saliente a internet para que se rellene.
Export Event te pide un nombre, una descripción y un autor, y luego escribe el evento en un archivo JSON dentro de la carpeta del recurso, en exports/. Esa carpeta no viene con el recurso: crea antes una carpeta exports vacía en mic_questcreator, o el archivo acabará en la raíz del recurso como export_<name>.json.