Ir al contenido

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.


ArchivoQué decide¿Abierto?
config.luaFramework, idioma, cómo hablan los jugadores con los NPCs, color del diálogo, /cancelquest, capturas de pantallaSí
bridge/bridge_server.luaDinero, ítems, datos del jugador, callbacks y la comprobación de permisosSí
bridge/bridge_client.luaNotificaciones, texto de ayuda, datos del jugador y cómo se revive a un jugadorSí
locales/*.luaTodo el texto: editor, ventana de diálogo, notificaciones, logs del webhookSí
install.sqlLas ocho tablas, importadas una vezSí
web/El editor, la ventana de diálogo, el minijuego y la barra de progreso (HTML, CSS, JS)Legible
client/, server/El motor de misionesCifrado
client/game_data/*.luaLas listas detrás de los selectores del editor: peds, coches, huesos, animaciones, partículas, sonidos, efectos de pantallaCifrado

OpciónQué hacePor defecto
Config.FrameworkCon 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.LocaleEl idioma del editor, la ventana de diálogo y las notificaciones. Consulta Idiomas'en'
Config.DebugEstá en el archivo; esta versión no muestra nada extra con éltrue
OpciónQué hacePor defecto
Config.InteractionType'ox_target', 'qb-target' o 'drawtext' (texto 3D y una tecla)'ox_target'
Config.InteractionDistanceA cuántos metros debe estar un jugador para hablar con un NPC2.5
Config.InteractionKeyEl control usado con 'drawtext' y por el nodo Interact in Area. 38 es E38
Config.ThemeColorColor de acento de la ventana de diálogo: blue, pink, yellow, red, green, purple, orange, cyan, white o black"purple"
OpciónQué hacePor defecto
Config.EnableCancelQuestRegistra un comando que permite a un jugador abandonar su misión activatrue
Config.CancelQuestCommandEl 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ó.

OpciónQué hacePor defecto
Config.ScreenshotBasicPermite que el nodo Send Webhook adjunte una captura cuando su casilla de captura está marcada. Necesita screenshot-basic en marchatrue

ComandoQuién puede usarloQué hace
/questcreatorCualquiera con el ACE mic_questcreator.openAbre el Quest & Event Creator
/cancelquestTodos los jugadores, mientras Config.EnableCancelQuest esté activadoAbandona 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.


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:

  1. Copia locales/en.lua y nombra la copia con el código de tu idioma, por ejemplo locales/pl.lua.
  2. 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.
  3. Añade tu archivo a shared_scripts en fxmanifest.lua, con los demás archivos de idioma y por encima de config.lua.
  4. Pon Config.Locale con tu código, y luego haz refresh y 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.


Hay dos archivos abiertos entre el motor de misiones y el resto de tu servidor.

bridge/bridge_server.lua

FunciónPara qué sirve
Bridge.Server.InitializeObtiene fmLib y el objeto de ESX o QBCore al arrancar el recurso
Bridge.Server.RegisterServerCallbackRegistra callbacks a través de ESX o QBCore
Bridge.Server.GetPlayer, GetPlayerParamsUn jugador a través de fmLib, y su identificador, nombre y trabajo
Bridge.Server.GetMoney, AddMoney, RemoveMoneyDinero, 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.IsPlayerAllowedQuién puede abrir y usar el editor. Comprueba el ACE mic_questcreator.open

bridge/bridge_client.lua

FunciónPara qué sirve
Bridge.Client.ShowNotificationTodas las notificaciones. Sustituye el contenido para usar tu propio recurso de notificaciones
Bridge.Client.ShowHelpNotificationEl texto de ayuda de arriba a la izquierda
Bridge.Client.GetPlayerData, IsPlayerLoadedDatos del jugador, usados por las comprobaciones Has Job e Is Night/Day
Bridge.Client.TriggerServerCallbackCallbacks a través de ESX o QBCore
Bridge.Client.RevivePlayerLo 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.


Dos exports de cliente permiten que otro recurso use el minijuego y la barra de progreso del quest creator.

ExportArgumentosQué hace
StartMinigamedificultad (1–5), velocidad (1–5), rondas, callbackAbre el minijuego tipo ganzúa. El callback recibe true o false
StartProgressBarduración en milisegundos, etiquetaMuestra la barra de progreso integrada

Llámalos sobre mic_questcreator desde un script de cliente.


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.