F.A.Q

3 min readUpdated Today

Setup

Set Config.Locale in shared/config.lua:

shared/config.lua
1Config.Locale = 'en'
  1. Copy a bundled example, e.g. shared/data/terminals/example_full.lua
  2. Rename the file (e.g. my_police_terminal.lua)
  3. Uncomment only the sections you need
  4. Restart the resource, the terminal auto-registers
  1. Check the server console for validation errors
  2. Verify the model hash exists in GTA
  3. Ensure coords uses vector4 (not vector3)
  4. Confirm the prop model exists and you are within `spawn.distance`

Verify the id values in your doors.list match the IDs in your door lock system. The script toggles doors through ml_bridge.

Themes

9 themes: Default, Wasteland, Cyberpunk, Noir, Fantasy, Fruit, Vintage Yellow, Vintage Blue, Facade98 Teal.

The theme command (/mltheme by default, set in Config.Commands.theme) cycles themes, but it is registered only while Config.Debug = true. Otherwise each terminal uses the fixed theme in its config.

Apps

6 types:

  • quiz: Psychometric test with profiles and rewards
  • folder: File browser with text content
  • doors: Door control panel
  • actions: Button panel with cooldowns and event triggers
  • minigame: Standalone minigame
  • locked_folder: Folder locked behind a minigame

Yes. The apps array accepts any combination of app types. Each app appears as a desktop icon.

A folder whose contents are only accessible after the player completes a minigame. You can also gate it behind a quiz result using requireQuiz and requiredProfile.

Minigames

4 built-in: Password (Fallout-style word guessing), Memory (match card pairs against the clock), Pipe Puzzle (rotate pipes to connect start to end), Simon Says (repeat the color sequence).

4 places:

  • On terminal boot (minigames.onBoot)
  • As a standalone desktop app (type = 'minigame')
  • As a lock for folder apps (type = 'locked_folder')
  • In kiosk locked mode (kiosk.unlockGame)

A lockout timer starts (passwordLockoutDuration in seconds). Set lockoutType to 'global' to lock all players or 'personal' (terminal root) to lock only the one who failed.

Quiz

The terminal presents a configurable number of random questions from a server-only pool defined in server/config_questions.lua. Each answer awards points to a skill. After answering, the system checks whether any profile's points_required threshold is met and assigns the first match. Profiles can award money, items, vehicles, or jobs.

Configurable per terminal (terminal root). allowRetakeOnSuccess controls retake after receiving a profile. allowRetakeOnFailure controls retake after failing to meet any threshold.

Kiosk Mode

It turns the terminal into a single-app experience, no desktop, no boot sequence. Two modes: simple (opens the app directly) and locked (requires a minigame first, with timed access).

Webhooks

  1. Check server/config_sv.lua for valid webhook URLs
  2. Set unused webhooks to false to disable them
  3. Logs are batched every 60 seconds, there may be a delay
  4. Do not set Interval below 60000 ms or Discord will rate-limit your webhook

Updates

  1. Download latest from CFX Portal
  2. Backup config files
  3. Replace all files except config
  4. Restart the resource

All data is in the database, survives updates.