publicVariable: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<h3 style="display:none">Bottom Section</h3> " to "")
m (Some wiki formatting)
 
(21 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Command
{{RV|type=command


| ofp
|game1= ofp
|version1= 1.34


|1.34
|game2= ofpe
|version2= 1.00


|gr1 = Multiplayer
|game3= arma1
|version3= 1.00


|gr2 = Variables
|game4= arma2
|version4= 1.00


|arg= local |Arguments in MP=
|game5= arma2oa
|version5= 1.50


|eff= global |Effects in MP=
|game6= tkoh
|version6= 1.00


| Reliably broadcasts [[missionNamespace]] variable and its '''current''' value to all computers (server/client).<br>
|game7= arma3
|version7= 0.50
 
|gr1= Multiplayer
 
|gr2= Variables
 
|arg= local
 
|eff= global
 
|descr= Reliably broadcasts [[missionNamespace]] variable and its '''current''' value to all computers (server/client).<br>
Variables broadcast with [[publicVariable]] during a mission will be available to [[Multiplayer Scripting#Join In Progress|JIP]] clients with the value they held at the time.<br>
Variables broadcast with [[publicVariable]] during a mission will be available to [[Multiplayer Scripting#Join In Progress|JIP]] clients with the value they held at the time.<br>
Such variables are persistent and sent to the JIP client before the first batch of client-side [[Event Scripts]] (such as [[init.sqf]]) is run.
Such variables are persistent and sent to the JIP client before the first batch of client-side [[Event Scripts]] (such as [[init.sqf]]) is run.
{{Important | Using [[publicVariable]] too frequently and/or with a lot of data can cause other aspects of the game to experience bandwidth problems.}}
{{Feature|important|Using [[publicVariable]] too frequently and/or with a lot of data can cause other aspects of the game to experience bandwidth problems.}}
<br>
<br>
The following [[Data Types]] are supported:
The following [[:Category: Data Types| Data Types]] are supported:
{{{!}} class{{=}}"wikitable" style{{=}}"text-align: center"
{{{!}} class="wikitable align-center"
! Type
! Type
{{!}} [[Number]]
{{!}} [[Number]]
Line 26: Line 43:
{{!}} [[Group]]
{{!}} [[Group]]
{{!}} [[String]]
{{!}} [[String]]
{{!}} [[Text]]
{{!}} [[Structured Text|Text]]
{{!}} [[Array]]
{{!}} [[Array]]
{{!}} [[Code]]
{{!}} [[Code]]
{{!}} [[Nothing]] ([[nil]])
{{!}} [[Nothing]] ([[nil]])
{{!}} [[HashMap]]
{{!}}-
{{!}}-
! Since
! Since
{{!}}
{{!}} colspan="4" {{!}} {{GVI|ofp|1.34}}
{{!}} {{GVI|ofp|1.34}}
{{!}} colspan="2" {{!}} {{GVI|arma1|1.00}}
{{!}} {{GVI|ofp|1.34}}
{{!}} colspan="2" {{!}} {{GVI|arma1|1.09}}
{{!}} {{GVI|ofp|1.34}}
{{!}} {{GVI|arma1|1.00}}
{{!}} {{GVI|arma1|1.00}}
{{!}} {{GVI|arma1|1.09}}
{{!}} {{GVI|arma1|1.09}}
{{!}} {{GVI|arma3|1.26}}
{{!}} {{GVI|arma3|1.26}}
{{!}} {{GVI|arma3|2.02}}
{{!}}}
{{!}}}


{{Important| It is not possible (and illogical) to transfer a local entity reference, such as [[Script|scripts]], [[Display|displays]] or [[createVehicleLocal|local objects]].<br>
{{Feature|important|
Also, note that [[Team Member]] is not supported.}}
It is not possible (and illogical) to transfer a local entity reference, such as [[Script Handle|scripts]], [[Display|displays]] or [[createVehicleLocal|local objects]].<br>
Also, note that [[Team Member]] is not supported.
}}


| [[publicVariable]] varName
|s1= [[publicVariable]] varName


|p1= varName: [[String]] - the [[Variables#Global Scope|global variable]]'s [[Identifier]]
|p1= varName: [[String]] - the [[Variables#Global Scope|global variable]]'s [[Identifier]]


| [[Nothing]]
|r1= [[Nothing]]


|x1= <code>TAG_MyPublicVariable = 0;
|x1= <sqf>
TAG_MyPublicVariable = 0;
TAG_MyPublicVariable = 1;
TAG_MyPublicVariable = 1;
[[publicVariable]] "TAG_MyPublicVariable"; {{cc|other clients will receive the "TAG_MyPublicVariable" variable with a '''1''' value}}
publicVariable "TAG_MyPublicVariable"; // other clients will receive the "TAG_MyPublicVariable" variable with a 1 value


TAG_MyPublicVariable = 2; {{cc|needs to be broadcast again - synchronisation is not automatic}}</code>
TAG_MyPublicVariable = 2; // needs to be broadcast again - synchronisation is not automatic
</sqf>


|x2= JIP example:
|x2= JIP example:
<code>[[if]] ([[isNil]] "TAG_CurrentTarget") [[then]] {{cc|has the variable already been set and broadcast?}}
<sqf>
if (isNil "TAG_CurrentTarget") then // has the variable already been set and broadcast?
{
{
TAG_CurrentTarget = [[objNull]]; {{cc|if not, set it on the local machine}}
TAG_CurrentTarget = objNull; // if not, set it on the local machine
};
};


[[player]] [[doTarget]] TAG_CurrentTarget;</code>
player doTarget TAG_CurrentTarget;
</sqf>


|x3= <code>TAG_BossName = "EvilBigBoss";
|x3= <sqf>
TAG_BossName = "EvilBigBoss";


[[publicVariable]] TAG_BossName; {{cc|wrong - will try to publicVariable "EvilBigBoss" variable, that does not exist}}
publicVariable TAG_BossName; // wrong - will try to publicVariable "EvilBigBoss" variable, that does not exist
[[publicVariable]] {{Color|red|"}}TAG_BossName{{Color|red|"}}; {{cc|correct - do not forget the {{Color|red|quotes}}}}</code>
publicVariable "TAG_BossName"; // correct - important, do not forget the QUOTES
</sqf>


| [[Multiplayer Scripting]], [[Initialization Order]], [[addPublicVariableEventHandler]], [[publicVariableClient]], [[publicVariableServer]], [[Variables#Global Scope|Global Variable]], [[Event Scripts]], [[Multiplayer Scripting#Join In Progress|Join In Progress]]
|seealso= [[Multiplayer Scripting]] [[Initialisation Order]] [[addPublicVariableEventHandler]] [[publicVariableClient]] [[publicVariableServer]] [[Variables#Global Scope|Global Variable]] [[Event Scripts]] [[Multiplayer Scripting#Join In Progress|Join In Progress]]
}}
}}
[[Category:Scripting Commands OFP 1.46|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands OFP 1.96|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands OFP 1.99|{{uc:{{PAGENAME}}}}]]
{{GameCategory|arma1|Scripting Commands}}
{{GameCategory|arma2|Scripting Commands}}
{{GameCategory|arma3|Scripting Commands}}
{{GameCategory|tkoh|Scripting Commands}}

Latest revision as of 15:57, 26 July 2023

Hover & click on the images for description

Description

Description:
Reliably broadcasts missionNamespace variable and its current value to all computers (server/client).
Variables broadcast with publicVariable during a mission will be available to JIP clients with the value they held at the time.
Such variables are persistent and sent to the JIP client before the first batch of client-side Event Scripts (such as init.sqf) is run.
Using publicVariable too frequently and/or with a lot of data can cause other aspects of the game to experience bandwidth problems.


The following Data Types are supported:

Type Number Boolean Object Group String Text Array Code Nothing (nil) HashMap
Since Logo A0.png1.34 Logo A1 black.png1.00 Logo A1 black.png1.09 Arma 3 logo black.png1.26 Arma 3 logo black.png2.02
It is not possible (and illogical) to transfer a local entity reference, such as scripts, displays or local objects.
Also, note that Team Member is not supported.
Groups:
MultiplayerVariables

Syntax

Syntax:
publicVariable varName
Parameters:
varName: String - the global variable's Identifier
Return Value:
Nothing

Examples

Example 1:
TAG_MyPublicVariable = 0; TAG_MyPublicVariable = 1; publicVariable "TAG_MyPublicVariable"; // other clients will receive the "TAG_MyPublicVariable" variable with a 1 value TAG_MyPublicVariable = 2; // needs to be broadcast again - synchronisation is not automatic
Example 2:
JIP example:
if (isNil "TAG_CurrentTarget") then // has the variable already been set and broadcast? { TAG_CurrentTarget = objNull; // if not, set it on the local machine }; player doTarget TAG_CurrentTarget;
Example 3:
TAG_BossName = "EvilBigBoss"; publicVariable TAG_BossName; // wrong - will try to publicVariable "EvilBigBoss" variable, that does not exist publicVariable "TAG_BossName"; // correct - important, do not forget the QUOTES

Additional Information

See also:
Multiplayer Scripting Initialisation Order addPublicVariableEventHandler publicVariableClient publicVariableServer Global Variable Event Scripts Join In Progress

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note