F.A.Q

6 min readUpdated Today

Setup

Set Config.Settings.Locale to the desired locale code:

shared/config/config.lua
1Config.Settings = {
2    Locale = 'en',
3}
  1. Verify all dependencies are running (ox_lib, oxmysql, ml_bridge)
  2. Check ensure order in server.cfg: ml_missions must load after ml_bridge
  3. Look for database errors in the server console

The creator requires admin permissions (ace perms for QBCore/QBox, admin group for ESX). Wait for the [ml_missions] Resource started message in console before using the command. Default command: /missioncreator.

Verify the NPC was saved correctly in the creator, the ped model exists in shared/config/peds.lua, and there are no database errors in the server console.

NPCs

Yes. In the NPC editor, add entries to Additional Positions below the main coordinates. The same NPC spawns at all positions with shared quests and reputation.

The turn-in blip always points back to the specific position where the quest was accepted. Other positions of the same NPC will not show the turn-in option in their dialogue.

No. Only one player at a time can open the dialogue. Others see a "This NPC is busy" notification. The lock releases when the first player closes the dialogue, disconnects, or after a 5-minute idle timeout.

Creator

Open the creator with /missioncreator, click "New Mission", fill in the title and objectives. Use the map to place coordinates. Save and the mission is immediately available in-game.

Yes. The creator has a "Test Mission" button that launches a temporary version for you only. Test missions bypass cooldowns and logging, and are cleaned up automatically.

Create an NPC in the creator, choose its ped model and position. Assign quests to the NPC's pool as fixed (always available) or random (rotated from a pool). Set minQuestsInPool and maxQuestsInPool to control rotation.

Yes. The Required Job field accepts both jobs and gangs, comma separated. The player only needs to match one entry.

Objectives

12 types: GOTO_COORDS, KILL_PEDS, DEFEND_AREA, ESCORT, TAKE_VEHICLE, INTERACT_PROGRESS, RETRIEVE_ITEM, CHECK_ITEM, HEIST_LOOT, GATHER_REWARD, INTERACTION_TALK, and TURN_IN (auto-generated).

Yes. Use activateOnStart to trigger an objective when another starts, or activateOnEvent to trigger on specific events. Use pauseUntilComplete to hold an objective until a dependency finishes.

When enabled on KILL_PEDS or DEFEND_AREA objectives, enemy NPCs use unarmed combat and zombie animations regardless of weapon configuration.

Use a HEIST_LOOT objective and pick a preset per loot point: cash or gold trolleys, a safe crack, table stacks of cash, gold, cocaine or weed, a jewelry case smash, a laptop grab, bolt cutters, container grind or crate crowbar. The prop spawns in the world, the grab plays a synced animation, and each point can require a minigame and pays its own rewards.

Squads

The squad leader invites nearby players (within NearbyPlayerDistance). When the leader starts a mission, all members participate. Rewards are distributed evenly. If all squad members die, the mission fails.

Yes. Set squadOptions.minMembers on the quest in the creator to require a minimum number of players before the mission can start.

Yes. In the creator, use the Required Jobs Online panel to add one or more entries. Each entry has a job name and a minimum online count. The quest only starts if every listed job meets its minimum. Example: require 2 police and 1 bcso online.

Rewards

Three formats:

  • Fixed loots: Guaranteed item drops from a defined pool
  • Probability loots: Percentage-based drops with configurable loop count
  • Money: Random amount between min and max, to a specific account (cash/bank)

Squad bonuses can multiply rewards based on squad size.

Yes. Use Handlers.ModifyRewards() in open/handlers_server.lua to intercept and modify money and item arrays before distribution. See the Developer page for examples.

XP / Reputation

Each NPC tracks reputation per player. Completing missions for an NPC grants reputationPoints. Failing can deduct xpPenaltyOnFail. Gate missions behind requiredXp to create progression chains.

Yes. Use the server exports: getXP, setXP, addXP, removeXP. See the Developer page.

Cooldowns

Global: One player completes a quest, ALL players must wait before it can be started again. Personal: Each player has their own cooldown timer per quest. Set via isPersonalCooldown in the creator.

Set isOneTimeOnly = true in the creator. The quest can only be completed once per player, tracked in the ml_mission_completed database table.

TTS

Server-side at cache/tts/ inside the resource folder. The cache survives script updates because the folder is not part of the files{} section in fxmanifest.lua.

No. The first request generates the audio and stores it in cache/tts/. Subsequent requests for the same text + voice ID read directly from disk. Zero extra API credits are consumed.

The first request triggers the ElevenLabs HTTP call (1-3 seconds). Subsequent requests are instant thanks to the disk cache. A silent audio warm-up runs at client boot to reduce the delay further.

Yes. Drop the file in cache/tts/ (.mp3, .wav or .ogg, max 2 MB, plain file names) and select Custom File as the audio source in the creator. Works for NPC greetings, mission briefings and Talk objectives, and never calls the API.

Generation is capped at 50000 characters per player per hour and single lines are cut at 500 characters. Cached lines replay from disk and cost nothing.

Live Missions

Open the creator and switch to the Live Missions tab. Every active run is listed with its squad, elapsed time and objective progress, and the list refreshes on its own.

Yes. From the Live Missions tab an admin can force complete, force fail, or teleport to the squad leader. Access is controlled by Config.Permissions.LiveActions, which falls back to the Creator tier when the block is removed.

Community Hub

The Community Hub connects to the Micio Mods API. Browse, download, upload, vote on, and report community-created missions directly from the in-game creator. No additional setup required.

No. Only mission configuration data is shared. Your server license is used for rate-limiting and vote tracking, not exposed publicly.

Updates

  1. Download latest from CFX Portal
  2. Backup shared/config/ and server/config_server.lua
  3. Replace all files except config folders
  4. Restart the resource

Missions, NPCs, and XP data are stored in the database and survive updates.