fn_fetchCfgDetails.sqf 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /*
  2. @version: 1.5
  3. @file_name: fn_fetchCfgDetails.sqf
  4. @file_author: TAW_Tonic
  5. @file_edit: 7/25/2013
  6. @file_description: Fetch information about the entities config
  7. USAGE:
  8. [Classname,Cfg* (Optional)] call VAS_fnc_fetchCfgDetails;
  9. Return:
  10. 0: classname
  11. 1: displayname
  12. 2: picture
  13. 3: scope
  14. 4: type
  15. 5: itemInfo Type (if any)
  16. 6: Cfg Location i.e CfgWeapons
  17. 7: Magazines
  18. 8: Muzzles
  19. 9: Short Description
  20. 10: acc_Pointers
  21. 11: acc_Optics
  22. 12: acc_Muzzles
  23. 13: Base (Superclass)
  24. */
  25. private["_entity","_cfg","_ret","_type","_acc_p","_acc_o","_acc_m","_scope","_displayName","_picture","_config","_itemInfo","_muzzles","_magazines","_desc","_base"];
  26. _entity = [_this,0,"",[""]] call BIS_fnc_param;
  27. _type = -1;
  28. _acc_p = [];
  29. _acc_o = [];
  30. _acc_m = [];
  31. _scope = 0;
  32. _itemInfo = -1;
  33. _muzzles = [];
  34. _magazines = [];
  35. if(_entity == "") exitWith {[]};
  36. _cfg = if(isNil {_this select 1}) then
  37. {
  38. switch (true) do
  39. {
  40. case (isClass (configFile >> "CfgMagazines" >> _entity)) : {"CfgMagazines";};
  41. case (isClass (configFile >> "CfgWeapons" >> _entity)) : {"CfgWeapons";};
  42. case (isClass (configFile >> "CfgVehicles" >> _entity)) : {"CfgVehicles";};
  43. case (isClass (configFile >> "CfgGlasses" >> _entity)) : {"CfgGlasses";};
  44. };
  45. }
  46. else
  47. {
  48. _this select 1
  49. };
  50. //Final Check
  51. _ret = [];
  52. if(typeName _cfg != "STRING") exitWith {[]}; //Not a config
  53. if(!isClass (configFile >> _cfg >> _entity)) exitWith {[]};
  54. if(_cfg == "") exitWith {[]}; //Not a config, who is passing bad data?
  55. _config = configFile >> _cfg >> _entity;
  56. _displayName = getText(_config >> "displayName");
  57. _picture = getText(_config >> "picture");
  58. _desc = getText(_config >> "descriptionshort");
  59. _base = inheritsFrom _config;
  60. switch (_cfg) do
  61. {
  62. case "CfgVehicles":
  63. {
  64. _type = getText(_config >> "vehicleClass");
  65. _scope = getNumber(_config >> "scope");
  66. };
  67. case "CfgWeapons":
  68. {
  69. _scope = getNumber(_config >> "scope");
  70. _type = getNumber(_config >> "type");
  71. _desc = getText(_config >> "descriptionshort");
  72. //Compatible attachments
  73. if(isClass (_config >> "WeaponSlotsInfo")) then
  74. {
  75. _acc_p = getArray(_config >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
  76. _acc_o = getArray(_config >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
  77. _acc_m = getArray(_config >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
  78. };
  79. if(isClass (_config >> "ItemInfo")) then
  80. {
  81. _itemInfo = getNumber(_config >> "ItemInfo" >> "Type");
  82. };
  83. _muzzles = getArray(_config >> "muzzles");
  84. _magazines = getArray(_config >> "magazines");
  85. if(!isNil {_muzzles}) then
  86. {
  87. private["_tmp"];
  88. // _base = inheritsFrom (configFile >> "CfgWeapons" >> _entity);
  89. {
  90. if(_x != "this") then
  91. {
  92. _tmp = getArray(_base >> _x >> "magazines");
  93. {
  94. _magazines set[count _magazines, _x];
  95. } foreach (_tmp);
  96. };
  97. } foreach _muzzles;
  98. };
  99. };
  100. case "CfgMagazines":
  101. {
  102. _scope = getNumber(_config >> "scope");
  103. };
  104. };
  105. _ret = [_entity,_displayName,_picture,_scope,_type,_itemInfo,_cfg,_magazines,_muzzles,_desc,_acc_p,_acc_o,_acc_m,_base];
  106. _ret;