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,loados.remove,os.renameandos.tmpnameoutside 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¶
- Does an external tool already do it?
- Is the application's packaging feature enough?
- Does the command palette solve it in one step?
- Only then write a Lua script.
Before you script something¶
- Do not repeat a manual job: package it (see Packaging).
- Write a script only for genuinely repetitive multi-step work.
- Keep scripts in version control and comment which map addresses they touch.