function to return item type

This commit is contained in:
commy2 2015-04-01 21:52:56 +02:00
parent b66bb4ffd6
commit a14cc0853e
3 changed files with 105 additions and 0 deletions

View File

@ -72,6 +72,8 @@ PREP(getGunner);
PREP(getHitPoints);
PREP(getHitPointsWithSelections);
PREP(getInPosition);
PREP(getItemType);
PREP(getItemTypeWeapon);
PREP(getMarkerType);
PREP(getName);
PREP(getNumberFromMissionSQM);

View File

@ -0,0 +1,29 @@
/*
* Author: commy2
*
* What kind of item is given classname
*
* Argument:
* 0: Classname of a item. (String)
*
* Return value:
* Item type. (Array)
* 0: "weapon", "item", "magazine", "unknown" or "" (String)
* 1: A description of the item (e.g. "primary" for a weapon or "vest" for a vest item)
*
*/
#include "script_component.hpp"
private "_item";
_item = _this select 0;
_cfgType = [_item] call FUNC(getConfigType);
if (_cfgType == "CfgGlasses") exitWith {["item","glasses"]};
if (_cfgType == "CfgMagazines") exitWith { ["magazine", [_item] call FUNC(getItemTypeWeapon) select 1] };
if (_cfgType == "CfgWeapons") exitWith { [_item] call FUNC(getItemTypeWeapon) };
["",""]

View File

@ -0,0 +1,74 @@
/*
* Author: commy2
*
* What kind of item is given classname. Has to be a CfgWeapons. Undefined behavior for CfgMagazine.
*
* Argument:
* 0: Classname of a CfgWeapon. (String)
*
* Return value:
* See ace_common_fnc_getItemType
*
*/
#include "script_component.hpp"
private "_item";
_item = _this select 0;
private "_config";
_config = configFile >> [_item] call FUNC(getConfigType) >> _item;
if (!isClass _config) exitWith {["",""]};
private "_type";
_type = getNumber (_config >> "type");
if (isNumber (_config >> "ItemInfo" >> "type")) then {
_type = getNumber (_config >> "ItemInfo" >> "type");
};
switch (true) do {
case (_type == 0): {["unknown","unknown"]};
case (_type == 2^0): {["weapon","primary"]};
case (_type == 2^1): {["weapon","handgun"]};
case (_type == 2^2): {["weapon","secondary"]};
case (_type < 2^4): {["weapon","unknown"]};
case (_type == 2^4): {["magazine","handgun"]}; // handgun
case (_type == 2^8): {["magazine","primary"]}; // rifle
case (_type == 2^9): {["magazine","secondary"]}; // rpg, mg, mines
case (_type == 768): {["magazine","secondary"]}; // NLAW
case (_type == 1536): {["magazine","secondary"]}; // titan
case (_type == 101): {["item","muzzle"]};
case (_type == 201): {["item","optics"]};
case (_type == 301): {["item","flashlight"]};
case (_type == 302): {["item","under"]}; // czech for bipod item
case (_type == 401): {["item","first_aid_kit"]};
case (_type == 501): {["item","fins"]}; // not implemented
case (_type == 601): {["item","breathing_bomb"]}; // not implemented
case (_type == 603): {["item","goggles"]};
case (_type == 604): {["item","scuba"]}; // not implemented
case (_type == 605): {["item","headgear"]};
case (_type == 611): {["item","radio"]};
case (_type == 616): {["item","hmd"]};
case (_type == 617): {["item","binocular"]};
case (_type == 619): {["item","medikit"]};
case (_type == 620): {["item","toolkit"]};
case (_type == 621): {["item","uav_terminal"]};
case (_type == 701): {["item","vest"]};
case (_type == 801): {["item","uniform"]};
case (_type == 2^12): {
switch (toLower getNumber (_config >> "simulation")) do {
case ("binocular"): {["weapon","binocular"]};
case ("nvgoggles"): {["item","nvgoggles"]};
case ("itemminedetector"): {["item","minedetector"]};
default {["weapon","unknown"]};
};
};
case (_type == 2^16): {["weapon","vehicle"]};
case (_type == 2^17): {["item","unknown"]}; // ???
default {["item","unknown"]};
};