Difference between revisions of "setVariable"

From Bohemia Interactive Community
Jump to navigation Jump to search
m (See also to GetVariable)
m (Text replacement - "Category:Scripting Commands ArmA2" to "Category:Scripting Commands Arma 2")
(89 intermediate revisions by 27 users not shown)
Line 1: Line 1:
{{Command|= Comments
+
{{Command|Comments=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| arma |= Game name
+
| arma |Game name=
  
|1.00|= Game version
+
|1.00|Game version=
  
|arg= local |= Arguments in MP
+
|arg= global|Arguments in MP=
 +
|eff= local |Effects in MP=
 +
____________________________________________________________________________________________
  
|eff= local |= Effects in MP
+
| Set variable to given value in the variable space of given element.<br />
 +
To remove a variable, set it to [[nil]] (e.g. {{Inline code|[[player]] [[setVariable]] ["varname", [[nil]]<nowiki>]</nowiki>;}}).<br />
 +
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 [[setVariable]] will not work.<br>
 +
When variable is set on [[Location]], it works only with locations created with [[createLocation]].<br>
 +
All supported variable types:
 +
* [[Namespace]]
 +
* [[Object]]
 +
* [[Group]]
 +
* [[Team Member]]
 +
* [[Task]] (FSM Task)
 +
* [[Location]] (only [[createLocation | scripted]] locations)
 +
* [[Control]] (since Arma 3 v1.55.133553)
 +
* [[Display]] (since Arma 3 v1.55.133553)
 +
 
 +
{{Feature arma3|In Arma 3 it is possible to broadcast [[nil]] value}}
 +
{{Warning | [[missionNamespace]], [[uiNamespace]], [[parsingNamespace]] and [[profileNamespace]] variable names could be any string, except for the reserved names, which are normally script command names. For example: <tt>[[missionNamespace]] setVariable ["west", 123];</tt> will result in error:
 +
Error in expression <missionNamespace setVariable ["west", 123];>
 +
    Error position: <setVariable ["west", 123];>
 +
    Error Reserved variable in expression 
 +
as [[west]] is a script command. Other varspaces do not have such limitation. You can always check for all available script commands by running [[Arma_3_Utilities#Script_Commands | utility number 5]]}} |Description=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| Set variable to given value in the variable space of given object. In MP The variable space of the object is local to each client. Changes are not broadcast.
+
| varspace [[setVariable]] [name, value] |Syntax 1=
 +
 
 +
|p1= varspace: [[Namespace]], [[Object]], [[Group]], [[Team_Member]], [[Task]], [[Location]], [[Control]], [[Display]] - variable space in which variable can be set |Parameter 1=
 +
|p2= [name, value]: [[Array]] |Parameter 2=
 +
|p3= name: [[String]] - variable name |Parameter 3=
 +
|p4= value: [[Anything]] - variable value |Parameter 4=
 +
 
 +
| [[Nothing]] |Return value=
 +
 
 +
| s2 = varspace [[setVariable]] [name, value, public] |Syntax 2=
 +
 
 +
|p21= varspace: [[missionNamespace]], [[Object]] or [[Group]] - variable space in which variable can be set |Parameter 21=
 +
|p22= [name, value, public]: [[Array]] |Parameter 22=
 +
|p23= name: [[String]] - variable name |Parameter 23=
 +
|p24= value: [[Anything]] - variable value (if public is [[true]], check [[publicVariable]] for what types are supported for broadcast) |Parameter 24=
 +
|p25= public: [[Boolean]], [[Number]] or [[Array]] of [[Number]]s
 +
* [[Boolean]] - when [[true]], the variable broadcast is global and persistent {{EffArg|cmd|eff|glob}}
 +
* [[Number]] - the variable is set only on the client of given [[owner]] ([[clientOwner]]) id, or if id is negative, the variable is set on every client except the given one
 +
* [[Array]] of [[Number]]s - array of [[owner]] ([[clientOwner]]) ids |Parameter 25=
  
The object must be a vehicle, otherwise the function does nothing.  |= Description
+
|r2= [[Nothing]] |Return value 2=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| object '''setVariable''' [name, value] |= Syntax
+
|x1= <code>_myTruck [[setVariable]] ["myPublicVariable", 123, [[true]]];</code> |Example 1=
  
|p1= object: [[Object]] |= Parameter 1
+
|x2= <code>_myTruck [[setVariable]] ["myLocalVariable", ["321", _var], [[false]]];</code> |Example 2=
  
|p2= [name, value]: [[Array]] |= Parameter 2
+
|x3= <code>[[missionNamespace]] [[setVariable]] ["myName", "KK"];
 +
[[hint]] myName; //KK</code> |Example 3=
  
| [[Nothing]] |= Return value
+
|x4= 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]]
|x1= <code>myTruck setVariable ["myVariable",123];</code> |= Example 1
+
{
 +
[[missionNamespace]] [[setVariable]] ["varName", 123];  
 +
_var = 123;
 +
};
 +
// _var here will contain current value of the variable varName</code> |Example 4=
  
| [[getVariable]] |= See also
+
|mp= The variable space of the object is '''local to each client''' and '''by default''' changes are not broadcast.<br />
 +
Since Arma 2: '''If''' the '''public''' parameter for supported types is ''<tt>true</tt>'', the value will be '''synchronized''' also for a [[Join In Progress|JIP]] player. |Multiplayer=
  
 +
| [[getVariable]], [[allVariables]], [[setFSMVariable]], [[Multiplayer Scripting#Join In Progress|Multiplayer Scripting]]|See also=
 
}}
 
}}
  
 
<h3 style="display:none">Notes</h3>
 
<h3 style="display:none">Notes</h3>
 
<dl class="command_description">
 
<dl class="command_description">
<!-- Note Section BEGIN -->
 
  
<!-- Note Section END -->
 
 
</dl>
 
</dl>
  
 
<h3 style="display:none">Bottom Section</h3>
 
<h3 style="display:none">Bottom Section</h3>
[[Category:Scripting Commands|SETVARIABLE]]
+
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands OFP Elite |SETVARIABLE]]
+
[[Category:Scripting Commands OFP Elite |{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA|SETVARIABLE]]
+
[[Category:Scripting Commands ArmA|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Command_Group:_Locations|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Command_Group:_Object_Information|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Command_Group:_Variables|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting Commands Arma 2|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
 +
 
 +
<!-- CONTINUE Notes -->
 +
<dl class="command_description">
 +
<dd class="notedate">Posted on December 9, 2015 - 20:18 (UTC)</dd>
 +
<dt class="note">[[User:Commy2|Commy2]]</dt>
 +
<dd class="note">
 +
This command does not work with CfgAmmo or CfgNonAIVehicles objects, like bullets, mines or butterflies (probably because they are [[local]] objects [[User:Killzone Kid|Killzone Kid]] ([[User talk:Killzone Kid|talk]]) 11:25, 9 July 2017 (CEST)).
 +
</dd>
 +
</dl>
 +
<!-- DISCONTINUE Notes -->

Revision as of 17:42, 10 January 2020

Template:Command

Notes

Bottom Section

Posted on December 9, 2015 - 20:18 (UTC)
Commy2
This command does not work with CfgAmmo or CfgNonAIVehicles objects, like bullets, mines or butterflies (probably because they are local objects Killzone Kid (talk) 11:25, 9 July 2017 (CEST)).