BIS fnc initIntelObject: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - " \| *(\[[^ ]+\] (call|spawn) ('''|\[\[)BI(N|S)_fnc_[a-zA-Z0-9_]+('''|\]\]));? \| *p1 *=" to " |s1=$1 |p1=")
m (Text replacement - " +\] +" to "] ")
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{RV|type=function
{{RV|type=function


| arma3
|game1= arma3
 
|version1= 1.00
|1.00


|gr1= Interaction
|gr1= Interaction


| This function sets up an object as intel retrievable by the players by adding a "Take Intel" [[addAction]] to it.<br>
|descr= This function sets up an object as intel retrievable by the players by adding a "Take Intel" [[addAction]] to it.<br>
When a player uses the action, they will play an animation to pick the object up and the object will be deleted from the mission.<br>
When a player uses the action, they will play an animation to pick the object up and the object will be deleted from the mission.<br>
The player and any defined recipients will then receive a diary entry which can contain a ''title'', ''description'' and ''picture''.<br>
The player and any defined recipients will then receive a diary entry which can contain a ''title'', ''description'' and ''picture''.<br>
The diary entry will also contain a marker shortcut showing where the intel was found.<br><br>
The diary entry will also contain a marker shortcut showing where the intel was found.<br><br>
This function is similar to placing an intel object as Zeus, but the Zeus interface provides some extra options like:<br>
This function is similar to placing an intel object as Zeus, but the Zeus interface provides some extra options like:<br>
*Which sides can interact with the action
* Which sides can interact with the action
*The picture, title and description used in the diary entry
* The picture, title and description used in the diary entry
<br>
<br>
When using this function from script there are several variables that need to be set up to acquire the same results (see the examples below).<br>
When using this function from script there are several variables that need to be set up to acquire the same results (see the examples below).<br>
Without this extra setup the functionality provided is minimal and only includes:
Without this extra setup the functionality provided is minimal and only includes:
*The "Take Intel" action on the object
* The "Take Intel" action on the object
*The object can be picked up by a player from any side
* The object can be picked up by a player from any side
*When picked up it will have no title or description and the picture will be a default exclamation mark
* When picked up it will have no title or description and the picture will be a default exclamation mark
*The diary entry will only be given to the person who picked it up
* The diary entry will only be given to the person who picked it up
<br>
<br>
There are some optional features of intel objects that can be used:
There are some optional features of intel objects that can be used:
*The diary entry's ''description'' can be further enhanced by using the supported tags found on the [[createDiaryRecord]] page.
* The diary entry's ''description'' can be further enhanced by using the supported tags found on the [[createDiaryRecord]] page.
*There is also a [[BIS_fnc_addScriptedEventHandler|scripted eventhandler]] called ''"IntelObjectFound"'' that can be registered  on the intel object. The event provides the parameters [object, caller] where ''object'' is the intel object and ''caller'' the person who picked it up.
* There is also a [[BIS_fnc_addScriptedEventHandler|scripted eventhandler]] called ''"IntelObjectFound"'' that can be registered  on the intel object. The event provides the parameters [object, caller] where ''object'' is the intel object and ''caller'' the person who picked it up.
*A Zeus who has the intel object registered as a curator editable object can also receive feedback that the intel has been picked up if the [[BIS_fnc_addScriptedEventHandler|scripted eventhandler]] called ''"intelObjectFound"'' was registered on the curator module. The event provides the parameters [zeus, caller, object] where ''zeus'' is the curator module, ''caller'' the person who picked it up and ''object'' is the intel object.
* A Zeus who has the intel object registered as a curator editable object can also receive feedback that the intel has been picked up if the [[BIS_fnc_addScriptedEventHandler|scripted eventhandler]] called ''"intelObjectFound"'' was registered on the curator module. The event provides the parameters [zeus, caller, object] where ''zeus'' is the curator module, ''caller'' the person who picked it up and ''object'' is the intel object.
The usage of these scripted event handlers is shown in '''Example 3'''.<br>
The usage of these scripted event handlers is shown in {{Link|#Example 3}}.<br>
 
|s1= [object] call [[BIS_fnc_initIntelObject]]


|s1=[object] call [[BIS_fnc_initIntelObject]]
|p1= object: [[Object]] - object to place intel action on


|p1= object: [[Object]] - Object to place intel action on
|r1= [[Boolean]] - [[true]] when done


| [[true]]
{{Feature|Informative|}}
|x1= Setup an object as intel from its init attribute in the editor.<br>
|x1= Setup an object as intel from its init attribute in the editor.<br>
Basic version including ''picture'', ''title'', ''description'', ''recipients'' and ''sides that can interact with it'':<br>
Basic version including ''picture'', ''title'', ''description'', ''recipients'' and ''sides that can interact with it'':
<code>[this] [[call]] [[BIS_fnc_initIntelObject]];
<sqf>
[this] call BIS_fnc_initIntelObject;


if ([[isServer]]) then {
if (isServer) then
{{cc|Diary picture:}}
{
this [[setVariable]] [
// Diary picture:
this setVariable [
"RscAttributeDiaryRecord_texture",
"RscAttributeDiaryRecord_texture",
"a3\structures_f_epc\Items\Documents\Data\document_secret_01_co.paa", {{cc|Path to picture}}
"a3\structures_f_epc\Items\Documents\Data\document_secret_01_co.paa", // Path to picture
[[true]]
true
];
];
 
{{cc|Diary Title and Description:}}
// Diary Title and Description:
[
[
this,
this,
"RscAttributeDiaryRecord",
"RscAttributeDiaryRecord",
["New Intel", "The enemies have a cave troll!"] {{cc|Array in format [Title, Description]}}
["New Intel", "The enemies have a cave troll!"] // Array in format [Title, Description]
] [[call]] [[BIS_fnc_setServerVariable]];
] call BIS_fnc_setServerVariable;
 
{{cc|Diary entry shared with (follows [[BIS_fnc_MP]] target rules):}}
// Diary entry shared with (follows BIS_fnc_MP target rules):
this [[setVariable]] ["recipients", [[west]], [[true]]];
this setVariable ["recipients", west, true];
 
{{cc|Sides that can interact with the intel object:}}
// Sides that can interact with the intel object:
this [[setVariable]] ["RscAttributeOwners", [<nowiki/>[[west]]<nowiki>]</nowiki>, [[true]]];
this setVariable ["RscAttributeOwners", [west], true];
};</code>
};
<br>
</sqf>
|x2= To set up an object as intel from its init attribute in the editor with a custom [[addAction]] title, replace the first line of '''Example 1''' with the following:
 
<code>if ([[hasInterface]]) then {
|x2= To set up an object as intel from its init attribute in the editor with a custom [[addAction]] title, replace the first line of {{Link|#Example 1}} with the following:
this [[addAction]] [
<sqf>
{{cc|Custom addAction Title:}}
if (hasInterface) then
"Pick up laptop",
{
{[_this, "action"] [[spawn]] [[BIS_fnc_initIntelObject]];},
this addAction [
"Pick up laptop", // custom addAction title
{ [_this, "action"] spawn BIS_fnc_initIntelObject },
[],
[],
10,
10,
[[true]],
true,
[[true]],
true,
"",
"",
"[[isPlayer]] _this && {_this [[distance]] _target < 2} &&
"isPlayer _this && { _this distance _target < 2 } &&
{([[side]] [[group]] _this) [[in]] (_target [[getVariable]] ['RscAttributeOwners', [<nowiki/>[[west]], [[east]], [[resistance]], [[civilian]]]])}"
{ (side group _this) in (_target getVariable ['RscAttributeOwners', [west, east, resistance, civilian]]) }"
];
];
};</code>
};
</sqf>
 
|x3= Set up an object as intel from its init attribute in the editor.<br>
|x3= Set up an object as intel from its init attribute in the editor.<br>
Basic version plus curator and scripted event handlers:
Basic version plus curator and scripted event handlers:
<code>[this] [[call]] [[BIS_fnc_initIntelObject]];
<sqf>
[this] call BIS_fnc_initIntelObject;


if ([[isServer]]) then {
if (isServer) then
{{cc|Diary picture:}}
{
this [[setVariable]] [
// Diary picture:
this setVariable [
"RscAttributeDiaryRecord_texture",
"RscAttributeDiaryRecord_texture",
"a3\structures_f_epc\Items\Documents\Data\document_secret_01_co.paa", {{cc|Path to picture}}
"a3\structures_f_epc\Items\Documents\Data\document_secret_01_co.paa", // Path to picture
[[true]]
true
];
];
 
{{cc|Diary Title and Description:}}
// Diary Title and Description:
[
[
this,
this,
"RscAttributeDiaryRecord",
"RscAttributeDiaryRecord",
["New Intel", "The enemies have a cave troll!"] {{cc|Array in format [Title, Description]}}
["New Intel", "The enemies have a cave troll!"] // Array in format [Title, Description]
] [[call]] [[BIS_fnc_setServerVariable]];
] call BIS_fnc_setServerVariable;
{{cc|Diary entry shared with (follows [[BIS_fnc_MP]] target rules):}}
this [[setVariable]] ["recipients", [[west]], [[true]]];
{{cc|Sides that can interact with the intel object:}}
this [[setVariable]] ["RscAttributeOwners", [<nowiki/>[[west]]<nowiki>]</nowiki>, [[true]]];


{{cc|Register intel object with Zeus as curator editable (_zeus is the curator module):}}
// Diary entry shared with (follows BIS_fnc_MP target rules):
    _zeus [[addCuratorEditableObjects]] <nowiki>[[</nowiki>this], [[false]]];
this setVariable ["recipients", west, true];


{{cc|Add Zeus scripted event:}}
// Sides that can interact with the intel object:
[_zeus, "IntelObjectFound", {[[hint]] "Intel found"}] [[call]] [[BIS_fnc_addScriptedEventHandler]];
this setVariable ["RscAttributeOwners", [west], true];


{{cc|Add a scripted event that notifies all clients via [[systemChat]] when the intel is found:}}
// Register intel object with Zeus as curator editable (_zeus is the curator module):
_zeus addCuratorEditableObjects [[this], false];
 
// Add Zeus scripted event:
[_zeus, "IntelObjectFound", {hint "Intel found"}] call BIS_fnc_addScriptedEventHandler;
 
// Add a scripted event that notifies all clients via systemChat when the intel is found:
[
[
this,
this,
"IntelObjectFound",
"IntelObjectFound",
{
{
[[params]] ["", "_foundBy"];
params ["", "_foundBy"];
[[private]] _msg = [[format]] ["Intel found by %1", [[name]] _foundBy];
private _msg = format ["Intel found by %1", name _foundBy];
_msg [[remoteExec]] ["systemChat", 0];
_msg remoteExec ["systemChat", 0];
}
}
] [[call]] [[BIS_fnc_addScriptedEventHandler]];
] call BIS_fnc_addScriptedEventHandler;
};
};
</code> Although both scripted event handlers supply a reference to the intel object, it is deleted from the mission almost immediately, so it could already be [[objNull|null]] when queried.
</sqf>
Although both scripted event handlers supply a reference to the intel object, it is deleted from the mission almost immediately, so it could already be [[objNull|null]] when queried.
 
|seealso=
}}
}}

Latest revision as of 17:49, 8 November 2023

Hover & click on the images for description

Description

Description:
This function sets up an object as intel retrievable by the players by adding a "Take Intel" addAction to it.
When a player uses the action, they will play an animation to pick the object up and the object will be deleted from the mission.
The player and any defined recipients will then receive a diary entry which can contain a title, description and picture.
The diary entry will also contain a marker shortcut showing where the intel was found.

This function is similar to placing an intel object as Zeus, but the Zeus interface provides some extra options like:
  • Which sides can interact with the action
  • The picture, title and description used in the diary entry

When using this function from script there are several variables that need to be set up to acquire the same results (see the examples below).
Without this extra setup the functionality provided is minimal and only includes:
  • The "Take Intel" action on the object
  • The object can be picked up by a player from any side
  • When picked up it will have no title or description and the picture will be a default exclamation mark
  • The diary entry will only be given to the person who picked it up

There are some optional features of intel objects that can be used:
  • The diary entry's description can be further enhanced by using the supported tags found on the createDiaryRecord page.
  • There is also a scripted eventhandler called "IntelObjectFound" that can be registered on the intel object. The event provides the parameters [object, caller] where object is the intel object and caller the person who picked it up.
  • A Zeus who has the intel object registered as a curator editable object can also receive feedback that the intel has been picked up if the scripted eventhandler called "intelObjectFound" was registered on the curator module. The event provides the parameters [zeus, caller, object] where zeus is the curator module, caller the person who picked it up and object is the intel object.
The usage of these scripted event handlers is shown in Example 3.
Execution:
call
Groups:
Interaction

Syntax

Syntax:
[object] call BIS_fnc_initIntelObject
Parameters:
object: Object - object to place intel action on
Return Value:
Boolean - true when done

Examples

Example 1:
Setup an object as intel from its init attribute in the editor.
Basic version including picture, title, description, recipients and sides that can interact with it:
[this] call BIS_fnc_initIntelObject; if (isServer) then { // Diary picture: this setVariable [ "RscAttributeDiaryRecord_texture", "a3\structures_f_epc\Items\Documents\Data\document_secret_01_co.paa", // Path to picture true ]; // Diary Title and Description: [ this, "RscAttributeDiaryRecord", ["New Intel", "The enemies have a cave troll!"] // Array in format [Title, Description] ] call BIS_fnc_setServerVariable; // Diary entry shared with (follows BIS_fnc_MP target rules): this setVariable ["recipients", west, true]; // Sides that can interact with the intel object: this setVariable ["RscAttributeOwners", [west], true]; };
Example 2:
To set up an object as intel from its init attribute in the editor with a custom addAction title, replace the first line of Example 1 with the following:
if (hasInterface) then { this addAction [ "Pick up laptop", // custom addAction title { [_this, "action"] spawn BIS_fnc_initIntelObject }, [], 10, true, true, "", "isPlayer _this && { _this distance _target < 2 } && { (side group _this) in (_target getVariable ['RscAttributeOwners', [west, east, resistance, civilian]]) }" ]; };
Example 3:
Set up an object as intel from its init attribute in the editor.
Basic version plus curator and scripted event handlers:
[this] call BIS_fnc_initIntelObject; if (isServer) then { // Diary picture: this setVariable [ "RscAttributeDiaryRecord_texture", "a3\structures_f_epc\Items\Documents\Data\document_secret_01_co.paa", // Path to picture true ]; // Diary Title and Description: [ this, "RscAttributeDiaryRecord", ["New Intel", "The enemies have a cave troll!"] // Array in format [Title, Description] ] call BIS_fnc_setServerVariable; // Diary entry shared with (follows BIS_fnc_MP target rules): this setVariable ["recipients", west, true]; // Sides that can interact with the intel object: this setVariable ["RscAttributeOwners", [west], true]; // Register intel object with Zeus as curator editable (_zeus is the curator module): _zeus addCuratorEditableObjects [[this], false]; // Add Zeus scripted event: [_zeus, "IntelObjectFound", {hint "Intel found"}] call BIS_fnc_addScriptedEventHandler; // Add a scripted event that notifies all clients via systemChat when the intel is found: [ this, "IntelObjectFound", { params ["", "_foundBy"]; private _msg = format ["Intel found by %1", name _foundBy]; _msg remoteExec ["systemChat", 0]; } ] call BIS_fnc_addScriptedEventHandler; };
Although both scripted event handlers supply a reference to the intel object, it is deleted from the mission almost immediately, so it could already be null when queried.

Additional Information

See also:
See also needed

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