Scripts Reference — VEAF Lua Modules¶
All modules are bundled in veaf-scripts.lua and loaded at mission start. This page helps you find the right module for your needs.
Find a Module¶
By mission-maker workflow¶
What are you building? Pick the step that matches.
| Step | Modules | Purpose |
|---|---|---|
| Foundation | veaf.lua, veafMarkers, veafRadio, veafInterpreter, veafCommands, veafI18n, veafUnits, veafEventHandler, veafCacheManager |
Core infrastructure (always loaded) |
| Setup | veafSecurity, veafNamedPoints, veafAirbases | Access control, map positions, airbase data |
| Spawning | veafSpawn, veafMove, veafGroundAI | Let players create, move and drive units |
| Mission types | veafCasMission, veafCombatMission, veafCombatZone, veafTransportMission, veafQraManager, veafAirWaves, veafCampaign | Structured gameplay scenarios |
| Assets & services | veafAssets, veafCarrierOperations, veafGrass, veafWeather | Managed tankers/AWACS/carriers, weather |
| Protection | veafMissileGuardian, veafSanctuary | Missile defense, safe zones |
| In-flight assistance | veafAssist | Guided checklists: the mission boxes the right switch in the cockpit and ticks the line |
| Debrief | veafCombatLog | Every shot, hit and kill to a file, for the recap per pilot |
| Integrations | veafSkynetIadsHelper | Third-party IADS systems |
By player interaction¶
What will your players experience?
| Player action | Module | What happens |
|---|---|---|
Places a marker with _spawn ... |
veafSpawn | Units appear at marker position |
Places a marker with _cas |
veafCasMission | Random target zone generated |
| Opens F10 → COMBAT ZONES → Activate zone | veafCombatZone | Pre-built combat area activates |
| Enters an air-waves zone | veafAirWaves | Wave-based air combat starts |
| Opens F10 → ASSETS → [asset] | veafAssets | Info, respawn |
| Opens F10 → CARRIER OPS → Start carrier air operations for 45 minutes | veafCarrierOperations | Carrier turns into wind |
| Enters a protected zone | veafQraManager | AI interceptors scramble |
Types _auth elevate |
veafSecurity | The group rises to the requester's level for 2 minutes |
| Flies in a sanctuary area | veafSanctuary | Hostile missiles neutralized |
By frequency of use¶
How commonly is this module used?
| Frequency | Modules |
|---|---|
| Essential (almost every mission) | veafSpawn, veafAssets, veafNamedPoints, veafSecurity |
| Common (most combat missions) | veafCasMission, veafCombatZone, veafAirWaves, veafCarrierOperations |
| Situational (specific scenarios) | veafQraManager, veafTransportMission, veafMove, veafGrass, veafWeather, veafAirbases |
| Specialized (advanced setups) | veafMissileGuardian, veafSanctuary, veafSkynetIadsHelper, veafCampaign |
Loading and Initialisation Pattern¶
Every module follows the same pattern:
-- Optional: override defaults before initialising
veafModuleName.SomeConstant = value
-- Required: initialise the module
veafModuleName.initialize()
-- Some modules also require a start() call
veafModuleName.start()
Modules that are not initialize()d consume no resources and create no radio menus.
Access Control¶
| Module | File | Role |
|---|---|---|
| veafSecurity | veafSecurity.lua |
Role-based permission system (passwords, levels) |
Protection Modules¶
| Module | File | What it does |
|---|---|---|
| veafSanctuary | veafSanctuary.lua |
Protected zones that automatically destroy intruding units |
| veafMissileGuardian | veafMissileGuardian.lua |
Intercepts specific incoming missiles to protect assets |
Third-Party Integrations¶
| Module | File | What it does |
|---|---|---|
| veafSkynetIadsHelper | veafSkynetIadsHelper.lua |
Configures Skynet IADS from VEAF group data |
veafSkynetIadsMonitor.lua |
— | Monitors Skynet IADS health and sends radio alerts |
veafRemote.lua |
— | Bridge with the VEAF server hook: player rights and chat commands |
Server administration¶
| Component | File | What it does |
|---|---|---|
| veafServerHook | VEAF-Server-hook.lua |
Dedicated-server hook: chat commands (/send, /pause…), pilots list, opt-in restart/telemetry |
Data Modules¶
These are pure data files — no initialisation needed.
| Module | What it contains |
|---|---|
dcsUnits.lua |
Database of all DCS unit types with attributes |
dcsDataExport.lua |
Export utilities for unit data |
A misspelt option is refused, not ignored¶
When a marker command carries an option no rule recognises — almost always a typo — the command is refused and the option is named back to you, with a suggestion when it is close to a real one:
_spawn group, name sa6, headng 270
↓
VEAF SPAWN: unknown parameter(s), command aborted: 'headng' (did you mean 'heading'?)
Refusing rather than running is deliberate: an unknown option does nothing, so the command would spawn or move something other than what you asked for, and nothing would tell you. The marker is left in place — fix it and drop it again.
Applies to the SPAWN, CASMISSION, MOVE, RADIO, TRANSPORTMISSION, GROUNDAI commands, artillery orders included. The name shown is the one the module also uses to prefix its DCS log lines, so the message and the log line up.
Aliases are excluded
An alias (-sa6, -samsr) carries the parameters of the command it expands into rather than its own, so checking there would warn about perfectly valid options. A typo inside an alias is caught by the final command instead.
Artillery orders: the separator is a semicolon
An artillery order travels as the value of an order key, inside a marker that is already split on commas — hence the ;: aim; shells 10; radius 50. Use a comma and the check now tells you, instead of silently losing the rest of the order.
Shortcuts¶
| Module | File | What it does |
|---|---|---|
| veafShortcuts | veafShortcuts.lua |
Defines short aliases (-sa6, -shilka, -destroy, etc.) for common marker commands — see full list |
veafTime.lua |
— | Mission time utilities |
Complete API Reference¶
For the full public API of every module (functions, parameters, return values, examples), see the Lua API Reference.