Difference between revisions of "getVariable"

From Bohemia Interactive Community
Jump to navigation Jump to search
(removed case-sensitive mention, because it is NOT)
m (Fix Category:Pages using duplicate arguments in template calls and presentation. Table improvements welcome)
 
(24 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Command|= Comments
+
{{Command|Comments=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| arma |= Game name
+
| arma |Game name=
|1.00|= Game version
+
 
|arg= global|= Arguments in MP
+
|1.00|Game version=
 +
 
 +
|arg= global |Multiplayer Arguments=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| Return the value of variable in the variable space of given object or location.
+
| Returns the value of variable in the variable space assigned to various data types.
<br>
 
<br>
 
 
All available data types combinations:
 
All available data types combinations:
 +
{{{!}} class{{=}}"bikitable"
 +
! Primary syntax ([[String]])
 +
! Alternative syntax ([[Array]])
 +
{{!}}-
 +
{{!}}
 
* [[Namespace]] getVariable [[String]]
 
* [[Namespace]] getVariable [[String]]
* [[Namespace]] getVariable [[Array]] (since {{Name|a2}} 1.60)
 
 
* [[Object]] getVariable [[String]]
 
* [[Object]] getVariable [[String]]
* [[Object]] getVariable [[Array]]
 
 
* [[Group]] getVariable [[String]]
 
* [[Group]] getVariable [[String]]
* [[Group]] getVariable [[Array]]
 
 
* [[Team_Member]] getVariable [[String]]
 
* [[Team_Member]] getVariable [[String]]
* [[Team_Member]] getVariable [[Array]]
 
 
* [[Task]] getVariable [[String]]
 
* [[Task]] getVariable [[String]]
 
* [[Location]] getVariable [[String]]
 
* [[Location]] getVariable [[String]]
* [[Control]] getVariable [[String]] (since Arma 3 v1.55.133553)
+
* [[Control]] getVariable [[String]] (since {{arma3}} v1.55.133553)
* [[Control]] getVariable [[Array]] (since Arma 3 v1.55.133553)
+
* [[Display]] getVariable [[String]] (since {{arma3}} v1.55.133553)
* [[Display]] getVariable [[String]] (since Arma 3 v1.55.133553)
+
{{!}}
* [[Display]] getVariable [[Array]] (since Arma 3 v1.55.133553)|= Description
+
* [[Namespace]] getVariable [[Array]] (since {{arma2}} OA v1.60)
 +
* [[Object]] getVariable [[Array]]
 +
* [[Group]] getVariable [[Array]]
 +
* [[Team_Member]] getVariable [[Array]]
 +
* [[Task]] getVariable [[Array]] (since {{arma3}} v1.67)
 +
* [[Location]] getVariable [[Array]] (since {{arma3}} v1.67)
 +
* [[Control]] getVariable [[Array]] (since {{arma3}} v1.55.133553))
 +
* [[Display]] getVariable [[Array]] (since {{arma3}} v1.55.133553)
 +
{{!}}}
 +
 
 +
{{Important | When variable is [[setVariable|set]] on a [[Task]], it is not actually set on the task itself, but on the FSM attached to the task.<br>
 +
If there is no FSM, [[getVariable]] will not work.}}
 +
{{Feature arma3 | In the case of Alt Syntax usage in {{arma3}}, ''defaultValue'' will be returned if:
 +
* Requested variable is either undefined or [[nil]]
 +
* Variable namespace is null ([[objNull]], [[grpNull]], etc.)}} |DESCRIPTION=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| varspace '''getVariable''' name |= Syntax
+
| varspace [[getVariable]] name |SYNTAX=
  
|p1= varspace: [[Namespace]], [[Object]], [[Display]], [[Control]], [[Group]], [[Location]], [[Task]] or [[Team Member]] |= 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]] |= Parameter 2
+
|p2= name: [[String]] - variable name that was defined in [[setVariable]] |PARAMETER2=
  
| [[Anything]] or [[Nothing]] if the variable doesn't exist |= Return value
+
| [[Anything]] or [[Nothing]] if the variable doesn't exist |RETURNVALUE=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
|s2= varspace '''getVariable''' [name, defaultValue] |= Syntax
+
|s2= varspace [[getVariable]] [name, defaultValue] |SYNTAX2=
  
|p21= varspace: [[Namespace]], [[Object]], [[Display]], [[Control]], [[Group]] or [[Team Member]] |= Parameter 1
+
|p21= varspace: [[Namespace]], [[Object]], [[Display]], [[Control]], [[Group]], [[Location]], [[Task]], [[Team Member]], [[Display]], [[Control]] |PARAMETER21=
  
|p22= name: [[String]] - Variable name that was defined in [[setVariable]] |= Parameter 2
+
|p22= name: [[String]] - Variable name that was defined in [[setVariable]] |PARAMETER22=
  
|p23= defaultValue: [[Anything]] - Value to return if variable doesn't exist |= Parameter 3
+
|p23= defaultValue: [[Anything]] - Value to return if variable doesn't exist |PARAMETER23=
  
|r2= [[Anything]] or ''defaultValue'' if the variable doesn't exist.<br>
+
|r2= [[Anything]] - current value of the variable or ''defaultValue'' if the variable doesn't exist. |RETURNVALUE2=
'''Note:''' If the ''varspace'' is nonexistent ([[objNull]], [[grpNull]], [[controlNull]] ..etc), return is [[nil]] |= Return value 2
 
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
|x1= <code>_thePublicVariable = _myTruck [[getVariable]] "myPublicVariable";</code> |= Example 1
+
|x1= <code>[[private]] _variable = myTruck [[getVariable]] "myVariable"; {{cc|returns [[nil]] if "myVariable" is not set}}</code> |EXAMPLE1=
  
|x2= <code>_aLocalVariable = _myTruck [[getVariable]] ["myLocalVariable", ["Not set", _var]<nowiki>]</nowiki> [[select]] 1;</code> |= Example 2
+
|x2= <code>[[private]] _variable = myTruck [[getVariable]] ["myVariable", 50]; {{cc|returns 50 if "myVariable" is not set}}</code> |EXAMPLE2=
  
|x3= <code>[[for]] "_i" [[from]] 0 [[to]] 5 [[do]] {
+
|x3= Set damage of car0..car5 to 0:
    _car = [[missionNamespace]] [[getVariable]] ("car" [[valuea_plus_valueb|+]] [[str]] _i);
+
<code>[[for]] "_i" [[from]] 0 [[to]] 5 [[do]] {
    _car [[setDamage]] 0;
+
_car = [[missionNamespace]] [[getVariable]] ("car" [[valuea_plus_valueb|+]] [[str]] _i);
};</code>
+
_car [[setDamage]] 0;
Sets damage of car0, car1, ..., car5 to 0. |= Example 3
+
};</code> |EXAMPLE3=
  
 
|x4= <code>myMissionVar = 2015;
 
|x4= <code>myMissionVar = 2015;
[[missionNamespace]] [[getVariable]] "myMissionVar";//Returns 2015</code>|= Example 4
+
[[missionNamespace]] [[getVariable]] "myMissionVar"; {{cc|returns 2015}}</code>|EXAMPLE4=
  
|x5= WARNING when using dynamic default value: <code>[[missionNamespace]] [[getVariable]] ["var", 123 [[call]] fnc_abc];
+
|x5= WARNING when using dynamic default values as they always get evaluated:
/// fnc_abc is always called even when '''var''' is defined</code>|=
+
<code>[[missionNamespace]] [[getVariable]] ["var", 123 [[call]] fnc_abc];
 +
{{cc|fnc_abc is called every [[getVariable]] even if "var" is defined}}</code>|EXAMPLE5=
  
 
|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";
 
|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";
Line 70: Line 85:
 
_var = 123;
 
_var = 123;
 
};
 
};
// _var here will contain current value of the variable varName</code> |= Example 6
+
{{cc|_var here will contain current value of the variable varName}}</code> |EXAMPLE6=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| [[setVariable]], [[allVariables]] |= See also
+
| [[setVariable]], [[allVariables]], [[getFSMVariable]]|SEEALSO=
 
 
 
}}
 
}}
  
Line 80: Line 94:
 
<dl class="command_description">
 
<dl class="command_description">
 
<!-- Note Section BEGIN -->
 
<!-- Note Section BEGIN -->
<!-- Note Section END -->
 
</dl>
 
 
<h3 style="display:none">Bottom Section</h3>
 
[[Category:Scripting Commands|GETVARIABLE]]
 
[[Category:Scripting Commands ArmA|GETVARIABLE]]
 
[[Category:Command_Group:_Variables|{{uc:{{PAGENAME}}}}]]
 
[[Category:Command_Group:_Locations|{{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>
 
<dd class="notedate">Posted on August 13, 2016 - 17:13 (UTC)</dd>
 
<dt class="note">[[User:Ebay|Ebay]]</dt>
 
<dt class="note">[[User:Ebay|Ebay]]</dt>
 
<dd class="note">
 
<dd class="note">
 +
'''NOTE: {{arma2}} ONLY! In {{arma3}} this will return default value:'''
 
Warning: the alternative syntax returns undefined when the varspace is an object and that object is null. Example:<br />
 
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"];
+
<code>_test = [[objNull]] [[getVariable]] ["test", "0"];
systemChat _test;</code>
+
[[systemChat]] _test;</code>
 
Errors because _test is undefined. Tested in A2OA 1.63.131129
 
Errors because _test is undefined. Tested in A2OA 1.63.131129
 
</dd>
 
</dd>
 +
 +
<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 = <nowiki>[</nowiki>[[player]] [[getVariable]] "myVar"] [[param]] [0, "", [""]];</code>
 +
and [[params]]:
 +
<code><nowiki>[</nowiki>[[player]] [[getVariable]] "myVar"] [[params]] [["_myVar", "", [""]]];</code>
 +
</dd>
 +
 +
<!-- Note Section END -->
 
</dl>
 
</dl>
<!-- DISCONTINUE Notes -->
+
 
 +
<h3 style="display:none">Bottom Section</h3>
 +
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting Commands ArmA|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Command_Group:_Variables|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Command_Group:_Locations|{{uc:{{PAGENAME}}}}]]

Latest revision as of 19:56, 5 September 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:
Returns the value of variable in the variable space assigned to various data types. All available data types combinations:
Primary syntax (String) Alternative syntax (Array)
When variable is set on a Task, it is not actually set on the task itself, but on the FSM attached to the task.
If there is no FSM, getVariable will not work.
Arma 3 logo black.png
In the case of Alt Syntax usage in Arma 3, defaultValue will be returned if:
  • Requested variable is either undefined or nil
  • Variable namespace is null (objNull, grpNull, etc.)

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: 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:
private _variable = myTruck getVariable "myVariable"; // returns nil if "myVariable" is not set
Example 2:
private _variable = myTruck getVariable ["myVariable", 50]; // returns 50 if "myVariable" is not set
Example 3:
Set damage of car0..car5 to 0: for "_i" from 0 to 5 do { _car = missionNamespace getVariable ("car" + str _i); _car setDamage 0; };
Example 4:
myMissionVar = 2015; missionNamespace getVariable "myMissionVar"; // returns 2015
Example 5:
WARNING when using dynamic default values as they always get evaluated: missionNamespace getVariable ["var", 123 call fnc_abc]; // fnc_abc is called every getVariable even if "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

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", "", [""]]];

Bottom Section