Skip to content

Customization

Almost everything about a quest — who gives it, what they say, what happens next — is built in the editor and saved in your database. The files are for the handful of things that are the same for every quest.


FileWhat it decidesOpen?
config.luaFramework, language, how players talk to NPCs, dialog colour, /cancelquest, screenshotsYes
bridge/bridge_server.luaMoney, items, player data, callbacks, and the permission checkYes
bridge/bridge_client.luaNotifications, help text, player data, and how a player is revivedYes
locales/*.luaEvery piece of text: editor, dialog window, notifications, webhook logsYes
install.sqlThe eight tables, imported onceYes
web/The editor, dialog window, minigame and progress bar (HTML, CSS, JS)Readable
client/, server/The quest engineEscrowed
client/game_data/*.luaThe lists behind the editor’s pickers: peds, cars, bones, animations, particles, sounds, screen effectsEscrowed

OptionWhat it doesDefault
Config.FrameworkWhich framework to talk to: 'esx' or 'qbcore'. Not detected on its own. On QBox, use 'qbcore' — QBox runs QBCore resources through its compatibility layer'esx'
Config.LocaleThe language of the editor, the dialog window and the notifications. See Languages'en'
Config.DebugPresent in the file; this version prints nothing extra with ittrue
OptionWhat it doesDefault
Config.InteractionType'ox_target', 'qb-target' or 'drawtext' (3D text and a key)'ox_target'
Config.InteractionDistanceHow close, in metres, a player must be to talk to an NPC2.5
Config.InteractionKeyThe control used with 'drawtext', and by the Interact in Area node. 38 is E38
Config.ThemeColorAccent colour of the dialog window: blue, pink, yellow, red, green, purple, orange, cyan, white or black"purple"
OptionWhat it doesDefault
Config.EnableCancelQuestRegisters a command that lets a player abandon their active questtrue
Config.CancelQuestCommandThe command’s name, without the slash"cancelquest"

Cancelling clears the player’s saved progress for that quest and removes what it spawned.

OptionWhat it doesDefault
Config.ScreenshotBasicLets the Send Webhook node attach a screenshot when its screenshot box is ticked. Needs screenshot-basic runningtrue

CommandWho can use itWhat it does
/questcreatorAnyone with the ACE mic_questcreator.openOpens the Quest & Event Creator
/cancelquestEvery player, while Config.EnableCancelQuest is onAbandons the active quest. Renamed by Config.CancelQuestCommand

The same permission guards everything the editor saves, deletes, imports and exports — the check is made on the server, not only when the menu opens. Grant it with an add_ace line to an identifier or a group; the check itself lives in Bridge.Server.IsPlayerAllowed in bridge/bridge_server.lua if you would rather tie it to your own admin system.


Thirteen files ship in locales/: en, es, fr, de, it, pt, ru, ja, ko, zh-CN, ar, nl and cs. Set Config.Locale to the file name without .lua.

Adding a language:

  1. Copy locales/en.lua and name the copy after your language code, for example locales/pl.lua.
  2. Inside it, change the table name from 'en' to your code, and translate the text on the right of each line. Leave the keys on the left and any %s alone.
  3. Add your file to shared_scripts in fxmanifest.lua, with the other locale files and above config.lua.
  4. Set Config.Locale to your code, then refresh and restart.

A key your file is missing shows up in game as Translation [xx][key] does not exist, which tells you exactly which line to add.

What NPCs say, quest titles and notification messages are not in the locale files — you type those into the editor, in whatever language you like.


Two open files sit between the quest engine and the rest of your server.

bridge/bridge_server.lua

FunctionWhat it is for
Bridge.Server.InitializeGets fmLib and the ESX or QBCore object when the resource starts
Bridge.Server.RegisterServerCallbackRegisters callbacks through ESX or QBCore
Bridge.Server.GetPlayer, GetPlayerParamsA player through fmLib, and their identifier, name and job
Bridge.Server.GetMoney, AddMoney, RemoveMoneyMoney, through fmLib
Bridge.Server.GetItem, AddItem, RemoveItemItems, through fmLib, whichever inventory fmLib is talking to
Bridge.Server.IsPlayerAllowedWho may open and use the editor. Checks the ACE mic_questcreator.open

bridge/bridge_client.lua

FunctionWhat it is for
Bridge.Client.ShowNotificationEvery notification. Replace the body to use your own notify resource
Bridge.Client.ShowHelpNotificationThe top-left help text
Bridge.Client.GetPlayerData, IsPlayerLoadedPlayer data, used by the Has Job and Is Night/Day checks
Bridge.Client.TriggerServerCallbackCallbacks through ESX or QBCore
Bridge.Client.RevivePlayerUsed by the death handler. Triggers esx_ambulancejob:revive on ESX or hospital:client:Revive on QBCore, then revives natively if the player is still dead

Using another ambulance script? Change the event in Bridge.Client.RevivePlayer to the one your script listens for. Another notify resource? Change Bridge.Client.ShowNotification. Keep the function names — the engine calls them by name.


Two client exports let another resource borrow the quest creator’s minigame and progress bar.

ExportArgumentsWhat it does
StartMinigamedifficulty (1–5), speed (1–5), rounds, callbackOpens the lockpick-style minigame. The callback receives true or false
StartProgressBarduration in milliseconds, labelShows the built-in progress bar

Call them on mic_questcreator from a client script.


Community Events in the editor lists events other servers have shared; import one and it is added to your events like any other. The list is downloaded from GitHub, so your server needs outbound internet access for it to fill.

Export Event asks for a name, a description and an author, then writes the event to a JSON file inside the resource folder, in exports/. That folder does not ship with the resource — create an empty exports folder in mic_questcreator first, or the file lands in the resource’s root as export_<name>.json instead.