Magic Variables: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(Add _thisScript and categories)
No edit summary
(33 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Stub}}
{{TOC|side}}
=== Introduction ===
__NOEDITSECTION__
'''Magic variables''' are engine-maintained [[Variables|variables]] that serve a specific purpose within a given scope and are often used by the engine to push data to a given [[Script File|script]] or [[Code|code]] fragment.<br>They are usually no longer present after leaving the scope (e.g. after code execution or after a [[forEach]] statement).


'''Magic variables''' are engine maintained [[Variables|variables]] that serve a specific purpose within a given scope and are often used by the engine to push data to a given [[Script (File)|script]] or [[Code|code]] fragment. They are usually no longer present after leaving the scope (e.g. after code execution or after a [[forEach]] statement).


=== Uses ===
{{ConfigPage|start}}
* '''_this''': probably the most frequently used magic variable, which is used to make arguments of a script call ([[call]], [[exec]], [[execVM]], [[spawn]]) visible and accessible to the script
{{ConfigPage|abc}}
* '''_x''': represents the current element during a [[forEach]] or a [[count]]
==== _this ====
* '''_forEachIndex''': represents the (zero-based) index of a [[forEach]] '''_x'''
Is used to make arguments of a script call ([[call]], [[exec]], [[execVM]], [[spawn]]) visible and accessible to the script, also used in Event Handlers to pass appropriate params.
* '''thisList''', '''thisTrigger''': variable defined by [[Triggers]], which are however only accessible within the activation or deactivation script.  
 
* '''_exception''': [Exception handling]] using a [[try]]..[[catch]] statement declares this variable which contains details about the [[throw|thrown]] exception in the try block
 
* '''_thisScript''': is the [[spawn|spawned]] script handle from within itself since {{arma3}}
==== _x ====
Represents the current element during a loop with: [[apply]], [[count]], [[configClasses]], [[configProperties]], [[findIf]], [[forEach]], [[select]].
 
 
{{ArgTitle|4|_y|{{GVI|arma3|2.02}}}}
Iterating over a [[HashMap]] with [[forEach]] will return the key as [[#x|_x]] and the value as [[#y|_y]].
 
 
{{ArgTitle|4|_exception|{{GVI|arma1|1.00}}}}
[[Exception handling]] using a [[try]]-[[catch]] statement declares this variable which contains details about the [[throw|thrown]] exception in the try block.
 
 
==== _forEachIndex ====
Represents the (zero-based) index of a [[forEach]] [[#x|_x]] element.
 
 
{{ArgTitle|4|_thisArgs|{{GVI|arma3|2.04}}}}
Additional Event Handler arguments available with [[addMissionEventHandler]]
 
 
{{ArgTitle|4|_thisEventHandler|{{GVI|arma3|1.54}}}}
The index for Event Handlers added with [[addEventHandler]], [[addMPEventHandler]], [[addMissionEventHandler]] or [[addUserActionEventHandler]].
 
 
{{ArgTitle|4|_thisScriptedEventHandler|{{GVI|arma3|1.68}}}}
The index for Scripted Event Handlers added with [[BIS_fnc_addScriptedEventHandler]].
 
 
{{ArgTitle|4|_thisEvent|{{GVI|arma3|2.06}}}}
The name of the Event added with [[addEventHandler]], [[addMPEventHandler]], [[addMissionEventHandler]] or [[addUserActionEventHandler]], as well as for config types EHs.
 
 
{{ArgTitle|4|_thisFSM|{{GVI|arma3|1.54}}}}
The [[FSM]] id for FSMs executed with [[execFSM]].
 
 
{{ArgTitle|4|_thisScript|{{GVI|arma3|1.54}}}}
The [[execVM]]ed, [[call]]ed or [[spawn]]ed [[Script Handle|script handle]] from within itself.
 
 
==== _time ====
'''[[SQS Syntax|SQS]] ONLY.''' The time elapsed since the script started running.
 
 
{{ArgTitle|4|_fnc_scriptName|{{GVI|arma3|1.00}}}}
{{Feature|Informative|not engine-maintained, but added by functions_f/'''initFunctions.sqf''' script – see [[scriptName]]}}
From within a [[:Category:Functions|Function]], the '''TAG_fnc_functionName''' function name as string (e.g. "myTag_fnc_myFunction")
 
 
{{ArgTitle|4|_fnc_scriptNameParent|{{GVI|arma3|1.00}}}}
{{Feature|Informative|not engine-maintained, but added by functions_f/'''initFunctions.sqf''' script – see [[scriptName]]}}
From within a [[:Category:Functions|Function]], name of the function that called the current one ([[#fnc_scriptName|_fnc_scriptName]] used when not defined)
 
 
==== this ====
* '''In Addons' config files''' (e.g. UserActions, onInit, etc.): The object to which the entry belongs
* '''In Dialogs''': The player unit that activated control (e.g. via mouseEnter). [[false]] if non-activated
* '''In Object's "Init" line:''' The object to which the init line belongs
* '''In Triggers'''
** ''"Condition" line'': The [[Boolean]] return value of the [[Mission Editor: Triggers|trigger]]'s conditions (e.g. "East Not Present" etc)
** ''"On Activation/Deactivation" line'': Seems to always return [[false]]
* '''In Waypoints'''
** ''"Condition" or "On Activation/Deactivation" line'': The group leader that completed the respective waypoint (or driver, if waypoint is assigned to a vehicle)
 
 
==== thisList ====
[[Variables|Variable]] defined by [[Triggers]] and [[Waypoints]]:
* Triggers:
** accessible within the '''Condition''', '''On Activation''' or '''On Deactivation''' script
** defines an array of objects that have been detected by the trigger (same as what is returned by the [[list]] command)
** '''thisList''' in a trigger's '''On Deactivation''' field seems to be undefined, and should not be used. It will either return an empty array, or possibly the contents of a different trigger.
* Waypoints:
** accessible within the '''Condition''' or '''On Activation''' script
** defines an array containing all group members that completed the respective waypoint
 
 
==== thisTrigger ====
Refers to the [[Triggers|trigger]] object itself - accessible within the '''Condition''', '''On Activation''' or '''On Deactivation''' script.
 
{{ConfigPage|end}}
 


[[Category: Scripting Topics]]
[[Category: Scripting Topics]]
[[Category: Operation Flashpoint: Editing]]
[[Category: ArmA: Editing‏‎]]
[[Category: ArmA 2: Editing‏‎]]
[[Category: Arma 3: Editing]]

Revision as of 14:51, 17 February 2022

Magic variables are engine-maintained variables that serve a specific purpose within a given scope and are often used by the engine to push data to a given script or code fragment.
They are usually no longer present after leaving the scope (e.g. after code execution or after a forEach statement).


_this

Is used to make arguments of a script call (call, exec, execVM, spawn) visible and accessible to the script, also used in Event Handlers to pass appropriate params.


_x

Represents the current element during a loop with: apply, count, configClasses, configProperties, findIf, forEach, select.


_y

Iterating over a HashMap with forEach will return the key as _x and the value as _y.


_exception

Exception handling using a try-catch statement declares this variable which contains details about the thrown exception in the try block.


_forEachIndex

Represents the (zero-based) index of a forEach _x element.


_thisArgs

Additional Event Handler arguments available with addMissionEventHandler


_thisEventHandler

The index for Event Handlers added with addEventHandler, addMPEventHandler, addMissionEventHandler or addUserActionEventHandler.


_thisScriptedEventHandler

The index for Scripted Event Handlers added with BIS_fnc_addScriptedEventHandler.


_thisEvent

The name of the Event added with addEventHandler, addMPEventHandler, addMissionEventHandler or addUserActionEventHandler, as well as for config types EHs.


_thisFSM

The FSM id for FSMs executed with execFSM.


_thisScript

The execVMed, called or spawned script handle from within itself.


_time

SQS ONLY. The time elapsed since the script started running.


_fnc_scriptName

not engine-maintained, but added by functions_f/initFunctions.sqf script – see scriptName

From within a Function, the TAG_fnc_functionName function name as string (e.g. "myTag_fnc_myFunction")


_fnc_scriptNameParent

not engine-maintained, but added by functions_f/initFunctions.sqf script – see scriptName

From within a Function, name of the function that called the current one (_fnc_scriptName used when not defined)


this

  • In Addons' config files (e.g. UserActions, onInit, etc.): The object to which the entry belongs
  • In Dialogs: The player unit that activated control (e.g. via mouseEnter). false if non-activated
  • In Object's "Init" line: The object to which the init line belongs
  • In Triggers
    • "Condition" line: The Boolean return value of the trigger's conditions (e.g. "East Not Present" etc)
    • "On Activation/Deactivation" line: Seems to always return false
  • In Waypoints
    • "Condition" or "On Activation/Deactivation" line: The group leader that completed the respective waypoint (or driver, if waypoint is assigned to a vehicle)


thisList

Variable defined by Triggers and Waypoints:

  • Triggers:
    • accessible within the Condition, On Activation or On Deactivation script
    • defines an array of objects that have been detected by the trigger (same as what is returned by the list command)
    • thisList in a trigger's On Deactivation field seems to be undefined, and should not be used. It will either return an empty array, or possibly the contents of a different trigger.
  • Waypoints:
    • accessible within the Condition or On Activation script
    • defines an array containing all group members that completed the respective waypoint


thisTrigger

Refers to the trigger object itself - accessible within the Condition, On Activation or On Deactivation script.