BIS fnc MP: Difference between revisions
Jump to navigation
Jump to search
isPersistent: Boolean - true for persistent call (will be called now and for every JIP client) [default: false]
isCall: Boolean - (optional) true if function should be called on target machine, false to spawn it [default: false] Return Value:
Array - sent packet
No edit summary |
(Many thanks to highhead, note modified, error corrected, could you please check it?) |
||
Line 12: | Line 12: | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| [params, functionName, target, isPersistent] | | [params, functionName, target, isPersistent] call BIS_fnc_MP; |= Syntax | ||
|p1= '''params''': [[Anything]] - function arguments |= | |p1= '''params''': [[Anything]] - function arguments |= | ||
Line 30: | Line 30: | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
|x1= <code><nowiki>[</nowiki>"Imma spamming your log!","[[BIS_fnc_log]]"] | |x1= <code><nowiki>[</nowiki>"Imma spamming your log!","[[BIS_fnc_log]]"] [[call]] [[BIS_fnc_MP]];</code> | ||
Logs a message for every player who's currently joined.|= | Logs a message for every player who's currently joined.|= | ||
|x2= <code><nowiki>[</nowiki>["Hello World"],"[[BIS_fnc_guiMessage]]",[[nil]],true] | |x2= <code><nowiki>[</nowiki>["Hello World"],"[[BIS_fnc_guiMessage]]",[[nil]],[[true]] ] [[call]] [[BIS_fnc_MP]];</code> | ||
Send a message containing "Hello World" to every player, including the ones who joins later using JIP.|= | Send a message containing "Hello World" to every player, including the ones who joins later using JIP.|= | ||
|x3= <code><nowiki>[[[]</nowiki>,"playerConnected.sqf"],"BIS_fnc_execVM",false,true] | |x3= <code><nowiki>[[[]</nowiki>,"playerConnected.sqf"],"[[BIS_fnc_execVM]]",[[false]],[[true]] ] [[call]] [[BIS_fnc_MP]];</code> | ||
Executes ''playerConnected.sqf'' script on server every time a player joins the game. |= | Executes ''playerConnected.sqf'' script on server every time a player joins the game. |= | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| |= See also | | [[BIS_fnc_MPexec]] |= See also | ||
}} | }} | ||
Line 58: | Line 58: | ||
You can also execute scripts remotely like this: | You can also execute scripts remotely like this: | ||
<code><nowiki>[</nowiki>"myScript.sqf","[[BIS_fnc_execVM]]",[[true]],[[true]] ] [[ | <code><nowiki>[</nowiki>"myScript.sqf","[[BIS_fnc_execVM]]",[[true]],[[true]] ] [[call]] [[BIS_fnc_MP]];</code> | ||
Or transfer code as parameter (not recommended) like that: | Or transfer code as parameter (not recommended) like that: | ||
<code><nowiki>[</nowiki> | <code><nowiki>[</nowiki>{[[hint]] "Hello World!";},"[[BIS_fnc_spawn]]",[[true]],[[true]]] [[call]] [[BIS_fnc_MP]];</code> | ||
<dd class="notedate">Posted on 5 July, 2013 | <dd class="notedate">Posted on 5 July, 2013 | ||
Line 106: | Line 106: | ||
<!-- CONTINUE Notes --> | <!-- CONTINUE Notes --> | ||
<!-- DISCONTINUE Notes --> | <!-- DISCONTINUE Notes --> |
Revision as of 11:56, 31 July 2014
Function syntax in Take On Helicopters differs, see BIS_fnc_MP (Take On Helicopters) for details.
Description
- Description:
- Send function for remote execution (and executes locally if conditions are met) .
- Execution:
- call
- Groups:
- Uncategorised
Syntax
- Syntax:
- [params, functionName, target, isPersistent] call BIS_fnc_MP;
- Parameters:
- params: Anything - function arguments
- functionName: String - function name
- target:
- Object - function will be executed only where unit is local [default: everyone]
- Array - array of objects
- Boolean - true to execute on each machine (including the one where the function was called from), false to execute it on server only
- Number - function will be executed only on client with the given owner ID
- Side - function will be executed only on clients where the player is on the specified side
- Group - function will be executed only on clients where the player is in the specified group
Examples
- Example 1:
["Imma spamming your log!","BIS_fnc_log"] call BIS_fnc_MP;
Logs a message for every player who's currently joined.- Example 2:
[["Hello World"],"BIS_fnc_guiMessage",nil,true ] call BIS_fnc_MP;
Send a message containing "Hello World" to every player, including the ones who joins later using JIP.- Example 3:
[[[],"playerConnected.sqf"],"BIS_fnc_execVM",false,true ] call BIS_fnc_MP;
Executes playerConnected.sqf script on server every time a player joins the game.
Additional Information
- See also:
- BIS_fnc_MPexec
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
Notes
- Posted on 2 April, 2013
- Fireball
-
Note that the function you provide as argument is *not* transferred to the remote client or server.
You will have to use either
- functions defined in global namespace
- functions defined depending on where you want to execute them; in server or/and client code if you separate it using conditions on isServer or local player
- pre-defined BIS functions
["myScript.sqf","BIS_fnc_execVM",true,true ] call BIS_fnc_MP;
Or transfer code as parameter (not recommended) like that:[{hint "Hello World!";},"BIS_fnc_spawn",true,true] call BIS_fnc_MP;
- Posted on 5 July, 2013
- kylania
- "One key note when designing a mission/script is to limit the amount of use you make of the isPersistent parameter. It is not recommended to use it often for vehicle creation, object creation, etc. Each time you use the isPersistent parameter it adds to a BIS Logic which is used to sync all clients and new clients that join, excessive use of the command will make the logic build up and eventually you will cause the server to desync out because of the massive amount of data it has to send to all clients and JIP clients to try to keep them in sync. It is highly recommended to make as little use as possible of the isPersistent option unless you have to for network performance sake." -Tonic
- Posted on 10 December, 2013
- Killzone_Kid
-
If you need to achieve a single global execution of an existing function on all PCs including your own, the syntax could not be any more simple than: [arguments, functionname] call BIS_fnc_MP; This is particularly useful with commands such as switchMove where the command effect is local.
For example to make sure animation is played on every PC, first define a global function on every PC (maybe inside init.sqf):
switchMoveEverywhere = compileFinal " _this select 0 switchMove (_this select 1); ";
Then execute BIS_fnc_MP on only one PC which will in return execute switchMoveEverywhere function everywhere:[ [ player, "AmovPercMstpSrasWrflDnon_AadjPpneMstpSrasWrflDleft" ], "switchMoveEverywhere" ] call BIS_fnc_MP;
Bottom Section