weaponState: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(Added page for scripting command 'weaponState')
 
(Add default values)
 
(82 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{Command|= Comments
{{RV|type=command
____________________________________________________________________________________________


| arma2oa |= Game name
|game1= arma2oa
|version1= 1.60


|1.60|= Game version
|game2= tkoh
____________________________________________________________________________________________
|version2= 1.00


| Returns the current weapon state as an array of strings in the following format [WeaponName, MuzzleName, ModeName, MagazineName, AmmoCount] (AmmoCount is [[Number]]). |= Description
|game3= arma3
____________________________________________________________________________________________
|version3= 0.50


| '''weaponState''' unitName |= Syntax
|gr1= Weapons


|p1= unitName: [[Object]] |= Parameter 1
|descr= Returns the given or currently selected weapon state for unit or vehicle.
With {{Link|#Syntax 2}}, if no optional arguments are present, currently selected weapon is queried.
{{Feature|arma3|
Since {{arma3}} v1.70 this command has been improved and extended:
* A vehicle's weapon query doesn't need a weapon operator provided the weapon or muzzle is specified in optional param.<br>(keep in mind that by default a vehicle has no weapons selected)
* Driver turret can now be accessed as well with turret path [-1].
* Muzzle name is supported as well as weapon name. The command searches for weapon first, then if not found, muzzle is searched for.
}}
 
|s1= [[weaponState]] unit
 
|p1= unit: [[Object]]
 
|r1= [[Array]] in format [weapon, muzzle, firemode, magazine, ammoCount, roundReloadPhase, magazineReloadPhase], where:
* weapon: [[String]]
* muzzle: [[String]]
* firemode: [[String]]
* magazine: [[String]]
* ammoCount: [[Number]]
* {{GVI|arma3|2.06|size= 0.75}} roundReloadPhase: [[Number]] - current ammo round reload phase (see [[weaponReloadingTime]])
* {{GVI|arma3|2.06|size= 0.75}} magazineReloadPhase: [[Number]] - current magazine reload phase from 1 to 0, 0 - reload complete. &gt; 0 - reload in progress
 
|s2= [[weaponState]] [vehicle, turretPath, weapon, muzzle, firemode]
 
|p21= vehicle: [[Object]]
 
|p22= turretPath: [[Array]]
 
|p23= weapon: [[String]] - (Optional, default {{hl|""}}) weapon or muzzle name
|p23since= arma3 1.70
 
|p24= muzzle: [[String]] - (Optional, default {{hl|""}}) muzzle name
|p24since= arma3 2.08
 
|p25= firemode: [[String]] - (Optional, default {{hl|""}}) firemode name
|p25since= arma3 2.08


| [[Array]]: ["m16a4","m16a4","Single","30Rnd_556x45_Stanag",29] |= Return value
|r2= [[Array]] in format [weapon, muzzle, firemode, magazine, ammoCount, roundReloadPhase, magazineReloadPhase], where:
____________________________________________________________________________________________
* weapon: [[String]]
* muzzle: [[String]]
* firemode: [[String]]
* magazine: [[String]]
* ammoCount: [[Number]]
* {{GVI|arma3|2.06|size= 0.75}} roundReloadPhase: [[Number]] - current ammo round reload phase (see [[weaponReloadingTime]])
* {{GVI|arma3|2.06|size= 0.75}} magazineReloadPhase: [[Number]] - current magazine reload phase from 1 to 0, 0 - reload complete. &gt; 0 - reload in progress


|s2= '''weaponState''' [vehicle, turretPath] |= Syntax
|s3= unit [[weaponState]] weaponOrMuzzle


|p21= vehicle: [[Object]] |= Parameter 1
|s3since= arma3 2.06


|p22= turretPath: [[Array]] |= Parameter 2
|p41= unit: [[Object]]


|r2= [[Array]]: ["M256","M256","M256","20Rnd_120mmSABOT_M1A2",20] |= Return value 2
|p42= weaponOrMuzzle: [[String]]
____________________________________________________________________________________________


|x1= <code>_weaponStatePlayer <nowiki>=</nowiki> '''weaponState''' player;</code>|= EXAMPLE1
|r3= [[Array]] in format [weapon, muzzle, firemode, magazine, ammoCount, roundReloadPhase, magazineReloadPhase], where:
|x2= <code>_weaponStateVehiclePlayer <nowiki>=</nowiki> '''weaponState''' [vehicle player,[0]];</code>|= EXAMPLE2
* weapon: [[String]]
* muzzle: [[String]]
* firemode: [[String]]
* magazine: [[String]]
* ammoCount: [[Number]]
* {{GVI|arma3|2.06|size= 0.75}} roundReloadPhase: [[Number]] - current ammo round reload phase (see [[weaponReloadingTime]])
* {{GVI|arma3|2.06|size= 0.75}} magazineReloadPhase: [[Number]] - current magazine reload phase from 1 to 0, 0 - reload complete. &gt; 0 - reload in progress


____________________________________________________________________________________________
|x1= <sqf>_wsPlayer = weaponState player; // ["arifle_MXC_ACO_F","arifle_MXC_ACO_F","Single","30Rnd_65x39_caseless_mag",30,0,0]</sqf>


| |= SEEALSO
|x2= Query currently selected gunner weapon:
<sqf>_wsVehicle = weaponState [_apc, [0]]; // ["autocannon_40mm_CTWS","HE","player","60Rnd_40mm_GPR_Tracer_Red_shells",60,0,0]</sqf>


| |= MPBEHAVIOUR
|x3= <sqf>_wsVehicle = weaponState [_apc, [0], "AP"]; // ["autocannon_40mm_CTWS","AP","player","40Rnd_40mm_APFSDS_Tracer_Red_shells",40,0,0]</sqf>
____________________________________________________________________________________________


|x4= <sqf>_wsPlayer = player weaponState "GL_3GL_F"; // ["arifle_MX_GL_ACO_F","GL_3GL_F","Single","1Rnd_HE_Grenade_shell",1,0,0]</sqf>
|seealso= [[weapons]] [[selectWeaponTurret]] [[loadMagazine]] [[magazinesTurret]] [[weaponsTurret]] [[weaponReloadingTime]].
}}
}}


<h3 style='display:none'>Notes</h3>
{{Note
<dl class='command_description'>
|user= AgentRev
<!-- Note Section BEGIN -->
|timestamp= 20220331040809
|text= In the case of a GL rifle, if the rifle is currently in GL mode, syntax 3 will return the same result for either muzzle:
<sqf>
player selectWeapon "GL_3GL_F";
_state = player weaponState "arifle_MX_GL_ACO_F"; // ["arifle_MX_GL_ACO_F","GL_3GL_F","Single","1Rnd_HE_Grenade_shell",1,0,0]
_state = player weaponState "GL_3GL_F"; // ["arifle_MX_GL_ACO_F","GL_3GL_F","Single","1Rnd_HE_Grenade_shell",1,0,0]
</sqf>
In rifle mode, the result is different:
<sqf>
player selectWeapon "arifle_MX_GL_ACO_F";
_state = player weaponState "arifle_MX_GL_ACO_F"; // ["arifle_MX_GL_ACO_F","arifle_MX_GL_ACO_F","Single","30Rnd_65x39_caseless_mag",30,0,0]
_state = player weaponState "GL_3GL_F"; // ["arifle_MX_GL_ACO_F","GL_3GL_F","Single","1Rnd_HE_Grenade_shell",1,0,0]
</sqf>
Therefore, in order to gather all states of one multi-muzzle weapon, we have to do some masochistic stuff:
<sqf>
fn_getWeaponStates =
{
params ["_unit", "_weapon"];
private _origState = weaponState _unit select [0,3];
private _muzzles = [_weapon] + (getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles") select { _x != "this" });
private _states = [];


<!-- Note Section END -->
{
</dl>
_unit selectWeapon _x;
_states pushBack weaponState _unit;
} forEach _muzzles;


<h3 style='display:none'>Bottom Section</h3>
_unit selectWeapon _origState;
_states;
};


[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
private _result = [player, primaryWeapon player] call fn_getWeaponStates;
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
/*
[[Category:ArmA 2 OA: New Scripting Commands List|{{uc:{{PAGENAME}}}}]]
[
["arifle_MX_GL_ACO_F", "arifle_MX_GL_ACO_F", "Single", "30Rnd_65x39_caseless_mag", 30, 0, 0],
["arifle_MX_GL_ACO_F", "GL_3GL_F", "Single", "1Rnd_HE_Grenade_shell", 1, 0, 0]
]
*/
</sqf>
}}

Latest revision as of 22:29, 30 March 2024

Hover & click on the images for description

Description

Description:
Returns the given or currently selected weapon state for unit or vehicle. With Syntax 2, if no optional arguments are present, currently selected weapon is queried.
Arma 3
Since Arma 3 v1.70 this command has been improved and extended:
  • A vehicle's weapon query doesn't need a weapon operator provided the weapon or muzzle is specified in optional param.
    (keep in mind that by default a vehicle has no weapons selected)
  • Driver turret can now be accessed as well with turret path [-1].
  • Muzzle name is supported as well as weapon name. The command searches for weapon first, then if not found, muzzle is searched for.
Groups:
Weapons

Syntax 1

Syntax:
weaponState unit
Parameters:
unit: Object
Return Value:
Array in format [weapon, muzzle, firemode, magazine, ammoCount, roundReloadPhase, magazineReloadPhase], where:

Syntax 2

Syntax:
weaponState [vehicle, turretPath, weapon, muzzle, firemode]
Parameters:
vehicle: Object
turretPath: Array
since Arma 3 logo black.png1.70
weapon: String - (Optional, default "") weapon or muzzle name
since Arma 3 logo black.png2.08
muzzle: String - (Optional, default "") muzzle name
since Arma 3 logo black.png2.08
firemode: String - (Optional, default "") firemode name
Return Value:
Array in format [weapon, muzzle, firemode, magazine, ammoCount, roundReloadPhase, magazineReloadPhase], where:

Syntax 3

Syntax:
unit weaponState weaponOrMuzzle
Parameters:
unit: Object
weaponOrMuzzle: String
Return Value:
Array in format [weapon, muzzle, firemode, magazine, ammoCount, roundReloadPhase, magazineReloadPhase], where:

Examples

Example 1:
_wsPlayer = weaponState player; // ["arifle_MXC_ACO_F","arifle_MXC_ACO_F","Single","30Rnd_65x39_caseless_mag",30,0,0]
Example 2:
Query currently selected gunner weapon:
_wsVehicle = weaponState [_apc, [0]]; // ["autocannon_40mm_CTWS","HE","player","60Rnd_40mm_GPR_Tracer_Red_shells",60,0,0]
Example 3:
_wsVehicle = weaponState [_apc, [0], "AP"]; // ["autocannon_40mm_CTWS","AP","player","40Rnd_40mm_APFSDS_Tracer_Red_shells",40,0,0]
Example 4:
_wsPlayer = player weaponState "GL_3GL_F"; // ["arifle_MX_GL_ACO_F","GL_3GL_F","Single","1Rnd_HE_Grenade_shell",1,0,0]

Additional Information

See also:
weapons selectWeaponTurret loadMagazine magazinesTurret weaponsTurret weaponReloadingTime.

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
AgentRev - c
Posted on Mar 31, 2022 - 04:08 (UTC)
In the case of a GL rifle, if the rifle is currently in GL mode, syntax 3 will return the same result for either muzzle:
player selectWeapon "GL_3GL_F"; _state = player weaponState "arifle_MX_GL_ACO_F"; // ["arifle_MX_GL_ACO_F","GL_3GL_F","Single","1Rnd_HE_Grenade_shell",1,0,0] _state = player weaponState "GL_3GL_F"; // ["arifle_MX_GL_ACO_F","GL_3GL_F","Single","1Rnd_HE_Grenade_shell",1,0,0]
In rifle mode, the result is different:
player selectWeapon "arifle_MX_GL_ACO_F"; _state = player weaponState "arifle_MX_GL_ACO_F"; // ["arifle_MX_GL_ACO_F","arifle_MX_GL_ACO_F","Single","30Rnd_65x39_caseless_mag",30,0,0] _state = player weaponState "GL_3GL_F"; // ["arifle_MX_GL_ACO_F","GL_3GL_F","Single","1Rnd_HE_Grenade_shell",1,0,0]
Therefore, in order to gather all states of one multi-muzzle weapon, we have to do some masochistic stuff:
fn_getWeaponStates = { params ["_unit", "_weapon"]; private _origState = weaponState _unit select [0,3]; private _muzzles = [_weapon] + (getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles") select { _x != "this" }); private _states = []; { _unit selectWeapon _x; _states pushBack weaponState _unit; } forEach _muzzles; _unit selectWeapon _origState; _states; }; private _result = [player, primaryWeapon player] call fn_getWeaponStates; /* [ ["arifle_MX_GL_ACO_F", "arifle_MX_GL_ACO_F", "Single", "30Rnd_65x39_caseless_mag", 30, 0, 0], ["arifle_MX_GL_ACO_F", "GL_3GL_F", "Single", "1Rnd_HE_Grenade_shell", 1, 0, 0] ] */