Skip to content

External Arma 2 OA Reference Index

rayswaynl edited this page Jun 4, 2026 · 2 revisions

External Arma 2 OA Reference Index

This page maps official or near-official Arma 2 Operation Arrowhead references to the mission concepts used in a2waspwarfare. Treat these links as engine/runtime context only. Repo source still wins for what this fork actually does.

Quick Rule

Use Arma 2 OA 1.64-era behavior. If a Bohemia page also mentions Arma 3 behavior, do not import the Arma 3-only part unless the wiki explicitly labels it as non-authoritative context. The current checked list lives in Arma 2 OA compatibility audit; quick command availability checks live in Arma 2 OA command version reference.

Reference Map

Concept External reference Applies here Avoid this mistake
OA command availability Arma 2 OA scripting command category; in-repo command version reference Baseline check before using commands in mission SQF. Do not add Arma 3-only commands to OA mission code.
Broadcast public variables and JIP persistence publicVariable Generic PVF broadcasts and direct channels such as WFBE_DAYNIGHT_DATE, SEND_MESSAGE, side supply and supply-mission status. Do not assume changing a variable auto-syncs it; the repo must broadcast it again. JIP last-value availability is not full event-history or collection replay. Also keep payloads small.
Client to server PV publicVariableServer Common_SendToServerOptimized.sqf uses this for OA/CO client-to-server PVF traffic. Do not assume this validates sender authority; it only targets the server.
Server to one client PV publicVariableClient, owner Common_SendToClient.sqf targets owner _player and reduces broadcast waste for single-client replies. Do not use broadcast plus UID filtering when true unicast is available and supported; also do not treat targeted sends as persistent/JIP state.
Public-variable handlers addPublicVariableEventHandler Init_PublicVariables.sqf registers WFBE_PVF_*; many direct channels self-register handlers. Current BI page text includes Arma 3 deprecation/alternative-syntax notes; for OA 1.64, follow the mission's source pattern. The handler sees the broadcast variable name/value, not a trusted sender identity. Server authority must be reconstructed from server-side state.
Namespace handler lookup missionNamespace, getVariable, typeName PVF dispatcher hardening resolves registered SRVFNC* and CLTFNC* globals as variables instead of compiling sender-provided strings. Do not replace Call Compile with Arma 3-only comparison syntax; use an allowlist plus typeName guard for OA-safe handler lookup.
Locality, hosted server, JIP and headless client roles Locality in Multiplayer initJIPCompatible.sqf, Init_Server.sqf, Init_Client.sqf and Init_HC.sqf split behavior by server, player client and headless client. Do not collapse hosted server, dedicated server, normal client and HC paths; this fork has different branches for each.
Headless/client interface detection hasInterface; A2OA patch 1.63 Headless/Functions/HC_IsHeadlessClient.sqf uses `!(hasInterface
Mission description and parameters Description.ext, Mission Parameters, Arma 2 OA multiple mission parameters description.ext includes version.sqf, resource headers and Rsc/Parameters.hpp. Do not forget DR-43: version.sqf is ignored/generated rather than tracked source, so packaging/generation context matters.
FSM files and execFSM FSM, execFSM Live FSMs are Client/FSM/updateactions.fsm, Client/FSM/updateavailableactions.fsm and Client/kb/hq.fsm. Missing Server/FSM/supplytruck.fsm is part of the AI supply logistics landmine. Do not document AI_UpdateSupplyTruck.sqf as restorable by a compile line alone; the FSM file is absent.
compile, preprocessFile, preprocessFileLineNumbers compile, preprocessFile, preprocessFileLineNumbers Init scripts compile hundreds of SQF files; PVF registration compiles CLTFNC* and SRVFNC* functions. Do not compile sender-controlled strings. DR-1's fix replaces per-message Call Compile lookup with safe namespace lookup.
Object scans and class filters nearestObjects, isKindOf Supply mission command-center detection, construction previews, cleaners/restorers and safe-place helpers use object scans. nearestObjects accepts a class-name array, [] means all classes, and class matching follows isKindOf inheritance. Do not leave a hot scan as nearestObjects [pos, [], radius] when the code already wants one class family such as Base_WarfareBUAVterminal. Keep smoke tests for map/object streaming and real mission behavior.
Extensions callExtension AntiStack and database bridge work through the repo's Extension/ project and server module calls. callExtension is blocking; do not put slow or untrusted extension calls in hot loops without explicit review.
BattlEye server setup BattlEye BattlEyeFilter/publicvariable.txt is part of deployment/runtime hardening, outside LoadoutManager mission propagation. Do not treat missing or weak BE filters as fixed by mission generation.
Arma 2/OA public-variable filters Bohemia forum: server-side event logging/blocking DR-1 and DR-41 need a real publicvariable.txt allow-list covering WFBE_PVF_* and direct channels. Do not add a restrictive default without allow-listing legitimate channels, or normal mission networking will kick players.

Engine Primitive Guardrails

  • publicVariable, publicVariableServer and publicVariableClient route state; they do not authenticate who was allowed to request a gameplay effect. Treat every received payload as untrusted until server-side state validates side, role, funds, object ownership and range.
  • addPublicVariableEventHandler is a receiver hook, not a sender-identity API. Generic PVF dispatcher hardening blocks arbitrary handler-string compilation, but legitimate handler payloads still need per-handler authority checks.
  • owner plus publicVariableClient is the true one-client path already used by Common_SendToClient.sqf; prefer it for single-client replies instead of broad broadcasts with client-side filtering. BI's publicVariableClient page marks the command as OA 1.62 and notes that unlike publicVariable, it is not persistent/JIP-compatible.
  • nearestObjects [position, types, radius] can narrow to inherited class families. For supply mission command-center detection, ["Base_WarfareBUAVterminal"] is the source-backed first candidate because the current code already filters each result with isKindOf "Base_WarfareBUAVterminal".
  • missionNamespace getVariable is the OA-safe way to resolve compiled handler globals by name. Pair it with a registered allowlist and a typeName == "CODE" guard before spawning a handler.
  • Do not import Arma 3-era or non-OA-proven syntax into mission SQF without an official OA availability check. In particular, avoid remoteExec, remoteExecCall, SQF params, parseSimpleArray, isEqualTo, setGroupOwner, groupOwner, modern select [start,count] / select {condition} forms and private _var = value; the official isEqualTo, setGroupOwner, groupOwner and later select syntax badges mark those forms as Arma 3-era, not Arma 2 OA. BIS_fnc_MP is not listed in the OA function category and this mission uses its own public-variable wrappers.

How To Use This Page

Source Anchors Checked For This Pass

  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Init/Init_PublicVariables.sqf
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Functions/Server_HandlePVF.sqf
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/Functions/Client_HandlePVF.sqf
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Functions/Common_SendToServer.sqf
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Functions/Common_SendToServerOptimized.sqf
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Functions/Common_SendToClient.sqf
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Functions/Common_SendToClients.sqf
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/description.ext
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/FSM/
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Client/kb/hq.fsm
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Server/Module/supplyMission/supplyMissionStarted.sqf
  • Missions/[55-2hc]warfarev2_073v48co.chernarus/Common/Config/Core_Structures/Structures_*.sqf
  • BattlEyeFilter/publicvariable.txt
  • Extension/

Continue Reading

Sidebar

Clone this wiki locally