Difference between revisions of "getVariable"

From Bohemia Interactive Community
Jump to navigation Jump to search
(Added all available data types combinations)
m (template:command argument fix)
 
(36 intermediate revisions by 10 users not shown)
Line 3: Line 3:
  
 
| arma |= Game name
 
| arma |= Game name
 
 
|1.00|= Game version
 
|1.00|= Game version
 +
|arg= global|= Arguments in MP
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| Return the value of variable in the variable space of given object or location.  
+
| Return the value of variable in the variable space assigned to various data types. In case of Alt Syntax usage in Arma 3, the default value will be returned if:
 
+
* Requested variable is either undefined or [[nil]]
 +
* Variable namespace is null ([[objNull]], [[grpNull]], etc.)
 
All available data types combinations:
 
All available data types combinations:
 
* [[Namespace]] getVariable [[String]]
 
* [[Namespace]] getVariable [[String]]
* [[Namespace]] getVariable [[Array]]
+
* [[Namespace]] getVariable [[Array]] (since {{Name|a2}} 1.60)
* [[Control]] getVariable [[String]]
 
 
* [[Object]] getVariable [[String]]
 
* [[Object]] getVariable [[String]]
 
* [[Object]] getVariable [[Array]]
 
* [[Object]] getVariable [[Array]]
Line 20: Line 20:
 
* [[Team_Member]] getVariable [[Array]]
 
* [[Team_Member]] getVariable [[Array]]
 
* [[Task]] getVariable [[String]]
 
* [[Task]] getVariable [[String]]
* [[Location]] getVariable [[String]]|= Description
+
* [[Task]] getVariable [[Array]] (Since Arma 3 v1.67)
 +
* [[Location]] getVariable [[String]]
 +
* [[Location]] getVariable [[Array]] (Since Arma 3 v1.67)
 +
* [[Control]] getVariable [[String]] (since Arma 3 v1.55.133553)
 +
* [[Control]] getVariable [[Array]] (since Arma 3 v1.55.133553)
 +
* [[Display]] getVariable [[String]] (since Arma 3 v1.55.133553)
 +
* [[Display]] getVariable [[Array]] (since Arma 3 v1.55.133553)
 +
When variable is set on [[Task]], it is not actually set on task itself, but on FSM attached to the task. So if there is no FSM [[getVariable]] will not work. |DESCRIPTION=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| object '''getVariable''' name |= Syntax
+
| varspace '''getVariable''' name |SYNTAX=
  
|p1= object: [[Object]] or [[Location]] |= Parameter 1
+
|p1= varspace: [[Namespace]], [[Object]], [[Display]], [[Control]], [[Group]], [[Location]], [[Task]], [[Team Member]], [[Display]], [[Control]] |PARAMETER1=
  
|p2= name: [[String]] - Variable name that was defined in [[setVariable]] ('''Case sensitive''') |= Parameter 2
+
|p2= name: [[String]] - Variable name that was defined in [[setVariable]] |PARAMETER2=
  
| [[Any Value]]<br> Returns [[Nothing]] if the variable doesn't exist.<br> Returns [[Anything]] if the object is undefined.<br> |= Return value
+
| [[Anything]] or [[Nothing]] if the variable doesn't exist |RETURNVALUE=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
|s2= object '''getVariable''' [name, defaultValue] |= Syntax
 
  
|p21= object: [[Object]] or [[Location]] |= Parameter 1
+
|s2= varspace '''getVariable''' [name, defaultValue] |SYNTAX=
 +
 
 +
|p21= varspace: [[Namespace]], [[Object]], [[Display]], [[Control]], [[Group]], [[Location]], [[Task]], [[Team Member]], [[Display]], [[Control]] |PARAMETER1=
 +
 
 +
|p22= [name, defaultValue]: [[Array]]
  
|p22= name: [[String]] - Variable name that was defined in [[setVariable]] ('''Case sensitive''') |= Parameter 2
+
|p23= name: [[String]] - Variable name that was defined in [[setVariable]] |PARAMETER2=
  
|p23= defaultValue: [[Any Value]] - Value to return if variable doesn't exist |= Parameter 3
+
|p24= defaultValue: [[Anything]] - Value to return if variable doesn't exist |PARAMETER3=
  
|r2= [[Any Value]]<br> Returns ''defaultValue'' if the variable doesn't exist.<br> Returns [[Anything]] if the object is undefined.<br> |= Return value 2
+
|r2= [[Anything]] - current value of the variable or ''defaultValue'' if the variable doesn't exist. |RETURNVALUE= 2
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
|x1= <code>_aVariable <nowiki>=</nowiki> _myTruck getVariable "myVariable";</code> |= Example 1
+
|x1= <code>_thePublicVariable = _myTruck [[getVariable]] "myPublicVariable";</code> |EXAMPLE1=
 +
 
 +
|x2= <code>_aLocalVariable = _myTruck [[getVariable]] ["myLocalVariable", ["Not set", _var]<nowiki>]</nowiki> [[select]] 1;</code> |EXAMPLE2=
 +
 
 +
|x3= <code>[[for]] "_i" [[from]] 0 [[to]] 5 [[do]] {
 +
    _car = [[missionNamespace]] [[getVariable]] ("car" [[valuea_plus_valueb|+]] [[str]] _i);
 +
    _car [[setDamage]] 0;
 +
};</code>
 +
Sets damage of car0, car1, ..., car5 to 0. |EXAMPLE3=
 +
 
 +
|x4= <code>myMissionVar = 2015;
 +
[[missionNamespace]] [[getVariable]] "myMissionVar";//Returns 2015</code>|EXAMPLE4=
 +
 
 +
|x5= WARNING when using dynamic default value: <code>[[missionNamespace]] [[getVariable]] ["var", 123 [[call]] fnc_abc];
 +
/// fnc_abc is always called even when '''var''' is defined</code>|=
 +
 
 +
|x6= Get current value of a variable and if it is undefined, define it and get the defined value:<code>[[private]] _var = [[missionNamespace]] [[getVariable]] "varName";
 +
[[if]] ([[isNil]] "_var") [[then]]
 +
{
 +
[[missionNamespace]] [[setVariable]] ["varName", 123];
 +
_var = 123;
 +
};
 +
// _var here will contain current value of the variable varName</code> |EXAMPLE6=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| [[setVariable]], [[getVariable (VBS2)]] |= See also
+
| [[setVariable]], [[allVariables]], [[getFSMVariable]]|SEEALSO=
  
 
}}
 
}}
Line 61: Line 93:
 
[[Category:Command_Group:_Locations|{{uc:{{PAGENAME}}}}]]
 
[[Category:Command_Group:_Locations|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
 +
 +
<!-- CONTINUE Notes -->
 +
<dl class="command_description">
 +
<dd class="notedate">Posted on August 13, 2016 - 17:13 (UTC)</dd>
 +
<dt class="note">[[User:Ebay|Ebay]]</dt>
 +
<dd class="note">
 +
'''NOTE: Arma 2 ONLY! In Arma 3 this will return default value'''.
 +
Warning: the alternative syntax returns undefined when the varspace is an object and that object is null. Example:<br />
 +
<code>_test = objNull getVariable ["test","0"];
 +
systemChat _test;</code>
 +
Errors because _test is undefined. Tested in A2OA 1.63.131129
 +
</dd>
 +
</dl>
 +
<!-- DISCONTINUE Notes -->
 +
 +
<!-- CONTINUE Notes -->
 +
<dl class="command_description">
 +
<dd class="notedate">Posted on August 31, 2017 - 03:29 (UTC)</dd>
 +
<dt class="note">[[User:AgentRevolution|AgentRev]]</dt>
 +
<dd class="note">
 +
You can do typechecking using [[param]]:
 +
<code>private _myVar = [player getVariable "myVar"] param [0,"",[""]];</code>
 +
and [[params]]:
 +
<code>[player getVariable "myVar"] params [["_myVar","",[""]]];</code>
 +
</dd>
 +
</dl>
 +
<!-- DISCONTINUE Notes -->

Latest revision as of 15:40, 7 April 2019

Introduced with Armed Assault version 1.00
  Arguments of this scripting command don't have to be local to the client the command is executed on

Click on the images for descriptions

Introduced in

Game:
Armed Assault
Version:
1.00

Description

Description:
Return the value of variable in the variable space assigned to various data types. In case of Alt Syntax usage in Arma 3, the default value will be returned if:
  • Requested variable is either undefined or nil
  • Variable namespace is null (objNull, grpNull, etc.)
All available data types combinations: When variable is set on Task, it is not actually set on task itself, but on FSM attached to the task. So if there is no FSM getVariable will not work.

Syntax

Syntax:
varspace getVariable name
Parameters:
varspace: Namespace, Object, Display, Control, Group, Location, Task, Team Member, Display, Control
name: String - Variable name that was defined in setVariable
Return Value:
Anything or Nothing if the variable doesn't exist

Alternative Syntax

Syntax:
varspace getVariable [name, defaultValue]
Parameters:
varspace: Namespace, Object, Display, Control, Group, Location, Task, Team Member, Display, Control
[name, defaultValue]: Array
name: String - Variable name that was defined in setVariable
defaultValue: Anything - Value to return if variable doesn't exist
Return Value:
Anything - current value of the variable or defaultValue if the variable doesn't exist.

Examples

Example 1:
_thePublicVariable = _myTruck getVariable "myPublicVariable";
Example 2:
_aLocalVariable = _myTruck getVariable ["myLocalVariable", ["Not set", _var]] select 1;
Example 3:
for "_i" from 0 to 5 do { _car = missionNamespace getVariable ("car" + str _i); _car setDamage 0; }; Sets damage of car0, car1, ..., car5 to 0.
Example 4:
myMissionVar = 2015; missionNamespace getVariable "myMissionVar";//Returns 2015
Example 5:
WARNING when using dynamic default value: missionNamespace getVariable ["var", 123 call fnc_abc]; /// fnc_abc is always called even when var is defined
Example 6:
Get current value of a variable and if it is undefined, define it and get the defined value:private _var = missionNamespace getVariable "varName"; if (isNil "_var") then { missionNamespace setVariable ["varName", 123]; _var = 123; }; // _var here will contain current value of the variable varName

Additional Information

Multiplayer:
-
See also:
setVariableallVariablesgetFSMVariable

Notes

Only post proven facts here. Report bugs on the feedback tracker. Use the talk page or the forums for discussions.
Add New Note | How To

Notes

Bottom Section

Posted on August 13, 2016 - 17:13 (UTC)
Ebay
NOTE: Arma 2 ONLY! In Arma 3 this will return default value. Warning: the alternative syntax returns undefined when the varspace is an object and that object is null. Example:
_test = objNull getVariable ["test","0"]; systemChat _test; Errors because _test is undefined. Tested in A2OA 1.63.131129
Posted on August 31, 2017 - 03:29 (UTC)
AgentRev
You can do typechecking using param: private _myVar = [player getVariable "myVar"] param [0,"",[""]]; and params: [player getVariable "myVar"] params [["_myVar","",[""]]];