ArmA 2 Forum, ArmA 2 Home, ArmA 2 Config, ArmA 2 File Formats, ArmA 2 Missions, ArmA 2 3D Modeling, ArmA 2 Scripting, ArmA 2 Terrain, ArmA 2 Texturing, ArmA 2 Tools
ArmA 2 scripting command reference. Not full reference, just most commonly used commands listed.
There's a lot of cool scripts (functions) available in Modules.pbo - especially under “Functions” and even an multiplayer Framework in “MP”.
Since ArmA 2 you must first initialize a variable before you reference it in your scripts. In ArmA, it was not a problem, at least for conditions.
// this will error if myBoolean was not previously defined. if (myBoolean) then { hint "test" };
Usage of isNil is still valid.
bis fnc locations
Description: Creates or registers location logics (used in various modules, like Ambient Civilians, Ambient Civilian Vehicles or Warfare 2).
Upon registering, function will set following variables into location logic's variable space:
If you're registering currently existing object and some of variables above is already stored in it, it won't be replaced.
Syntax
Syntax: [type(s),area,debug] call BIS_fnc_locations
Parameters: type(s): String or Array of strings
area: Array in format [center,distance]
debug: (Optional): Boolean
Return Value: Array - List of registered locations
Alternative Syntax
Syntax: [objects] call BIS_fnc_locations
Parameters: objects: Array of Objects or Locations - list of specific locations to be registered
Return Value: Array - List of registered locations
Examples
Example 1:
["CityCenter",[position player,1000]] call bis_fnc_locations;
Example 2:
[["acityc_dolina"]] call bis_fnc_locations;
Example 3:
[[myLocation1,myLocation2],[],true] call bis_fnc_locations;
See also:
Functions Library (above hehe)
Description: Allow an object to be damaged (or injured, or killed).
Syntax: object allowDamage allow
Parameters: object: Object - allow: Boolean -
Example 1:
player allowDamage false
setVariable now has a 3rd parameter: Global.
If you set the 3rd parameter to true, the variable will broadcast its value to every machine.
_myObject setVariable ["myVariable", 1, true];
setVariable is now usable on any object, like groups for instance. This was not the case in ArmA.
Working with UI related scripting commands, is not accepted in global or private variable space, and needs to be done inside uiNameSpace by using setVariable.
example:
// set it uiNameSpace setVariable ["myVariable", ctrl...]; // use it ctrl.... (uiNameSpace getVariable "myVariable");
createDiaryRecord
_diary = player createDiaryRecord ["Diary", ["Technische Details", "Keine"]];
createSimpleTask
task1 = player createSimpleTask ["obj1"];
setSimpleTaskDescription
task1 setSimpleTaskDescription ["Description <marker name=""Start"">Start</marker> posit.","more text","more text"];
setSimpleTaskDestination
task1 setSimpleTaskDestination markerPos "Start";
setTaskState
task1 setTaskState "Created";
setCurrentTask
player setCurrentTask task1;
attachTo, see also detach.
// Make player float exactly 2m above center of car, automatically changing vectordir + relative position as car moves. player attachTo [car, [0,0,2]]; detach player;
diag_log writes any variable ([_fish, _frog] or “Hello, I'm starting to initialize myself”) directly to the log, without needing to pass it via format/str and without any extra text.
Examples:
diag_log "hello world!"; diag_log format["Variable: %1", variable];
You can change namespace inside another namespace. Note that 1 misionNamespace refers to the normal global scope and 1 uiNamespace is the one where you are forced to store any control/display handles:
fish = "Frog!"; with uiNamespace do { // Do some stuff with dialogs here. with missionNamespace do { hint fish; // This sees the "regular" mission namespace. }; // Do some more stuff with dialogs here. };
I have no idea what the purpose of 1 parsingNamespace is.
The command 1 with gives you a much nicer way to access namespaces and is especially cleaner when making multiple accesses:
with uiNameSpace do { // Any globals in this block are taken from uiNameSpace. // Any locals are normal locals from current scope. (fishDisplay displayCtrl 102) ctrlSetText _frog; piesControl ctrlSetText _pies; cheeseControl ctrlSetText _cheese; };
Rather than:
((uiNameSpace getVariable "fishDisplay") displayCtrl 102) ctrlSetText _frog; (uiNameSpace getVariable "piesControl") ctrlSetText _pies; (uiNameSpace getVariable "cheeseControl") ctrlSetText _cheese;
Return if given team was inserted directly from mission editor.
Syntax:
fromEditor teamMember
Parameters:
teamMember: Team Member
Return Value:
Boolean
Example:
_fromEditor = fromEditor _member;
Add given member to given team.
Syntax:
team addTeamMember member
Parameters:
team: Team_Member
member: Team_Member
Return Value:
Nothing
Example 1:
_team addTeamMember _teamMember;
Copy the chain of waypoints from source to target group. The target group will start to process waypoints from the first one.
Syntax:
groupTo copyWaypoints groupFrom
Parameters:
groupTo: Group
groupFrom: Group
Return Value:
Nothing
Execute the scripted FSM. The FSM file is first searched in the mission folder, then in the campaign scripts folder and finally in the global scripts folder. Returns the FSM handler or 0 when failed.
Syntax:
execFSM filename
Parameters:
filename: -
Return Value:
Number
Example 1:
execFSM "test.fsm";
Example 2:
execFSM:
hndl = [player] execFSM "group_follow.fsm"; </code? execVM: <code cpp> hndl = player execVM "group_follow.sqf";
How to make task hints
taskHint is relatively useless itself (because it requires too much effort), but there is a script that makes it easier to use. So instead of executing a hint, do this:
[objNull, objNull, tskExample1, "SUCCEEDED"] execVM "CA\Modules\MP\data\scriptCommands\taskHint.sqf";
The first 2 arguments are useless so i just send objNull, the 3rd is the task that you've created, and the 4th is the status.
Supported task states: “CREATED”, “CURRENT”, “CANCELED”, “SUCCEEDED” and “FAILED”.