Installation

2 min readUpdated 2 weeks ago

Overview

ML Terminal System is an in-world computer terminal with a desktop-like interface. Players interact with props that display an interactive on-screen UI featuring apps, minigames, door controls, action panels, psychometric quizzes, and kiosk modes.

Quick Start

  1. Download from CFX Portal
  2. Extract to your resources folder as ml_terminal_system
  3. Add to server.cfg:
server.cfg
1ensure oxmysql
2ensure ox_lib
3ensure ml_bridge
4ensure ml_terminal_system
Load Order

ml_terminal_system must start AFTER ml_bridge.

Database

Auto Import

All tables are created on first startup. No SQL to run manually.

Terminal Setup

  1. Navigate to shared/data/terminals/
  2. Copy a bundled example (e.g. example_full.lua) and rename it (e.g. my_station.lua)
  3. Uncomment only the sections you need. Quiz questions/profiles go in `server/config_questions.lua` under the same terminal ID
  4. The file auto-registers into Config.Terminals on startup

Several ready-to-use examples are included:

  • example_full.lua: Fully commented template covering every section and app type
  • example_kiosk.lua: Kiosk examples (locked and simple)
  • test_full.lua: Minimal working desktop terminal
  • terminale_safe.lua: Quiz terminal (its questions live in server/config_questions.lua)
  • armeria_centrale.lua, armeria_porto.lua: Armory kiosks locked behind minigames
  • polizia_centrale.lua, sceriffato.lua: Police facility door and action panels
  • merryweather.lua, sede_governo.lua: Themed facility terminals
  • prigione.lua, ospedale_paleto.lua: Prison and hospital terminals
  • Every file in shared/data/terminals/ auto-registers into Config.Terminals on startup.
  • Use locations instead of coords to spawn one terminal at multiple coordinates.
  • Delete the example files you do not need before going live.

Commands

  • /mltheme: Cycle the active terminal UI theme (registered only when Config.Debug = true)
  • /mlterminalsetup [model]: In-world placement helper that prints coords (registered only when Config.Debug = true)
  • Command names are configurable in Config.Commands. All terminal commands are registered only while Config.Debug = true; leave them off in production.

Verify

After starting, the console prints the version banner and the validation line. On success: [ml_terminal] [INFO] Config validation: All terminals OK. A misconfigured terminal prints [ml_terminal] [WARN] Config validation: Some terminals have issues plus an [ERROR] line naming the bad terminal. Read that [ERROR] line for the specific cause.

  • Script not starting, ensure ml_bridge starts before ml_terminal_system
  • Terminal doesn't spawn, check console for validation errors on the terminal config
  • Props invisible: confirm the prop model exists and `spawn.distance` is large enough