weaponState: Difference between revisions
Jump to navigation
Jump to search
(format) |
Lou Montana (talk | contribs) (Add default values) |
||
(74 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{RV|type=command | ||
| arma2oa |= | |game1= arma2oa | ||
|version1= 1.60 | |||
|1. | |game2= tkoh | ||
|version2= 1.00 | |||
| | |game3= arma3 | ||
|version3= 0.50 | |||
| | |gr1= Weapons | ||
|p1= | |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. > 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]] | |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. > 0 - reload in progress | |||
| | |s3= unit [[weaponState]] weaponOrMuzzle | ||
| | |s3since= arma3 2.06 | ||
| | |p41= unit: [[Object]] | ||
| | |p42= weaponOrMuzzle: [[String]] | ||
| | |r3= [[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. > 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> | |||
| [[ | |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> | |||
| | |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]]. | |||
}} | }} | ||
{{Note | |||
< | |user= AgentRev | ||
<! | |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 = []; | |||
{ | |||
_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] | |||
] | |||
*/ | |||
</sqf> | |||
}} |
Latest revision as of 22:29, 30 March 2024
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.
- 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 1.70
- weapon: String - (Optional, default "") weapon or muzzle name
- since 2.08
- muzzle: String - (Optional, default "") muzzle name
- since 2.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:
- 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:
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
- 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:
In rifle mode, the result is different: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] ] */