Skip to content

Automation

Instead of doing repetitive work by hand you can script it: batch edits, exports, comparisons and even simple HTTP requests.

Command palette

Ctrl+K — every command in the application appears in one searchable list. Typing part of a command name is enough. It is the fastest way to find an action without knowing the menus.

Lua engine

The application embeds Lua 5.4 and binds the C++ API to scripts through sol2. Run a script with Datalog ▸ Run Lua Script.

What is available

  • read project properties,
  • read and write bytes, convert addresses,
  • search maps, find and replace, import and export,
  • add comments, similarity search,
  • HTTP requests,
  • open dialogs, call the interface.

Security limits

Scripts run on a worker thread and return to the UI only through controlled calls. The engine disables:

  • os.execute, os.exit, io.popen, package.loadlib, dofile, loadfile, load
  • os.remove, os.rename and os.tmpname outside approved paths

Running a new script for the first time requires confirmation, and the trust decision is stored with the script's SHA-256 fingerprint.

Example

-- List every map whose name contains "KRKTE"
local maps = searchMaps("KRKTE")
for _, m in ipairs(maps) do
  Log(m.name .. " @ " .. m.address)
end

Known gaps

The Lua checksum DSL, projectImportCsvJson, projectMail, some WinOLS-specific rights and vehicle-data operations and encrypted .luax loading are not implemented.

Datalog

Datalog ▸ Open Log opens CSV recordings; pick channels from the tree and read the time-series graphs. Datalog ▸ Compare Logs overlays two recordings.

A practical order of preference for bulk work

  1. Does an external tool already do it?
  2. Is the application's packaging feature enough?
  3. Does the command palette solve it in one step?
  4. Only then write a Lua script.

Before you script something

  1. Do not repeat a manual job: package it (see Packaging).
  2. Write a script only for genuinely repetitive multi-step work.
  3. Keep scripts in version control and comment which map addresses they touch.