CBRN – Arma 3

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - ";[ ]+ " to "; ")
m (Some wiki formatting)
Line 1: Line 1:
{{TOC|side}}
{{TOC|side}}
{{ConfigPage|abc}}
= Overview =
There are no engine nor scripted features to simulate Chemical Biological Radiological Nuclear (CBRN) threats, contamination, or decontamination in [[:Category:Arma 3|{{arma3}}]]. However, the Contact expansion has added a range of gear and props to utilize in custom content as desired. This page documents a few scripted methods to set them up.
{{GVI|arma3|1.94}}
{{GVI|arma3|1.94}}


There are no engine nor scripted features to simulate Chemical Biological Radiological Nuclear (CBRN) threats, contamination, or decontamination in [[:Category:Arma 3|{{arma3}}]]. However, the Contact expansion has added a range of gear and props to utilize in custom content as desired. This page documents a few scripted methods to set them up.




Line 11: Line 9:
{{TOC|side}}
{{TOC|side}}
== Hoses & Filters ==
== Hoses & Filters ==
There are several pieces of CBRN gear (especially Facewear and Backpacks) that require scripting to visually combine correctly. These samples only set the initial state; they will not deal with inventory changes during gameplay. At the moment there is no vanilla module to handle this automatically. However, there's quick function to set the hoses and filters to an unit.
There are several pieces of CBRN gear (especially Facewear and Backpacks) that require scripting to visually combine correctly. These samples only set the initial state; they will not deal with inventory changes during gameplay. At the moment there is no vanilla module to handle this automatically. However, there's quick function to set the hoses and filters to an unit.


[unit] [[call]] [[BIN_fnc_CBRNHoseInit]];
<sqf>[unit] call BIN_fnc_CBRNHoseInit;</sqf>


=== Manual scripting ===
=== Manual scripting ===
===== Combination Unit Respirator =====
===== Combination Unit Respirator =====
<syntaxhighlight lang="cpp">
<sqf>
//Visibility of the common hose segment
//Visibility of the common hose segment
(backpackContainer this) setObjectTexture [1, ""]; //Hide hose segment
(backpackContainer this) setObjectTexture [1, ""]; //Hide hose segment
Line 33: Line 33:
//Showing an insignia on the CUR
//Showing an insignia on the CUR
(backpackContainer this) setObjectTexture [4, "\A3\ui_f\data\logos\bi_white_ca.paa"]; //Replace the texture by any insignia texture path
(backpackContainer this) setObjectTexture [4, "\A3\ui_f\data\logos\bi_white_ca.paa"]; //Replace the texture by any insignia texture path
</syntaxhighlight>
</sqf>
 
===== Self-Contained Breathing Apparatus =====
===== Self-Contained Breathing Apparatus =====
<syntaxhighlight lang="cpp">
<sqf>
//Visibility of a hose segment intended for the Regulator Facepiece (recommended combination)  
//Visibility of a hose segment intended for the Regulator Facepiece (recommended combination)  
(backpackContainer this) setObjectTexture [2, ""]; //Hide hose segment
(backpackContainer this) setObjectTexture [2, ""]; //Hide hose segment
Line 43: Line 44:
(backpackContainer this) setObjectTexture [1, ""]; //Hide
(backpackContainer this) setObjectTexture [1, ""]; //Hide
(backpackContainer this) setObjectTexture [1, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"]; //Show
(backpackContainer this) setObjectTexture [1, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"]; //Show
</syntaxhighlight>
</sqf>
 
===== Common Combinations =====
===== Common Combinations =====
{| class="wikitable"
{| class="wikitable"
Line 62: Line 64:
* <code>G_AirPurifyingRespirator_01_F</code>
* <code>G_AirPurifyingRespirator_01_F</code>
|
|
<syntaxhighlight lang="cpp">
<sqf>
(backpackContainer this) setObjectTexture [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
(backpackContainer this) setObjectTexture [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
(backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
(backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
this linkItem "G_AirPurifyingRespirator_01_nofilter_F";
this linkItem "G_AirPurifyingRespirator_01_nofilter_F";
</syntaxhighlight>
</sqf>
|-
|-
| colspan="1" |
| colspan="1" |
Line 79: Line 81:
* <code>G_RegulatorMask_F</code>
* <code>G_RegulatorMask_F</code>
| colspan="1" |
| colspan="1" |
<syntaxhighlight lang="cpp">
<sqf>
(backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];
(backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];
</syntaxhighlight>
</sqf>
|}
|}
Other combinations are possible, but not all of them would be ideal in the real world:
Other combinations are possible, but not all of them would be ideal in the real world:
Line 91: Line 93:
* The CSAT APR doesn't need and was not designed to connect to the SCBA / CUR (As CSAT Combat Fatigue has already built-in “air-conditioning” units, and wearing both of Fatigue and APR is CBRN-protected ''canonically'' {{ExternalLink|link= https://forums.bohemia.net/forums/topic/223445-contact-expansion-asset-feedback/?tab=comments#comment-3358042|text= Source}}).
* The CSAT APR doesn't need and was not designed to connect to the SCBA / CUR (As CSAT Combat Fatigue has already built-in “air-conditioning” units, and wearing both of Fatigue and APR is CBRN-protected ''canonically'' {{ExternalLink|link= https://forums.bohemia.net/forums/topic/223445-contact-expansion-asset-feedback/?tab=comments#comment-3358042|text= Source}}).


<br>


== Facewear Overlays ==
== Facewear Overlays ==
There are simply 2D IGUI overlays available for the various relevant Facewear items. You can show these by script:
There are simply 2D IGUI overlays available for the various relevant Facewear items. You can show these by script:
<syntaxhighlight lang="cpp">
<sqf>
"YourLayerName" cutRsc ["RscCBRN_APR", "PLAIN", -1, false]; //Overlay on
"YourLayerName" cutRsc ["RscCBRN_APR", "PLAIN", -1, false]; //Overlay on
"YourLayerName" cutText ["", "PLAIN"]; //Overlay off
"YourLayerName" cutText ["", "PLAIN"]; //Overlay off
</syntaxhighlight>
</sqf>
{| class="wikitable"
{| class="wikitable"
!Item(s)
!Item(s)
Line 164: Line 166:
</gallery>
</gallery>


<syntaxhighlight lang="cpp">
<sqf>
"YourLayerName" cutRsc ["RscWeaponChemicalDetector", "PLAIN", 1, false]; //IGUI display on
"YourLayerName" cutRsc ["RscWeaponChemicalDetector", "PLAIN", 1, false]; //IGUI display on
"YourLayerName" cutText ["", "PLAIN"]; //IGUI display off
"YourLayerName" cutText ["", "PLAIN"]; //IGUI display off
Line 174: Line 176:
_obj ctrlAnimateModel ["Threat_Level_Source", 0.5, true]; //Displaying a threat level (value between 0.00 and 9.99)
_obj ctrlAnimateModel ["Threat_Level_Source", 0.5, true]; //Displaying a threat level (value between 0.00 and 9.99)
_obj ctrlShow false; //Hiding the detector when desired
_obj ctrlShow false; //Hiding the detector when desired
</syntaxhighlight>
</sqf>
 


== Decon Showers ==
== Decon Showers ==
The regular and large Decon Showers have 3DEN attributes to control their initial state:
The regular and large Decon Showers have 3DEN attributes to control their initial state:


Line 183: Line 187:


Alternatively there are the following scripts:
Alternatively there are the following scripts:
<syntaxhighlight lang="cpp">
<sqf>
[this, 1.5, 9] spawn BIN_fnc_deconShowerAnim; //Start the regular Decon Shower (use these values)
[this, 1.5, 9] spawn BIN_fnc_deconShowerAnim; //Start the regular Decon Shower (use these values)
[this, 5.4, 4,2, true] spawn BIN_fnc_deconShowerAnimLarge; //Start the large Decon Shower (use these values)
[this, 5.4, 4,2, true] spawn BIN_fnc_deconShowerAnimLarge; //Start the large Decon Shower (use these values)
Line 190: Line 194:
this setVariable ["BIN_deconshower_disableAction", true]; //Disables the user actions on either type of Decon Shower
this setVariable ["BIN_deconshower_disableAction", true]; //Disables the user actions on either type of Decon Shower
private _state = _deconShower animationSourcePhase "valve_source"; //Detecting whether either type of Decon Shower is on / off (1 / 0)
private _state = _deconShower animationSourcePhase "valve_source"; //Detecting whether either type of Decon Shower is on / off (1 / 0)
</syntaxhighlight>
</sqf>




{{GameCategory|arma3|Editing}}
{{GameCategory|arma3|Editing}}
[[Category:Introduced with Arma 3 version 1.94]]
[[Category:Introduced with Arma 3 version 1.94]]

Revision as of 15:42, 3 May 2022

Arma 3 logo black.png1.94

There are no engine nor scripted features to simulate Chemical Biological Radiological Nuclear (CBRN) threats, contamination, or decontamination in Arma 3. However, the Contact expansion has added a range of gear and props to utilize in custom content as desired. This page documents a few scripted methods to set them up.


Scripting

Hoses & Filters

There are several pieces of CBRN gear (especially Facewear and Backpacks) that require scripting to visually combine correctly. These samples only set the initial state; they will not deal with inventory changes during gameplay. At the moment there is no vanilla module to handle this automatically. However, there's quick function to set the hoses and filters to an unit.

Manual scripting

Combination Unit Respirator

//Visibility of the common hose segment (backpackContainer this) setObjectTexture [1, ""]; //Hide hose segment (backpackContainer this) setObjectTexture [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"]; //Show hose segment //Visibility of a hose segment intended for the NATO APR (recommended combination) (backpackContainer this) setObjectTexture [2, ""]; //Hide (backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"]; //Show this linkItem "G_AirPurifyingRespirator_01_nofilter_F"; //Replacing a NATO APR with filter for a version without filter //Visibility of a hose segment intended for the Regulator Facepiece (backpackContainer this) setObjectTexture [3, ""]; //Hide (backpackContainer this) setObjectTexture [3, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"]; //Show //Showing an insignia on the CUR (backpackContainer this) setObjectTexture [4, "\A3\ui_f\data\logos\bi_white_ca.paa"]; //Replace the texture by any insignia texture path

Self-Contained Breathing Apparatus

//Visibility of a hose segment intended for the Regulator Facepiece (recommended combination) (backpackContainer this) setObjectTexture [2, ""]; //Hide hose segment (backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"]; //Show hose segment //Visibility of a hose segment intended for the NATO APR (backpackContainer this) setObjectTexture [1, ""]; //Hide (backpackContainer this) setObjectTexture [1, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"]; //Show

Common Combinations
Item(s) Preview Classes Sample Code
  • Combination Unit Respirator
  • APR [NATO]
  • B_CombinationUnitRespirator_01_F
  • G_AirPurifyingRespirator_01_F

(backpackContainer this) setObjectTexture [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"]; (backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"]; this linkItem "G_AirPurifyingRespirator_01_nofilter_F";

  • Self-Contained Breathing Apparatus
  • Regulator Facepiece
  • B_SCBA_01_F
  • G_RegulatorMask_F

(backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];

Other combinations are possible, but not all of them would be ideal in the real world:

  • CUR + Regulator Facepiece should work (though only the SCBA part contained within, not the PAPR).
  • SCBA + NATO APR should work, but is not intended.
  • NATO / CSAT APRs can of course be worn without any Backpack (filters attached).
  • The Regular Facepiece should not be worn without Backpack.
  • The CSAT APR doesn't need and was not designed to connect to the SCBA / CUR (As CSAT Combat Fatigue has already built-in “air-conditioning” units, and wearing both of Fatigue and APR is CBRN-protected canonically Source).


Facewear Overlays

There are simply 2D IGUI overlays available for the various relevant Facewear items. You can show these by script:

"YourLayerName" cutRsc ["RscCBRN_APR", "PLAIN", -1, false]; //Overlay on "YourLayerName" cutText ["", "PLAIN"]; //Overlay off

Item(s) Preview Class(es) Overlay Class
  • APR [NATO]
  • G_AirPurifyingRespirator_01_F
  • G_AirPurifyingRespirator_01_nofilter_F (protected scope)
"RscCBRN_APR"
  • APR (Black) [CSAT]
  • APR (Olive) [CSAT]
  • APR (Sand) [CSAT]
  • G_AirPurifyingRespirator_02_black_F
  • G_AirPurifyingRespirator_02_olive_F
  • G_AirPurifyingRespirator_02_sand_F
"RscCBRN_APR_02"
  • Regulator Facepiece
  • G_RegulatorMask_F
"RscCBRN_Regulator"
  • Blindfold (Black)
  • Blindfold (White)
  • G_Blindfold_01_black_F
  • G_Blindfold_01_white_F
"RscBlindfold"


Chemical Detector

While ultimately not used in the Contact campaign, there is a Chemical Detector variant (uncovered - ChemicalDetector_01_watch_F) that can occupy the watch inventory slot, and use scripted hooks to display a threat value and time. When in the player's watch slot, the watch key (O by default) can be used to show or toggle it on-screen.

"YourLayerName" cutRsc ["RscWeaponChemicalDetector", "PLAIN", 1, false]; //IGUI display on "YourLayerName" cutText ["", "PLAIN"]; //IGUI display off //Fetching useful UI controls private _ui = uiNamespace getVariable "RscWeaponChemicalDetector"; private _obj = _ui displayCtrl 101; _obj ctrlAnimateModel ["Threat_Level_Source", 0.5, true]; //Displaying a threat level (value between 0.00 and 9.99) _obj ctrlShow false; //Hiding the detector when desired


Decon Showers

The regular and large Decon Showers have 3DEN attributes to control their initial state:

  • Turn on sprinklers: starting the VFX / SFX from the scenario start
  • Disable user action: removing the player ability to toggle the sprinklers during gameplay

Alternatively there are the following scripts:

[this, 1.5, 9] spawn BIN_fnc_deconShowerAnim; //Start the regular Decon Shower (use these values) [this, 5.4, 4,2, true] spawn BIN_fnc_deconShowerAnimLarge; //Start the large Decon Shower (use these values) [this] call BIN_fnc_deconShowerAnimStop; //Stop either type of Decon Shower this setVariable ["BIN_deconshower_disableAction", true]; //Disables the user actions on either type of Decon Shower private _state = _deconShower animationSourcePhase "valve_source"; //Detecting whether either type of Decon Shower is on / off (1 / 0)