Guest User

Untitled

a guest
Oct 1st, 2017
509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 193.08 KB | None | 0 0
  1. /*
  2. File: A3AT.sqf
  3. Author: Chris(tian) 'infiSTAR' Lorenzen
  4. Contact: infiSTAR23@gmail.com
  5.  
  6. Description:
  7. Arma AntiHack & AdminTools - infiSTAR.de
  8. */
  9. /* *******************Developer : infiSTAR (infiSTAR23@gmail.com)******************* */
  10. /* **************infiSTAR Copyright®© 2011 - 2017 All rights reserved.************** */
  11. /* *********************************www.infiSTAR.de********************************* */
  12. comment 'Antihack & AdminTools - Christian Lorenzen - www.infiSTAR.de - License: (CC)';
  13. VERSION_DATE_IS = '30-09-2017 16-37-47';
  14. infiSTAR_MAIN_CODE = "
  15. fnc_admin_c = compileFinal 'compile _this';
  16. fnc_admin_cc = compileFinal 'call compile _this';
  17. fnc_admin_ccc = compileFinal 'if(!isNil {call compile _this})then{call compile _this}else{''ANY''}';
  18. fnc_createctrl = {
  19. params['_display','_type','_idc'];
  20. ctrlDelete (_display displayCtrl _idc);
  21. _ctrl = _display ctrlCreate[_type, _idc];
  22. _ctrl
  23. };
  24. FN_SHOW_LOGID = 554466;
  25. FN_SHOWN_LOGIDS = [];
  26. FN_SHOW_LOG = {
  27. disableSerialization;
  28. _del = {FN_SHOWN_LOGIDS = FN_SHOWN_LOGIDS - [_this];ctrlDelete _this;};
  29. {
  30. if(_forEachIndex < 3)then
  31. {
  32. if(count FN_SHOWN_LOGIDS > 40)then{_x call _del;};
  33. }
  34. else
  35. {
  36. if(ctrlFade _x > 0.9)then{_x call _del;};
  37. };
  38. } forEach FN_SHOWN_LOGIDS;
  39. _ctrl = [findDisplay 46,'RSCText',FN_SHOW_LOGID] call fnc_createctrl;
  40. FN_SHOW_LOGID = FN_SHOW_LOGID + 1;
  41. FN_SHOWN_LOGIDS pushBackUnique _ctrl;
  42. {
  43. _x ctrlSetPosition [
  44. 0,
  45. ((safeZoneY+0.3) + (_forEachIndex / 30)),
  46. 1.3,
  47. 0.2
  48. ];
  49. _x ctrlCommit 0;
  50. } forEach FN_SHOWN_LOGIDS;
  51. _ctrl ctrlSetText format['<infiSTAR.de> %1',_this];
  52. _ctrl ctrlSetFade 1;
  53. _ctrl ctrlCommit 5;
  54. };
  55. MYPUIDinfiESP = getPlayerUID player;
  56. ALT_IS_PRESSED=false;FILLMAINSTATE=0;LASTSUBBUTTON=1;
  57. SortAlphaPlease = true;SortGroupsPlease = nil;SortRangePlease = nil;
  58. infiSTAR_add_vehicles=true;
  59. SELECTED_TARGET_PLAYER = player;
  60. show_spectate_overlay = true;
  61. MAIN_DISPLAY_ID = -1338;LEFT_CTRL_ID = 1500;RIGHT_CTRL_ID = 1501;
  62. draw_infiESPIcon = getText(configfile >> 'cfgGroupIcons' >> 'Empty' >> 'icon');
  63. uiNamespace setVariable['A3MAPICONS_mainMap', nil];
  64. uiNamespace setVariable['A3MAPICONS_mainMap', findDisplay 12 displayCtrl 51];
  65. infiSTAR_HTML_LOAD = "+str _use_html_load_on_adminmenu+";
  66. if(isNil 'AH_HackLogArray')then{AH_HackLogArray = [];};
  67. if(isNil 'AH_SurvLogArray')then{AH_SurvLogArray = [];};
  68. if(isNil 'AH_AdmiLogArray')then{AH_AdmiLogArray = [];};
  69. if(isNil 'infiSTAR_toggled_A')then{infiSTAR_toggled_A = ['==== OnTarget ====','==== Toggleable ===='];};
  70. if(infiSTAR_MOD == 'Epoch')then
  71. {
  72. if(isNil 'infiSTAR_ALLOW_ON_EPOCH')then
  73. {
  74. infiSTAR_ALLOW_ON_EPOCH = ['Epoch','B_Parachute','Binocular','Rangefinder','Hatchet','MeleeSledge','ChainSaw','MultiGun','Rollins_F'];
  75. {
  76. infiSTAR_ALLOW_ON_EPOCH pushBack format['B_AssaultPack_%1',_x];
  77. } forEach ['cbr','dgtl','khk','mcamo','ocamo','rgr','sgg'];
  78. {
  79. infiSTAR_ALLOW_ON_EPOCH pushBack format['B_Carryall_%1',_x];
  80. } forEach ['cbr','khk','mcamo','ocamo','oli','oucamo'];
  81. {
  82. infiSTAR_ALLOW_ON_EPOCH pushBack format['B_FieldPack_%1',_x];
  83. } forEach ['blk','cbr','khk','ocamo','oli','oucamo'];
  84. {
  85. infiSTAR_ALLOW_ON_EPOCH pushBack format['B_Kitbag_%1',_x];
  86. } forEach ['cbr','mcamo','rgr','sgg'];
  87. {
  88. infiSTAR_ALLOW_ON_EPOCH pushBack format['B_TacticalPack_%1',_x];
  89. } forEach ['blk','mcamo','ocamo','oli','rgr'];
  90. {
  91. infiSTAR_ALLOW_ON_EPOCH pushBack format['smallbackpack_%1_epoch',_x];
  92. } forEach ['red','green','teal','pink'];
  93. {
  94. infiSTAR_ALLOW_ON_EPOCH pushBack format['%1_epoch',_x];
  95. } forEach ['ruger_pistol','speargun','1911_pistol','akm','m14','M14Grn','m16','m16Red','m107','m107Tan','m249','m249Tan','m4a3'];
  96. {
  97. infiSTAR_ALLOW_ON_EPOCH pushBack format['SMG_%1_F',_x];
  98. } forEach ['01','02'];
  99. {
  100. infiSTAR_ALLOW_ON_EPOCH pushBack format['SMG_%1_F',_x];
  101. } forEach ['01','02'];
  102. {
  103. infiSTAR_ALLOW_ON_EPOCH pushBack format['hgun_%1_F',_x];
  104. } forEach ['PDW2000','ACPC2','Rook40','P07','Pistol_heavy_01','Pistol_heavy_02','Pistol_Signal'];
  105. {
  106. infiSTAR_ALLOW_ON_EPOCH pushBack format['LMG_%1_F',_x];
  107. } forEach ['Mk200','Zafir'];
  108. {
  109. infiSTAR_ALLOW_ON_EPOCH pushBack format['srifle_%1_F',_x];
  110. } forEach ['EBR','GM6','LRR','DMR_01'];
  111. {
  112. infiSTAR_ALLOW_ON_EPOCH pushBack format['arifle_%1_F',_x];
  113. } forEach ['Katiba','Katiba_C','Katiba_GL','SDAR','TRG21','TRG20','TRG21_GL','Mk20','Mk20C','Mk20C_plain','Mk20_GL','Mk20_plain','Mk20_GL_plain'];
  114. {
  115. infiSTAR_ALLOW_ON_EPOCH pushBack format['arifle_%1_F',_x];
  116. } forEach ['MXC','MX','MX_GL','MXM','MXM_Black','MX_GL_Black','MX_Black','MXC_Black','MX_SW','MX_SW_Black'];
  117. {
  118. infiSTAR_ALLOW_ON_EPOCH pushBack (typeOf _x);
  119. } forEach vehicles;
  120. };
  121. fnc_infiSTAR_checkEpoch =
  122. {
  123. _stringtocheck = _this;
  124. _found = false;
  125. if(isClass(configfile >> 'CfgPricing' >> _stringtocheck))exitWith{_found = true;true};
  126. if(_stringtocheck in infiSTAR_ALLOW_ON_EPOCH)exitWith{_found = true;true};
  127. _found
  128. };
  129. };
  130. if(isNil 'ALL_BAGS_TO_SEARCH_C')then
  131. {
  132. ALL_BAGS_TO_SEARCH_C = [];ALL_BAGS_TO_SEARCH_EPOCH = [];ALL_BAGS_TO_SEARCH_NONEEPOCH = [];
  133. ALL_VEHS_TO_SEARCH_C = [];ALL_VEHS_TO_SEARCH_EPOCH = [];ALL_VEHS_TO_SEARCH_NONEEPOCH = [];
  134. ALL_OBJS_TO_SEARCH_C = [];ALL_OBJS_TO_SEARCH_EPOCH = [];ALL_OBJS_TO_SEARCH_NONEEPOCH = [];
  135. ALL_WEPS_TO_SEARCH_C = [];ALL_WEPS_TO_SEARCH_EPOCH = [];ALL_WEPS_TO_SEARCH_NONEEPOCH = [];
  136. ALL_MAGS_TO_SEARCH_C = [];ALL_MAGS_TO_SEARCH_EPOCH = [];ALL_MAGS_TO_SEARCH_NONEEPOCH = [];
  137. _cfg = configFile >> 'cfgVehicles';
  138. for '_j' from 0 to (count _cfg)-1 do
  139. {
  140. _c = _cfg select _j;
  141. if(isClass _c)then
  142. {
  143. _t = configName _c;
  144. if(toLower _t find '_base' isEqualTo -1)then
  145. {
  146. _BackPack = getText(configfile >> 'CfgVehicles' >> _t >> 'vehicleClass') == 'BackPacks';
  147. if(_BackPack)then
  148. {
  149. if(infiSTAR_MOD == 'Epoch')then{if(_t call fnc_infiSTAR_checkEpoch)then{ALL_BAGS_TO_SEARCH_EPOCH pushBack _t;} else {ALL_BAGS_TO_SEARCH_NONEEPOCH pushBack _t;};};
  150. ALL_BAGS_TO_SEARCH_C pushBack _t;
  151. }
  152. else
  153. {
  154. if((_t isKindOf 'Air') || (_t isKindOf 'LandVehicle') || (_t isKindOf 'Ship'))then
  155. {
  156. _pic = getText(_c >> 'picture');
  157. if!((toLower _pic) in ['','pictureheal','picturepapercar','picturething','picturestaticobject'])then
  158. {
  159. if(infiSTAR_MOD == 'Epoch')then{if(_t call fnc_infiSTAR_checkEpoch)then{ALL_VEHS_TO_SEARCH_EPOCH pushBack _t;} else {ALL_VEHS_TO_SEARCH_NONEEPOCH pushBack _t;};};
  160. ALL_VEHS_TO_SEARCH_C pushBack _t;
  161. };
  162. }
  163. else
  164. {
  165. if((_t isKindOf 'Building') || (_t isKindOf 'ThingX') || (_t isKindOf 'Constructions_static_F') || (_t isKindOf 'Constructions_foundation_F'))then
  166. {
  167. _lt = toLower _t;
  168. if((_lt find 'weapon' == -1) && (_lt find 'proxy' == -1))then
  169. {
  170. if(infiSTAR_MOD == 'Epoch')then{if(_t call fnc_infiSTAR_checkEpoch)then{ALL_OBJS_TO_SEARCH_EPOCH pushBack _t;} else {ALL_OBJS_TO_SEARCH_NONEEPOCH pushBack _t;};};
  171. ALL_OBJS_TO_SEARCH_C pushBack _t;
  172. };
  173. };
  174. };
  175. };
  176. };
  177. };
  178. };
  179. _cfg = configFile >> 'CfgWeapons';
  180. for '_i' from 0 to (count _cfg)-1 do
  181. {
  182. _c = _cfg select _i;
  183. if(isClass _c)then
  184. {
  185. _t = configName _c;
  186. if(toLower _t find '_base' isEqualTo -1)then
  187. {
  188. if((getText(_c >> 'displayName') != '') && {getText(_c >> 'picture') != ''} && {getNumber(_c >> 'scope') in [0,2]})then
  189. {
  190. if(infiSTAR_MOD == 'Epoch')then{if(_t call fnc_infiSTAR_checkEpoch)then{ALL_WEPS_TO_SEARCH_EPOCH pushBack _t;} else {ALL_WEPS_TO_SEARCH_NONEEPOCH pushBack _t;};};
  191. ALL_WEPS_TO_SEARCH_C pushBack _t;
  192. };
  193. };
  194. };
  195. };
  196. _cfg = configFile >> 'cfgmagazines';
  197. for '_i' from 0 to (count _cfg)-1 do
  198. {
  199. _c = _cfg select _i;
  200. if(isClass _c)then
  201. {
  202. _t = configName _c;
  203. if(toLower _t find '_base' isEqualTo -1)then
  204. {
  205. if((getText(_c >> 'displayName') != '') && {getText(_c >> 'picture') != ''} && {getNumber(_c >> 'scope') in [0,2]})then
  206. {
  207. if(infiSTAR_MOD == 'Epoch')then{if(_t call fnc_infiSTAR_checkEpoch)then{ALL_MAGS_TO_SEARCH_EPOCH pushBack _t;} else {ALL_MAGS_TO_SEARCH_NONEEPOCH pushBack _t;};};
  208. ALL_MAGS_TO_SEARCH_C pushBack _t;
  209. };
  210. };
  211. };
  212. };
  213. ALLC_TO_SEARCH = ALL_BAGS_TO_SEARCH_C+ALL_VEHS_TO_SEARCH_C+ALL_OBJS_TO_SEARCH_C+ALL_WEPS_TO_SEARCH_C+ALL_MAGS_TO_SEARCH_C;
  214. };
  215. "; if(_MOD == 'AltisLife')then{ infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  216. if(isNil'VIRTUAL_ITEMS_ARRAY')then
  217. {
  218. VIRTUAL_ITEMS_ARRAY = [];
  219. _cfg = missionconfigfile >> 'VirtualItems';
  220. for '_i' from 0 to (count _cfg)-1 do
  221. {
  222. _c = _cfg select _i;
  223. if(isClass _c)then
  224. {
  225. _t = configName _c;
  226. VIRTUAL_ITEMS_ARRAY pushBack _t;
  227. };
  228. };
  229. };
  230. "; }; infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  231. _log = '<infiSTAR.de> config data loaded...!';diag_log _log;
  232. fnc_setFocus = {
  233. disableSerialization;
  234. ctrlSetFocus ((findDisplay MAIN_DISPLAY_ID) displayCtrl LEFT_CTRL_ID);
  235. ctrlSetFocus ((findDisplay MAIN_DISPLAY_ID) displayCtrl RIGHT_CTRL_ID);
  236. };
  237. fnc_MouseButtonDown = {
  238. if(_this select 1 == 0)then
  239. {
  240. _pos = ((_this select 0) posScreenToWorld [_this select 2, _this select 3]);
  241. if(ALT_IS_PRESSED)then
  242. {
  243. _veh = vehicle player;
  244. if(_veh == player)then
  245. {
  246. _veh setPosATL _pos;
  247. }
  248. else
  249. {
  250. if(_veh isKindOf 'AIR')then
  251. {
  252. _posObj = getPosATL _veh;
  253. _pos = [_pos select 0,_pos select 1,_posObj select 2];
  254. };
  255. [1,player,_veh,_pos] call fnc_AdminReq;
  256. };
  257. ALT_IS_PRESSED = false;
  258. format['Teleport to %1(GPS: %2)',_pos,mapGridPosition _pos] call fnc_adminLog;
  259. {player reveal _x;} foreach (_pos nearObjects 50);
  260. };
  261. if(!isNil 'CALLED_EMP')then
  262. {
  263. CALLED_EMP = nil;
  264. _pos call fnc_callEMP;
  265. };
  266. if(!isNil 'fnc_getParachutePos')then
  267. {
  268. _pos call fnc_getParachutePos;
  269. };
  270. };
  271. };
  272. fnc_addpic = {
  273. _status = call {
  274. if(isClass (configFile >> 'CfgWeapons' >> _this))exitWith{'CfgWeapons'};
  275. if(isClass (configFile >> 'CfgMagazines' >> _this))exitWith{'CfgMagazines'};
  276. if(isClass (configFile >> 'CfgVehicles' >> _this))exitWith{'CfgVehicles'};
  277. '';
  278. };
  279. if!(_status isEqualTo '')then
  280. {
  281. _pic = (getText (configFile >> _status >> _this >> 'picture'));
  282. if!(_pic isEqualTo '')then
  283. {
  284. _ctrl lbSetPicture [(lbsize _ctrl)-1,_pic];
  285. _ctrl lbSetPictureColor [(lbsize _ctrl)-1,[1, 1, 1, 1]];
  286. };
  287. };
  288. };
  289. fnc_search = {
  290. [
  291. _txt,
  292. {
  293. _txt = _this;
  294. if(_txt == lastSearched)exitWith{};
  295. disableSerialization;
  296. _ctrl = (findDisplay MAIN_DISPLAY_ID) displayCtrl RIGHT_CTRL_ID;
  297. lbClear _ctrl;
  298. if(LASTSUBBUTTON isEqualTo 0)then
  299. {
  300. if('==== Weapons ====' call ADMINLEVELACCESS)then
  301. {
  302. _ctrl lbAdd '==== Weapons ====';
  303. if(!isNil 'infiSTAR_add_weapons')then
  304. {
  305. if(infiSTAR_MOD == 'Epoch')then
  306. {
  307. _ctrl lbAdd ' ==== Epoch Weapons ====';
  308. {
  309. _displayName = getText(configFile >> 'CfgWeapons' >> _x >> 'displayName');
  310. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  311. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  312. _x call fnc_addpic;
  313. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  314. };
  315. } forEach ALL_WEPS_TO_SEARCH_EPOCH;
  316. _ctrl lbAdd ' ==== Other Weapons ====';
  317. {
  318. _displayName = getText(configFile >> 'CfgWeapons' >> _x >> 'displayName');
  319. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  320. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  321. _x call fnc_addpic;
  322. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  323. _ctrl lbSetColor [(lbsize _ctrl)-1,[1,0,0,1]];
  324. };
  325. } forEach ALL_WEPS_TO_SEARCH_NONEEPOCH;
  326. }
  327. else
  328. {
  329. {
  330. _displayName = getText(configFile >> 'CfgWeapons' >> _x >> 'displayName');
  331. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  332. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  333. _x call fnc_addpic;
  334. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  335. };
  336. } forEach ALL_WEPS_TO_SEARCH_C;
  337. };
  338. };
  339. };
  340. if('==== Magazines ====' call ADMINLEVELACCESS)then
  341. {
  342. _ctrl lbAdd '==== Magazines ====';
  343. if(!isNil 'infiSTAR_add_magazines')then
  344. {
  345. if(infiSTAR_MOD == 'Epoch')then
  346. {
  347. _ctrl lbAdd ' ==== Epoch Magazines ====';
  348. {
  349. _displayName = getText(configFile >> 'CfgMagazines' >> _x >> 'displayName');
  350. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  351. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  352. _x call fnc_addpic;
  353. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  354. };
  355. } forEach ALL_MAGS_TO_SEARCH_EPOCH;
  356. _ctrl lbAdd ' ==== Other Magazines ====';
  357. {
  358. _displayName = getText(configFile >> 'CfgMagazines' >> _x >> 'displayName');
  359. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  360. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  361. _x call fnc_addpic;
  362. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  363. _ctrl lbSetColor [(lbsize _ctrl)-1,[1,0,0,1]];
  364. };
  365. } forEach ALL_MAGS_TO_SEARCH_NONEEPOCH;
  366. }
  367. else
  368. {
  369. {
  370. _displayName = getText(configFile >> 'CfgMagazines' >> _x >> 'displayName');
  371. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  372. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  373. _x call fnc_addpic;
  374. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  375. };
  376. } forEach ALL_MAGS_TO_SEARCH_C;
  377. };
  378. };
  379. };
  380. if('==== Bags ====' call ADMINLEVELACCESS)then
  381. {
  382. _ctrl lbAdd '==== Bags ====';
  383. if(!isNil 'infiSTAR_add_bags')then
  384. {
  385. if(infiSTAR_MOD == 'Epoch')then
  386. {
  387. _ctrl lbAdd ' ==== Epoch Bags ====';
  388. {
  389. _displayName = getText(configFile >> 'CfgVehicles' >> _x >> 'displayName');
  390. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  391. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  392. _x call fnc_addpic;
  393. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  394. };
  395. } forEach ALL_BAGS_TO_SEARCH_EPOCH;
  396. _ctrl lbAdd ' ==== Other Bags ====';
  397. {
  398. _displayName = getText(configFile >> 'CfgVehicles' >> _x >> 'displayName');
  399. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  400. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  401. _x call fnc_addpic;
  402. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  403. _ctrl lbSetColor [(lbsize _ctrl)-1,[1,0,0,1]];
  404. };
  405. } forEach ALL_BAGS_TO_SEARCH_NONEEPOCH;
  406. }
  407. else
  408. {
  409. {
  410. _displayName = getText(configFile >> 'CfgVehicles' >> _x >> 'displayName');
  411. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  412. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  413. _x call fnc_addpic;
  414. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  415. };
  416. } forEach ALL_BAGS_TO_SEARCH_C;
  417. };
  418. };
  419. };
  420. "; if(_MOD == 'AltisLife')then{ infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  421. _ctrl lbAdd '==== VirtualItems ====';
  422. if(!isNil 'infiSTAR_add_VirtualItems')then
  423. {
  424. {
  425. if((toLower _x) find _txt > -1)then
  426. {
  427. _ctrl lbAdd format['%1',_x];
  428. _ctrl lbSetPicture [(lbsize _ctrl)-1,(getText(missionconfigfile >> 'VirtualItems' >> _x >> 'icon'))];
  429. _ctrl lbSetPictureColor [(lbsize _ctrl)-1,[1, 1, 1, 1]];
  430. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  431. };
  432. } forEach VIRTUAL_ITEMS_ARRAY;
  433. };
  434. "; }; infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  435. };
  436. if(LASTSUBBUTTON isEqualTo 1)then
  437. {
  438. if('==== Vehicles ====' call ADMINLEVELACCESS)then
  439. {
  440. if(!isNil'EPOCH_VehicleSlotCount')then
  441. {
  442. _ctrl lbAdd format['vehicle slots: %1 (destroy/delete a vehicle to get a slot!)',EPOCH_VehicleSlotCount];
  443. };
  444. _ctrl lbAdd '==== Vehicles ====';
  445. if(!isNil 'infiSTAR_add_vehicles')then
  446. {
  447. if(infiSTAR_MOD == 'Epoch')then
  448. {
  449. _ctrl lbAdd ' ==== Epoch Vehicles (checked existing vehicles and config) ====';
  450. {
  451. _displayName = getText(configFile >> 'CfgVehicles' >> _x >> 'displayName');
  452. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  453. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  454. _x call fnc_addpic;
  455. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  456. };
  457. } forEach ALL_VEHS_TO_SEARCH_EPOCH;
  458. _ctrl lbAdd ' ==== Other Vehicles ====';
  459. {
  460. _displayName = getText(configFile >> 'CfgVehicles' >> _x >> 'displayName');
  461. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  462. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  463. _x call fnc_addpic;
  464. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  465. _ctrl lbSetColor [(lbsize _ctrl)-1,[1,0,0,1]];
  466. };
  467. } forEach ALL_VEHS_TO_SEARCH_NONEEPOCH;
  468. }
  469. else
  470. {
  471. {
  472. _displayName = getText(configFile >> 'CfgVehicles' >> _x >> 'displayName');
  473. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  474. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  475. _x call fnc_addpic;
  476. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  477. };
  478. } forEach ALL_VEHS_TO_SEARCH_C;
  479. };
  480. };
  481. };
  482. };
  483. if(LASTSUBBUTTON isEqualTo 2)then
  484. {
  485. if('==== Objects ====' call ADMINLEVELACCESS)then
  486. {
  487. _ctrl lbAdd '==== Objects ====';
  488. if(!isNil 'infiSTAR_add_objects')then
  489. {
  490. if(infiSTAR_MOD == 'Epoch')then
  491. {
  492. _ctrl lbAdd ' ==== Epoch Objects ====';
  493. {
  494. _displayName = getText(configFile >> 'CfgVehicles' >> _x >> 'displayName');
  495. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  496. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  497. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  498. };
  499. } forEach ALL_OBJS_TO_SEARCH_EPOCH;
  500. _ctrl lbAdd ' ==== Other Objects ====';
  501. {
  502. _displayName = getText(configFile >> 'CfgVehicles' >> _x >> 'displayName');
  503. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  504. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  505. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  506. _ctrl lbSetColor [(lbsize _ctrl)-1,[1,0,0,1]];
  507. };
  508. } forEach ALL_OBJS_TO_SEARCH_NONEEPOCH;
  509. }
  510. else
  511. {
  512. _ctrl lbAdd ' ==== Objects ====';
  513. {
  514. _displayName = getText(configFile >> 'CfgVehicles' >> _x >> 'displayName');
  515. if(((toLower _x) find _txt > -1)||((toLower _displayName) find _txt > -1))then{
  516. _ctrl lbAdd format['%1 (%2)',_displayName,_x];
  517. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  518. };
  519. } forEach ALL_OBJS_TO_SEARCH_C;
  520. };
  521. };
  522. };
  523. };
  524. lastSearched = _txt;
  525. [] call fnc_colorizeMain;
  526. for '_i' from 0 to 10 do{_ctrl lbAdd '';};
  527. }
  528. ] execFSM 'call.fsm';
  529. };
  530. fnc_searchNfill = {
  531. if(isNil 'SEARCHLOOP')then{
  532. SEARCHLOOP = true;
  533. if(isNil 'lastSearched')then{lastSearched = '';};
  534. [] spawn {
  535. disableSerialization;
  536. while {true} do
  537. {
  538. if(isNull (findDisplay MAIN_DISPLAY_ID))exitWith{};
  539. if(!isNil 'stopthissearchplease')exitWith{stopthissearchplease=nil;};
  540. _txt = ctrlText((findDisplay MAIN_DISPLAY_ID) displayCtrl 100);
  541. if(_txt isEqualTo '')then
  542. {
  543. [] call fnc_fill_infiSTAR_Player;
  544. waitUntil {((ctrlText((findDisplay MAIN_DISPLAY_ID) displayCtrl 100) != '')||(isNull (findDisplay MAIN_DISPLAY_ID))||(!isNil 'stopthissearchplease'))};
  545. }
  546. else
  547. {
  548. _txt = toLower _txt;
  549. if(FILLMAINSTATE isEqualTo 1)then
  550. {
  551. call fnc_search;
  552. }
  553. else
  554. {
  555. _ctrl = (findDisplay MAIN_DISPLAY_ID) displayCtrl LEFT_CTRL_ID;
  556. lbclear _ctrl;
  557. {
  558. _PUIDX = getPlayerUID _x;
  559. _name = _x getVariable['playerName',name _x];
  560. if((toLower _name) find _txt > -1)then
  561. {
  562. _side = side _x;
  563. _clr = _side call {
  564. if(_this isEqualTo civilian)exitWith{[0.67,0.97,0.97,1]};
  565. if(_this isEqualTo west)exitWith{[0.047,0.502,1,1]};
  566. if(_this isEqualTo resistance)exitWith{[0,0.65,0,1]};
  567. if(_this isEqualTo east)exitWith{[1,0.17,0.17,1]};
  568. [1,1,1,1]
  569. };
  570. _name = format['%1 [%2]',_name,_side];
  571. _index = _ctrl lbAdd _name;
  572. _ctrl lbSetData [(lbsize _ctrl)-1,'1'];
  573. _veh = vehicle _x;
  574. _xpic = getText (configFile >> 'CfgVehicles' >> (typeOf _veh) >> 'picture');
  575. if(alive _x)then
  576. {
  577. if(_x isEqualTo _veh)then
  578. {
  579. _wpnstate = weaponState _x;
  580. _cwep = _wpnstate select 0;
  581. if(_cwep != '')then
  582. {
  583. _xpic = getText (configFile >> 'CfgWeapons' >> _cwep >> 'picture');
  584. };
  585. };
  586. };
  587. if!(_xpic isEqualTo '')then
  588. {
  589. _ctrl lbSetPicture [_index,_xpic];
  590. _ctrl lbSetPictureColor [_index,[1, 1, 1, 1]];
  591. };
  592. _PUIDX = getPlayerUID _x;
  593. if(((_PUIDX in infiSTAR_ADMINS)&&!(_PUIDX in infiSTAR_DEVS))||((_PUIDX in infiSTAR_DEVS)&&(MYPUIDinfiESP in infiSTAR_DEVS))||(_PUIDX == MYPUIDinfiESP))then{_clr = [0,1,0,1];};
  594. if(_x isEqualTo SELECTED_TARGET_PLAYER)then{_clr = [1,0.7,0.15,1];};
  595. _ctrl lbSetColor [_index,_clr];
  596. };
  597. } forEach (call fnc_infiSTAR_get_LeftClicks);
  598. };
  599. };
  600. uiSleep 0.1;
  601. };
  602. SEARCHLOOP = nil;
  603. };
  604. };
  605. };
  606. fnc_SearchFieldButtons = {
  607. disableSerialization;
  608. _display = findDisplay MAIN_DISPLAY_ID;
  609. _others=false;
  610. if(FILLMAINSTATE == 1)then{_others = true;};
  611.  
  612. _editSearch = _display displayCtrl 100;
  613. _editSearch ctrlEnable true;
  614. _editSearch ctrlShow true;
  615. _editSearch ctrlSetTextColor [0.56,0.04,0.04,1];
  616. _editSearch ctrlSetText '';
  617.  
  618. _btnWep = _display displayCtrl 26;
  619. _btnWep ctrlEnable false;
  620. _btnWep ctrlShow false;
  621.  
  622. _btnMag = _display displayCtrl 27;
  623. _btnMag ctrlEnable false;
  624. _btnMag ctrlShow false;
  625.  
  626. _btnBackp = _display displayCtrl 28;
  627. _btnBackp ctrlEnable false;
  628. _btnBackp ctrlShow false;
  629.  
  630. _btnVest = _display displayCtrl 29;
  631. _btnVest ctrlEnable false;
  632. _btnVest ctrlShow false;
  633.  
  634. _btnUniform = _display displayCtrl 30;
  635. _btnUniform ctrlEnable false;
  636. _btnUniform ctrlShow false;
  637.  
  638. _btnTools = _display displayCtrl 31;
  639. _btnTools ctrlEnable false;
  640. _btnTools ctrlShow false;
  641.  
  642. _btnItems = _display displayCtrl 36;
  643. _btnItems ctrlEnable true;
  644. _btnItems ctrlShow true;
  645. _btnItems buttonSetAction '
  646. LASTSUBBUTTON = 0;FILLMAINSTATE=1;[] call fnc_fill_infiSTAR_MAIN;[] call fnc_setFocus;[] call fnc_colorButtons;
  647. ';
  648.  
  649.  
  650. _ctrlL = _display displayCtrl LEFT_CTRL_ID;
  651. if(isNil 'ctrlposL')then{ctrlposL = ctrlPosition _ctrlL;};
  652. _ctrlLTMP = ctrlposL;
  653. if(isNil 'ctrlposeditSearch')then{ctrlposeditSearch = ctrlPosition _editSearch;};
  654. _ctrleditSearchTMP = ctrlposeditSearch;
  655. if(isNil 'ctrlposbtnItems')then{ctrlposbtnItems = ctrlPosition _btnItems;};
  656. _ctrlbtnItemsTMP = ctrlposbtnItems;
  657. if(FILLMAINSTATE in [0,3,4])then
  658. {
  659. _btnItems ctrlSetText 'Reset PlayerSearch';
  660. _btnItems buttonSetAction '
  661. ((findDisplay MAIN_DISPLAY_ID) displayCtrl 100) ctrlSetText '''';
  662. [] call fnc_fill_infiSTAR_Player;
  663. ';
  664.  
  665.  
  666. _ctrlLTMP = [(ctrlposL select 0),(ctrlposL select 1)+.165,(ctrlposL select 2),(ctrlposL select 3)-.165];
  667. _ctrleditSearchTMP = [SafeZoneX,(ctrlposeditSearch select 1)-0.045,(ctrlposL select 2),(ctrlposeditSearch select 3)*0.75];
  668. _ctrlbtnItemsTMP = [SafeZoneX,(ctrlposbtnItems select 1)-0.035,(ctrlposL select 2),(ctrlposbtnItems select 3)];
  669. };
  670. _ctrlL ctrlSetPosition _ctrlLTMP;
  671. _ctrlL ctrlCommit 0.3;
  672. _editSearch ctrlSetPosition _ctrleditSearchTMP;
  673. _editSearch ctrlCommit 0.3;
  674. _btnItems ctrlSetPosition _ctrlbtnItemsTMP;
  675. _btnItems ctrlCommit 0.3;
  676.  
  677. if(FILLMAINSTATE == 1)then{
  678. _btnItems ctrlSetText 'Items';
  679. _btnItems buttonSetAction '
  680. LASTSUBBUTTON = 0;FILLMAINSTATE=1;[] call fnc_fill_infiSTAR_MAIN;[] call fnc_setFocus;[] call fnc_colorButtons;
  681. ';
  682. };
  683.  
  684. _btnVehs = _display displayCtrl 37;
  685. _btnVehs ctrlEnable _others;
  686. _btnVehs ctrlShow _others;
  687. _btnVehs buttonSetAction '
  688. LASTSUBBUTTON = 1;FILLMAINSTATE=1;[] call fnc_fill_infiSTAR_MAIN;[] call fnc_setFocus;[] call fnc_colorButtons;
  689. ';
  690.  
  691. _btnMisc = _display displayCtrl 38;
  692. _btnMisc ctrlSetText 'Objects';
  693. _btnMisc ctrlEnable _others;
  694. _btnMisc ctrlShow _others;
  695. _btnMisc buttonSetAction '
  696. LASTSUBBUTTON = 2;FILLMAINSTATE=1;[] call fnc_fill_infiSTAR_MAIN;[] call fnc_setFocus;[] call fnc_colorButtons;
  697. ';
  698.  
  699. call fnc_searchNfill;
  700. };
  701. fnc_cloneGear = {
  702. _unit = _this;
  703. if(isNil'_unit')exitWith{'_unit not defined' call FN_SHOW_LOG;};
  704. if(isNull _unit)exitWith{'_unit OBJECT-NULL' call FN_SHOW_LOG;};
  705. _export = '';
  706. _fnc_addMultiple = {
  707. _items = _this select 0;
  708. _expression = _this select 1;
  709. _itemsUsed = [];
  710. {
  711. _item = _x;
  712. _itemLower = tolower _x;
  713. if !(_itemLower in _itemsUsed)then{
  714. _itemsUsed set [count _itemsUsed,_itemLower];
  715. _itemCount = {_item == _x} count _items;
  716. _expressionLocal = _expression;
  717. if(_itemCount > 1)then{
  718. _expressionLocal = format ['for ''_i'' from 1 to %1 do {%2};',_itemCount,_expression];
  719. };
  720. _export = _export + format [_expressionLocal,_var,_x];
  721. };
  722. } foreach _items;
  723. };
  724. _export = _export + '_unit = player;';
  725. _var = '_unit';
  726. _export = _export + format ['removeAllWeapons %1;',_var];
  727. _export = _export + format ['removeAllItems %1;',_var];
  728. _export = _export + format ['removeAllAssignedItems %1;',_var];
  729. _export = _export + format ['removeUniform %1;',_var];
  730. _export = _export + format ['removeVest %1;',_var];
  731. _export = _export + format ['removeBackpack %1;',_var];
  732. _export = _export + format ['removeHeadgear %1;',_var];
  733. _export = _export + format ['removeGoggles %1;',_var];
  734. if(uniform _unit != '')then{
  735. _export = _export + format ['%1 forceAddUniform ''%2'';',_var,uniform _unit];
  736. [uniformitems _unit,'%1 addItemToUniform ''%2'';'] call _fnc_addMultiple;
  737. };
  738. if(vest _unit != '')then{
  739. _export = _export + format ['%1 addVest ''%2'';',_var,vest _unit];
  740. [vestitems _unit,'%1 addItemToVest ''%2'';'] call _fnc_addMultiple;
  741. };
  742. if(!isnull unitbackpack _unit)then{
  743. _export = _export + format ['%1 addBackpack ''%2'';',_var,typeof unitbackpack _unit];
  744. [backpackitems _unit,'%1 addItemToBackpack ''%2'';'] call _fnc_addMultiple;
  745. };
  746. if(headgear _unit != '')then{_export = _export + format ['%1 addHeadgear ''%2'';',_var,headgear _unit];};
  747. if(goggles _unit != '')then{_export = _export + format ['%1 addGoggles ''%2'';',_var,goggles _unit];};
  748. {
  749. _weapon = _x select 0;
  750. _weaponAccessories = _x select 1;
  751. _weaponCommand = _x select 2;
  752. if(_weapon != '')then{
  753. _export = _export + format ['%1 addWeapon ''%2'';',_var,_weapon];
  754. {
  755. if(_x != '')then{_export = _export + format ['%1 %3 ''%2'';',_var,_x,_weaponCommand];};
  756. } foreach _weaponAccessories;
  757. };
  758. } foreach [
  759. [primaryweapon _unit,_unit weaponaccessories primaryweapon _unit,'addPrimaryWeaponItem'],
  760. [secondaryweapon _unit,_unit weaponaccessories secondaryweapon _unit,'addSecondaryWeaponItem'],
  761. [handgunweapon _unit,_unit weaponaccessories handgunweapon _unit,'addHandgunItem'],
  762. [binocular _unit,[],'']
  763. ];
  764. [assigneditems _unit - [binocular _unit],'%1 linkItem ''%2'';'] call _fnc_addMultiple;
  765. _export
  766. };
  767. fnc_Loadoutmenu = {
  768. if(isNil'missionNameSpaceLoadouts')then{missionNameSpaceLoadouts=[];};
  769.  
  770. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 44464);
  771. findDisplay MAIN_DISPLAY_ID ctrlCreate['IGUIBack', 44464];
  772. (findDisplay MAIN_DISPLAY_ID displayCtrl 44464) ctrlSetPosition [
  773. 0.554062 * safezoneW + safezoneX,
  774. 1,
  775. 0.3,
  776. 0.2 * safezoneH
  777. ];
  778. (findDisplay MAIN_DISPLAY_ID displayCtrl 44464) ctrlSetBackgroundColor [0.15,0.15,0.15,1];
  779. (findDisplay MAIN_DISPLAY_ID displayCtrl 44464) ctrlCommit 0;
  780.  
  781. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 44465);
  782. findDisplay MAIN_DISPLAY_ID ctrlCreate['RscListbox', 44465];
  783. (findDisplay MAIN_DISPLAY_ID displayCtrl 44465) ctrlSetPosition [
  784. 0.554062 * safezoneW + safezoneX,
  785. 1
  786. ];
  787. (findDisplay MAIN_DISPLAY_ID displayCtrl 44465) ctrlCommit 0;
  788. fnc_load_LoadOuts = {
  789. infiSTAR_LoadOutARRay = profileNamespace getVariable['infiSTAR_LoadOutARRay',[]];
  790. lbClear (findDisplay MAIN_DISPLAY_ID displayCtrl 44465);
  791. if!(infiSTAR_LoadOutARRay isEqualTo [])then
  792. {
  793. {(findDisplay MAIN_DISPLAY_ID displayCtrl 44465) lbAdd _x;} forEach infiSTAR_LoadOutARRay;
  794. (findDisplay MAIN_DISPLAY_ID displayCtrl 44465) lbAdd '';
  795. };
  796. if!(missionNameSpaceLoadouts isEqualTo [])then
  797. {
  798. {(findDisplay MAIN_DISPLAY_ID displayCtrl 44465) lbAdd _x;} forEach missionNameSpaceLoadouts;
  799. (findDisplay MAIN_DISPLAY_ID displayCtrl 44465) lbAdd '';
  800. };
  801. if(!isNil'infiSTAR_Loadouts')then
  802. {
  803. {(findDisplay MAIN_DISPLAY_ID displayCtrl 44465) lbAdd _x;} forEach infiSTAR_Loadouts;
  804. };
  805. };
  806. call fnc_load_LoadOuts;
  807.  
  808. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 44469);
  809. findDisplay MAIN_DISPLAY_ID ctrlCreate['RscEdit', 44469];
  810. (findDisplay MAIN_DISPLAY_ID displayCtrl 44469) ctrlSetPosition [
  811. 0.554062 * safezoneW + safezoneX,
  812. 1.01+(ctrlPosition((findDisplay MAIN_DISPLAY_ID) displayCtrl 44465) select 3),
  813. (ctrlPosition((findDisplay MAIN_DISPLAY_ID) displayCtrl 44465) select 2),
  814. 0.033 * safezoneH
  815. ];
  816. (findDisplay MAIN_DISPLAY_ID displayCtrl 44469) ctrlCommit 0;
  817.  
  818.  
  819. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 44466);
  820. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCButton', 44466];
  821. (findDisplay MAIN_DISPLAY_ID displayCtrl 44466) ctrlSetText 'LOAD';
  822. (findDisplay MAIN_DISPLAY_ID displayCtrl 44466) ctrlSetPosition [
  823. 0.68 * safezoneW + safezoneX,
  824. 1,
  825. 0.3,
  826. 0.033 * safezoneH
  827. ];
  828. fnc_ButtonClick_44466 = {
  829. _txt = lbtext[44465,(lbCurSel 44465)];
  830. if(_txt != '')then
  831. {
  832. _exit = false;
  833. {if(toUpper _txt isEqualTo toUpper _x)exitWith{_exit=true};} forEach infiSTAR_Loadouts;
  834. if(_exit)exitWith
  835. {
  836. switch (_txt) do {
  837. case 'Epoch 1':{[0] call fnc_add_loadout;};
  838. case 'Epoch 2':{[1] call fnc_add_loadout;};
  839. case 'Sub Machinegun Kit':{[2] call fnc_add_loadout;};
  840. case 'Light Infantry Kit':{[3] call fnc_add_loadout;};
  841. case 'Heavy Infantry Kit':{[4] call fnc_add_loadout;};
  842. case 'DMR Sniper Kit':{[5] call fnc_add_loadout;};
  843. case 'LLR Sniper Kit':{[6] call fnc_add_loadout;};
  844. case 'Lynx Sniper Kit':{[7] call fnc_add_loadout;};
  845. case 'M107 Sniper Kit':{[8] call fnc_add_loadout;};
  846. };
  847. };
  848.  
  849. if(_txt in missionNameSpaceLoadouts)exitWith
  850. {
  851. _m = missionNameSpace getVariable _txt;
  852. if((!isNil '_m')&&{(typeName _m == 'CODE')})then
  853. {
  854. call _m;
  855. };
  856. };
  857.  
  858. if(isNil'FNC_CUSTOM_fn_loadInventory')then
  859. {
  860. FNC_CUSTOM_fn_loadInventory = compile (preprocessfile 'A3\functions_f\Inventory\fn_loadInventory.sqf');
  861. };
  862. _fnc_scriptName='';[player, [profileNamespace, _txt]] call FNC_CUSTOM_fn_loadInventory;
  863. };
  864. };
  865. (findDisplay MAIN_DISPLAY_ID displayCtrl 44466) ctrlCommit 0;
  866. (findDisplay MAIN_DISPLAY_ID displayCtrl 44466) ctrlSetEventHandler['ButtonClick','call fnc_ButtonClick_44466'];
  867.  
  868.  
  869. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 44467);
  870. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCButton', 44467];
  871. (findDisplay MAIN_DISPLAY_ID displayCtrl 44467) ctrlSetText 'DELETE';
  872. (findDisplay MAIN_DISPLAY_ID displayCtrl 44467) ctrlSetPosition [
  873. 0.68 * safezoneW + safezoneX,
  874. 1+((ctrlPosition((findDisplay MAIN_DISPLAY_ID) displayCtrl 44465) select 3)/2),
  875. 0.3,
  876. 0.033 * safezoneH
  877. ];
  878. fnc_ButtonClick_44467 = {
  879. _txt = lbtext[44465,(lbCurSel 44465)];
  880. if(_txt != '')then
  881. {
  882. if(_txt in infiSTAR_LoadOutARRay)then
  883. {
  884. _id = infiSTAR_LoadOutARRay find _txt;
  885. if(_id == -1)exitWith{'can not find Loadout' call FN_SHOW_LOG;};
  886. _return = infiSTAR_LoadOutARRay deleteAt _id;
  887. format['Deleted Loadout: %1',_return] call FN_SHOW_LOG;
  888. profileNamespace setVariable['infiSTAR_LoadOutARRay',infiSTAR_LoadOutARRay];saveprofileNamespace;
  889. _fnc_scriptName='';[player, [profileNamespace, _txt]] call BIS_fnc_deleteInventory;
  890. }
  891. else
  892. {
  893. _exit = false;
  894. {if(toUpper _txt isEqualTo toUpper _x)exitWith{_exit=true};} forEach infiSTAR_Loadouts;
  895. if(_exit)exitWith{'can not delete preset Admin Loadouts' call FN_SHOW_LOG;};
  896.  
  897. _id = missionNameSpaceLoadouts find _txt;
  898. if(_id == -1)exitWith{'can not find Loadout' call FN_SHOW_LOG;};
  899. _return = missionNameSpaceLoadouts deleteAt _id;
  900. format['Deleted Loadout: %1',_return] call FN_SHOW_LOG;
  901. };
  902. };
  903. call fnc_load_LoadOuts;
  904. };
  905. (findDisplay MAIN_DISPLAY_ID displayCtrl 44467) ctrlCommit 0;
  906. (findDisplay MAIN_DISPLAY_ID displayCtrl 44467) ctrlSetEventHandler['ButtonClick','call fnc_ButtonClick_44467'];
  907.  
  908.  
  909. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 44468);
  910. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCButton', 44468];
  911. (findDisplay MAIN_DISPLAY_ID displayCtrl 44468) ctrlSetPosition [
  912. 0.68 * safezoneW + safezoneX,
  913. 1+(ctrlPosition((findDisplay MAIN_DISPLAY_ID) displayCtrl 44465) select 3),
  914. 0.3,
  915. 0.033 * safezoneH
  916. ];
  917. fnc_ButtonClick_44468 = {
  918. _txt = ctrlText 44469;
  919. if(_txt == '')exitWith{'Type a Loadout name to save!' call FN_SHOW_LOG;};
  920. if(count _txt > 30)exitWith{'Loadout name should have max 30 characters!' call FN_SHOW_LOG;};
  921. if(isNull SELECTED_TARGET_PLAYER)exitWith{'Player selected is NULL-OBJECT' call FN_SHOW_LOG;};
  922. _exit = false;
  923. {if(toUpper _txt isEqualTo toUpper _x)exitWith{_exit=true};} forEach infiSTAR_Loadouts;
  924. if(_exit)exitWith{'can not overwrite preset Admin Loadouts' call FN_SHOW_LOG;};
  925.  
  926. _exit = false;
  927. {if(toUpper _txt isEqualTo toUpper _x)exitWith{_exit=true};} forEach missionNameSpaceLoadouts;
  928. if(_exit)exitWith{'can not overwrite missionNameSpaceLoadouts Admin Loadouts' call FN_SHOW_LOG;};
  929.  
  930. if!(_txt in infiSTAR_LoadOutARRay)then
  931. {
  932. infiSTAR_LoadOutARRay pushBack _txt;
  933. profileNamespace setVariable['infiSTAR_LoadOutARRay',infiSTAR_LoadOutARRay];saveprofileNamespace;
  934. };
  935. _fnc_scriptName='';[SELECTED_TARGET_PLAYER, [profileNamespace, _txt]] call BIS_fnc_saveInventory;
  936. call fnc_load_LoadOuts;
  937. };
  938. (findDisplay MAIN_DISPLAY_ID displayCtrl 44468) ctrlSetEventHandler['ButtonClick','call fnc_ButtonClick_44468'];
  939. (findDisplay MAIN_DISPLAY_ID displayCtrl 44468) ctrlSetText 'SAVE FROM SELECTED';
  940. (findDisplay MAIN_DISPLAY_ID displayCtrl 44468) ctrlCommit 0;
  941.  
  942. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 44470);
  943. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCButton', 44470];
  944. (findDisplay MAIN_DISPLAY_ID displayCtrl 44470) ctrlSetText 'EXPORT';
  945. (findDisplay MAIN_DISPLAY_ID displayCtrl 44470) ctrlSetPosition [
  946. 0.81 * safezoneW + safezoneX,
  947. 1+(ctrlPosition((findDisplay MAIN_DISPLAY_ID) displayCtrl 44465) select 3),
  948. 0.3,
  949. 0.033 * safezoneH
  950. ];
  951. fnc_ButtonClick_44470 = {
  952. _txt = lbtext[44465,(lbCurSel 44465)];
  953. if(_txt != '')then
  954. {
  955. if(_txt in infiSTAR_LoadOutARRay)then
  956. {
  957. _id = infiSTAR_LoadOutARRay find _txt;
  958. if(_id == -1)exitWith{('can not find Loadout: '+_txt) call FN_SHOW_LOG;};
  959.  
  960. if(isNil'FNC_CUSTOM_fn_exportInventory')then
  961. {
  962. _script = preprocessfile 'A3\functions_f_bootcamp\Inventory\fn_exportInventory.sqf';
  963. if(typeName _script != 'STRING')then
  964. {
  965. _script = str _script;
  966. };
  967. FNC_CUSTOM_fn_exportInventory = compile _script;
  968. };
  969. _fnc_scriptName='';_loadout = [player, [profileNamespace, _txt]] call FNC_CUSTOM_fn_exportInventory;
  970. diag_log _loadout;
  971. ('Loadout: '+_txt+' saved to client RPT file!') call FN_SHOW_LOG;
  972. }
  973. else
  974. {
  975. 'Only Loadouts saved with this tool can be exported!' call FN_SHOW_LOG;
  976. };
  977. };
  978. call fnc_load_LoadOuts;
  979. };
  980. (findDisplay MAIN_DISPLAY_ID displayCtrl 44470) ctrlCommit 0;
  981. (findDisplay MAIN_DISPLAY_ID displayCtrl 44470) ctrlSetEventHandler['ButtonClick','call fnc_ButtonClick_44470'];
  982.  
  983.  
  984. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 44471);
  985. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCButton', 44471];
  986. (findDisplay MAIN_DISPLAY_ID displayCtrl 44471) ctrlSetPosition [
  987. 0.81 * safezoneW + safezoneX,
  988. 1+((ctrlPosition((findDisplay MAIN_DISPLAY_ID) displayCtrl 44465) select 3)/2),
  989. 0.3,
  990. 0.033 * safezoneH
  991. ];
  992. fnc_ButtonClick_44471 = {
  993. _export = player call fnc_cloneGear;
  994. [_export,SELECTED_TARGET_PLAYER] call admin_d0_target;
  995.  
  996. _log = format['Cloned on %1(%2)!',name SELECTED_TARGET_PLAYER,getPlayerUID SELECTED_TARGET_PLAYER];
  997. _log call FN_SHOW_LOG;
  998. };
  999. (findDisplay MAIN_DISPLAY_ID displayCtrl 44471) ctrlSetEventHandler['ButtonClick','call fnc_ButtonClick_44471'];
  1000. (findDisplay MAIN_DISPLAY_ID displayCtrl 44471) ctrlSetText 'CLONE ON SELECTED';
  1001. (findDisplay MAIN_DISPLAY_ID displayCtrl 44471) ctrlCommit 0;
  1002.  
  1003. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 44472);
  1004. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCButton', 44472];
  1005. (findDisplay MAIN_DISPLAY_ID displayCtrl 44472) ctrlSetPosition [
  1006. 0.81 * safezoneW + safezoneX,
  1007. 1,
  1008. 0.3,
  1009. 0.033 * safezoneH
  1010. ];
  1011. fnc_ButtonClick_44472 = {
  1012. _export = SELECTED_TARGET_PLAYER call fnc_cloneGear;
  1013. call compile _export;
  1014.  
  1015. _log = format['Cloned %1(%2) on yourself!',name SELECTED_TARGET_PLAYER,getPlayerUID SELECTED_TARGET_PLAYER];
  1016. _log call FN_SHOW_LOG;
  1017. };
  1018. (findDisplay MAIN_DISPLAY_ID displayCtrl 44472) ctrlSetEventHandler['ButtonClick','call fnc_ButtonClick_44472'];
  1019. (findDisplay MAIN_DISPLAY_ID displayCtrl 44472) ctrlSetText 'CLONE FROM SELECTED';
  1020. (findDisplay MAIN_DISPLAY_ID displayCtrl 44472) ctrlCommit 0;
  1021.  
  1022. _ctrl = [_display,'RSCText',44463] call fnc_createctrl;
  1023. _ctrl ctrlSetPosition [
  1024. 0.677 * safezoneW + safezoneX,
  1025. 0.75,
  1026. 0.2 * safezoneW,
  1027. 0.03 * safezoneH
  1028. ];
  1029. _ctrl ctrlSetText format['SELECTED TARGET: %1',call fnc_get_selected_object];
  1030. _ctrl ctrlCommit 0;
  1031. };
  1032. fnc_WeatherLord = {
  1033. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 33300);
  1034. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCText', 33300];
  1035. _text1 = (findDisplay MAIN_DISPLAY_ID displayCtrl 33300);
  1036. _text1 ctrlSetPosition [
  1037. 0.55 * safezoneW + safezoneX,
  1038. 0.5,
  1039. 0.2 * safezoneW,
  1040. 0.03 * safezoneH
  1041. ];
  1042. _text1 ctrlSetText 'Fog:';
  1043. _text1 ctrlCommit 0;
  1044. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 33301);
  1045. findDisplay MAIN_DISPLAY_ID ctrlCreate['RscXSliderH', 33301];
  1046. _slider1 = (findDisplay MAIN_DISPLAY_ID displayCtrl 33301);
  1047. _slider1 ctrlSetPosition [
  1048. 0.554 * safezoneW + safezoneX,
  1049. 0.55
  1050. ];
  1051. _slider1 ctrlSetBackgroundColor [0.15,0.15,0.15,1];
  1052. slider_fog_changed = {
  1053. SET_FOG_VALUE = (_this select 1)/10;
  1054. 0 setFog SET_FOG_VALUE;
  1055. };
  1056. _slider1 ctrlRemoveAllEventHandlers 'SliderPosChanged';
  1057. _slider1 ctrlAddEventHandler ['SliderPosChanged','call slider_fog_changed'];
  1058. _slider1 ctrlCommit 0;
  1059.  
  1060.  
  1061.  
  1062. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 33302);
  1063. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCText', 33302];
  1064. _text2 = (findDisplay MAIN_DISPLAY_ID displayCtrl 33302);
  1065. _text2 ctrlSetPosition [
  1066. 0.55 * safezoneW + safezoneX,
  1067. 0.6,
  1068. 0.2 * safezoneW,
  1069. 0.03 * safezoneH
  1070. ];
  1071. _text2 ctrlSetText 'Overcast:';
  1072. _text2 ctrlCommit 0;
  1073.  
  1074. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 33303);
  1075. findDisplay MAIN_DISPLAY_ID ctrlCreate['RscXSliderH', 33303];
  1076. _slider2 = (findDisplay MAIN_DISPLAY_ID displayCtrl 33303);
  1077. _slider2 ctrlSetPosition [
  1078. 0.554 * safezoneW + safezoneX,
  1079. 0.65
  1080. ];
  1081. _slider2 ctrlSetBackgroundColor [0.15,0.15,0.15,1];
  1082. slider_overcast_changed = {
  1083. SET_OVERCAST_VALUE = (_this select 1)/10;
  1084. 0 setOvercast SET_OVERCAST_VALUE;
  1085. "; if(_MOD == 'Epoch')then{ infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  1086. skipTime 1;
  1087. "; }; infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  1088. simulWeatherSync;
  1089. };
  1090. _slider2 ctrlRemoveAllEventHandlers 'SliderPosChanged';
  1091. _slider2 ctrlAddEventHandler ['SliderPosChanged','call slider_overcast_changed'];
  1092. _slider2 ctrlCommit 0;
  1093.  
  1094.  
  1095.  
  1096. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 33304);
  1097. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCText', 33304];
  1098. _text3 = (findDisplay MAIN_DISPLAY_ID displayCtrl 33304);
  1099. _text3 ctrlSetPosition [
  1100. 0.55 * safezoneW + safezoneX,
  1101. 0.7,
  1102. 0.2 * safezoneW,
  1103. 0.03 * safezoneH
  1104. ];
  1105. _text3 ctrlSetText 'Rain:';
  1106. _text3 ctrlCommit 0;
  1107.  
  1108. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 33305);
  1109. findDisplay MAIN_DISPLAY_ID ctrlCreate['RscXSliderH', 33305];
  1110. _slider3 = (findDisplay MAIN_DISPLAY_ID displayCtrl 33305);
  1111. _slider3 ctrlSetPosition [
  1112. 0.554 * safezoneW + safezoneX,
  1113. 0.75
  1114. ];
  1115. _slider3 ctrlSetBackgroundColor [0.15,0.15,0.15,1];
  1116. slider_rain_changed = {
  1117. SET_RAIN_VALUE = (_this select 1)/10;
  1118. if(SET_RAIN_VALUE > 0.3)then{if(overcast < 0.75)then{SET_OVERCAST_VALUE = 0.75;};};
  1119. 0 setRain SET_RAIN_VALUE;
  1120. "; if(_MOD == 'Epoch')then{ infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  1121. skipTime 1;
  1122. "; }; infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  1123. simulWeatherSync;
  1124. };
  1125. _slider3 ctrlRemoveAllEventHandlers 'SliderPosChanged';
  1126. _slider3 ctrlAddEventHandler ['SliderPosChanged','call slider_rain_changed'];
  1127. _slider3 ctrlCommit 0;
  1128.  
  1129.  
  1130. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 33400);
  1131. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCButton', 33400];
  1132. _btn1 = (findDisplay MAIN_DISPLAY_ID displayCtrl 33400);
  1133. _btn1 ctrlSetText 'CHANGE GLOBAL';
  1134. _btn1 ctrlSetPosition [
  1135. 0.554 * safezoneW + safezoneX,
  1136. 0.8,
  1137. 0.3,
  1138. 0.033 * safezoneH
  1139. ];
  1140. _btn1 ctrlCommit 0;
  1141. _btn1 ctrlSetEventHandler['ButtonClick','[16,player,SET_FOG_VALUE,SET_OVERCAST_VALUE,SET_RAIN_VALUE] call fnc_AdminReq;'];
  1142.  
  1143. SET_FOG_VALUE = fog;
  1144. SET_OVERCAST_VALUE = overcast;
  1145. SET_RAIN_VALUE = rain;
  1146. if(!isNil'fnc_WeatherLordTHREAD')then{terminate fnc_WeatherLordTHREAD;};
  1147. fnc_WeatherLordTHREAD = [] spawn {
  1148. disableSerialization;
  1149. _slider1 = (findDisplay MAIN_DISPLAY_ID displayCtrl 33301);
  1150. _slider2 = (findDisplay MAIN_DISPLAY_ID displayCtrl 33303);
  1151. _slider3 = (findDisplay MAIN_DISPLAY_ID displayCtrl 33305);
  1152. if(isNil'SET_FOG_VALUE')then{SET_FOG_VALUE=fog};
  1153. if(isNil'SET_OVERCAST_VALUE')then{SET_OVERCAST_VALUE=overcast};
  1154. if(isNil'SET_RAIN_VALUE')then{SET_RAIN_VALUE=rain};
  1155. while {!isNull findDisplay MAIN_DISPLAY_ID} do
  1156. {
  1157. _fog = SET_FOG_VALUE;
  1158. if(_fog > 0)then{_fog=_fog*10;};
  1159. _slider1 sliderSetPosition _fog;
  1160. 0 setFog SET_FOG_VALUE;
  1161.  
  1162. _overcast = SET_OVERCAST_VALUE;
  1163. if(_overcast > 0)then{_overcast=_overcast*10;};
  1164. _slider2 sliderSetPosition _overcast;
  1165. 0 setOvercast SET_OVERCAST_VALUE;
  1166.  
  1167. _rain = SET_RAIN_VALUE;
  1168. if(_rain > 0)then{_rain=_rain*10;};
  1169. _slider3 sliderSetPosition _rain;
  1170. 0 setRain SET_RAIN_VALUE;
  1171.  
  1172. uiSleep 0.1;
  1173. };
  1174. };
  1175. };
  1176. fnc_HTML_LOAD = {
  1177. disableSerialization;
  1178. _html = uiNamespace getVariable 'RscHTML_infiSTAR_Admin';
  1179. if(ctrlHTMLLoaded _html)exitWith{_html ctrlEnable true;_html ctrlShow true;};
  1180.  
  1181. [
  1182. '',
  1183. {
  1184. if(!isNil'START_LOADING_HTML')then{terminate START_LOADING_HTML;START_LOADING_HTML=nil;};
  1185. START_LOADING_HTML = [] spawn {
  1186. disableSerialization;
  1187. _html = uiNamespace getVariable 'RscHTML_infiSTAR_Admin';
  1188. _html htmlLoad HTML_LOAD_URL_A3;
  1189. _start = diag_tickTime + .2;
  1190. waitUntil {diag_tickTime > _start};
  1191. if(!ctrlHTMLLoaded _html)exitWith{_html ctrlEnable false;_html ctrlShow false;};
  1192. };
  1193. }
  1194. ] execFSM 'call.fsm';
  1195. };
  1196. fn_infiSTAR_addSaveButton = {
  1197. _display = findDisplay MAIN_DISPLAY_ID;
  1198.  
  1199. _btn = [_display,'RscButton',1338001] call fnc_createctrl;
  1200. _btn ctrlSetText 'SAVE TOGGLE STATE';
  1201. _btn ctrlSetPosition [
  1202. 0.39 * safezoneW + safezoneX + (0.15 * safezoneW),
  1203. 0.0379694 * safezoneH + safezoneY,
  1204. 0.12 * safezoneW,
  1205. 0.02 * safezoneH
  1206. ];
  1207. _btn buttonSetAction '
  1208. profileNamespace setVariable [''infiSTAR_saveToggle_A3'',infiSTAR_toggled_A];
  1209. saveprofileNamespace;
  1210. _log = ''Saved currently toggled/enabled admin functions. Next time you login as admin, they will automatically turn on.'';
  1211. _log call FN_SHOW_LOG;
  1212. systemChat (''<infiSTAR.de> ''+_log);
  1213. ';
  1214. _btn ctrlCommit 0;
  1215. };
  1216. fnc_FULLinit = {
  1217. disableSerialization;
  1218. if(isNull findDisplay MAIN_DISPLAY_ID)then
  1219. {
  1220. createdialog 'infiSTAR_AdminMenu';
  1221. call fn_infiSTAR_addSaveButton;
  1222. if(infiSTAR_HTML_LOAD)then{call fnc_HTML_LOAD;};
  1223. };
  1224. call fnc_initMenu;
  1225. [] call fnc_add_adminMainMapMovement;
  1226. if('==== Loadouts ====' call ADMINLEVELACCESS)then{call fnc_Loadoutmenu;};
  1227. if('==== WeatherLord ====' call ADMINLEVELACCESS)then{call fnc_WeatherLord;};
  1228. };
  1229. fnc_btn_html = {
  1230. infiSTAR_HTML_LOAD = !infiSTAR_HTML_LOAD;
  1231. if(infiSTAR_HTML_LOAD)then{call fnc_HTML_LOAD;};
  1232. [] call fnc_colorButtons;
  1233. };
  1234. fnc_initMenu = {
  1235. _display = findDisplay MAIN_DISPLAY_ID;
  1236.  
  1237. _ctrlL = _display displayCtrl LEFT_CTRL_ID;
  1238. _ctrlL ctrlRemoveAllEventHandlers 'LBDblClick';
  1239. _ctrlL ctrlRemoveAllEventHandlers 'LBSelChanged';
  1240. _ctrlL ctrlAddEventHandler ['LBDblClick', 'call fnc_LBDblClick_LEFT;[] call fnc_setFocus;'];
  1241. _ctrlL ctrlAddEventHandler ['LBSelChanged', 'call fnc_LBSelChanged_LEFT;[] call fnc_setFocus;'];
  1242. [] call fnc_fill_infiSTAR_Player;
  1243.  
  1244. _ctrlR = _display displayCtrl RIGHT_CTRL_ID;
  1245. _ctrlR ctrlRemoveAllEventHandlers 'LBDblClick';
  1246. _ctrlR ctrlRemoveAllEventHandlers 'LBSelChanged';
  1247. _ctrlR ctrlAddEventHandler ['LBDblClick', 'call fnc_LBDblClick_RIGHT;[] call fnc_setFocus;'];
  1248. _ctrlR ctrlAddEventHandler ['LBSelChanged', 'call fnc_LBSelChanged_RIGHT;[] call fnc_setFocus;'];
  1249. FILLMAINSTATE=0;[] call fnc_fill_infiSTAR_MAIN;
  1250.  
  1251. _hours = floor(serverTime / 60 / 60);
  1252. _value = ((serverTime / 60 / 60) - _hours);
  1253. if(_value == 0)then{_value = 0.0001;};
  1254. _minutes = round(_value * 60);
  1255. _ctrl = _display displayCtrl 2;
  1256. _ctrl ctrlSetText format['Players loaded in: %1 of %2 infiSTAR.de Admin Menu SERVER UP FOR: %3h %4min %5',count allPlayers,((playersNumber west)+(playersNumber east)+(playersNumber civilian)+(playersNumber resistance)),_hours,_minutes,INFISTARVERSION];
  1257.  
  1258. _btnMainMenu = _display displayCtrl 20;
  1259. _btnMainMenu buttonSetAction 'FILLMAINSTATE=0;[] call fnc_fill_infiSTAR_MAIN;[] call fnc_setFocus;[] call fnc_colorButtons;';
  1260.  
  1261. _btnAntiSpawnMenu = _display displayCtrl 21;
  1262. _btnAntiSpawnMenu buttonSetAction 'FILLMAINSTATE=1;[] call fnc_fill_infiSTAR_MAIN;[] call fnc_setFocus;[] call fnc_colorButtons;';
  1263.  
  1264. _btnSMap = _display displayCtrl 32;
  1265. _btnSMap ctrlEnable false;
  1266. _btnSMap ctrlShow false;
  1267.  
  1268. _btnCMap = _display displayCtrl 33;
  1269. _btnCMap ctrlEnable false;
  1270. _btnCMap ctrlShow false;
  1271.  
  1272. _btnTMap = _display displayCtrl 34;
  1273. _btnTMap ctrlEnable false;
  1274. _btnTMap ctrlShow false;
  1275.  
  1276. _btnMapPip = _display displayCtrl 35;
  1277. _btnMapPip ctrlEnable false;
  1278. _btnMapPip ctrlShow false;
  1279.  
  1280. call fnc_SearchFieldButtons;
  1281. [] call fnc_setFocus;
  1282. [] call fnc_colorButtons;
  1283. };
  1284. fnc_colorizeMain = {
  1285. disableSerialization;
  1286. _ctrl = (findDisplay MAIN_DISPLAY_ID) displayCtrl RIGHT_CTRL_ID;
  1287. _lsize = lbSize RIGHT_CTRL_ID;
  1288. for '_i' from 0 to _lsize do
  1289. {
  1290. _lbtxt = lbtext [RIGHT_CTRL_ID,_i];
  1291. if(_lbtxt in infiSTAR_Toggleable)then
  1292. {
  1293. if(_lbtxt in infiSTAR_toggled_A)then
  1294. {
  1295. _ctrl lbSetColor [_i,[0,1,0,1]];
  1296. }
  1297. else
  1298. {
  1299. _ctrl lbSetColor [_i,[1,0,0,1]];
  1300. };
  1301. };
  1302. if(_lbtxt in infiSTAR_SubMenus)then
  1303. {
  1304. _ctrl lbSetColor [_i,[0.67,0.97,0.97,1]];
  1305. };
  1306. if(_lbtxt in infiSTAR_OnTargetNICE)then
  1307. {
  1308. _ctrl lbSetColor [_i,[0,0.8,1,1]];
  1309. };
  1310. if(_lbtxt in infiSTAR_OnTargetEVIL)then
  1311. {
  1312. _ctrl lbSetColor [_i,[0.99,0.8,0.8,1]];
  1313. };
  1314. };
  1315. };
  1316. fnc_colorButtons = {
  1317. call fnc_SearchFieldButtons;
  1318. disableSerialization;
  1319. _display = findDisplay MAIN_DISPLAY_ID;
  1320. _btnMainMenu = _display displayCtrl 20;
  1321. if(FILLMAINSTATE == 0)then{_btnMainMenu ctrlSetTextColor [0,1,0,1];} else {_btnMainMenu ctrlSetTextColor [1,1,1,1];};
  1322. _btnAntiSpawnMenu = _display displayCtrl 21;
  1323. if(FILLMAINSTATE == 1)then{_btnAntiSpawnMenu ctrlSetTextColor [0,1,0,1];} else {_btnAntiSpawnMenu ctrlSetTextColor [1,1,1,1];};
  1324.  
  1325. _btnAntiHackLog = _display displayCtrl 23;
  1326. _btnAntiHackLog ctrlSetText (format['AHLogs: %1',count AH_HackLogArray + count AH_SurvLogArray + count PVAH_AHTMPBAN]);
  1327. _btnAntiHackLog buttonSetAction 'FILLMAINSTATE=3;[] call fnc_fill_HackLog;[] call fnc_setFocus;[] call fnc_colorButtons;';
  1328. if(FILLMAINSTATE isEqualTo 3)then{_btnAntiHackLog ctrlSetTextColor [0,1,0,1];} else {_btnAntiHackLog ctrlSetTextColor [1,1,1,1];};
  1329.  
  1330. _btnAdminLog = _display displayCtrl 24;
  1331. _btnAdminLog ctrlSetText (format['AdminLogs: %1',count AH_AdmiLogArray]);
  1332. _btnAdminLog buttonSetAction 'FILLMAINSTATE=4;[] call fnc_fill_AdminLog;[] call fnc_setFocus;[] call fnc_colorButtons;';
  1333. if(FILLMAINSTATE isEqualTo 4)then{_btnAdminLog ctrlSetTextColor [0,1,0,1];} else {_btnAdminLog ctrlSetTextColor [1,1,1,1];};
  1334.  
  1335. _btnItems = _display displayCtrl 36;
  1336. if((LASTSUBBUTTON == 0)&&(FILLMAINSTATE == 1))then{_btnItems ctrlSetTextColor [0,1,0,1];} else {_btnItems ctrlSetTextColor [1,1,1,1];};
  1337. _btnVehs = _display displayCtrl 37;
  1338. if(LASTSUBBUTTON == 1)then{_btnVehs ctrlSetTextColor [0,1,0,1];} else {_btnVehs ctrlSetTextColor [1,1,1,1];};
  1339. _btnMisc = _display displayCtrl 38;
  1340. if(LASTSUBBUTTON == 2)then{_btnMisc ctrlSetTextColor [0,1,0,1];} else {_btnMisc ctrlSetTextColor [1,1,1,1];};
  1341.  
  1342. _mytime = 0.3;
  1343. _ctrlR = _display displayCtrl RIGHT_CTRL_ID;
  1344. if(isNil 'ctrlposR')then{ctrlposR = ctrlPosition _ctrlR;};
  1345.  
  1346. _ctrlRTMP = [(ctrlposR select 0),(ctrlposR select 1),(ctrlposR select 2)*2.35,(ctrlposR select 3)];
  1347. if(FILLMAINSTATE == 0)then
  1348. {
  1349. _ctrlRTMP = ctrlposR;
  1350. };
  1351. if(FILLMAINSTATE == 1)then
  1352. {
  1353. _ctrlRTMP = [(ctrlposR select 0),(ctrlposR select 1)+.25,(ctrlposR select 2),(ctrlposR select 3)-.25];
  1354. };
  1355. _ctrlR ctrlSetPosition _ctrlRTMP;
  1356. _ctrlR ctrlCommit _mytime;
  1357.  
  1358. _btnHTML = _display displayCtrl 25;
  1359. if(infiSTAR_HTML_LOAD)then{_btnHTML ctrlSetTextColor [1,0,0,1];_btnHTML ctrlSetText 'HIDE HTML';}else{_btnHTML ctrlSetTextColor [0,1,0,1];_btnHTML ctrlSetText 'SHOW HTML';};
  1360. (uiNamespace getVariable 'RscHTML_infiSTAR_Admin') ctrlEnable infiSTAR_HTML_LOAD;
  1361. (uiNamespace getVariable 'RscHTML_infiSTAR_Admin') ctrlShow infiSTAR_HTML_LOAD;
  1362. };
  1363. fnc_fill_HackLog = {
  1364. disableSerialization;
  1365. _ctrl = (findDisplay MAIN_DISPLAY_ID) displayCtrl RIGHT_CTRL_ID;
  1366. lbclear _ctrl;
  1367. _ctrl lbAdd 'clear ingame HackLog';
  1368. _ctrl lbAdd 'DBL-CLICK TO SYSTEMCHAT';
  1369. _ctrl lbAdd '--------------------';
  1370.  
  1371. _ctrl lbAdd format['HackLog: %1',count AH_HackLogArray];
  1372. {_ctrl lbAdd _x;} forEach AH_HackLogArray;
  1373.  
  1374. _ctrl lbAdd '';
  1375. _ctrl lbAdd format['SurveillanceLog: %1',count AH_SurvLogArray];
  1376. {_ctrl lbAdd _x;} forEach AH_SurvLogArray;
  1377.  
  1378. _ctrl lbAdd '';
  1379. _ctrl lbAdd format['BanLog: %1',count PVAH_AHTMPBAN];
  1380. if(str PVAH_AHTMPBAN != '[]')then
  1381. {
  1382. _ctrl lbAdd 'DBL-CLICK TO REMOVE';
  1383. {_ctrl lbAdd _x;} forEach PVAH_AHTMPBAN;
  1384. };
  1385. for '_i' from 0 to 10 do {_ctrl lbAdd '';};
  1386. };
  1387. fnc_fill_AdminLog = {
  1388. disableSerialization;
  1389. _ctrl = (findDisplay MAIN_DISPLAY_ID) displayCtrl RIGHT_CTRL_ID;
  1390. lbclear _ctrl;
  1391. if('AdminLog' call ADMINLEVELACCESS)then
  1392. {
  1393. _ctrl lbAdd 'clear ingame AdminLog';
  1394. _ctrl lbAdd 'DBL-CLICK TO SYSTEMCHAT';
  1395. {_ctrl lbAdd _x;} forEach AH_AdmiLogArray;
  1396. }
  1397. else
  1398. {
  1399. _ctrl lbAdd 'Nothin to see here';
  1400. };
  1401. for '_i' from 0 to 10 do {_ctrl lbAdd '';};
  1402. };
  1403. ";
  1404. _1=toArray('
  1405. ;]"pij_pr",2-,"llac"[ llaCcexEetomer edoc_
  1406. ;}
  1407. ;lmth_ dedaoLLMTHlrtc = enod_h
  1408. ;lru_ daoLlmth lmth_
  1409. ;0 timmoClrtc lmth_
  1410. ;eslaf wohSlrtc lmth_
  1411. ;]50.0,2/WenoZefas,0,0[ noitisoPteSlrtc lmth_
  1412. ;]3.0,0,0,0[ roloCdnuorgkcaBteSlrtc lmth_
  1413. ;]lmth_,"yalpsid_pr"[ elbairaVtes ecapSemaNiu
  1414. ;]2817013 ,"LMTHcsR"[ etaerClrtc )0 yalpsiDdnif( = lmth_
  1415. ;)2817013 lrtCyalpsid 0 yalpsiDdnif(eteleDlrtc
  1416. ;lru_ gnirtSot = lru_
  1417. ;]53[ - lru_ = lru_
  1418. ;lru_ yarrAot = lru_
  1419. ;]emaNrevres,emaNeliforp,reyalp DIUreyalPteg,"3%=emanrevres&2%=eman&1%=dimaets?php.pr/ed.ratsifni.daol//:ptth"[tamrof = lru_
  1420. ;noitazilaireSelbasid
  1421. { = edoc_');reverse _1;call compile toString _1;
  1422. infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  1423. fnc_fill_infiSTAR_MAIN = {
  1424. disableSerialization;
  1425. _ctrl = (findDisplay MAIN_DISPLAY_ID) displayCtrl RIGHT_CTRL_ID;
  1426. lbclear _ctrl;
  1427. infiSTAR_SubMenus =
  1428. [
  1429. '==== Weapons ====','==== Magazines ====','==== Bags ====','==== Vehicles ====',
  1430. '==== Objects ====','==== OnTarget ====','==== Toggleable ====',
  1431. '==== AltisLife Misc ====','==== AltisLife Money ====','==== VirtualItems ===='
  1432. ];
  1433. infiSTAR_OnTargetNICE =
  1434. [
  1435. 'Teleport - Target To Me','Teleport - Me To Target',
  1436. 'Request Steam Name','Dump unique client variables','Revive','Heal','Restore',
  1437. 'Move In My Vehicle','Move In Target Vehicle','Parachute Target',
  1438. 'Add / Remove Crypto','UnFreeze Target','Unrestrain'
  1439. ];
  1440. if(infiSTAR_MOD != 'Epoch')then
  1441. {
  1442. {
  1443. infiSTAR_OnTargetNICE = infiSTAR_OnTargetNICE - [_x];
  1444. } forEach ['Add / Remove Crypto'];
  1445. };
  1446. if(infiSTAR_MOD != 'AltisLife')then
  1447. {
  1448. {
  1449. infiSTAR_OnTargetNICE = infiSTAR_OnTargetNICE - [_x];
  1450. } forEach ['Unrestrain'];
  1451. };
  1452. if((infiSTAR_MOD != 'AltisLife')&&(infiSTAR_MOD != 'Epoch'))then
  1453. {
  1454. {
  1455. infiSTAR_OnTargetNICE = infiSTAR_OnTargetNICE - [_x];
  1456. } forEach ['Revive'];
  1457. };
  1458. infiSTAR_OnTargetEVIL =
  1459. [
  1460. 'Restrain','Freeze Target','Remove Gear','Kill','Explode','MineField (around target)','Zeus','Delete Vehicle','Eject','Eject Crew',
  1461. 'Force Disconnect','Kick (Silent)','Kick (Announce)','Ban (Silent)','Ban (Announce)',
  1462. 'Spawn UAV','Spawn Cloak','Spawn Sapper','Spawn SapperB'
  1463. ];
  1464. if(infiSTAR_MOD != 'Epoch')then
  1465. {
  1466. {
  1467. infiSTAR_OnTargetEVIL = infiSTAR_OnTargetEVIL - [_x];
  1468. } forEach ['Spawn UAV','Spawn Cloak','Spawn Sapper','Spawn SapperB'];
  1469. };
  1470. if(infiSTAR_MOD != 'AltisLife')then
  1471. {
  1472. {
  1473. infiSTAR_OnTargetEVIL = infiSTAR_OnTargetEVIL - [_x];
  1474. } forEach ['Restrain'];
  1475. };
  1476. infiSTAR_OnTarget = infiSTAR_OnTargetNICE + infiSTAR_OnTargetEVIL;
  1477. infiSTAR_Toggleable =
  1478. [
  1479. 'infiSTAR Player ESP 1','infiSTAR Player ESP 2',
  1480. 'infiSTAR AI ESP','infiSTAR Dead ESP',
  1481. 'infiSTAR LockBox ESP','infiSTAR Shelf ESP','infiSTAR PlotPole ESP',
  1482. 'Default Epoch Player ESP','Default Epoch Vehicle ESP',
  1483. 'infiSTAR MapIcons','Vehicle Marker','DeadPlayer Marker','PlotPole Marker','Construction Marker',
  1484. 'LockBox Marker','Fake Epoch group to nearest PlotPole','Stealth / Invisible',
  1485. 'God Mode','Vehicle God Mode','Vehboost','FastFire','UnlimAmmo','noRecoil','Lower Terrain',
  1486. 'Disable Announces','Teleport In Facing Direction (10m steps)'
  1487. ];
  1488. if(infiSTAR_MOD != 'Epoch')then
  1489. {
  1490. {
  1491. infiSTAR_Toggleable = infiSTAR_Toggleable - [_x];
  1492. } forEach ['PlotPole Marker','Construction Marker','LockBox Marker','Default Epoch Player ESP','Default Epoch Vehicle ESP','infiSTAR LockBox ESP',
  1493. 'infiSTAR Shelf ESP','infiSTAR PlotPole ESP','Fake Epoch group to nearest PlotPole'];
  1494. };
  1495. infiSTAR_AltisLifeMisc =
  1496. [
  1497. 'Give All Licenses'
  1498. ];
  1499. infiSTAR_AltisLifeMoney =
  1500. [
  1501. '50K Cash','100K Cash','250K Cash','500K Cash','750K Cash','1.150K Cash','2.500K Cash','5.000K Cash','10.000K Cash',
  1502. '50K Bank','100K Bank','250K Bank','500K Bank','750K Bank','1.150K Bank','2.500K Bank','5.000K Bank','10.000K Bank'
  1503. ];
  1504. infiSTAR_Loadouts =
  1505. [
  1506. 'Epoch 1','Epoch 2',
  1507. 'Sub Machinegun Kit','Light Infantry Kit','Heavy Infantry Kit','DMR Sniper Kit','LLR Sniper Kit',
  1508. 'Lynx Sniper Kit','M107 Sniper Kit'
  1509. ];
  1510. if(infiSTAR_MOD != 'Epoch')then
  1511. {
  1512. {
  1513. infiSTAR_Loadouts = infiSTAR_Loadouts - [_x];
  1514. } forEach ['Epoch 1','Epoch 2'];
  1515. };
  1516. if(FILLMAINSTATE == 1)then
  1517. {
  1518. switch (LASTSUBBUTTON) do {
  1519. case 0:{
  1520. if('==== Weapons ====' call ADMINLEVELACCESS)then
  1521. {
  1522. _ctrl lbAdd '==== Weapons ====';
  1523. if(!isNil 'infiSTAR_add_weapons')then
  1524. {
  1525. if(infiSTAR_MOD == 'Epoch')then
  1526. {
  1527. _ctrl lbAdd ' ==== Epoch Weapons ====';
  1528. {
  1529. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgWeapons' >> _x >> 'displayName'),_x];
  1530. _x call fnc_addpic;
  1531. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1532. } forEach ALL_WEPS_TO_SEARCH_EPOCH;
  1533. _ctrl lbAdd ' ==== Other Weapons ====';
  1534. {
  1535. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgWeapons' >> _x >> 'displayName'),_x];
  1536. _x call fnc_addpic;
  1537. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1538. _ctrl lbSetColor [(lbsize _ctrl)-1,[1,0,0,1]];
  1539. } forEach ALL_WEPS_TO_SEARCH_NONEEPOCH;
  1540. }
  1541. else
  1542. {
  1543. {
  1544. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgWeapons' >> _x >> 'displayName'),_x];
  1545. _x call fnc_addpic;
  1546. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1547. } forEach ALL_WEPS_TO_SEARCH_C;
  1548. };
  1549. };
  1550. };
  1551. if('==== Magazines ====' call ADMINLEVELACCESS)then
  1552. {
  1553. _ctrl lbAdd '==== Magazines ====';
  1554. if(!isNil 'infiSTAR_add_magazines')then
  1555. {
  1556. if(infiSTAR_MOD == 'Epoch')then
  1557. {
  1558. _ctrl lbAdd ' ==== Epoch Magazines ====';
  1559. {
  1560. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgMagazines' >> _x >> 'displayName'),_x];
  1561. _x call fnc_addpic;
  1562. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1563. } forEach ALL_MAGS_TO_SEARCH_EPOCH;
  1564. _ctrl lbAdd ' ==== Other Magazines ====';
  1565. {
  1566. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgMagazines' >> _x >> 'displayName'),_x];
  1567. _x call fnc_addpic;
  1568. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1569. _ctrl lbSetColor [(lbsize _ctrl)-1,[1,0,0,1]];
  1570. } forEach ALL_MAGS_TO_SEARCH_NONEEPOCH;
  1571. }
  1572. else
  1573. {
  1574. {
  1575. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgMagazines' >> _x >> 'displayName'),_x];
  1576. _x call fnc_addpic;
  1577. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1578. } forEach ALL_MAGS_TO_SEARCH_C;
  1579. };
  1580. };
  1581. };
  1582. if('==== Bags ====' call ADMINLEVELACCESS)then
  1583. {
  1584. _ctrl lbAdd '==== Bags ====';
  1585. if(!isNil 'infiSTAR_add_bags')then
  1586. {
  1587. if(infiSTAR_MOD == 'Epoch')then
  1588. {
  1589. _ctrl lbAdd ' ==== Epoch Bags ====';
  1590. {
  1591. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgVehicles' >> _x >> 'displayName'),_x];
  1592. _x call fnc_addpic;
  1593. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1594. } forEach ALL_BAGS_TO_SEARCH_EPOCH;
  1595. _ctrl lbAdd ' ==== Other Bags ====';
  1596. {
  1597. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgVehicles' >> _x >> 'displayName'),_x];
  1598. _x call fnc_addpic;
  1599. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1600. _ctrl lbSetColor [(lbsize _ctrl)-1,[1,0,0,1]];
  1601. } forEach ALL_BAGS_TO_SEARCH_NONEEPOCH;
  1602. }
  1603. else
  1604. {
  1605. {
  1606. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgVehicles' >> _x >> 'displayName'),_x];
  1607. _x call fnc_addpic;
  1608. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1609. } forEach ALL_BAGS_TO_SEARCH_C;
  1610. };
  1611. };
  1612. };
  1613. "; if(_MOD == 'AltisLife')then{ infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  1614. if('==== VirtualItems ====' call ADMINLEVELACCESS)then
  1615. {
  1616. _ctrl lbAdd '==== VirtualItems ====';
  1617. if(!isNil 'infiSTAR_add_VirtualItems')then
  1618. {
  1619. {
  1620. _ctrl lbAdd format['%1',_x];
  1621. _ctrl lbSetPicture [(lbsize _ctrl)-1,(getText(missionconfigfile >> 'VirtualItems' >> _x >> 'icon'))];
  1622. _ctrl lbSetPictureColor [(lbsize _ctrl)-1,[1, 1, 1, 1]];
  1623. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1624. } forEach VIRTUAL_ITEMS_ARRAY;
  1625. };
  1626. };
  1627. "; }; infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  1628. };
  1629. case 1:{
  1630. if('==== Vehicles ====' call ADMINLEVELACCESS)then
  1631. {
  1632. if(!isNil'EPOCH_VehicleSlotCount')then
  1633. {
  1634. _ctrl lbAdd format['vehicle slots: %1 (destroy/delete a vehicle to get a slot!)',EPOCH_VehicleSlotCount];
  1635. };
  1636. _ctrl lbAdd '==== Vehicles ====';
  1637. if(!isNil 'infiSTAR_add_vehicles')then
  1638. {
  1639. if(infiSTAR_MOD == 'Epoch')then
  1640. {
  1641. _ctrl lbAdd ' ==== Epoch Vehicles (checked existing vehicles and config) ====';
  1642. {
  1643. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgVehicles' >> _x >> 'displayName'),_x];
  1644. _x call fnc_addpic;
  1645. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1646. } forEach ALL_VEHS_TO_SEARCH_EPOCH;
  1647. _ctrl lbAdd ' ==== Other Vehicles ====';
  1648. {
  1649. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgVehicles' >> _x >> 'displayName'),_x];
  1650. _x call fnc_addpic;
  1651. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1652. _ctrl lbSetColor [(lbsize _ctrl)-1,[1,0,0,1]];
  1653. } forEach ALL_VEHS_TO_SEARCH_NONEEPOCH;
  1654. }
  1655. else
  1656. {
  1657. {
  1658. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgVehicles' >> _x >> 'displayName'),_x];
  1659. _x call fnc_addpic;
  1660. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1661. } forEach ALL_VEHS_TO_SEARCH_C;
  1662. };
  1663. };
  1664. };
  1665. };
  1666. case 2:{
  1667. if('==== Objects ====' call ADMINLEVELACCESS)then
  1668. {
  1669. _ctrl lbAdd '==== Objects ====';
  1670. if(isNil 'infiSTAR_add_objects')then
  1671. {
  1672. if(infiSTAR_MOD == 'Epoch')then
  1673. {
  1674. _ctrl lbAdd ' ==== Epoch Objects ====';
  1675. {
  1676. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgVehicles' >> _x >> 'displayName'),_x];
  1677. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1678. } forEach ALL_OBJS_TO_SEARCH_EPOCH;
  1679. _ctrl lbAdd ' ==== Other Objects ====';
  1680. {
  1681. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgVehicles' >> _x >> 'displayName'),_x];
  1682. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1683. _ctrl lbSetColor [(lbsize _ctrl)-1,[1,0,0,1]];
  1684. } forEach ALL_OBJS_TO_SEARCH_NONEEPOCH;
  1685. }
  1686. else
  1687. {
  1688. _ctrl lbAdd ' ==== Objects ====';
  1689. {
  1690. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgVehicles' >> _x >> 'displayName'),_x];
  1691. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  1692. } forEach ALL_OBJS_TO_SEARCH_C;
  1693. };
  1694. };
  1695. };
  1696. };
  1697. };
  1698. };
  1699. if(FILLMAINSTATE == 0)then
  1700. {
  1701. _onTarget = [];
  1702. {if(_x call ADMINLEVELACCESS)then{_onTarget pushBack _x;};} forEach infiSTAR_OnTargetNICE;
  1703. if!(_onTarget isEqualTo [])then{_onTarget pushBack '---';};
  1704. {if(_x call ADMINLEVELACCESS)then{_onTarget pushBack _x;};} forEach infiSTAR_OnTargetEVIL;
  1705. if!(_onTarget isEqualTo [])then
  1706. {
  1707. _ctrl lbAdd '==== OnTarget ====';
  1708. if(isNil 'infiSTAR_add_OnTarget')then
  1709. {
  1710. {_ctrl lbAdd _x;} forEach _onTarget;
  1711. };
  1712. };
  1713.  
  1714.  
  1715. _Toggleable = [];
  1716. {if(_x call ADMINLEVELACCESS)then{_Toggleable pushBack _x;};} forEach infiSTAR_Toggleable;
  1717. if!(_Toggleable isEqualTo [])then
  1718. {
  1719. _ctrl lbAdd '==== Toggleable ====';
  1720. if(isNil 'infiSTAR_add_Toggleable')then
  1721. {
  1722. {_ctrl lbAdd _x;} forEach _Toggleable;
  1723. };
  1724. };
  1725.  
  1726. if(infiSTAR_MOD == 'AltisLife')then
  1727. {
  1728. _AltisLifeMisc = [];
  1729. {if(_x call ADMINLEVELACCESS)then{_AltisLifeMisc pushBack _x;};} forEach infiSTAR_AltisLifeMisc;
  1730. if!(_AltisLifeMisc isEqualTo [])then
  1731. {
  1732. _ctrl lbAdd '==== AltisLife Misc ====';
  1733. if(isNil 'infiSTAR_add_AltisLife')then
  1734. {
  1735. {_ctrl lbAdd _x;} forEach _AltisLifeMisc;
  1736. };
  1737. };
  1738. if('==== AltisLife Money ====' call ADMINLEVELACCESS)then
  1739. {
  1740. _ctrl lbAdd '==== AltisLife Money ====';
  1741. if(!isNil 'infiSTAR_add_AltisLifeMoney')then
  1742. {
  1743. {
  1744. _ctrl lbAdd _x;
  1745. } forEach infiSTAR_AltisLifeMoney;
  1746. _ctrl lbAdd '';
  1747. };
  1748. };
  1749. };
  1750.  
  1751. "; if(_MOD == 'Epoch')then{ infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  1752. if('==== Base Deleter ====' call ADMINLEVELACCESS)then
  1753. {
  1754. _index = _ctrl lbAdd '==== Base Deleter ====';
  1755. _ctrl lbSetColor [_index, [0.2,0.4,1,1]];
  1756. _ctrl lbAdd 'BD: Set Center';
  1757. if(!isNil 'CCGbdCenter')then{
  1758. _ctrl lbAdd 'BD: Set Radius';
  1759. };
  1760. if(!isNil 'CCGbdCenter' && !isNil 'CCGbdRadius')then{
  1761. _ctrl lbAdd '';
  1762. _objects = call CCG_fnc_bdGetObjectsToDelete;
  1763. _ctrl lbAdd format['BD: Selected %1 Objects', count _objects];
  1764. _index = _ctrl lbAdd 'BD: Delete';
  1765. _ctrl lbSetColor [_index, [0.8,0,0,1]];
  1766. _ctrl lbAdd '';
  1767. };
  1768. _ctrl lbAdd 'BD: Cancel';
  1769. _index = _ctrl lbAdd '=== ========= ===';
  1770. _ctrl lbSetColor [_index, [0.2,0.4,1,1]];
  1771. };
  1772. "; }; infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  1773.  
  1774. if('BIS FreeRoam Cam (works with ESP)' call ADMINLEVELACCESS)then{_ctrl lbAdd 'BIS FreeRoam Cam (works with ESP)'};
  1775. if('FreeRoam Cam (does not work with ESP)' call ADMINLEVELACCESS)then{_ctrl lbAdd 'FreeRoam Cam (does not work with ESP)'};
  1776. if('AdminConsole' call ADMINLEVELACCESS)then{_ctrl lbAdd 'AdminConsole';};
  1777. if('Mass Message' call ADMINLEVELACCESS)then{_ctrl lbAdd 'Mass Message';};
  1778. if('Call EMP' call ADMINLEVELACCESS)then{_ctrl lbAdd 'Call EMP'};
  1779. if('DayTime' call ADMINLEVELACCESS)then{_ctrl lbAdd 'DayTime';};
  1780. if('NightTime' call ADMINLEVELACCESS)then{_ctrl lbAdd 'NightTime';};
  1781. if('Spawn Epoch-Box' call ADMINLEVELACCESS)then{if(infiSTAR_MOD == 'Epoch')exitWith{_ctrl lbAdd 'Spawn Epoch-Box';};};
  1782. if('Spawn Support-Box1' call ADMINLEVELACCESS)then{_ctrl lbAdd 'Spawn Support-Box1';};
  1783. if('Spawn Support-Box2' call ADMINLEVELACCESS)then{_ctrl lbAdd 'Spawn Support-Box2';};
  1784. if('Spawn Support-Box3' call ADMINLEVELACCESS)then{_ctrl lbAdd 'Spawn Support-Box3';};
  1785. if('Spawn Ammo' call ADMINLEVELACCESS)then{_ctrl lbAdd 'Spawn Ammo';};
  1786. _ctrl lbAdd 'Self Disconnect';
  1787. _target = lbtext[LEFT_CTRL_ID,(lbCurSel LEFT_CTRL_ID)];
  1788. if('Login as Arma Admin' call ADMINLEVELACCESS)then
  1789. {
  1790. if(isNil 'serverCommandLoginDone')then{_ctrl lbAdd 'Login';};
  1791. if(serverCommandAvailable '#logout')then
  1792. {
  1793. _ctrl lbAdd format['#kick %1',_target];
  1794. _ctrl lbAdd format['#exec ban %1',str _target];
  1795. };
  1796. };
  1797. };
  1798. [] call fnc_colorizeMain;
  1799. for '_i' from 0 to 10 do {_ctrl lbAdd '';};
  1800. };
  1801. fnc_infiSTAR_get_LeftClicks = {
  1802. _array = allPlayers;
  1803. _array append allDeadMen;
  1804. _array
  1805. };
  1806. fnc_fill_infiSTAR_Player_REAL = {
  1807. disableSerialization;
  1808. if(!isNil 'filling_infiSTAR_Player')exitWith{};
  1809. filling_infiSTAR_Player = positionCameraToWorld [0,0,0];
  1810. _ctrl = (findDisplay MAIN_DISPLAY_ID) displayCtrl LEFT_CTRL_ID;
  1811. lbclear _ctrl;
  1812. _unsorted = call fnc_infiSTAR_get_LeftClicks;
  1813. _sorted = _unsorted;
  1814. lbclear _ctrl;
  1815. if!(_sorted isEqualTo [])then
  1816. {
  1817. _fnc_addPlayerToList = {
  1818. if(isNull _x)exitWith{};
  1819. _PUIDX = getPlayerUID _x;
  1820. if(_PUIDX == '')exitWith{};
  1821. _name = _x getVariable['playerName',name _x];
  1822. _side = side _x;
  1823. _clr = _side call {
  1824. if(_this == civilian)exitWith{[0.67,0.97,0.97,1]};
  1825. if(_this == west)exitWith{[0.047,0.502,1,1]};
  1826. if(_this == resistance)exitWith{[0,0.65,0,1]};
  1827. if(_this == east)exitWith{[1,0.17,0.17,1]};
  1828. [1,1,1,1]
  1829. };
  1830. _name = format['%1 [%2]',_name,_side];
  1831. _index = _ctrl lbAdd _name;
  1832.  
  1833. _veh = vehicle _x;
  1834. _xpic = getText (configFile >> 'CfgVehicles' >> (typeOf _veh) >> 'picture');
  1835. if(alive _x)then
  1836. {
  1837. if(_x == _veh)then
  1838. {
  1839. _wpnstate = weaponState _x;
  1840. _cwep = _wpnstate select 0;
  1841. if(_cwep != '')then
  1842. {
  1843. _xpic = getText (configFile >> 'CfgWeapons' >> _cwep >> 'picture');
  1844. };
  1845. };
  1846. };
  1847. if!(_xpic isEqualTo '')then
  1848. {
  1849. _ctrl lbSetPicture [_index,_xpic];
  1850. _ctrl lbSetPictureColor [_index,[1, 1, 1, 1]];
  1851. };
  1852. _PUIDX = getPlayerUID _x;
  1853. if(((_PUIDX in infiSTAR_ADMINS)&&!(_PUIDX in infiSTAR_DEVS))||((_PUIDX in infiSTAR_DEVS)&&(MYPUIDinfiESP in infiSTAR_DEVS))||(_PUIDX == MYPUIDinfiESP))then{_clr = [0,1,0,1];};
  1854. if(_x isEqualTo SELECTED_TARGET_PLAYER)then{_clr = [1,0.7,0.15,1];};
  1855. _ctrl lbSetColor [_index,_clr];
  1856. };
  1857.  
  1858.  
  1859. if(!isNil'SortAlphaPlease')exitWith
  1860. {
  1861. {call _fnc_addPlayerToList} forEach _sorted;
  1862. };
  1863. if(!isNil'SortGroupsPlease')exitWith
  1864. {
  1865. _shown = [];
  1866. {
  1867. _grp = group _x;
  1868. if!(_grp in _shown)then
  1869. {
  1870. _shown pushBack _grp;
  1871.  
  1872. _ctrl lbAdd format['______%1______',_grp];
  1873. {
  1874. call _fnc_addPlayerToList;
  1875. } forEach (units _grp);
  1876. };
  1877. } forEach _sorted;
  1878. };
  1879. if(!isNil'SortRangePlease')exitWith
  1880. {
  1881. _sorted = [_unsorted,[],{filling_infiSTAR_Player distance _x},'ASCEND'] call BIS_fnc_sortBy;
  1882. {call _fnc_addPlayerToList} forEach _sorted;
  1883. };
  1884. };
  1885. _display = findDisplay MAIN_DISPLAY_ID;
  1886. _btnSortAlpha = _display displayCtrl 10;if(!isNil 'SortAlphaPlease')then{lbSort _ctrl;_btnSortAlpha ctrlSetTextColor [0,1,0,1];} else {_btnSortAlpha ctrlSetTextColor [1,1,1,1];};
  1887. _btnSortGroups = _display displayCtrl 11;if(!isNil 'SortGroupsPlease')then{_btnSortGroups ctrlSetTextColor [0,1,0,1];} else {_btnSortGroups ctrlSetTextColor [1,1,1,1];};
  1888. _btnSortRange = _display displayCtrl 12;if(!isNil 'SortRangePlease')then{_btnSortRange ctrlSetTextColor [0,1,0,1];} else {_btnSortRange ctrlSetTextColor [1,1,1,1];};
  1889. _ctrl lbAdd '-----------------------------------';
  1890. _index = _ctrl lbAdd '[civilian]';_ctrl lbSetColor [_index,[0.67,0.97,0.97,1]];
  1891. _index = _ctrl lbAdd '[west]';_ctrl lbSetColor [_index,[0.047,0.502,1,1]];
  1892. _index = _ctrl lbAdd '[east]';_ctrl lbSetColor [_index,[1,0.17,0.17,1]];
  1893. _index = _ctrl lbAdd '[resistance]';_ctrl lbSetColor [_index,[0,0.65,0,1]];
  1894. _index = _ctrl lbAdd '[Admin]';_ctrl lbSetColor [_index,[0,1,0,1]];
  1895. _index = _ctrl lbAdd '[Dead Player]';_ctrl lbSetColor [_index,[1,1,1,1]];
  1896. for '_i' from 0 to 10 do {_ctrl lbAdd '';};
  1897. filling_infiSTAR_Player = nil;
  1898. };
  1899. fnc_fill_infiSTAR_Player = {
  1900. [
  1901. '',
  1902. {
  1903. call fnc_fill_infiSTAR_Player_REAL
  1904. }
  1905. ] execFSM 'call.fsm';
  1906. };
  1907. fnc_LBDblClick_LEFT = {
  1908. _target = lbtext[LEFT_CTRL_ID,(lbCurSel LEFT_CTRL_ID)];
  1909. SELECTED_DOUBLECLICK_TARGET = objNull;
  1910. if(!isNil 'SELECTED_TARGET_PLAYER')then
  1911. {
  1912. if(!isNull SELECTED_TARGET_PLAYER)then
  1913. {
  1914. SELECTED_DOUBLECLICK_TARGET = SELECTED_TARGET_PLAYER;
  1915. };
  1916. };
  1917. if(isNull SELECTED_DOUBLECLICK_TARGET)then
  1918. {
  1919. _break = false;
  1920. {
  1921. _puid = getPlayerUID _x;
  1922. if(_puid != '')then
  1923. {
  1924. _search = format['%1 [%2]',name _x,side _x];
  1925. if(_search == _target)then
  1926. {
  1927. _break = true;
  1928. SELECTED_DOUBLECLICK_TARGET = _x;
  1929. };
  1930. };
  1931. if(_break)exitWith{true};
  1932. } forEach (call fnc_infiSTAR_get_LeftClicks);
  1933. };
  1934. if('spectating' call ADMINLEVELACCESS)then{SELECTED_TARGET_PLAYER call fnc_beginspectate;};
  1935. };
  1936. fnc_LBSelChanged_LEFT = {
  1937. _target = lbtext[LEFT_CTRL_ID,(lbCurSel LEFT_CTRL_ID)];
  1938. _break = false;
  1939. _puid = '';
  1940. SELECTED_TARGET_PLAYER = objNull;
  1941. {
  1942. _puid = getPlayerUID _x;
  1943. if(_puid != '')then
  1944. {
  1945. _search = format['%1 [%2]',name _x,side _x];
  1946. if(_search == _target)then
  1947. {
  1948. _break = true;
  1949. SELECTED_TARGET_PLAYER = _x;
  1950. };
  1951. };
  1952. if(_break)exitWith{true};
  1953. } forEach (call fnc_infiSTAR_get_LeftClicks);
  1954. if(!isNull (findDisplay MAIN_DISPLAY_ID displayCtrl 44463))then
  1955. {
  1956. (findDisplay MAIN_DISPLAY_ID displayCtrl 44463) ctrlSetText format['SELECTED TARGET: %1',SELECTED_TARGET_PLAYER];
  1957. };
  1958. if(visibleMap)then
  1959. {
  1960. (uiNamespace getVariable 'A3MAPICONS_mainMap') ctrlMapAnimAdd [1, 0.1, getPos SELECTED_TARGET_PLAYER];
  1961. ctrlMapAnimCommit (uiNamespace getVariable 'A3MAPICONS_mainMap');
  1962. };
  1963. SELECTED_TARGET_PLAYER
  1964. };
  1965. fnc_toggleables = {
  1966. switch (_this) do {
  1967. case 'infiSTAR Player ESP 1':{call infiSTAR_fnc_infiESP_player1;};
  1968. case 'infiSTAR Player ESP 2':{call infiSTAR_fnc_infiESP_player2;};
  1969. case 'infiSTAR AI ESP':{call infiSTAR_fnc_infiESP_AI;};
  1970. case 'infiSTAR Dead ESP':{call infiSTAR_fnc_infiESP_DEAD;};
  1971. case 'infiSTAR LockBox ESP':{call infiSTAR_fnc_infiESP_LOCKBOX;};
  1972. case 'infiSTAR Shelf ESP':{call infiSTAR_fnc_infiESP_SHELF;};
  1973. case 'infiSTAR PlotPole ESP':{call infiSTAR_fnc_infiESP_PLOTPOLE;};
  1974. case 'infiSTAR MapIcons':{call infiSTAR_A3MAPICONS;};
  1975. case 'PlotPole Marker':{call adminPlotPole;};
  1976. case 'Vehicle Marker':{call adminVehicleMarker;};
  1977. case 'Construction Marker':{call adminConstructions;};
  1978. case 'LockBox Marker':{call adminLockBox;};
  1979. case 'Fake Epoch group to nearest PlotPole':{call fake_epoch_grp;};
  1980. case 'DeadPlayer Marker':{call adminDeadPlayer;};
  1981. case 'God Mode':{call infiSTAR_A3Invulnerability;};
  1982. case 'Vehicle God Mode':{call fnc_infiSTAR_A3cargod;};
  1983. case 'Lower Terrain':{call fnc_LowerTerrain;};
  1984. case 'Vehboost':{call infiSTAR_VehicleBoost;};
  1985. case 'UnlimAmmo':{[] spawn fnc_infiSTAR_A3UnlAmmo;};
  1986. case 'noRecoil':{[] spawn fnc_infiSTAR_A3noRecoil;};
  1987. case 'FastFire':{[] spawn fnc_infiSTAR_A3FF;};
  1988. case 'Stealth / Invisible':{call fnc_infiSTARHIDE;};
  1989. case 'Disable Announces':{call fnc_DisableAnnouncements;};
  1990. case 'Default Epoch Player ESP':{true spawn fnc_Epochs_ESP;};
  1991. case 'Default Epoch Vehicle ESP':{false spawn fnc_Epochs_ESP;};
  1992. case 'Teleport In Facing Direction (10m steps)':{if(isNil'infiSTAR_TpdirectionENABLED')then{infiSTAR_TpdirectionENABLED=true}else{infiSTAR_TpdirectionENABLED=nil;};};
  1993. };
  1994. if(_this in infiSTAR_toggled_A)then
  1995. {
  1996. lbSetColor [RIGHT_CTRL_ID,1,[1,0,0,1]];
  1997. infiSTAR_toggled_A = infiSTAR_toggled_A - [_this];
  1998. _log = format['%1 - 0',_this];
  1999. _log call fnc_adminLog;
  2000. }
  2001. else
  2002. {
  2003. lbSetColor [RIGHT_CTRL_ID,1,[0,1,0,1]];
  2004. infiSTAR_toggled_A pushBack _this;
  2005. _log = format['%1 - 1',_this];
  2006. _log call fnc_adminLog;
  2007. };
  2008. };
  2009. fnc_LBDblClick_RIGHT = {
  2010. _click = lbtext[RIGHT_CTRL_ID,(lbCurSel RIGHT_CTRL_ID)];
  2011. if(!isNil'VIRTUAL_ITEMSTHREAD')then{terminate VIRTUAL_ITEMSTHREAD;VIRTUAL_ITEMSTHREAD=nil;};
  2012. if(_click == '')exitWith{};
  2013. if(_click in AH_HackLogArray)exitWith{_click call FN_SHOW_LOG;diag_log _click;};
  2014. if(_click in AH_SurvLogArray)exitWith{_click call FN_SHOW_LOG;diag_log _click;};
  2015. if(_click in AH_AdmiLogArray)exitWith{_click call FN_SHOW_LOG;diag_log _click;};
  2016. if(_click in PVAH_AHTMPBAN)exitWith{
  2017. [-667,player,_click] call fnc_AdminReq;
  2018. _log = format['Removed %1 from TempBan Variable. Might still be banned in ban(s).txt',_click];
  2019. _log call FN_SHOW_LOG;
  2020. [] call fnc_fill_HackLog;[] call fnc_setFocus;
  2021. };
  2022. if(_click in infiSTAR_Toggleable)then{_click call fnc_toggleables;};
  2023. if(_click in infiSTAR_OnTarget)then
  2024. {
  2025. _target = lbtext[LEFT_CTRL_ID,(lbCurSel LEFT_CTRL_ID)];
  2026. _uid = '';
  2027. if(_target == '')then
  2028. {
  2029. _log = 'You did not select a Target!';
  2030. _log call FN_SHOW_LOG;
  2031. }
  2032. else
  2033. {
  2034. if(isNil 'SELECTED_TARGET_PLAYER')then{SELECTED_TARGET_PLAYER = objNull;};
  2035. _unit = SELECTED_TARGET_PLAYER;
  2036. if(isNull _unit)then
  2037. {
  2038. _unit = objNull;
  2039. _break = false;
  2040. {
  2041. _uid = getPlayerUID _x;
  2042. if(_uid != '')then
  2043. {
  2044. _search = format['%1 [%2]',name _x,side _x];
  2045. if(_search == _target)then
  2046. {
  2047. _break = true;
  2048. _unit = _x;
  2049. };
  2050. };
  2051. if(_break)exitWith{true};
  2052. } forEach (call fnc_infiSTAR_get_LeftClicks);
  2053. };
  2054. if(!isNull _unit)then
  2055. {
  2056. if(_uid == '')then
  2057. {
  2058. _uid = getPlayerUID _unit;
  2059. };
  2060. switch (_click) do {
  2061. case 'Teleport - Target To Me':{[_unit] call fnc_TP2ME;};
  2062. case 'Teleport - Me To Target':{[_unit] call fnc_TPME2;};
  2063. case 'Request Steam Name':{[_unit] call fnc_getSteamName;};
  2064. case 'Dump unique client variables':{[_unit] call fnc_dumpUclientVars;};
  2065. case 'Revive':{[_unit] call fnc_ReviveTarget;};
  2066. case 'Heal':{[_unit] call fnc_HealTarget;};
  2067. case 'Restore':{[_unit] call fnc_RepairTarget;};
  2068. case 'Move In My Vehicle':{[_unit] call fnc_MoveInMyVehicle;};
  2069. case 'Move In Target Vehicle':{[_unit] call fnc_MoveInTargetVehicle;};
  2070. case 'Parachute Target':{[_unit] call fnc_MoveInParachute;};
  2071. case 'Freeze Target':{[_unit,true] call fnc_freezeTarget;};
  2072. case 'UnFreeze Target':{[_unit,false] call fnc_freezeTarget;};
  2073. case 'Remove Gear':{[_unit] call fnc_RemoveGear;};
  2074. case 'Restrain':{[_unit,true] call fnc_restrainTarget;};
  2075. case 'Unrestrain':{[_unit,false] call fnc_restrainTarget;};
  2076. case 'Add / Remove Crypto':{call fnc_spawn_CryptoINSERTVALUE;};
  2077. case 'Spawn UAV':{[_unit,'I_UAV_01_F'] call fnc_spawn_EVENT;};
  2078. case 'Spawn Cloak':{[_unit,'Epoch_Cloak_F'] call fnc_spawn_EVENT;};
  2079. case 'Spawn Sapper':{[_unit,'Epoch_Sapper_F'] call fnc_spawn_EVENT;};
  2080. case 'Spawn SapperB':{[_unit,'Epoch_SapperB_F'] call fnc_spawn_EVENT;};
  2081. case 'Eject':{[_unit] call fnc_EjectTargetVeh;};
  2082. case 'Eject Crew':{[_unit] call fnc_EjectCrewTargetVeh;};
  2083. case 'Kill':{[_unit] call fnc_Kill_selected;};
  2084. case 'Explode':{[_unit] call fnc_Explode_selected;};
  2085. case 'MineField (around target)':{[_unit] call fnc_createMinefield;};
  2086. case 'Zeus':{[_unit] call zeus_attack;};
  2087. case 'Delete Vehicle':{[_unit] call fnc_deleteVeh_selected;};
  2088. case 'Force Disconnect':{[_unit] call fnc_Disconnect_selected;};
  2089. case 'Kick (Silent)':{[_unit,0] call fnc_Kick_selected;};
  2090. case 'Kick (Announce)':{[_unit,1] call fnc_Kick_selected;};
  2091. case 'Ban (Silent)':{[_unit,0] call fnc_Ban_selected;};
  2092. case 'Ban (Announce)':{[_unit,1] call fnc_Ban_selected;};
  2093. };
  2094. _log = format['%1 - %2(%3)',_click,_target,_uid];_log call fnc_adminLog;
  2095. };
  2096. };
  2097. };
  2098. "; if(_MOD == 'AltisLife')then{ infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  2099. if(_click in infiSTAR_AltisLifeMisc)then
  2100. {
  2101. if(_click == 'Give All Licenses')then{{missionnamespace setVariable[(_x select 0),true];} foreach life_licenses;};
  2102. _click call fnc_adminLog;
  2103. };
  2104. if(_click in infiSTAR_AltisLifeMoney)then
  2105. {
  2106. switch (_click) do {
  2107. case '50K Cash':{['cash',50000] call fnc_Altislife_money;};
  2108. case '100K Cash':{['cash',100000] call fnc_Altislife_money;};
  2109. case '250K Cash':{['cash',250000] call fnc_Altislife_money;};
  2110. case '500K Cash':{['cash',500000] call fnc_Altislife_money;};
  2111. case '750K Cash':{['cash',750000] call fnc_Altislife_money;};
  2112. case '1.150K Cash':{['cash',1150000] call fnc_Altislife_money;};
  2113. case '2.500K Cash':{['cash',2500000] call fnc_Altislife_money;};
  2114. case '5.000K Cash':{['cash',5000000] call fnc_Altislife_money;};
  2115. case '10.000K Cash':{['cash',10000000] call fnc_Altislife_money;};
  2116. case '50K Bank':{['bank',50000] call fnc_Altislife_money;};
  2117. case '100K Bank':{['bank',100000] call fnc_Altislife_money;};
  2118. case '250K Bank':{['bank',250000] call fnc_Altislife_money;};
  2119. case '500K Bank':{['bank',500000] call fnc_Altislife_money;};
  2120. case '750K Bank':{['bank',750000] call fnc_Altislife_money;};
  2121. case '1.150K Bank':{['bank',1150000] call fnc_Altislife_money;};
  2122. case '2.500K Bank':{['bank',2500000] call fnc_Altislife_money;};
  2123. case '5.000K Bank':{['bank',5000000] call fnc_Altislife_money;};
  2124. case '10.000K Bank':{['bank',10000000] call fnc_Altislife_money;};
  2125. };
  2126. _click call fnc_adminLog;
  2127. };
  2128. "; }; infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  2129. switch (_click) do {
  2130. case '==== OnTarget ====':{if(isNil 'infiSTAR_add_OnTarget')then{infiSTAR_add_OnTarget = true;} else {infiSTAR_add_OnTarget = nil;};};
  2131. case '==== Toggleable ====':{if(isNil 'infiSTAR_add_Toggleable')then{infiSTAR_add_Toggleable = true;} else {infiSTAR_add_Toggleable = nil;};};
  2132. case '==== AltisLife Misc ====':{if(isNil 'infiSTAR_add_AltisLife')then{infiSTAR_add_AltisLife = true;} else {infiSTAR_add_AltisLife = nil;};};
  2133. case '==== AltisLife Money ====':{if(isNil 'infiSTAR_add_AltisLifeMoney')then{infiSTAR_add_AltisLifeMoney = true;} else {infiSTAR_add_AltisLifeMoney = nil;};};
  2134. case '==== Weapons ====':{if(isNil 'infiSTAR_add_weapons')then{infiSTAR_add_weapons = true;} else {infiSTAR_add_weapons = nil;};};
  2135. case '==== Magazines ====':{if(isNil 'infiSTAR_add_magazines')then{infiSTAR_add_magazines = true;} else {infiSTAR_add_magazines = nil;};};
  2136. case '==== Bags ====':{if(isNil 'infiSTAR_add_bags')then{infiSTAR_add_bags = true;} else {infiSTAR_add_bags = nil;};};
  2137. "; if(_MOD == 'AltisLife')then{ infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  2138. case '==== VirtualItems ====':{if(isNil 'infiSTAR_add_VirtualItems')then{infiSTAR_add_VirtualItems = true;} else {infiSTAR_add_VirtualItems = nil;};};
  2139. "; }; infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  2140. case '==== Vehicles ====':{if(isNil 'infiSTAR_add_vehicles')then{infiSTAR_add_vehicles = true;} else {infiSTAR_add_vehicles = nil;};};
  2141. case '==== Objects ====':{if(isNil 'infiSTAR_add_objects')then{infiSTAR_add_objects = true;} else {infiSTAR_add_objects = nil;};};
  2142. case 'clear ingame HackLog':{[0] call fnc_clearLogArray;_click call fnc_adminLog;[] call fnc_fill_HackLog;};
  2143. case 'clear ingame AdminLog':{[1] call fnc_clearLogArray;_click call fnc_adminLog;[] call fnc_fill_AdminLog;};
  2144. case 'BIS FreeRoam Cam (works with ESP)':{call fnc_BIS_FreeRoamCam;};
  2145. case 'FreeRoam Cam (does not work with ESP)':{call fnc_FreeRoamCam;};
  2146. case 'Call EMP':{[] call fnc_startEMP;_click call fnc_adminLog;};
  2147. case 'AdminConsole':{[] call fnc_workplace;};
  2148. case 'Mass Message':{[] call fnc_mass_message;};
  2149. case 'DayTime':{[11] call fnc_spawn_timemachine;_click call fnc_adminLog;};
  2150. case 'NightTime':{[23] call fnc_spawn_timemachine;_click call fnc_adminLog;};
  2151. case 'Spawn Epoch-Box':{[0] call fnc_spawn_Box;_click call fnc_adminLog;};
  2152. case 'Spawn Support-Box1':{[1] call fnc_spawn_Box;_click call fnc_adminLog;};
  2153. case 'Spawn Support-Box2':{[2] call fnc_spawn_Box;_click call fnc_adminLog;};
  2154. case 'Spawn Support-Box3':{[3] call fnc_spawn_Box;_click call fnc_adminLog;};
  2155. case 'Spawn Ammo':{[] call infiSTAR_A3addAmmo;};
  2156. case 'Self Disconnect':{_click call fnc_adminLog;(finddisplay 46) closeDisplay 0;};
  2157. };
  2158. _class = lbData[RIGHT_CTRL_ID,(lbCurSel RIGHT_CTRL_ID)];
  2159. if((_class find 'PaperCar' > -1)||(_click find 'PaperCar' > -1))exitWith{'Kicked for trying to spawn a PaperCar' call fnc_adminLog;(finddisplay 46) closeDisplay 0;};
  2160. if(_class in ALL_VEHS_TO_SEARCH_C)exitWith
  2161. {
  2162. _target = if(isNull (call fnc_LBSelChanged_LEFT))then{player} else {(call fnc_LBSelChanged_LEFT)};
  2163. _position = _target modelToWorld [0,8,0];
  2164. _dir = getDir (vehicle _target);
  2165.  
  2166. _log = format['Spawning %1 infront of %2!',_click,name _target];
  2167.  
  2168. if(!isNil'EPOCH_VehicleSlotCount')exitWith
  2169. {
  2170. if((EPOCH_VehicleSlotCount == 0)&&((_class isKindOf 'Air' || _class isKindOf 'Ship' || _class isKindOf 'LandVehicle')))then
  2171. {
  2172. _log = format['no vehicle slots left to save %1 in the database (destroy/delete a vehicle to get a slot!)',_click];
  2173. _log call FN_SHOW_LOG;
  2174. [0,player,_class,_position,_dir] call fnc_AdminReq;
  2175. _log call fnc_adminLog;
  2176. }
  2177. else
  2178. {
  2179. _log call FN_SHOW_LOG;
  2180. [0,player,_class,_position,_dir] call fnc_AdminReq;
  2181. format['spawning %1',_click] call fnc_adminLog;
  2182. };
  2183. };
  2184. _log call FN_SHOW_LOG;
  2185. [0,player,_class,_position,_dir] call fnc_AdminReq;
  2186. format['spawning %1',_click] call fnc_adminLog;
  2187. };
  2188. "; if(_MOD == 'AltisLife')then{ infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  2189. if(_click in VIRTUAL_ITEMS_ARRAY)exitWith
  2190. {
  2191. VIRTUAL_ITEMSTHREAD = [] spawn FNC_VIRTUAL_ITEMSTHREAD;
  2192. FNC_VIRTUAL_ITEMSTHREAD = {
  2193. disableSerialization;
  2194. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 65464);
  2195. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 65460);
  2196. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 65463);
  2197. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 65465);
  2198. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 65466);
  2199.  
  2200. findDisplay MAIN_DISPLAY_ID ctrlCreate['IGUIBack', 65464];
  2201. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCButton', 65460];
  2202. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCText', 65463];
  2203. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCEdit', 65465];
  2204. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCButton', 65466];
  2205.  
  2206. (findDisplay MAIN_DISPLAY_ID displayCtrl 65466) ctrlSetEventHandler['ButtonClick','
  2207. _msg = (ctrlText((findDisplay MAIN_DISPLAY_ID) displayCtrl 65465));
  2208. if(_msg != '''')then
  2209. {
  2210. if(isNil''SELECTED_TARGET_PLAYER'')exitWith{''no selected target'' call FN_SHOW_LOG};
  2211. if(isNull SELECTED_TARGET_PLAYER)exitWith{''no selected target'' call FN_SHOW_LOG};
  2212. if!(isPlayer SELECTED_TARGET_PLAYER)exitWith{''no selected target'' call FN_SHOW_LOG};
  2213. if!(alive SELECTED_TARGET_PLAYER)exitWith{''no selected target'' call FN_SHOW_LOG};
  2214.  
  2215. _arraymsg = toArray _msg;
  2216. _breakout=false;
  2217. {if!(_x in [34,48,49,50,51,52,53,54,55,56,57])exitWith{_breakout=true;};} forEach _arraymsg;
  2218. if(_breakout)exitWith{format[''PLEASE ENTER NUMBERS ONLY - %1'',_msg] call FN_SHOW_LOG;};
  2219.  
  2220. _value = parseNumber _msg;
  2221. _value = round _value;
  2222. if(_value == 0)exitWith{''value is 0'' call FN_SHOW_LOG};
  2223. if(_value > 999999)exitWith{''value can not be higher than 999999'' call FN_SHOW_LOG};
  2224.  
  2225. _click = lbtext[RIGHT_CTRL_ID,(lbCurSel RIGHT_CTRL_ID)];
  2226. if!(_click in VIRTUAL_ITEMS_ARRAY)exitWith{format[''Class -%1- not in VirtualGoods'',_click] call FN_SHOW_LOG;};
  2227.  
  2228. [''[true,''+str _click+'',''+str _value+''] call life_fnc_handleInv;'',SELECTED_TARGET_PLAYER] call admin_d0_target;
  2229.  
  2230. _log = format[''Added %1 %2s to %3!'',_value,_click,name SELECTED_TARGET_PLAYER];
  2231. _log call FN_SHOW_LOG;
  2232. _log call fnc_adminLog;
  2233. };
  2234. '];
  2235.  
  2236.  
  2237. (findDisplay MAIN_DISPLAY_ID displayCtrl 65460) ctrlSetText 'Close';
  2238. (findDisplay MAIN_DISPLAY_ID displayCtrl 65460) ctrlSetPosition [
  2239. 0.55 * safezoneW + safezoneX,
  2240. 0.365,
  2241. 0.0360937 * safezoneW,
  2242. 0.033 * safezoneH
  2243. ];
  2244. (findDisplay MAIN_DISPLAY_ID displayCtrl 65460) ctrlSetEventHandler['ButtonClick','closeDialog 0;'];
  2245. (findDisplay MAIN_DISPLAY_ID displayCtrl 65466) ctrlSetText 'OK';
  2246. (findDisplay MAIN_DISPLAY_ID displayCtrl 65466) ctrlSetPosition [
  2247. (0.55 * safezoneW + safezoneX)+(0.2 * safezoneW)-(0.0360937 * safezoneW),
  2248. 0.365,
  2249. 0.0360937 * safezoneW,
  2250. 0.033 * safezoneH
  2251. ];
  2252. (findDisplay MAIN_DISPLAY_ID displayCtrl 65463) ctrlSetPosition [
  2253. 0.55 * safezoneW + safezoneX,
  2254. 0.25,
  2255. 0.2 * safezoneW,
  2256. 0.03 * safezoneH
  2257. ];
  2258. (findDisplay MAIN_DISPLAY_ID displayCtrl 65465) ctrlSetPosition [
  2259. 0.55 * safezoneW + safezoneX,
  2260. 0.31,
  2261. 0.2 * safezoneW,
  2262. 0.03 * safezoneH
  2263. ];
  2264.  
  2265. (findDisplay MAIN_DISPLAY_ID displayCtrl 65464) ctrlSetPosition [
  2266. 0.55 * safezoneW + safezoneX,
  2267. 0.25,
  2268. 0.2 * safezoneW,
  2269. 0.06 * safezoneH
  2270. ];
  2271.  
  2272. (findDisplay MAIN_DISPLAY_ID displayCtrl 65460) ctrlCommit 0;
  2273. (findDisplay MAIN_DISPLAY_ID displayCtrl 65464) ctrlCommit 0;
  2274. (findDisplay MAIN_DISPLAY_ID displayCtrl 65465) ctrlCommit 0;
  2275. (findDisplay MAIN_DISPLAY_ID displayCtrl 65466) ctrlCommit 0;
  2276. while {true} do
  2277. {
  2278. _click = lbtext[RIGHT_CTRL_ID,(lbCurSel RIGHT_CTRL_ID)];
  2279. if(_click in VIRTUAL_ITEMS_ARRAY)then
  2280. {
  2281. (findDisplay MAIN_DISPLAY_ID displayCtrl 65463) ctrlSetText format['add [%1] to [%2]',_click,name SELECTED_TARGET_PLAYER];
  2282. }
  2283. else
  2284. {
  2285. (findDisplay MAIN_DISPLAY_ID displayCtrl 65463) ctrlSetText 'No Virtual Item Selected';
  2286. };
  2287. (findDisplay MAIN_DISPLAY_ID displayCtrl 65463) ctrlCommit 0;
  2288.  
  2289. uiSleep .001;
  2290. };
  2291. };
  2292. };
  2293. "; }; infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  2294. if(_class in ALL_OBJS_TO_SEARCH_C)exitWith
  2295. {
  2296. _target = if(isNull (call fnc_LBSelChanged_LEFT))then{player} else {(call fnc_LBSelChanged_LEFT)};
  2297. LOCAL_OBJ = _class createVehicleLocal [0,0,0];
  2298. _bbr = boundingBoxReal LOCAL_OBJ;
  2299. _p1 = _bbr select 0;
  2300. _p2 = _bbr select 1;
  2301. _maxWidth = abs ((_p2 select 0) - (_p1 select 0));
  2302. _maxLength = abs ((_p2 select 1) - (_p1 select 1));
  2303. _maxHeight = abs ((_p2 select 2) - (_p1 select 2));
  2304. _dist = (_maxWidth max _maxLength)*2;
  2305. _dir = getDir (vehicle _target);
  2306. LOCAL_OBJ setDir _dir;
  2307. LOCAL_OBJ setPos (_target modelToWorld [0,_dist,(_maxHeight/2)]);
  2308. call fnc_redoControlsMoveObj;
  2309.  
  2310. _log = format['Spawning %1 infront of %2!',_click,name _target];
  2311. _log call FN_SHOW_LOG;
  2312.  
  2313. format['spawning %1',_click] call fnc_adminLog;
  2314. };
  2315. if(_class in ALL_BAGS_TO_SEARCH_C)exitWith
  2316. {
  2317. _target = if(isNull (call fnc_LBSelChanged_LEFT))then{player} else {(call fnc_LBSelChanged_LEFT)};
  2318. _pos = getPosATL _target;
  2319.  
  2320. _log = format['Spawning %1 on the ground infront of %2!',_click,name _target];
  2321. _log call FN_SHOW_LOG;
  2322.  
  2323. if(local _target)then{_target addBackpack _class;}else{['player addBackpack '+str _class+';',_target] call admin_d0_target;};
  2324. format['spawning %1',_click] call fnc_adminLog;
  2325. };
  2326. if(_class in ALL_WEPS_TO_SEARCH_C)exitWith
  2327. {
  2328. _target = if(isNull (call fnc_LBSelChanged_LEFT))then{player} else {(call fnc_LBSelChanged_LEFT)};
  2329. _pos = getPosATL _target;
  2330.  
  2331. _log = format['Spawning %1 on the ground infront of %2!',_click,name _target];
  2332. _log call FN_SHOW_LOG;
  2333.  
  2334. [3,player,_pos,_class] call fnc_AdminReq;
  2335. format['spawning %1',_click] call fnc_adminLog;
  2336. };
  2337. if(_class in ALL_MAGS_TO_SEARCH_C)exitWith
  2338. {
  2339. format['spawning %1',_click] call fnc_adminLog;
  2340. _target = if(isNull (call fnc_LBSelChanged_LEFT))then{player} else {(call fnc_LBSelChanged_LEFT)};
  2341. if(!isPlayer _target)exitWith{
  2342. _log = format['Spawning %1 on the ground infront of %2!',_click,name _target];
  2343. _log call FN_SHOW_LOG;
  2344. };
  2345.  
  2346. if(fillmainstate == 6)exitWith
  2347. {
  2348. _log = format['Spawning %1..',_click];
  2349. _log call FN_SHOW_LOG;
  2350.  
  2351. if(local _target)then
  2352. {
  2353. _countMag = {_x == _class} count (magazines _target);
  2354. _target addMagazine _class;
  2355. _newCountMag = {_x == _class} count (magazines _target);
  2356. if(_countMag == _newCountMag)then
  2357. {
  2358. _target linkItem _class;
  2359. };
  2360. }
  2361. else
  2362. {
  2363. ['
  2364. _target = player;
  2365. _class = '+str _class+';
  2366.  
  2367. _countMag = {_x == _class} count (magazines _target);
  2368. _target addMagazine _class;
  2369. _newCountMag = {_x == _class} count (magazines _target);
  2370. if(_countMag == _newCountMag)then
  2371. {
  2372. _target linkItem _class;
  2373. };
  2374. ',_target] call admin_d0_target;
  2375. };
  2376. };
  2377.  
  2378. _pos = getPosATL _target;
  2379. _log = format['Spawning %1 on the ground infront of %2!',_click,name _target];
  2380. _log call FN_SHOW_LOG;
  2381. [3,player,_pos,_class] call fnc_AdminReq;
  2382. };
  2383. if(infiSTAR_MOD == 'Epoch')then{[_click] call CCG_fnc_adminClick;};
  2384. if(_click in infiSTAR_Loadouts)then
  2385. {
  2386. switch (_click) do {
  2387. case 'Epoch 1':{[0] call fnc_add_loadout;};
  2388. case 'Epoch 2':{[1] call fnc_add_loadout;};
  2389. case 'Sub Machinegun Kit':{[2] call fnc_add_loadout;};
  2390. case 'Light Infantry Kit':{[3] call fnc_add_loadout;};
  2391. case 'Heavy Infantry Kit':{[4] call fnc_add_loadout;};
  2392. case 'DMR Sniper Kit':{[5] call fnc_add_loadout;};
  2393. case 'LLR Sniper Kit':{[6] call fnc_add_loadout;};
  2394. case 'Lynx Sniper Kit':{[7] call fnc_add_loadout;};
  2395. case 'M107 Sniper Kit':{[8] call fnc_add_loadout;};
  2396. };
  2397. _click call fnc_adminLog;
  2398. };
  2399. if(_click == 'Login')then{if(isNil 'serverCommandLoginDone')then{serverCommandLoginDone = true;serverCommand ('#login '+passwordAdmin);};};
  2400. if((_click find '#kick' > -1) || (_click find '#exec' > -1))then{serverCommand _click;};
  2401. if((FILLMAINSTATE == 0)||(FILLMAINSTATE == 1))then{[] call fnc_fill_infiSTAR_MAIN;};
  2402. };
  2403. fnc_LBSelChanged_RIGHT = {
  2404. _class = lbData[RIGHT_CTRL_ID,(lbCurSel RIGHT_CTRL_ID)];
  2405. _cfg = call {
  2406. if(isClass (configFile >> 'CfgWeapons' >> _class))exitWith{'CfgWeapons'};
  2407. if(isClass (configFile >> 'CfgMagazines' >> _class))exitWith{'CfgMagazines'};
  2408. if(isClass (configFile >> 'CfgVehicles' >> _class))exitWith{'CfgVehicles'};
  2409. ''
  2410. };
  2411. if(_cfg != '')then
  2412. {
  2413. _xposT = 0.6;
  2414. _yposT = 0.375 * safezoneH + safezoneY;
  2415. _txt = (gettext (configFile >> _cfg >> _class >> 'Library' >> 'libTextDesc'));
  2416. if(_txt == '')then{_txt = 'by infiSTAR.de';};
  2417.  
  2418. if(_cfg=='CfgVehicles')then{
  2419. _vehicleConfig=configFile>>_cfg>>_class;
  2420. _info = format['Capacity: %1 Armor: %2 Fuel: %3 MaxSpeed: %4',getNumber(_vehicleConfig>>'maximumLoad'),getNumber(_vehicleConfig>>'armor'),getNumber(_vehicleConfig>>'fuelCapacity'),getNumber(_vehicleConfig>>'maxSpeed')];
  2421. _log = format['Class: %1 %2',_class,_info];
  2422. _txt=(_info+'<br/>'+_txt);
  2423. };
  2424.  
  2425. ['
  2426. <t size=''0.4''>'+_txt+' </t>
  2427. ',_xposT,_yposT,15,0,0,8407] spawn bis_fnc_dynamicText;
  2428.  
  2429. _xposP = 0.525 * safezoneW + safezoneX;
  2430. _yposP = 0.175 * safezoneH + safezoneY;
  2431. _pic = (getText (configFile >> _cfg >> _class >> 'picture'));
  2432. if((toLower _pic) in ['','pictureheal','picturepapercar','picturething','picturestaticobject'])exitWith{};
  2433. ['
  2434. <img size=''3.5'' image='''+_pic+'''/>
  2435. ',_xposP,_yposP,15,0,0,8406] spawn bis_fnc_dynamicText;
  2436. };
  2437. };
  2438. fnc_getConfig = {
  2439. _cfg = '';
  2440. if(isClass (configFile >> 'CfgWeapons' >> _this))then
  2441. {
  2442. _cfg = 'CfgWeapons';
  2443. }
  2444. else
  2445. {
  2446. if(isClass (configFile >> 'CfgMagazines' >> _this))then
  2447. {
  2448. _cfg = 'CfgMagazines';
  2449. }
  2450. else
  2451. {
  2452. if(isClass (configFile >> 'CfgVehicles' >> _this))then
  2453. {
  2454. _cfg = 'CfgVehicles';
  2455. };
  2456. };
  2457. };
  2458. _cfg
  2459. };
  2460. admin_showGear = {
  2461. if(!isNull cameraOn)then
  2462. {
  2463. if(!isNil'show_gear_thread')then{terminate show_gear_thread;show_gear_thread=nil;};
  2464. show_gear_thread = [] spawn {
  2465. waitUntil {closeDialog 0;!dialog};
  2466. createGearDialog [cameraOn,'RscDisplayInventory'];
  2467. };
  2468. _log = format['Showing Gear of %1',cameraOn call fn_infiSTAR_ObjName];
  2469. _log call FN_SHOW_LOG;
  2470. };
  2471. };
  2472. fnc_endSpectate = {
  2473. if(!isNil'SPECTATE_THREAD')then{terminate SPECTATE_THREAD;SPECTATE_THREAD=nil;};
  2474. (vehicle player) switchCamera cameraView;
  2475. ctrlDelete ((findDisplay 46) displayCtrl 3025);
  2476. if(cameraOn isEqualTo (vehicle player))exitWith{};
  2477. _log = 'Finished spectating.';
  2478. _log call FN_SHOW_LOG;
  2479. };
  2480. fnc_beginspectate = {
  2481. if(!isNil'SPECTATE_THREAD')then{terminate SPECTATE_THREAD;SPECTATE_THREAD=nil;};
  2482. SPECTATE_THREAD = _this spawn {
  2483. disableSerialization;
  2484. _unit = _this;
  2485. _uid = getPlayerUID _unit;
  2486. _log = format['SPECTATE - switchedCamera on %1(%2) - %3',_unit call fn_infiSTAR_ObjName,_uid,typeOf (vehicle _unit)];
  2487. _log call fnc_adminLog;
  2488.  
  2489. _ctrl = [findDisplay 46,'RscStructuredText',3025] call fnc_createctrl;
  2490. _ctrl ctrlSetPosition [safezoneX+0.2,safezoneY+0.1,0.8,1];
  2491. _ctrl ctrlCommit 0;
  2492. while {true} do
  2493. {
  2494. _uid = getPlayerUID _unit;
  2495. if(_uid isEqualTo '')exitWith{call fnc_endspectate;};
  2496. _veh = vehicle _unit;
  2497. if!(_veh isEqualTo cameraOn)then
  2498. {
  2499. player reveal _unit;
  2500. player reveal _veh;
  2501. _veh switchCamera cameraView;
  2502. };
  2503. if(show_spectate_overlay)then
  2504. {
  2505. _ctrlText = '<t align=''left'' shadow=''2'' size=''0.8'' color=''#667FFF''>Spectating - F9 to show inventory, SHIFT + F9 to hide/show overlay, F10 to exit/stop spectating</t><br/>';
  2506. _log = format['%1 (%2) @%3',_unit call fn_infiSTAR_ObjName, _uid, mapGridPosition _veh];
  2507. _ctrlText = _ctrlText + '<t align=''left'' shadow=''2'' size=''1.1'' color=''#238701''>'+_log+'</t>';
  2508.  
  2509. _cwep = '';
  2510. _cammo = '';
  2511. _cmags = '';
  2512. _wpnstate = weaponState _unit;
  2513. if(!isNil '_wpnstate')then
  2514. {
  2515. if(str _wpnstate != '[]')then
  2516. {
  2517. _cwep = _wpnstate select 0;
  2518. _cmags = {_wpnstate select 3 == _x} count magazines _unit;
  2519. _cammo = _wpnstate select 4;
  2520. };
  2521. };
  2522. if(_cwep == '')then
  2523. {
  2524. _ctrlText = _ctrlText + '<br/><t align=''left'' shadow=''2'' size=''1.1'' color=''#238701''>Bare Fists</t>';
  2525. }
  2526. else
  2527. {
  2528. _type = _cwep;
  2529. _cfg = _type call fnc_getConfig;
  2530. _displayName = getText (configFile >> _cfg >> _type >> 'displayName');
  2531. _pic = getText (configFile >> _cfg >> _type >> 'picture');
  2532. _log3 = format[' %1 [%2] (%3/%4)',_displayName, _cwep, _cammo, _cmags];
  2533. _ctrlText = _ctrlText + '<br/><img image='''+_pic+''' align=''left'' shadow=''2'' size=''1.1''/><t align=''left'' shadow=''2'' size=''1.1'' color=''#238701''>'+_log3+'</t>';
  2534.  
  2535. if(_veh != _unit)then
  2536. {
  2537. _cwepsV = [];
  2538. {
  2539. if(_x find 'Horn' == -1)then
  2540. {
  2541. _cwepsV pushBack _x;
  2542. };
  2543. } forEach (weapons _veh);
  2544.  
  2545. if(count _cwepsV > 0)then
  2546. {
  2547. _YPOS = safezoneY+0.355;
  2548.  
  2549. {
  2550. _cwep = _x;
  2551. _cammo = _veh ammo _cwep;
  2552. _cmags = {currentMagazine _veh == _x} count magazines _veh;
  2553.  
  2554. _type = _cwep;
  2555. _cfg = _type call fnc_getConfig;
  2556. _displayName = getText (configFile >> _cfg >> _type >> 'displayName');
  2557.  
  2558. _log3a = format[' %1 [%2] (%3/%4)',_displayName, _cwep, _cammo, _cmags];
  2559. _ctrlText = _ctrlText + '<br/><t align=''left'' shadow=''2'' size=''1.1'' color=''#A90F68''>'+_log3a+'</t>';
  2560. _YPOS = _YPOS - 0.03;
  2561. } forEach _cwepsV;
  2562. };
  2563. };
  2564. };
  2565.  
  2566. _ct = cursorTarget;
  2567. if(!isNull _ct)then
  2568. {
  2569. if(getPlayerUID _ct != '')then
  2570. {
  2571. _cwep_ct = currentWeapon _ct;
  2572. _cammo_ct = _ct ammo _cwep_ct;
  2573. _cmags_ct = {currentMagazine _ct == _x} count magazines _ct;
  2574.  
  2575. _log4 = format['%1 (%2) @%3',_ct call fn_infiSTAR_ObjName, getPlayerUID _ct, mapGridPosition _ct];
  2576. _ctrlText = _ctrlText + '<br/><t align=''left'' shadow=''2'' size=''1.1'' color=''#B80B36''>'+_log4+'</t>';
  2577.  
  2578. _log5 = format['Health: %1 Distance: %2m',(1-(damage _ct))*100, round(cameraOn distance _ct)];
  2579. _ctrlText = _ctrlText + '<br/><t align=''left'' shadow=''2'' size=''1.1'' color=''#B80B36''>'+_log5+'</t>';
  2580.  
  2581. _type = _cwep_ct;
  2582. _cfg = _type call fnc_getConfig;
  2583. _displayName = getText (configFile >> _cfg >> _type >> 'displayName');
  2584. _pic = getText (configFile >> _cfg >> _type >> 'picture');
  2585. _log6 = format[' %1 [%2] (%3/%4)',_displayName, _cwep_ct, _cammo_ct, _cmags_ct];
  2586. _ctrlText = _ctrlText + '<br/><img image='''+_pic+''' align=''left'' shadow=''2'' size=''1.1''/><br/><t align=''left'' shadow=''2'' size=''1.1'' color=''#B80B36''>'+_log6+'</t>';
  2587. }
  2588. else
  2589. {
  2590. _type = typeOf _ct;
  2591. _cfg = _type call fnc_getConfig;
  2592. _displayName = getText (configFile >> _cfg >> _type >> 'displayName');
  2593. _log4 = format['%1 [%2] @%3',_displayName, _type, mapGridPosition _ct];
  2594. _ctrlText = _ctrlText + '<br/><t align=''left'' shadow=''2'' size=''1.1'' color=''#B80B36''>'+_log4+'</t>';
  2595.  
  2596. _log5 = format['Health: %1 - Distance: %2m',(1-(damage _ct))*100, round(cameraOn distance _ct)];
  2597. _ctrlText = _ctrlText + '<br/><t align=''left'' shadow=''2'' size=''1.1'' color=''#B80B36''>'+_log5+'</t>';
  2598. };
  2599.  
  2600. _vehCT = vehicle _ct;
  2601. if((_vehCT isKindOf 'LandVehicle') || (_vehCT isKindOf 'Air') || (_vehCT isKindOf 'Ship') || (_vehCT isKindOf 'Static'))then
  2602. {
  2603. _cwepsV = [];
  2604. {
  2605. if(_x find 'Horn' == -1)then
  2606. {
  2607. _cwepsV pushBack _x;
  2608. };
  2609. } forEach (weapons _vehCT);
  2610.  
  2611. if(count _cwepsV > 0)then
  2612. {
  2613. _YPOS = safezoneY+0.655;
  2614.  
  2615. {
  2616. _cwep = _x;
  2617. _cammo = _vehCT ammo _cwep;
  2618. _cmags = {currentMagazine _vehCT == _x} count magazines _vehCT;
  2619.  
  2620. _type = _cwep;
  2621. _cfg = _type call fnc_getConfig;
  2622. _displayName = getText (configFile >> _cfg >> _type >> 'displayName');
  2623.  
  2624. _log6a = format[' %1 [%2] (%3/%4)',_displayName, _cwep, _cammo, _cmags];
  2625. _ctrlText = _ctrlText + '<br/><t align=''left'' shadow=''2'' size=''1.1'' color=''#A90F68''>'+_log6a+'</t>';
  2626. _YPOS = _YPOS + 0.03;
  2627. } forEach _cwepsV;
  2628. };
  2629. };
  2630. };
  2631. _ctrl ctrlSetStructuredText parseText _ctrlText;
  2632. }
  2633. else
  2634. {
  2635. _ctrl ctrlSetStructuredText parseText '';
  2636. };
  2637. uiSleep .15;
  2638. };
  2639. };
  2640. };
  2641. fnc_clearLogArray = {
  2642. [-668,player,_this select 0] call fnc_AdminReq;
  2643. _log = 'ingame Log(s) cleared!';
  2644. _log call FN_SHOW_LOG;
  2645. [] call fnc_FULLinit;
  2646. };
  2647. fnc_dumpUclientVars = {
  2648. [-663,player,getPlayerUID (_this select 0),name (_this select 0)] call fnc_AdminReq;
  2649. _log = format['Dumping unique client variables of %1(%2)',name (_this select 0),getPlayerUID (_this select 0)];
  2650. _log call FN_SHOW_LOG;
  2651. };
  2652. fnc_getSteamName = {
  2653. [9876,player,_this select 0] call fnc_AdminReq;
  2654. _log = format['Requested Steam Name of %1(%2)',name (_this select 0),getPlayerUID (_this select 0)];
  2655. _log call FN_SHOW_LOG;
  2656. };
  2657. fnc_TP2ME = {
  2658. _unit = _this select 0;
  2659. _pos = player modelToWorld [0,12,0];
  2660. if(_unit isEqualTo vehicle _unit)then{_pos = player modelToWorld [0,1,0];};
  2661. [1,player,_unit,_pos] call fnc_AdminReq;
  2662. };
  2663. fnc_TPME2 = {
  2664. _unit = _this select 0;
  2665. _pos = _unit modelToWorld [0,-5,0];
  2666. _object = (vehicle player);
  2667. if(str(crew _object) == str([player]))then
  2668. {
  2669. _object setPos _pos;
  2670. }
  2671. else
  2672. {
  2673. [1,player,_unit,_pos] call fnc_AdminReq;
  2674. };
  2675. };
  2676. fnc_MoveInMyVehicle = {
  2677. _unit = _this select 0;
  2678. _unit moveInAny (vehicle player);
  2679. };
  2680. fnc_MoveInTargetVehicle = {
  2681. _unit = _this select 0;
  2682. player moveInAny (vehicle _unit);
  2683. };
  2684. fnc_MoveInParachute = {
  2685. MoveInParachuteObject = _this select 0;
  2686. openMap true;
  2687. _log = format['Click on Map to Parachute %1(%2)',name MoveInParachuteObject,getPlayerUID MoveInParachuteObject];
  2688. _log call FN_SHOW_LOG;
  2689. fnc_getParachutePos = {
  2690. _parachuteObject = createVehicle ['Steerable_Parachute_F', [_this select 0,_this select 1,300], [], 0, 'CAN_COLLIDE'];
  2691. _parachuteObject enableSimulationGlobal true;
  2692. MoveInParachuteObject action ['GetinDriver',_parachuteObject];
  2693. openMap false;
  2694. fnc_getParachutePos = nil;
  2695. };
  2696. };
  2697. fnc_EjectTargetVeh = {
  2698. _unit = _this select 0;
  2699. moveOut _unit;
  2700. unassignVehicle _unit;
  2701. _unit action ['eject', (vehicle _unit)];
  2702. };
  2703. fnc_EjectCrewTargetVeh = {
  2704. _unit = _this select 0;
  2705. _veh = (vehicle _unit);
  2706. _uids = [];
  2707. {
  2708. moveOut _x;
  2709. unassignVehicle _x;
  2710. _x action ['eject', _veh];
  2711. _uids pushBack (getPlayerUID _x)
  2712. } forEach (crew _veh);
  2713. };
  2714. fnc_RemoveGear = {
  2715. _target = _this select 0;
  2716. if(typeName _target != 'OBJECT')then
  2717. {
  2718. _target = cursorTarget;
  2719. };
  2720. if(!isNull _target)then
  2721. {
  2722. [11,player,_target] call fnc_AdminReq;
  2723.  
  2724. _log = format['Removed Gear of %1!',name _target];
  2725. _log call FN_SHOW_LOG;
  2726. };
  2727. };
  2728. fnc_add_loadout = {
  2729. _select = _this select 0;
  2730. _wset = player;
  2731. removeAllWeapons _wset;
  2732. removeAllItems _wset;
  2733. removebackpack _wset;
  2734. removeAllAssignedItems _wset;
  2735. switch (_select) do
  2736. {
  2737. NVG_ITEM_PEWPEW = 'NVGoggles';
  2738. if(infiSTAR_MOD == 'Epoch')then{NVG_ITEM_PEWPEW = 'NVG_EPOCH';};
  2739. case 0: {
  2740. _wset = player;
  2741. _wset addBackpack 'B_Carryall_oli';
  2742. _wset forceAddUniform 'O_G_Soldier_M_F';
  2743. _wset addItemToBackpack 'V_PlateCarrierIA1_dgtl';
  2744. _wset addItemToBackpack 'Heal_EPOCH';
  2745. _wset addItemToBackpack 'Defib_EPOCH';
  2746. _wset addItemToBackpack 'Repair_EPOCH';
  2747. _wset addItemToBackpack 'EnergyPackLg';
  2748. _wset addItemToBackpack 'MultiGun';
  2749. _wset addItemToBackpack 'ItemWatch';
  2750. _wset addItemToBackpack 'ItemCompass';
  2751. _wset addItemToBackpack 'ItemGPS';
  2752. _wset addItemToBackpack 'ItemMap';
  2753. _wset addItemToBackpack 'Rangefinder';
  2754. _wset addItemToBackpack NVG_ITEM_PEWPEW;
  2755. _wset addItemToBackpack 'Hatchet';
  2756. _wset addItemToBackpack 'hatchet_swing';
  2757. _wset addItemToBackpack 'MeleeSledge';
  2758. _wset addItemToBackpack 'sledge_swing';
  2759. _wset addItemToBackpack 'srifle_EBR_F';
  2760. _wset addItemToBackpack '20Rnd_762x51_Mag';
  2761. _wset addItemToBackpack 'optic_DMS';
  2762. _wset addItemToBackpack 'optic_SOS';
  2763. _wset addItemToBackpack 'optic_MRCO';
  2764. _wset addItemToBackpack 'muzzle_snds_B';
  2765. };
  2766. case 1: {
  2767. _wset = player;
  2768. _wset addBackpack 'B_Carryall_oli';
  2769. _wset forceAddUniform 'U_B_GhillieSuit';
  2770. _wset addItemToBackpack 'V_PlateCarrierIA1_dgtl';
  2771. _wset addItemToBackpack 'Heal_EPOCH';
  2772. _wset addItemToBackpack 'Defib_EPOCH';
  2773. _wset addItemToBackpack 'Repair_EPOCH';
  2774. _wset addItemToBackpack 'EnergyPackLg';
  2775. _wset addItemToBackpack 'MultiGun';
  2776. _wset addItemToBackpack 'ItemWatch';
  2777. _wset addItemToBackpack 'ItemCompass';
  2778. _wset addItemToBackpack 'ItemGPS';
  2779. _wset addItemToBackpack 'ItemMap';
  2780. _wset addItemToBackpack 'Rangefinder';
  2781. _wset addItemToBackpack NVG_ITEM_PEWPEW;
  2782. _wset addItemToBackpack 'Hatchet';
  2783. _wset addItemToBackpack 'hatchet_swing';
  2784. _wset addItemToBackpack 'MeleeSledge';
  2785. _wset addItemToBackpack 'sledge_swing';
  2786. _wset addItemToBackpack 'srifle_EBR_F';
  2787. _wset addItemToBackpack '20Rnd_762x51_Mag';
  2788. _wset addItemToBackpack 'optic_DMS';
  2789. _wset addItemToBackpack 'optic_SOS';
  2790. _wset addItemToBackpack 'optic_MRCO';
  2791. _wset addItemToBackpack 'muzzle_snds_B';
  2792. _wset addVest 'V_BandollierB_cbr';
  2793. _wset addWeapon NVG_ITEM_PEWPEW;
  2794. _wset addWeapon 'Rangefinder';
  2795. _wset addPrimaryWeaponItem 'optic_Aco';
  2796. _wset addPrimaryWeaponItem 'muzzle_snds_M';
  2797. if(infiSTAR_MOD != 'Epoch')then{(unitBackpack _wset) additemCargo ['FirstAidKit',2];} else {(unitBackpack _wset) additemCargo ['FAK',2];};
  2798. (unitBackpack _wset) additemCargo ['30Rnd_556x45_Stanag', 9];
  2799. (unitBackpack _wset) additemCargo ['30Rnd_9x21_Mag', 9];
  2800. (unitBackpack _wset) additemCargo ['handGrenade', 2];
  2801. _wset addWeapon 'srifle_LRR_F';
  2802. [] call infiSTAR_A3addAmmo;
  2803. [] call infiSTAR_A3addAmmo;
  2804. [] call infiSTAR_A3addAmmo;
  2805. };
  2806. case 2: {
  2807. _wset = player;
  2808. _wset addHeadgear 'H_Beret_02';
  2809. _wset addGoggles 'G_Sport_Blackred';
  2810. _wset addUniform 'U_OrestesBody';
  2811. _wset addVest 'V_BandollierB_cbr';
  2812. _wset addBackpack 'B_Carryall_oli';
  2813. _wset addWeapon NVG_ITEM_PEWPEW;
  2814. _wset addWeapon 'Rangefinder';
  2815. _wset addMagazine '30Rnd_9x21_Mag';
  2816. _wset addweapon 'hgun_PDW2000_Holo_snds_F';
  2817. _wset addMagazine '6Rnd_45ACP_Cylinder';
  2818. _wset addweapon 'hgun_Pistol_heavy_02_Yorris_F';
  2819. _wset addPrimaryWeaponItem 'muzzle_snds_B';
  2820. _wset addPrimaryWeaponItem 'acc_pointer_IR';
  2821. _wset addWeaponGlobal 'ItemCompass';
  2822. _wset addWeaponGlobal 'ItemMap';
  2823. _wset addWeaponGlobal 'Itemgps';
  2824. _wset addWeaponGlobal 'ItemWatch';
  2825. if(infiSTAR_MOD != 'Epoch')then{_wset addWeaponGlobal 'itemradio';} else {_wset addWeaponGlobal 'epochradio0';};
  2826. if(infiSTAR_MOD != 'Epoch')then{(unitBackpack _wset) additemCargo ['FirstAidKit',2];} else {(unitBackpack _wset) additemCargo ['FAK',2];};
  2827. (unitBackpack _wset) additemCargo ['30Rnd_9x21_Mag', 9];
  2828. (unitBackpack _wset) additemCargo ['6Rnd_45ACP_Cylinder', 9];
  2829. };
  2830. case 3: {
  2831. _wset = player;
  2832. _wset addHeadgear 'H_Beret_02';
  2833. _wset addGoggles 'G_Sport_Blackred';
  2834. _wset addUniform 'U_IG_Guerilla3_1';
  2835. _wset addVest 'V_BandollierB_cbr';
  2836. _wset addBackpack 'B_Carryall_oli';
  2837. _wset addWeapon NVG_ITEM_PEWPEW;
  2838. _wset addWeapon 'Rangefinder';
  2839. _wset addMagazine '30Rnd_556x45_Stanag';
  2840. _wset addweapon 'arifle_TRG21_ACO_grn_smg';
  2841. _wset addMagazine '30Rnd_9x21_Mag';
  2842. _wset addweapon 'hgun_P07_F';
  2843. _wset addPrimaryWeaponItem 'optic_Aco';
  2844. _wset addPrimaryWeaponItem 'muzzle_snds_M';
  2845. _wset addHandgunItem 'muzzle_snds_L';
  2846. _wset addWeaponGlobal 'ItemCompass';
  2847. _wset addWeaponGlobal 'ItemMap';
  2848. _wset addWeaponGlobal 'Itemgps';
  2849. _wset addWeaponGlobal 'ItemWatch';
  2850. if(infiSTAR_MOD != 'Epoch')then{_wset addWeaponGlobal 'itemradio';} else {_wset addWeaponGlobal 'epochradio0';};
  2851. if(infiSTAR_MOD != 'Epoch')then{(unitBackpack _wset) additemCargo ['FirstAidKit',2];} else {(unitBackpack _wset) additemCargo ['FAK',2];};
  2852. (unitBackpack _wset) additemCargo ['30Rnd_556x45_Stanag', 9];
  2853. (unitBackpack _wset) additemCargo ['30Rnd_9x21_Mag', 9];
  2854. (unitBackpack _wset) additemCargo ['handGrenade', 2];
  2855. };
  2856. case 4: {
  2857. _wset = player;
  2858. _wset addHeadgear 'H_Beret_02';
  2859. _wset addGoggles 'G_Sport_Blackred';
  2860. _wset addUniform 'U_OG_leader';
  2861. _wset addVest 'V_BandollierB_cbr';
  2862. _wset addBackpack 'B_Carryall_oli';
  2863. _wset addWeapon NVG_ITEM_PEWPEW;
  2864. _wset addWeapon 'Rangefinder';
  2865. _wset addweapon 'LMG_Zafir_F';
  2866. _wset addMagazine '150Rnd_762x54_Box_Tracer';
  2867. _wset addMagazine '30Rnd_9x21_Mag';
  2868. _wset addweapon 'hgun_P07_F';
  2869. _wset addPrimaryWeaponItem 'optic_LRPS';
  2870. _wset addPrimaryWeaponItem 'acc_pointer_IR';
  2871. _wset addHandgunItem 'muzzle_snds_L';
  2872. _wset addWeaponGlobal 'ItemCompass';
  2873. _wset addWeaponGlobal 'ItemMap';
  2874. _wset addWeaponGlobal 'Itemgps';
  2875. _wset addWeaponGlobal 'ItemWatch';
  2876. if(infiSTAR_MOD != 'Epoch')then{_wset addWeaponGlobal 'itemradio';} else {_wset addWeaponGlobal 'epochradio0';};
  2877. if(infiSTAR_MOD != 'Epoch')then{(unitBackpack _wset) additemCargo ['FirstAidKit',2];} else {(unitBackpack _wset) additemCargo ['FAK',2];};
  2878. (unitBackpack _wset) additemCargo ['150Rnd_762x54_Box_Tracer', 9];
  2879. (unitBackpack _wset) additemCargo ['30Rnd_9x21_Mag', 9];
  2880. (unitBackpack _wset) additemCargo ['handGrenade', 2];
  2881. };
  2882. case 5: {
  2883. _wset = player;
  2884. _wset addHeadgear 'H_Beret_02';
  2885. _wset addGoggles 'G_Sport_Blackred';
  2886. _wset addUniform 'U_O_GhillieSuit';
  2887. _wset addVest 'V_BandollierB_cbr';
  2888. _wset addBackpack 'B_Carryall_oli';
  2889. _wset addWeapon NVG_ITEM_PEWPEW;
  2890. _wset addWeapon 'Rangefinder';
  2891. _wset addMagazine '10Rnd_762x54_Mag';
  2892. _wset addweapon 'srifle_DMR_01_F';
  2893. _wset addMagazine '30Rnd_9x21_Mag';
  2894. _wset addweapon 'hgun_P07_F';
  2895. _wset addPrimaryWeaponItem 'acc_pointer_IR';
  2896. _wset addPrimaryWeaponItem 'optic_MRCO';
  2897. _wset addHandgunItem 'muzzle_snds_L';
  2898. _wset addWeaponGlobal 'ItemCompass';
  2899. _wset addWeaponGlobal 'ItemMap';
  2900. _wset addWeaponGlobal 'Itemgps';
  2901. _wset addWeaponGlobal 'ItemWatch';
  2902. if(infiSTAR_MOD != 'Epoch')then{_wset addWeaponGlobal 'itemradio';} else {_wset addWeaponGlobal 'epochradio0';};
  2903. if(infiSTAR_MOD != 'Epoch')then{(unitBackpack _wset) additemCargo ['FirstAidKit',2];} else {(unitBackpack _wset) additemCargo ['FAK',2];};
  2904. (unitBackpack _wset) additemCargo ['10Rnd_762x54_Mag', 9];
  2905. (unitBackpack _wset) additemCargo ['30Rnd_9x21_Mag', 9];
  2906. (unitBackpack _wset) additemCargo ['handGrenade', 2];
  2907. };
  2908. case 6: {
  2909. _wset = player;
  2910. _wset addGoggles 'G_Sport_Blackred';
  2911. _wset addUniform 'U_O_CombatUniform_oucamo';
  2912. _wset addVest 'V_BandollierB_cbr';
  2913. _wset addBackpack 'B_Carryall_oli';
  2914. _wset addWeapon NVG_ITEM_PEWPEW;
  2915. _wset addWeapon 'Rangefinder';
  2916. _wset addMagazine '7Rnd_408_Mag';
  2917. _wset addweapon 'srifle_LRR_F';
  2918. _wset addMagazine '30Rnd_9x21_Mag';
  2919. _wset addweapon 'hgun_P07_F';
  2920. _wset addPrimaryWeaponItem 'acc_pointer_IR';
  2921. _wset addPrimaryWeaponItem 'optic_MRCO';
  2922. _wset addHandgunItem 'muzzle_snds_L';
  2923. _wset addWeaponGlobal 'ItemCompass';
  2924. _wset addWeaponGlobal 'ItemMap';
  2925. _wset addWeaponGlobal 'Itemgps';
  2926. _wset addWeaponGlobal 'ItemWatch';
  2927. if(infiSTAR_MOD != 'Epoch')then{_wset addWeaponGlobal 'itemradio';} else {_wset addWeaponGlobal 'epochradio0';};
  2928. if(infiSTAR_MOD != 'Epoch')then{(unitBackpack _wset) additemCargo ['FirstAidKit',2];} else {(unitBackpack _wset) additemCargo ['FAK',2];};
  2929. (unitBackpack _wset) additemCargo ['7Rnd_408_Mag', 9];
  2930. (unitBackpack _wset) additemCargo ['30Rnd_9x21_Mag', 9];
  2931. (unitBackpack _wset) additemCargo ['handGrenade', 2];
  2932. };
  2933. case 7: {
  2934. _wset = player;
  2935. _wset addHeadgear 'H_Beret_02';
  2936. _wset addGoggles 'G_Sport_Blackred';
  2937. _wset addUniform 'U_O_GhillieSuit';
  2938. _wset addVest 'V_BandollierB_cbr';
  2939. _wset addBackpack 'B_Carryall_oli';
  2940. _wset addWeapon NVG_ITEM_PEWPEW;
  2941. _wset addWeapon 'Rangefinder';
  2942. _wset addMagazine '5Rnd_127x108_Mag';
  2943. _wset addweapon 'srifle_GM6_F';
  2944. _wset addMagazine '30Rnd_9x21_Mag';
  2945. _wset addweapon 'hgun_P07_F';
  2946. _wset addPrimaryWeaponItem 'optic_LRPS';
  2947. _wset addPrimaryWeaponItem 'acc_pointer_IR';
  2948. _wset addHandgunItem 'muzzle_snds_L';
  2949. _wset addWeaponGlobal 'ItemCompass';
  2950. _wset addWeaponGlobal 'ItemMap';
  2951. _wset addWeaponGlobal 'Itemgps';
  2952. _wset addWeaponGlobal 'ItemWatch';
  2953. if(infiSTAR_MOD != 'Epoch')then{_wset addWeaponGlobal 'itemradio';} else {_wset addWeaponGlobal 'epochradio0';};
  2954. if(infiSTAR_MOD != 'Epoch')then{(unitBackpack _wset) additemCargo ['FirstAidKit',2];} else {(unitBackpack _wset) additemCargo ['FAK',2];};
  2955. (unitBackpack _wset) additemCargo ['5Rnd_127x108_Mag', 9];
  2956. (unitBackpack _wset) additemCargo ['30Rnd_9x21_Mag', 9];
  2957. (unitBackpack _wset) additemCargo ['handGrenade', 2];
  2958. };
  2959. case 8: {
  2960. _wset = player;
  2961. _wset addHeadgear 'H_Beret_02';
  2962. _wset addGoggles 'G_Sport_Blackred';
  2963. _wset addUniform 'U_O_GhillieSuit';
  2964. _wset addVest 'V_BandollierB_cbr';
  2965. _wset addBackpack 'B_Carryall_oli';
  2966. _wset addWeapon NVG_ITEM_PEWPEW;
  2967. _wset addWeapon 'Rangefinder';
  2968. _wset addMagazine '5Rnd_127x108_Mag';
  2969. _wset addweapon 'm107Tan_EPOCH';
  2970. _wset addMagazine '30Rnd_9x21_Mag';
  2971. _wset addweapon 'hgun_P07_F';
  2972. _wset addPrimaryWeaponItem 'optic_LRPS';
  2973. _wset addPrimaryWeaponItem 'acc_pointer_IR';
  2974. _wset addHandgunItem 'muzzle_snds_L';
  2975. _wset addWeaponGlobal 'ItemCompass';
  2976. _wset addWeaponGlobal 'ItemMap';
  2977. _wset addWeaponGlobal 'Itemgps';
  2978. _wset addWeaponGlobal 'ItemWatch';
  2979. if(infiSTAR_MOD != 'Epoch')then{_wset addWeaponGlobal 'itemradio';} else {_wset addWeaponGlobal 'epochradio0';};
  2980. if(infiSTAR_MOD != 'Epoch')then{(unitBackpack _wset) additemCargo ['FirstAidKit',2];} else {(unitBackpack _wset) additemCargo ['FAK',2];};
  2981. (unitBackpack _wset) additemCargo ['5Rnd_127x108_Mag', 9];
  2982. (unitBackpack _wset) additemCargo ['30Rnd_9x21_Mag', 9];
  2983. (unitBackpack _wset) additemCargo ['handGrenade', 2];
  2984. };
  2985. default { _log = 'no loadout selected';_log call FN_SHOW_LOG; };
  2986. };
  2987. };
  2988. fnc_spawn_timemachine = {
  2989. _offset = _this select 0;
  2990. [6,player,_offset] call fnc_AdminReq;
  2991. _log = format['DayTime changed to hour %1',_offset];
  2992. _log call FN_SHOW_LOG;
  2993. };
  2994. fnc_mass_message = {
  2995. disableSerialization;
  2996. _display = findDisplay 24;
  2997. if(isNull _display)exitWith
  2998. {
  2999. _log = 'open your chat, type a message and start this function again!';
  3000. _log call FN_SHOW_LOG;
  3001. };
  3002. _chat = _display displayCtrl 101;
  3003. _msg = ctrlText _chat;
  3004. (_display) closeDisplay 0;
  3005. [7,player,toArray _msg] call fnc_AdminReq;
  3006. _log = format['Mass Message: %1',_msg];
  3007. _log call fnc_adminLog;
  3008. _log call FN_SHOW_LOG;
  3009. };
  3010. fnc_freezeTarget = {
  3011. _target = _this select 0;
  3012. _value = _this select 1;
  3013. if(typeName _target != 'OBJECT')exitWith
  3014. {
  3015. _log = 'Target is not an Object!';
  3016. _log call FN_SHOW_LOG;
  3017. };
  3018. if!(isPlayer _target)exitWith
  3019. {
  3020. _log = 'Target is not a Player!';
  3021. _log call FN_SHOW_LOG;
  3022. };
  3023. [13,player,_target,_value] call fnc_AdminReq;
  3024. _log = format['UnFroze %1!',name _target];
  3025. if(_value)then{_log = format['Froze %1!',name _target];};
  3026. _log call FN_SHOW_LOG;
  3027. };
  3028. fnc_restrainTarget = {
  3029. _target = _this select 0;
  3030. _value = _this select 1;
  3031. if(typeName _target != 'OBJECT')exitWith
  3032. {
  3033. _log = 'Target is not an Object!';
  3034. _log call FN_SHOW_LOG;
  3035. };
  3036. if!(isPlayer _target)exitWith
  3037. {
  3038. _log = 'Target is not a Player!';
  3039. _log call FN_SHOW_LOG;
  3040. };
  3041. [15,player,_target,_value] call fnc_AdminReq;
  3042. _log = format['Unrestrained %1!',name _target];
  3043. if(_value)then{_log = format['Restrained %1!',name _target];};
  3044. _log call FN_SHOW_LOG;
  3045. };
  3046. "; if(_MOD == 'Epoch')then{ infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  3047. fnc_spawn_CryptoINSERTVALUE = {
  3048. disableSerialization;
  3049. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 654002);
  3050. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCText', 654002];
  3051. (findDisplay MAIN_DISPLAY_ID displayCtrl 654002) ctrlSetPosition [
  3052. 0.554062 * safezoneW + safezoneX,
  3053. 0.4,
  3054. 0.255781 * safezoneW,
  3055. 0.033 * safezoneH
  3056. ];
  3057.  
  3058. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 654001);
  3059. findDisplay MAIN_DISPLAY_ID ctrlCreate['RscXSliderH', 654001];
  3060. _slider1 = (findDisplay MAIN_DISPLAY_ID displayCtrl 654001);
  3061. _slider1 ctrlSetPosition [
  3062. 0.554062 * safezoneW + safezoneX,
  3063. 0.45
  3064. ];
  3065. _slider1 ctrlSetBackgroundColor [0.15,0.15,0.15,1];
  3066. _slider1 ctrlCommit 0;
  3067.  
  3068. ctrlDelete ((findDisplay MAIN_DISPLAY_ID) displayCtrl 654003);
  3069. findDisplay MAIN_DISPLAY_ID ctrlCreate['RSCButton', 654003];
  3070. (findDisplay MAIN_DISPLAY_ID displayCtrl 654003) ctrlSetText 'OK';
  3071. (findDisplay MAIN_DISPLAY_ID displayCtrl 654003) ctrlSetPosition [
  3072. 0.725 * safezoneW + safezoneX,
  3073. 0.45,
  3074. 0.0360937 * safezoneW,
  3075. 0.033 * safezoneH
  3076. ];
  3077. (findDisplay MAIN_DISPLAY_ID displayCtrl 654003) ctrlCommit 0;
  3078. (findDisplay MAIN_DISPLAY_ID displayCtrl 654003) ctrlSetEventHandler['ButtonClick','
  3079. if(isNil''SELECTED_TARGET_PLAYER'')exitWith{};
  3080. if(isNull SELECTED_TARGET_PLAYER)exitWith{};
  3081. if!(isPlayer SELECTED_TARGET_PLAYER)exitWith{};
  3082. if!(alive SELECTED_TARGET_PLAYER)exitWith{};
  3083. if(CRYPTO_CHANGE_VALUE == 0)exitWith{};
  3084.  
  3085. disableSerialization;
  3086. _slider1 = (findDisplay MAIN_DISPLAY_ID displayCtrl 654001);
  3087. _value = CRYPTO_CHANGE_VALUE;
  3088. _value = (_value min 250000) max -250000;
  3089. _value = round _value;
  3090.  
  3091. [12,player,SELECTED_TARGET_PLAYER,_value] call fnc_AdminReq;
  3092. _log = format[''Added %1 Crypto to %2!'',_value,name SELECTED_TARGET_PLAYER];
  3093. if(_value < 0)then
  3094. {
  3095. _log = format[''Removed %1 Crypto from %2!'',_value,name SELECTED_TARGET_PLAYER];
  3096. };
  3097. _log call FN_SHOW_LOG;
  3098. '];
  3099.  
  3100. if(!isNil'fnc_spawn_CryptoINSERTVALUETHREAD')then{terminate fnc_spawn_CryptoINSERTVALUETHREAD;};
  3101. fnc_spawn_CryptoINSERTVALUETHREAD = [] spawn {
  3102. disableSerialization;
  3103. _slider1 = (findDisplay MAIN_DISPLAY_ID displayCtrl 654001);
  3104. _slider1 sliderSetPosition 5;
  3105. while {!isNull findDisplay MAIN_DISPLAY_ID} do
  3106. {
  3107. _sliderPos = sliderPosition _slider1;
  3108. _value = 0;
  3109. if(_sliderPos < 5)then
  3110. {
  3111. _calc = 5-_sliderPos;
  3112. _value = -250000 * (_calc/5)
  3113. }
  3114. else
  3115. {
  3116. _calc = 10-_sliderPos;
  3117. _value = 250000 * (_calc/5);
  3118. _value = 250000 - _value;
  3119. };
  3120. _value = round _value;
  3121. CRYPTO_CHANGE_VALUE = _value;
  3122. if(_value < 0)then
  3123. {
  3124. (findDisplay MAIN_DISPLAY_ID displayCtrl 654002) ctrlSetText format['remove %1 crypto from %2',_value,name SELECTED_TARGET_PLAYER];
  3125. }
  3126. else
  3127. {
  3128. (findDisplay MAIN_DISPLAY_ID displayCtrl 654002) ctrlSetText format['add %1 crypto to %2',_value,name SELECTED_TARGET_PLAYER];
  3129. };
  3130. (findDisplay MAIN_DISPLAY_ID displayCtrl 654002) ctrlCommit 0;
  3131.  
  3132. uiSleep 0.1;
  3133. };
  3134. };
  3135. };
  3136. "; }; infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  3137. fnc_spawn_Box = {
  3138. _select = _this select 0;
  3139. _target = if(isNull (call fnc_LBSelChanged_LEFT))then{player} else {(call fnc_LBSelChanged_LEFT)};
  3140. _pos = _target modelToWorld [0,3,0];
  3141. [5000,player,_select,_pos] call fnc_AdminReq;
  3142. _log = format['Spawning Box %1 on the ground infront of %2!',_select,name _target];
  3143. _log call FN_SHOW_LOG;
  3144. };
  3145. fnc_Altislife_money = {
  3146. _state = _this select 0;
  3147. _amount = _this select 1;
  3148. if(typeName _state != 'STRING')exitWith{};
  3149. if(typeName _amount != 'SCALAR')exitWith{};
  3150. if(_amount == 0)exitWith{};
  3151. if(_state == 'cash')then
  3152. {
  3153. life_cash = life_cash + _amount;
  3154. _log = format['Cash %1K - %2K has been added.',life_cash/1000,_amount/1000];
  3155. _log call FN_SHOW_LOG;
  3156. };
  3157. if(_state == 'bank')then
  3158. {
  3159. life_atmcash = life_atmcash + _amount;
  3160. _log = format['Bank %1K - %2K has been added.',life_atmcash/1000,_amount/1000];
  3161. _log call FN_SHOW_LOG;
  3162. };
  3163. };
  3164. admin_showinfo = {
  3165. _obj = cursortarget;
  3166. if(!isNull _obj)then
  3167. {
  3168. _pos = getPosATL _obj;
  3169. _type = typeOf _obj;
  3170.  
  3171. _slot = call {
  3172. if!(_obj getVariable['VEHICLE_SLOT',-1] isEqualTo -1)exitWith{_obj getVariable['VEHICLE_SLOT',-1]};
  3173. if!(_obj getVariable['STORAGE_SLOT',-1] isEqualTo -1)exitWith{_obj getVariable['STORAGE_SLOT',-1]};
  3174. if!(_obj getVariable['BUILD_SLOT',-1] isEqualTo -1)exitWith{_obj getVariable['BUILD_SLOT',-1]};
  3175. 'none'
  3176. };
  3177.  
  3178. {
  3179. _x call FN_SHOW_LOG;
  3180. diag_log _x;
  3181. } forEach
  3182. [
  3183. format['%1, slot: %2',_type,_slot],
  3184. format['WorldSpace: [%1,%2], @%3',getDir _obj,_pos,mapGridPosition _pos],
  3185. if(isPlayer _obj)then{format['%1(%2) - damage %3',name _obj,getPlayerUID _obj,damage _obj]}else{format['Damage %1',damage _obj]},
  3186. '--'
  3187. ];
  3188.  
  3189.  
  3190. if(_type == 'PlotPole_EPOCH')then
  3191. {
  3192. if(alive _obj)then
  3193. {
  3194. _owner = _obj getVariable['BUILD_OWNER', '-1'];
  3195. _log2 = format['Owner UID %1',_owner];
  3196. {
  3197. if(getPlayerUID _x == _owner)then
  3198. {
  3199. _log2 = format['Owner %1(%2) - %3m far away',name _x,_owner,floor(_obj distance _x)];
  3200. };
  3201. } forEach allPlayers;
  3202. _log2 call FN_SHOW_LOG;
  3203. diag_log _log2;
  3204. };
  3205. };
  3206. };
  3207. };
  3208. fnc_infiSTAR_A3cargod = {
  3209. if(isNil 'A3carGodRun')then
  3210. {
  3211. MY_VEHICLES = [];
  3212. A3carGodRun = [] spawn {
  3213. while {true} do
  3214. {
  3215. _obj = cameraOn;
  3216. if(local _obj)then
  3217. {
  3218. if(_obj isKindOf 'Man')then
  3219. {
  3220. if!(MY_VEHICLES isEqualTo [])then
  3221. {
  3222. {_x removeAllEventhandlers 'HandleDamage';_x allowDamage true;} forEach MY_VEHICLES;
  3223. MY_VEHICLES = [];
  3224. };
  3225. }
  3226. else
  3227. {
  3228. MY_VEHICLES pushBackUnique _obj;
  3229. _obj allowDamage false;
  3230. _obj removeAllEventhandlers 'HandleDamage';
  3231. _obj addEventHandler['HandleDamage',{false}];
  3232. };
  3233. };
  3234. uiSleep 1;
  3235. };
  3236. };
  3237.  
  3238. _log = 'Vehicle God Mode - Enabled';
  3239. _log call FN_SHOW_LOG;
  3240. }
  3241. else
  3242. {
  3243. terminate A3carGodRun;A3carGodRun=nil;
  3244. {_x removeAllEventhandlers 'HandleDamage';_x allowDamage true;} forEach MY_VEHICLES;
  3245.  
  3246. _log = 'Vehicle God Mode - Disabled';
  3247. _log call FN_SHOW_LOG;
  3248. };
  3249. };
  3250. fnc_LowerTerrain = {
  3251. if(isNil 'admin_terrain')then{admin_terrain = true;} else {admin_terrain = !admin_terrain};
  3252. if(admin_terrain)then{
  3253. setTerrainGrid 50;
  3254. _log = 'Terrain Low';
  3255. _log call FN_SHOW_LOG;
  3256. }
  3257. else
  3258. {
  3259. setTerrainGrid 25;
  3260. _log = 'Terrain Normal';
  3261. _log call FN_SHOW_LOG;
  3262. };
  3263. };
  3264. fnc_infiSTAR_A3UnlAmmo = {
  3265. if(isNil 'unlimAmmRun')then
  3266. {
  3267. _log = 'Unlimited Ammo ON';
  3268. _log call FN_SHOW_LOG;
  3269.  
  3270. unlimAmmRun = [] spawn {
  3271. while {true} do
  3272. {
  3273. if(local vehicle player)then{
  3274. vehicle player setAmmo [currentWeapon vehicle player, 1000000];
  3275. };
  3276. player setAmmo [primaryWeapon player, 1000000];
  3277. (vehicle player) setVehicleAmmo 1;
  3278. player setFatigue 0;
  3279. uiSleep 0.3;
  3280. };
  3281. };
  3282. }
  3283. else
  3284. {
  3285. _log = 'Unlimited Ammo OFF';
  3286. _log call FN_SHOW_LOG;
  3287.  
  3288. terminate unlimAmmRun;
  3289. unlimAmmRun = nil;
  3290. };
  3291. };
  3292. fnc_infiSTAR_A3noRecoil = {
  3293. if(isNil 'noRecoilRun')then
  3294. {
  3295. _log = 'No Recoil ON';
  3296. _log call FN_SHOW_LOG;
  3297.  
  3298. noRecoilRun = [] spawn {
  3299. while {true} do
  3300. {
  3301. (vehicle player) setUnitRecoilCoefficient 0;
  3302. player setUnitRecoilCoefficient 0;
  3303. player setCustomAimCoef 0;
  3304. player setFatigue 0;
  3305. uiSleep 2;
  3306. };
  3307. };
  3308. }
  3309. else
  3310. {
  3311. _log = 'No Recoil OFF';
  3312. _log call FN_SHOW_LOG;
  3313.  
  3314. terminate noRecoilRun;
  3315. noRecoilRun = nil;
  3316.  
  3317. (vehicle player) setUnitRecoilCoefficient 1;
  3318. player setUnitRecoilCoefficient 1;
  3319. };
  3320. };
  3321. fnc_infiSTAR_A3FF = {
  3322. if(isNil 'A3FFrun')then
  3323. {
  3324. _log = 'FastFire ON';
  3325. _log call FN_SHOW_LOG;
  3326.  
  3327. A3FFrun = [] spawn {
  3328. while {true} do
  3329. {
  3330. _muzzle = currentMuzzle player;
  3331. if(_muzzle isEqualType '')then{ (vehicle player) setWeaponReloadingTime [player, _muzzle, 0]; };
  3332. uiSleep 0.1;
  3333. };
  3334. };
  3335. }
  3336. else
  3337. {
  3338. _log = 'FastFire OFF';
  3339. _log call FN_SHOW_LOG;
  3340.  
  3341. terminate A3FFrun;
  3342. A3FFrun = nil;
  3343. };
  3344. };
  3345. fnc_infiSTARHIDE = {
  3346. if(isNil 'A3HIDErun')then{A3HIDErun = 0;};
  3347. if(A3HIDErun==0)then
  3348. {
  3349. A3HIDErun=1;
  3350. [2,player,A3HIDErun] call fnc_AdminReq;
  3351.  
  3352. _log = 'Stealth / Invisible ON';
  3353. _log call FN_SHOW_LOG;
  3354. }
  3355. else
  3356. {
  3357. A3HIDErun=0;
  3358. [2,player,A3HIDErun] call fnc_AdminReq;
  3359.  
  3360. _log = 'Stealth / Invisible OFF';
  3361. _log call FN_SHOW_LOG;
  3362. };
  3363. };
  3364. fnc_DisableAnnouncements = {
  3365. if(isNil 'A3DANNrun')then{A3DANNrun = 0;};
  3366. if(A3DANNrun==0)then
  3367. {
  3368. A3DANNrun=1;
  3369. AdminAnnounceDisabled = true;
  3370.  
  3371. _log = 'Disable Announces - ON';
  3372. _log call FN_SHOW_LOG;
  3373. }
  3374. else
  3375. {
  3376. A3DANNrun=0;
  3377. AdminAnnounceDisabled = nil;
  3378.  
  3379. _log = 'Disable Announces - OFF';
  3380. _log call FN_SHOW_LOG;
  3381. };
  3382. };
  3383. fnc_FreeRoamCam = {
  3384. if(isNil 'freeFlightCam')then
  3385. {
  3386. camDestroy freeFlightCam;
  3387. freeFlightCam = nil;
  3388. _getPos = player modelToWorld[0,3, 1.75];
  3389. freeFlightCam = 'camera' camCreate _getPos;
  3390. freeFlightCam setDir([_getPos, player] call BIS_fnc_dirTo);
  3391. freeFlightCam camCommand 'MANUAL ON';
  3392. freeFlightCam camCommand 'INERTIA OFF';
  3393. freeFlightCam cameraEffect['INTERNAL', 'BACK'];
  3394. showCinemaBorder false;
  3395. _log = 'Right Click To Cancel!';
  3396. _log call FN_SHOW_LOG;
  3397. }
  3398. else
  3399. {
  3400. camDestroy freeFlightCam;
  3401. freeFlightCam = nil;
  3402. };
  3403. };
  3404. fnc_BIS_FreeRoamCam = {
  3405. [] spawn (uinamespace getvariable 'bis_fnc_camera');
  3406. };
  3407. fnc_deleteVeh_selected = {
  3408. {player reveal _x;} foreach (player nearObjects 50);
  3409. _target = _this select 0;
  3410. if(typeName _target != 'OBJECT')then{_target = cursorTarget;};
  3411. if(isNull _target)then{_target = cursorObject;};
  3412. if(!isNull _target)then
  3413. {
  3414. _delete = (vehicle _target);
  3415.  
  3416. if(isNil 'DELETE_TARGET')then{DELETE_TARGET = objNull;};
  3417. if(str DELETE_TARGET != str _delete)exitWith
  3418. {
  3419. _type = typeOf _delete;
  3420. _displayName = gettext (configFile >> 'CfgVehicles' >> _type >> 'displayName');
  3421. _distance = round(cameraOn distance _delete);
  3422.  
  3423. _log = format['DELETE: %1 (%2) distance %3m? (press continue and delete again)',_displayName,_type,_distance];
  3424. _log call FN_SHOW_LOG;
  3425. DELETE_TARGET = _delete;
  3426. };
  3427.  
  3428. if(isNil 'ToDeleteArray')then{ToDeleteArray = [];};
  3429. if(_delete in ToDeleteArray)then
  3430. {
  3431. _log = format['%1 - IN DELETE QUEUE',_delete];
  3432. _log call FN_SHOW_LOG;
  3433. }
  3434. else
  3435. {
  3436. _netId = netId _delete;
  3437. if(_netId isEqualTo '0:0')then
  3438. {
  3439. deleteVehicle _delete;
  3440. }
  3441. else
  3442. {
  3443. ToDeleteArray pushBack _delete;
  3444. [-4,player,_delete] call fnc_AdminReq;
  3445. };
  3446.  
  3447. _log = format['Deleting %1 @%2..',typeOf _delete,mapGridPosition _delete];
  3448. if(getPlayerUID _target != '')then
  3449. {
  3450. _log = format['Deleting %1(%2) vehicle: %3 @%4..',name _target,getPlayerUID _target,typeOf _delete,mapGridPosition _delete];
  3451. };
  3452. _log call FN_SHOW_LOG;
  3453. _log call fnc_adminLog;
  3454. };
  3455. }
  3456. else
  3457. {
  3458. DELETE_TARGET = objNull;
  3459. };
  3460. };
  3461. CCG_fnc_adminClick = {
  3462. private ['_click'];
  3463. _click = _this select 0;
  3464. if(_click == '')exitWith{};
  3465. try {
  3466. switch (_click) do {
  3467. case 'BD: Set Center' : {
  3468. call CCG_fnc_bdSetCenter;
  3469. throw 'BASEDELETER: Set Center';
  3470. };
  3471. case 'BD: Set Radius' : {
  3472. call CCG_fnc_bdSetRadius;
  3473. throw 'BASEDELETER: Set Radius';
  3474. };
  3475. case 'BD: Cancel' : {
  3476. call CCG_fnc_bdCancel;
  3477. throw 'BASEDELETER: Cancel';
  3478. };
  3479. case 'BD: Delete' : {
  3480. call CCG_fnc_bdDelete;
  3481. throw 'BASEDELETER: Delete';
  3482. };
  3483. };
  3484. } catch {
  3485. _exception call FN_SHOW_LOG;
  3486. call fnc_FULLinit;
  3487. };
  3488. };
  3489. CCG_fnc_bdSetCenter = {
  3490. private ['_arrow'];
  3491. CCGbdCenter = getPosASL player;
  3492. _arrow = 'Sign_Arrow_F' createVehicleLocal [0,0,0];
  3493. _arrow setPosASL CCGbdCenter;
  3494. if(isNil 'CCGbdObjs')then{CCGbdObjs = [];};
  3495. CCGbdObjs pushBack _arrow;
  3496. };
  3497. CCG_fnc_bdSetRadius = {
  3498. private ['_arrow', '_pos', '_radius', '_angle', '_distance', '_count', '_step', '_count', '_step', '_objects'];
  3499. if(isNil 'CCGbdCenter')then{throw 'BASEDELETER: Center not set!';};
  3500. CCGbdRadius = [CCGbdCenter, getPosASL player] call BIS_fnc_distance2D;
  3501. _arrow = 'Sign_Arrow_F' createVehicleLocal [0,0,0];
  3502. _arrow setPosASL CCGbdCenter;
  3503. CCGbdObjs pushBack _arrow;
  3504. _angle = 0;
  3505. _count = round((2 * pi * CCGbdRadius) / 2);
  3506. if(_count == 0)then{throw 'BASEDELETER: Center and Radius position can not be the same!';};
  3507. for '_x' from 0 to _count do
  3508. {
  3509. private['_a', '_b', '_obj'];
  3510. _a = (CCGbdCenter select 0) + (sin(_angle)*CCGbdRadius);
  3511. _b = (CCGbdCenter select 1) + (cos(_angle)*CCGbdRadius);
  3512. _obj = 'Sign_Sphere100cm_F' createVehicleLocal [0,0,0];
  3513. _obj setPosASL [_a, _b, CCGbdCenter select 2];
  3514. CCGbdObjs pushBack _obj;
  3515. _angle = _angle + (360/_count);
  3516. };
  3517. for '_x' from 0 to _count do
  3518. {
  3519. private['_a', '_b', '_obj'];
  3520. _a = (CCGbdCenter select 0) + (sin(_angle)*CCGbdRadius);
  3521. _b = (CCGbdCenter select 2) + (cos(_angle)*CCGbdRadius);
  3522. _obj = 'Sign_Sphere100cm_F' createVehicleLocal [0,0,0];
  3523. _obj setPosASL [_a, CCGbdCenter select 1, _b];
  3524. CCGbdObjs pushBack _obj;
  3525. _angle = _angle + (360/_count);
  3526. };
  3527. for '_x' from 0 to _count do
  3528. {
  3529. private['_a', '_b', '_obj'];
  3530. _a = (CCGbdCenter select 1) + (sin(_angle)*CCGbdRadius);
  3531. _b = (CCGbdCenter select 2) + (cos(_angle)*CCGbdRadius);
  3532. _obj = 'Sign_Sphere100cm_F' createVehicleLocal [0,0,0];
  3533. _obj setPosASL [CCGbdCenter select 0, _a, _b];
  3534. CCGbdObjs pushBack _obj;
  3535. _angle = _angle + (360/_count);
  3536. };
  3537. };
  3538. CCG_fnc_bdGetObjectsToDelete = {
  3539. if(isNil 'CCGbdCenter')exitWith{[]};
  3540. if(isNil 'CCGbdRadius')exitWith{[]};
  3541. nearestObjects [ASLtoATL CCGbdCenter, ['ThingX', 'Constructions_static_F', 'Constructions_foundation_F', 'LockBox_EPOCH', 'PlotPole_EPOCH', 'StorageShelf_EPOCH'], CCGbdRadius]
  3542. };
  3543. CCG_fnc_bdDelete = {
  3544. private ['_objects'];
  3545. if(isNil 'CCGbdCenter')then{throw 'BASEDELETER: Center not set!';};
  3546. if(isNil 'CCGbdRadius')then{throw 'BASEDELETER: Radius not set!';};
  3547. _objects = call CCG_fnc_bdGetObjectsToDelete;
  3548. _objects spawn {
  3549. format['BASEDELETER: Deleting %1 objects. Please Wait...', count _this] call FN_SHOW_LOG;
  3550. {
  3551. format['BASEDELETER: Deleting %1 (%2/%3)', typeOf _x, _foreachindex + 1, count _this] call FN_SHOW_LOG;
  3552. [-4,player,_x] call fnc_AdminReq;
  3553. uiSleep 0.1;
  3554. } foreach _this;
  3555. format['BASEDELETER: Deleting complete.', count _this] call FN_SHOW_LOG;
  3556. };
  3557. call CCG_fnc_bdCancel;
  3558. };
  3559. CCG_fnc_bdCancel = {
  3560. CCGbdCenter = nil;
  3561. CCGbdRadius = nil;
  3562. {if(!isNull _x)then{deleteVehicle _x;};} foreach CCGbdObjs;
  3563. CCGbdObjs = [];
  3564. };
  3565. fnc_flipVeh = {
  3566. _target = _this select 0;
  3567. if(typeName _target != 'OBJECT')then
  3568. {
  3569. _target = cursorTarget;
  3570. };
  3571. if((!isNull _target) && {alive _target} && {_target isKindOf 'Landvehicle' || _target isKindOf 'Air' || _target isKindOf 'Ship'})then
  3572. {
  3573. if(local _target)then
  3574. {
  3575. _pos = getPos _target;
  3576. _pos set[2,(_pos select 2)+2];
  3577. _target setPos _pos;
  3578. _target setVectorUp [0,0,1];
  3579. }
  3580. else
  3581. {
  3582. [-3,player,_target] call fnc_AdminReq;
  3583. };
  3584.  
  3585. _log = format['Flipping %1 @%2..',typeOf _veh,mapGridPosition _target];
  3586. _log call FN_SHOW_LOG;
  3587. }
  3588. else
  3589. {
  3590. _log = 'invalid target';
  3591. if((!alive _target) && {_target isKindOf 'Landvehicle' || _target isKindOf 'Air' || _target isKindOf 'Ship'})then{_log = 'vehicle destroyed..';};
  3592. _log call FN_SHOW_LOG;
  3593. };
  3594. };
  3595. zeus_attack = {
  3596. _target = _this select 0;
  3597. _pos = screenToWorld [0.5,0.5];
  3598. _log = format['Zeus @%1',mapGridPosition _pos];
  3599. if(typeName _target != 'OBJECT')then
  3600. {
  3601. _target = cursorTarget;
  3602. };
  3603. if(!isNull _target)then
  3604. {
  3605. _pos = getPos _target;
  3606.  
  3607. _log = format['Zeus %1 @%2',typeOf _target,mapGridPosition _pos];
  3608. if(getPlayerUID _target != '')then
  3609. {
  3610. _log = format['Zeus %1(%2) @%3',name _target,getPlayerUID _target,mapGridPosition _pos];
  3611. };
  3612. };
  3613. _log call FN_SHOW_LOG;
  3614. _log call fnc_adminLog;
  3615. [-1,player,_pos] call fnc_AdminReq;
  3616. };
  3617. fnc_Kill_selected = {
  3618. _target = _this select 0;
  3619. if(typeName _target != 'OBJECT')then
  3620. {
  3621. _target = cursorTarget;
  3622. };
  3623. if(!isNull _target)then
  3624. {
  3625. if(alive _target)then
  3626. {
  3627. _log = format['Killing %1 @%2',typeOf _target,mapGridPosition _target];
  3628. if(getPlayerUID _target != '')then
  3629. {
  3630. _log = format['Killing %1(%2) @%3',name _target,getPlayerUID _target,mapGridPosition _target];
  3631. };
  3632. _log call FN_SHOW_LOG;
  3633. _log call fnc_adminLog;
  3634. [-2,player,_target] call fnc_AdminReq;
  3635. }
  3636. else
  3637. {
  3638. _log = 'target is dead';
  3639. _log call FN_SHOW_LOG;
  3640. };
  3641. }
  3642. else
  3643. {
  3644. _log = 'target does not exist';
  3645. _log call FN_SHOW_LOG;
  3646. };
  3647. };
  3648. fnc_createMinefield = {
  3649. _target = _this select 0;
  3650. if(typeName _target != 'OBJECT')then
  3651. {
  3652. _target = cursorTarget;
  3653. };
  3654. _pos = screenToWorld [0.5,0.5];
  3655. _log = format['MineField (around target) @%1',mapGridPosition _pos];
  3656. if(!isNull _target)then
  3657. {
  3658. _log = format['MineField (around target) %1 @%2',typeOf _target,mapGridPosition _target];
  3659. if(isPlayer _target)then
  3660. {
  3661. _log = format['MineField (around target) %1(%2) @%3',name _target,getPlayerUID _target,mapGridPosition _target];
  3662. };
  3663. _pos = ATLtoASL (_target modelToWorldVisual [0,0,0]);
  3664. };
  3665. _log call FN_SHOW_LOG;
  3666. _log call fnc_adminLog;
  3667.  
  3668. _mineFields =
  3669. [
  3670. [_pos,5]
  3671. ];
  3672. {
  3673. _center = _x select 0;
  3674. _radius = _x select 1;
  3675. for '_i' from 0 to 360 step (90 / _radius)*1 do
  3676. {
  3677. _location = [(_center select 0) + ((cos _i) * _radius), (_center select 1) + ((sin _i) * _radius),0];
  3678. _dir = ((_center select 0) - (_location select 0)) atan2 ((_center select 1) - (_location select 1));
  3679. _object = createVehicle ['APERSTripMine_Wire_Ammo', _location, [], 0, 'CAN_COLLIDE'];
  3680. _object setDir _dir;
  3681. };
  3682. } forEach _mineFields;
  3683. };
  3684. fnc_Explode_selected = {
  3685. _target = _this select 0;
  3686. if(typeName _target != 'OBJECT')then
  3687. {
  3688. _target = cursorTarget;
  3689. };
  3690. _pos = screenToWorld [0.5,0.5];
  3691. _log = format['Exploding @%1',mapGridPosition _pos];
  3692. if(!isNull _target)then
  3693. {
  3694. _log = format['Exploding %1 @%2',typeOf _target,mapGridPosition _target];
  3695. if(isPlayer _target)then
  3696. {
  3697. _log = format['Exploding %1(%2) @%3',name _target,getPlayerUID _target,mapGridPosition _target];
  3698. };
  3699.  
  3700. _eyepos = ASLToATL eyepos _target;if(surfaceIsWater _eyepos)then{_eyepos = eyepos _target;};
  3701. _pos = getPosVisual _target;
  3702. _pos set[2,_eyepos select 2];
  3703. };
  3704. _log call FN_SHOW_LOG;
  3705. _log call fnc_adminLog;
  3706. _bomb = 'HelicopterExploSmall' createVehicleLocal _pos;
  3707. };
  3708. fnc_Disconnect_selected = {
  3709. _target = _this select 0;
  3710. if(!isNull _target)then
  3711. {
  3712. _TUID = getPlayerUID _target;
  3713. if(_TUID != '')then
  3714. {
  3715. [-664,player,_TUID] call fnc_AdminReq;
  3716. _log = format['Disconnect %1(%2)',name _target,_TUID];
  3717. _log call FN_SHOW_LOG;
  3718. };
  3719. }
  3720. else
  3721. {
  3722. _log = 'target does not exist';
  3723. _log call FN_SHOW_LOG;
  3724. };
  3725. };
  3726. fnc_Kick_selected = {
  3727. _target = _this select 0;
  3728. _opt = _this select 1;
  3729. if(!isNull _target)then
  3730. {
  3731. _TUID = getPlayerUID _target;
  3732. if(_TUID != '')then
  3733. {
  3734. _TNAME = name _target;
  3735. [-665,player,_TUID,_TNAME] call fnc_AdminReq;
  3736. if(_opt == 1)then
  3737. {
  3738. _msg = format['%1(%2) has been KICKED by an Admin!',_TNAME,_TUID];
  3739. [7,player,toArray _msg] call fnc_AdminReq;
  3740. };
  3741.  
  3742. _log = format['Kicking %1(%2)',_TNAME,_TUID];
  3743. _log call FN_SHOW_LOG;
  3744. };
  3745. }
  3746. else
  3747. {
  3748. _log = 'target does not exist';
  3749. _log call FN_SHOW_LOG;
  3750. };
  3751. };
  3752. fnc_Ban_selected = {
  3753. _target = _this select 0;
  3754. _opt = _this select 1;
  3755. if(!isNull _target)then
  3756. {
  3757. _TUID = getPlayerUID _target;
  3758. if(_TUID != '')then
  3759. {
  3760. _TNAME = name _target;
  3761. [-666,player,_TUID,_TNAME] call fnc_AdminReq;
  3762. if(_opt == 1)then
  3763. {
  3764. _msg = format['%1(%2) has been BANNED by an Admin!',_TNAME,_TUID];
  3765. [7,player,toArray _msg] call fnc_AdminReq;
  3766. };
  3767.  
  3768. _log = format['Ban %1(%2)',_TNAME,_TUID];
  3769. _log call FN_SHOW_LOG;
  3770. };
  3771. }
  3772. else
  3773. {
  3774. _log = 'target does not exist';
  3775. _log call FN_SHOW_LOG;
  3776. };
  3777. };
  3778. fnc_ATTACH_TO = {
  3779. if(isNil'LastAttachedObject')then{LastAttachedObject=objNull;};
  3780. if(!isNull LastAttachedObject)exitWith{detach LastAttachedObject;LastAttachedObject = nil;};
  3781.  
  3782. _target = _this select 0;
  3783. if(typeName _target != 'OBJECT')then
  3784. {
  3785. _target = cursorTarget;
  3786. };
  3787. if(!isNull _target)then
  3788. {
  3789. _bbr = boundingBoxReal _target;
  3790. _p1 = _bbr select 0;
  3791. _p2 = _bbr select 1;
  3792. _offset = 5;
  3793. _maxWidth = abs ((_p2 select 0) - (_p1 select 0));
  3794. _maxLength = abs ((_p2 select 1) - (_p1 select 1));
  3795. if(_maxWidth > _offset)then{_offset = _maxWidth;};
  3796. if(_maxLength > _offset)then{_offset = _maxLength;};
  3797.  
  3798. _bbr = boundingBoxReal vehicle player;
  3799. _p1 = _bbr select 0;
  3800. _p2 = _bbr select 1;
  3801. _maxHeight = abs ((_p2 select 2) - (_p1 select 2));
  3802.  
  3803. [5,player,_target,_offset,_maxHeight] call fnc_AdminReq;
  3804. LastAttachedObject = _target;
  3805.  
  3806. _log = format['Attaching %1 to player',typeOf _target];
  3807. _log call FN_SHOW_LOG;
  3808. }
  3809. else
  3810. {
  3811. _log = 'target does not exist';
  3812. _log call FN_SHOW_LOG;
  3813. };
  3814. };
  3815. fnc_spawn_EVENT = {
  3816. _target = _this select 0;
  3817. _EVENT = _this select 1;
  3818.  
  3819. if(infiSTAR_MOD != 'Epoch')exitWith{
  3820. _log = 'Epoch Only!';
  3821. _log call FN_SHOW_LOG;
  3822. };
  3823.  
  3824. if(!isNull _target)then
  3825. {
  3826. [4,player,_target,_EVENT] call fnc_AdminReq;
  3827.  
  3828. _log = format['%1..',_EVENT];
  3829. _log call FN_SHOW_LOG;
  3830. }
  3831. else
  3832. {
  3833. _log = 'target does not exist';
  3834. _log call FN_SHOW_LOG;
  3835. };
  3836. };
  3837. fnc_ReviveTarget = {
  3838. _target = _this select 0;
  3839. if(isNil'_target')then
  3840. {
  3841. _target = cursorTarget;
  3842. };
  3843. if(isNull _target)exitWith
  3844. {
  3845. _log = 'Can not revive: target does not exist!';
  3846. _log call FN_SHOW_LOG;
  3847. };
  3848. if!(isPlayer _target)exitWith
  3849. {
  3850. _log = 'Can not revive: target not a player!';
  3851. _log call FN_SHOW_LOG;
  3852. };
  3853. if((getPlayerUID _target) isEqualTo '')exitWith
  3854. {
  3855. _log = 'Can not revive: player left target body already..!';
  3856. _log call FN_SHOW_LOG;
  3857. };
  3858. _log = format['Revived %1(%2) @%3',name _target,getPlayerUID _target,mapGridPosition _target];
  3859. _log call FN_SHOW_LOG;
  3860.  
  3861.  
  3862. closeDialog 0;
  3863. if(infiSTAR_MOD == 'AltisLife')then
  3864. {
  3865. _target setVariable ['Revive',false,true];
  3866. [profileName] remoteExec ['life_fnc_revived',_target];
  3867. }
  3868. else
  3869. {
  3870. [8,player,_target] call fnc_AdminReq;
  3871. };
  3872. };
  3873. fnc_HealTarget = {
  3874. _target = _this select 0;
  3875. if(typeName _target != 'OBJECT')then
  3876. {
  3877. _target = cursorTarget;
  3878. };
  3879. if(!isNull _target)then
  3880. {
  3881. _log = format['Healed %1 @%2',typeOf _target,mapGridPosition _target];
  3882. if(getPlayerUID _target != '')then
  3883. {
  3884. _log = format['Healed %1(%2) @%3',name _target,getPlayerUID _target,mapGridPosition _target];
  3885. };
  3886. _log call FN_SHOW_LOG;
  3887. [9,player,_target] call fnc_AdminReq;
  3888. }
  3889. else
  3890. {
  3891. _log = 'target does not exist';
  3892. _log call FN_SHOW_LOG;
  3893. };
  3894. };
  3895. fnc_RepairTarget = {
  3896. _target = _this select 0;
  3897. if(typeName _target != 'OBJECT')then
  3898. {
  3899. _target = cursorTarget;
  3900. };
  3901. if(!isNull _target)then
  3902. {
  3903. _log = format['%1 @%2 - Repaired & Refueled',typeOf _target,mapGridPosition _target];
  3904. if(getPlayerUID _target != '')then
  3905. {
  3906. _log = format['%1 @%2 - Repaired & Refueled @%3',name _target,getPlayerUID _target,mapGridPosition _target];
  3907. };
  3908. _log call FN_SHOW_LOG;
  3909.  
  3910. [9,player,vehicle _target] call fnc_AdminReq;
  3911. (vehicle _target) setFuel 1;
  3912. }
  3913. else
  3914. {
  3915. _log = 'target does not exist';
  3916. _log call FN_SHOW_LOG;
  3917. };
  3918. };
  3919. infiSTAR_A3Heal = {
  3920. if(!isNil 'life_cash')then{life_thirst = 100;life_hunger = 100;};
  3921. if(infiSTAR_MOD == 'Epoch')then{
  3922. setPlayerRespawnTime 5;
  3923. };
  3924. [9,player,cameraOn] call fnc_AdminReq;
  3925. _log = format['Healed: %1',name cameraOn];
  3926. _log call FN_SHOW_LOG;
  3927. };
  3928. infiSTAR_A3RestoreNear = {
  3929. if(!isNil 'life_cash')then{life_thirst = 100;life_hunger = 100;};
  3930.  
  3931. _done = [];
  3932. {
  3933. _crewandobject = [_x];
  3934. _crewandobject append (crew _x);
  3935.  
  3936. {
  3937. _id = _done pushBackUnique _x;
  3938. if(_id > -1)then
  3939. {
  3940. [9,player,_x] call fnc_AdminReq;
  3941. };
  3942. } forEach _crewandobject;
  3943. } forEach (cameraOn nearEntities ['AllVehicles',15]);
  3944.  
  3945. _log = 'Restored Near';
  3946. _log call FN_SHOW_LOG;
  3947. };
  3948. infiSTAR_A3Togglelock = {
  3949. private ['_veh'];
  3950. {player reveal _x;} foreach (position player nearObjects 50);
  3951. _veh = vehicle player;
  3952. if(vehicle player == player)then
  3953. {
  3954. _veh = cursorTarget;
  3955. };
  3956. if(isNull _veh)exitWith
  3957. {
  3958. _log = 'target does not exist';
  3959. _log call FN_SHOW_LOG;
  3960. };
  3961. if(!alive _veh)exitWith
  3962. {
  3963. _log = 'target is destroyed ';
  3964. _log call FN_SHOW_LOG;
  3965. };
  3966. if(_veh isKindOf 'AllVehicles')exitWith{
  3967. if((player distance _veh < 12) || ((_veh == vehicle player) && (vehicle player != player)))then
  3968. {
  3969. _locked = locked _veh;
  3970. if(_locked isEqualTo 2)then
  3971. {
  3972. if(infiSTAR_MOD == 'AltisLife')then
  3973. {
  3974. _veh lock 0;
  3975. [_veh,0] remoteExec ['life_fnc_lockVehicle',_veh];
  3976. [_veh,'unlockCarSound'] remoteExec ['life_fnc_say3D',0];
  3977. }
  3978. else
  3979. {
  3980. _veh lock false;
  3981. [10,player,_veh,false] call fnc_AdminReq;
  3982. };
  3983. _log = format['unlocked - [%1]',typeOf _veh];
  3984. _log call FN_SHOW_LOG;
  3985. _log call fnc_adminLog;
  3986. }
  3987. else
  3988. {
  3989. if(infiSTAR_MOD == 'AltisLife')then
  3990. {
  3991. _veh lock 2;
  3992. [_veh,2] remoteExec ['life_fnc_lockVehicle',_veh];
  3993. [_veh,'lockCarSound'] remoteExec ['life_fnc_say3D',0];
  3994. }
  3995. else
  3996. {
  3997. _veh lock true;
  3998. [10,player,_veh,true] call fnc_AdminReq;
  3999. };
  4000. _log = format['locked - [%1]',typeOf _veh];
  4001. _log call FN_SHOW_LOG;
  4002. _log call fnc_adminLog;
  4003. };
  4004. };
  4005. };
  4006.  
  4007. {
  4008. _animationPhase = cursorTarget animationPhase _x;
  4009. cursorTarget animate [_x,if(_animationPhase > 0)then{0}else{1}];
  4010. } forEach ['DoorRotation','DoorRotationLeft','DoorRotationRight','open_left','open_right','lock_cGarage','Open_Door','lock_Door','raise','Open_top','Open_bot'];
  4011. };
  4012. infiSTAR_A3addAmmo = {
  4013. if(isNil'SELECTED_TARGET_PLAYER')then{SELECTED_TARGET_PLAYER=player;};
  4014. if(isNull SELECTED_TARGET_PLAYER)then{SELECTED_TARGET_PLAYER=player;};
  4015. if(!alive SELECTED_TARGET_PLAYER)then{SELECTED_TARGET_PLAYER=player;};
  4016. _log = '';
  4017. _veh = vehicle SELECTED_TARGET_PLAYER;
  4018. if(_veh == SELECTED_TARGET_PLAYER)then
  4019. {
  4020. _muzzle = currentMuzzle SELECTED_TARGET_PLAYER;
  4021. _magArray = getArray(configFile >> 'CfgWeapons' >> _muzzle >> 'magazines');
  4022. if((((toLower _muzzle) find '_gl' != -1) && {((toLower _muzzle) find '_glock' == -1)})||((toLower _muzzle) find 'm203' != -1))then
  4023. {
  4024. _pewpews = [];
  4025. {
  4026.  
  4027. if(((toLower _x) select [0,4] in ['1rnd','3rnd'])||((toLower _x) find 'ugl_' != -1))then
  4028. {
  4029. _pewpews pushBack _x;
  4030. };
  4031. } forEach ALL_MAGS_TO_SEARCH_C;
  4032. _magArray append _pewpews;
  4033. };
  4034. if(_magArray isEqualTo [])exitWith{};
  4035. [] call fnc_FULLinit;
  4036. fillmainstate = 6;
  4037. disableSerialization;
  4038. _ctrl = (findDisplay MAIN_DISPLAY_ID) displayCtrl RIGHT_CTRL_ID;
  4039. lbclear _ctrl;
  4040. _ctrl lbAdd '==== Magazines ====';
  4041. {
  4042. _ctrl lbAdd format['%1 (%2)',getText(configFile >> 'CfgMagazines' >> _x >> 'displayName'),_x];
  4043. _x call fnc_addpic;
  4044. _ctrl lbSetData [(lbsize _ctrl)-1,_x];
  4045. } forEach _magArray;
  4046. [] call fnc_colorizeMain;
  4047. for '_i' from 0 to 10 do {_ctrl lbAdd '';};
  4048. }
  4049. else
  4050. {
  4051. _log = format['%1 added Ammo to %2',profileName,typeOf _veh];
  4052. {_wep = _x;{_veh addmagazine _x;} forEach (getArray (configFile >> 'CfgWeapons' >> _wep >> 'magazines'));} forEach (weapons _veh);
  4053. };
  4054. _log call FN_SHOW_LOG;
  4055. _log call fnc_adminLog;
  4056. };
  4057. infiSTAR_A3Invulnerability = {
  4058. fnc_A3_stopGod =
  4059. {
  4060. player removeAllEventhandlers 'HandleDamage';
  4061. player removeAllEventhandlers 'Hit';
  4062. player removeAllEventhandlers 'Dammaged';
  4063. player removeAllEventhandlers 'Damaged';
  4064. player allowDamage true;
  4065. if((infiSTAR_MOD == 'AltisLife') && (!isNil 'life_fnc_HandleDamage'))then
  4066. {
  4067. player addEventHandler['HandleDamage',{_this call life_fnc_HandleDamage;}];
  4068. }
  4069. else
  4070. {
  4071. player addEventHandler ['HandleDamage',{}];
  4072. };
  4073. if(!isNil 'olife_fnc_tazed')then{life_fnc_tazed = olife_fnc_tazed;};
  4074. };
  4075. if(isNil 'infiSTAR_A3GodRun')then{infiSTAR_A3GodRun = 0;};
  4076. if(infiSTAR_A3GodRun == 0)then
  4077. {
  4078. infiSTAR_A3GodRun = 1;
  4079.  
  4080. if(!isNil 'life_fnc_tazed')then
  4081. {
  4082. if(isNil 'olife_fnc_tazed')then
  4083. {
  4084. olife_fnc_tazed = life_fnc_tazed;
  4085. };
  4086. life_fnc_tazed = {};
  4087. };
  4088. infiSTAR_A3InvulnerabilityLoop = [] spawn {
  4089. while {1==1} do
  4090. {
  4091. if(infiSTAR_A3GodRun == 0)exitWith{call fnc_A3_stopGod;};
  4092. player setFatigue 0;
  4093. player allowDamage false;
  4094. player removeAllEventhandlers 'HandleDamage';
  4095. player removeAllEventhandlers 'Dammaged';
  4096. player removeAllEventhandlers 'Damaged';
  4097. player removeAllEventhandlers 'Hit';
  4098.  
  4099. player addEventhandler ['HandleDamage', {false}];
  4100. player addEventHandler ['Dammaged',{false}];
  4101. player addEventHandler ['Damaged',{false}];
  4102. player addEventHandler ['Hit',{false}];
  4103.  
  4104. if(!isNil 'life_thirst')then{
  4105. life_thirst = 100;
  4106. life_hunger = 100;
  4107. };
  4108.  
  4109. if(infiSTAR_MOD == 'Epoch')then{
  4110. EPOCH_playerTemp = 98.6;
  4111. EPOCH_playerBloodP = 100;
  4112. EPOCH_playerHunger = 5000;
  4113. EPOCH_playerThirst = 2500;
  4114. EPOCH_playerEnergy = 2500;
  4115. EPOCH_playerImmunity = 150;
  4116. EPOCH_playerStamina = 2500;
  4117. EPOCH_playerToxicity = 0;
  4118. EPOCH_playerWet = 0;
  4119. EPOCH_playerSoiled = 0;
  4120. player setBleedingRemaining 0;
  4121. player setOxygenRemaining 1;
  4122. };
  4123. uiSleep 1;
  4124. };
  4125. call fnc_A3_stopGod;
  4126. };
  4127. _log = 'God Mode Enabled';
  4128. _log call FN_SHOW_LOG;
  4129. }
  4130. else
  4131. {
  4132. infiSTAR_A3GodRun = 0;
  4133. call fnc_A3_stopGod;
  4134. terminate infiSTAR_A3InvulnerabilityLoop;
  4135. call fnc_A3_stopGod;
  4136. _log = 'God Mode Disabled';
  4137. _log call FN_SHOW_LOG;
  4138. };
  4139. };
  4140. fnc_Epochs_ESP = {
  4141. _enable = false;
  4142. if(_this)then
  4143. {
  4144. EPOCH_ESP_PLAYER = !EPOCH_ESP_PLAYER;
  4145. if(EPOCH_ESP_PLAYER)then
  4146. {
  4147. _enable = true
  4148. };
  4149. }
  4150. else
  4151. {
  4152. EPOCH_ESP_VEHICLES = !EPOCH_ESP_VEHICLES;
  4153. if(EPOCH_ESP_VEHICLES)then
  4154. {
  4155. _enable = true
  4156. };
  4157. };
  4158. if(EPOCH_ESP_VEHICLEPLAYER isEqualTo [] && _enable)then
  4159. {
  4160. waitUntil {EPOCH_ESP_VEHICLEPLAYER = ((getPos cameraOn) nearEntities [['Epoch_Male_F', 'Epoch_Female_F', 'LandVehicle', 'Ship', 'Air', 'Tank'], viewDistance max 1000 min 2500]) - [vehicle player];
  4161. uiSleep 1;
  4162. !EPOCH_ESP_PLAYER && !EPOCH_ESP_VEHICLES};
  4163. EPOCH_ESP_VEHICLEPLAYER = [];
  4164. };
  4165. };
  4166. fn_xgetname = {
  4167. if(alive _x)then{name _x}else{_x getVariable['playerName','unknown']}
  4168. };
  4169. fn_xgetclr = {
  4170. _side = side _this;
  4171. if(SELECTED_TARGET_PLAYER isEqualTo _this)exitWith{[1,0.7,0.15,_alpha]};
  4172.  
  4173. _uid = getPlayerUID _this;
  4174. if((_uid in infiSTAR_ADMINS)&&!(_uid in infiSTAR_DEVS))exitWith{[0,1,0,1]};
  4175. if((_uid in infiSTAR_DEVS)&&(MYPUIDinfiESP in infiSTAR_DEVS))exitWith{[0,1,0,1]};
  4176. if(_uid == MYPUIDinfiESP)exitWith{[0,1,0,1]};
  4177.  
  4178. if(_side == civilian)exitWith{[0.67,0.97,0.97,_alpha]};
  4179. if(_side == west)exitWith{[0.047,0.502,1,_alpha]};
  4180. if(_side == resistance)exitWith{[0,0.65,0,_alpha]};
  4181. if(_side == east)exitWith{[1,0.17,0.17,_alpha]};
  4182. [1,1,1,_alpha]
  4183. };
  4184. fnc_draw3dhandlerPLAYER1 = ""
  4185. if(!isNull cameraOn)then
  4186. {
  4187. {
  4188. if(isPlayer _x)then
  4189. {
  4190. _shown = [];
  4191. if((crew (vehicle cameraOn)) isEqualTo (crew cameraOn))then{_shown = [vehicle cameraOn];};
  4192.  
  4193. _veh = vehicle _x;
  4194. _id = _shown pushBackUnique _veh;
  4195. if!(_id isEqualTo -1)then
  4196. {
  4197. _distance = round(cameraOn distance _x);
  4198. _fontSize = 0.024;
  4199. _IconSize = 0.5;
  4200. _alpha = 1;
  4201. if(_veh isKindOf 'Man')then
  4202. {
  4203. _curwep = currentWeapon _x;
  4204. _hp = round((damage _x - 1) * -100);
  4205. _txt = format['unarmed - %1HP',_hp];
  4206.  
  4207. _pos = _x modelToWorldVisual (_x selectionPosition 'head');
  4208.  
  4209. if(_curwep != '')then
  4210. {
  4211. _txt = format[
  4212. '%1 - [%2/%3] - %4HP',
  4213. gettext(configFile >> 'CfgWeapons' >> _curwep >> 'displayName'),
  4214. _x ammo _curwep,
  4215. getNumber(configFile >> 'CfgMagazines' >> currentMagazine _x >> 'count'),
  4216. _hp
  4217. ];
  4218. };
  4219.  
  4220. _txt = '';
  4221. _clr = _x call fn_xgetclr;
  4222. _dir = [_x,cameraOn] call BIS_fnc_relativeDirTo;
  4223. drawIcon3D['',_clr,_pos,_IconSize,1.5,0,_txt,1,_fontSize,'PuristaBold'];
  4224.  
  4225. _txt = format['%1 - %2m',call fn_xgetname,_distance];
  4226. drawIcon3D['iconManMedic',_clr,_pos,_IconSize,_IconSize,if(_x isEqualTo cameraOn)then{_dir}else{_dir+180},_txt,1,_fontSize,'PuristaBold'];
  4227. }
  4228. else
  4229. {
  4230. _class = typeOf _veh;
  4231. _speed = round(speed _veh*100)/100;
  4232. _maxSpeed = getNumber(configFile >> 'CfgVehicles' >> _class >> 'maxSpeed');
  4233. _typename = gettext(configFile >> 'CfgVehicles' >> _class >> 'displayName');
  4234.  
  4235. _pos = _x modelToWorldVisual [0,0,0];
  4236. _crew = crew _veh;
  4237. _cnt = count _crew;
  4238. _clr = [1,1,1,_alpha];
  4239. drawIcon3D['\A3\ui_f\data\map\Markers\Military\dot_ca.paa',_clr,_pos,_IconSize,_IconSize,0,'',1];
  4240. _pos = _x modelToWorldVisual [0,0,3];
  4241.  
  4242. if(_cnt > 0)then
  4243. {
  4244. _num = _cnt * -1;
  4245. {
  4246. _height = _num + _forEachIndex;
  4247. _role = assignedVehicleRole _x;
  4248. if(_role isEqualTo [])then{_role = 'Passenger';}else{_role = _role select 0;};
  4249. _txt = format['%1 - %2 %3HP',_role,call fn_xgetname,round((1-(damage _x))*100)];
  4250. _clr = _x call fn_xgetclr;
  4251. drawIcon3D['',_clr,_pos,.5,_height * 0.8,0,_txt,1,_fontSize,'PuristaBold'];
  4252. } forEach _crew;
  4253. };
  4254.  
  4255. _fuel = fuel _veh;
  4256. _fuelCapacity = getNumber(configFile >> 'CfgVehicles' >> _class >> 'fuelCapacity');
  4257. _realFuel = _fuelCapacity * _fuel;
  4258.  
  4259. _txt = format['%1 - %2L - %3/%4km/h - %5m',_typename,round(_realFuel*100)/100,_speed,_maxSpeed,_distance];
  4260. drawIcon3D['',_clr,_pos,.5,0,0,_txt,1,_fontSize,'PuristaBold'];
  4261. };
  4262. };
  4263. };
  4264. } forEach ((cameraOn nearEntities[['Man', 'LandVehicle', 'Ship', 'Air'], 1800]) - [cameraOn, vehicle cameraOn]);
  4265. };
  4266. "";
  4267. fnc_draw3dhandlerPLAYER2 = ""
  4268. _shown = [];
  4269. {
  4270. if(!isNull _x)then
  4271. {
  4272. _veh = vehicle _x;
  4273. if(_veh in _shown)exitWith{};
  4274. _shown pushBack _veh;
  4275. if(_veh == vehicle cameraOn)exitWith{};
  4276. if(alive _x)then
  4277. {
  4278. _PUIDX = getPlayerUID _x;
  4279. if(_PUIDX != '')then
  4280. {
  4281. _distance = round(cameraOn distance _x);
  4282. if(_distance > 1600)exitWith{};
  4283. _name = _x getVariable['playerName',name _x];
  4284. _txt = format['%1 (%2m) %3HP',_name,_distance,floor((1-(damage _x))*100)];
  4285. _clr = [1,0.17,0.17,1];
  4286. _crew = crew _veh;
  4287. if(_x != _veh)then
  4288. {
  4289. _clr = [0.2,0.2,0.9,1];
  4290. _type = typeOf _veh;
  4291. if(_type isKindOf 'Air')then{_clr = [0.7,0.2,0.7,1];};
  4292. _typename = gettext (configFile >> 'CfgVehicles' >> _type >> 'displayName');
  4293.  
  4294. _names = '';
  4295. {
  4296. if(_forEachIndex == 0)then
  4297. {
  4298. _names = _names + (_x getVariable['playerName',name _x]);
  4299. }
  4300. else
  4301. {
  4302. if(alive _x)then{_names = _names + format[', %1',_x getVariable['playerName',name _x]];};
  4303. };
  4304. } forEach _crew;
  4305. _txt = format['%1 - %2 (%3m)',_names,_typename,_distance];
  4306. };
  4307.  
  4308. if(((_PUIDX in infiSTAR_ADMINS) && !(_PUIDX in infiSTAR_DEVS)) || ((_PUIDX in infiSTAR_DEVS) && (MYPUIDinfiESP in infiSTAR_DEVS)) || (_PUIDX == MYPUIDinfiESP))then{_clr = [0,1,0,1];};
  4309. if(infiSTAR_MOD != 'Epoch')then{_txt = _txt+' '+str side _x};
  4310. if(SELECTED_TARGET_PLAYER in _crew)then{_clr = [1,0.7,0.15,1];};
  4311.  
  4312. _grpx = group _x;
  4313. if(!isNull _grpx)then
  4314. {
  4315. _alive = {alive _x} count units _grpx;
  4316. if(_alive > 1)then
  4317. {
  4318. _id=allGroups find _grpx;
  4319. _txt = _txt + format[' GRP:%1 PLR:%2',_id,_alive];
  4320. };
  4321. };
  4322.  
  4323. _pos = ASLToATL eyepos _x;
  4324. if(surfaceIsWater _pos)then{_pos = eyepos _x;};
  4325. drawIcon3D['',_clr,_pos,.1,.1,0,_txt,1,.035];
  4326. };
  4327. };
  4328. };
  4329. } forEach allPlayers;
  4330. "";
  4331. fnc_draw3dhandlerAI = ""
  4332. if(!isNull cameraOn)then
  4333. {
  4334. _maxD = 300;
  4335. ALLVEHICLES_OBJECTS_300m = cameraOn nearEntities ['Allvehicles',_maxD];
  4336. {
  4337. if(!isNull _x)then
  4338. {
  4339. if(alive _x)then
  4340. {
  4341. _PUIDX = getPlayerUID _x;
  4342. if(_PUIDX == '')then
  4343. {
  4344. _distance = cameraOn distance _x;
  4345.  
  4346. _veh = vehicle _x;
  4347. _type = typeOf _veh;
  4348. if((_x isKindOf 'Man')&&!(_x isKindOf 'Animal_Base_F'))then
  4349. {
  4350. _name = 'AI';
  4351. if((_x isKindOf 'Epoch_Char_base_F') || (_x isKindOf 'Epoch_Sapper_base_F'))then{_name = _type;};
  4352. _txt = format['%1 %2m',_name,round _distance];
  4353. if(infiSTAR_MOD != 'Epoch')then{_txt = _txt+' '+str side _x};
  4354. _clr = [1,1,1,0.7];
  4355.  
  4356. _pos = ASLToATL eyepos _x;
  4357. if(surfaceIsWater _pos)then{_pos = eyepos _x;};
  4358. drawIcon3D['',_clr,_pos,.1,.1,0,_txt,1,.032];
  4359. };
  4360. };
  4361. };
  4362. };
  4363. } forEach ALLVEHICLES_OBJECTS_300m;
  4364. };
  4365. "";
  4366. fnc_draw3dhandlerDEAD = ""
  4367. {
  4368. if(!isNull _x)then
  4369. {
  4370. if!(getPlayerUID _x isEqualTo '')exitWith{};
  4371.  
  4372. _distance = cameraOn distance _x;
  4373. if(_distance < 500)then
  4374. {
  4375. _name = _x getVariable['playerName',''];
  4376. if(_name != '')then
  4377. {
  4378. _clr = [1,1,1,0.7];
  4379. _txt = format['%1 %2m',_name,round _distance];
  4380. _pos = _x modelToWorld [0,0,1];
  4381. drawIcon3D['',_clr,_pos,0,0,45,_txt,0,.032];
  4382. };
  4383. };
  4384. };
  4385. } forEach allDeadMen;
  4386. "";
  4387. fnc_draw3dhandlerLOCKBOX = ""
  4388. LockBox_EPOCH_OBJECTS = nearestObjects[cameraOn, ['LockBox_EPOCH'], 150];
  4389. {
  4390. if(!isNull _x)then
  4391. {
  4392. _distance = round(cameraOn distance _x);
  4393. _clr = [0.02,0.96,0.54,1];
  4394. _sizealter = _distance / 100000;
  4395. _size = 0.032 - _sizealter;
  4396. _pos = _x modelToWorld [0,0,0.2];
  4397. drawIcon3D['',_clr,_pos,0,0,45,format['LockBox %1m',_distance],0,_size];
  4398. };
  4399. } forEach LockBox_EPOCH_OBJECTS;
  4400. "";
  4401. fnc_draw3dhandlerSHELF = ""
  4402. StorageShelf_EPOCH_OBJECTS = nearestObjects[cameraOn, ['StorageShelf_EPOCH'], 150];
  4403. {
  4404. if(!isNull _x)then
  4405. {
  4406. _distance = round(cameraOn distance _x);
  4407. _clr = [0.23,1,0.87,1];
  4408. _sizealter = _distance / 100000;
  4409. _size = 0.032 - _sizealter;
  4410. _pos = _x modelToWorld [0,0,1];
  4411. drawIcon3D['',_clr,_pos,0,0,45,format['Shelf %1m',_distance],0,_size];
  4412. };
  4413. } forEach StorageShelf_EPOCH_OBJECTS;
  4414. "";
  4415. fnc_draw3dhandlerPLOTPOLE = ""
  4416. PlotPole_EPOCH_OBJECTS = nearestObjects[cameraOn, ['PlotPole_EPOCH'], 150];
  4417. {
  4418. if(!isNull _x)then
  4419. {
  4420. _distance = round(cameraOn distance _x);
  4421. _clr = [0.99,0.44,0.15,1];
  4422. _sizealter = _distance / 100000;
  4423. _size = 0.032 - _sizealter;
  4424. _owner = _x getVariable['BUILD_OWNER', '-1'];
  4425. {
  4426. if(getPlayerUID _x == _owner)then
  4427. {
  4428. _owner = format['%1(%2)',name _x,_owner];
  4429. };
  4430. } forEach allPlayers;
  4431. _pos = _x modelToWorld [0,0,1];
  4432. drawIcon3D['',_clr,_pos,.3,.3,45,format['PlotPole %1m (%2)',_distance,_owner],0,_size];
  4433. };
  4434. } forEach PlotPole_EPOCH_OBJECTS;
  4435. "";
  4436. fnc_call_single_esps = {
  4437. if(!isNil'infiSTAREspEHVAR')then{
  4438. removeMissionEventHandler ['Draw3D',infiSTAREspEHVAR];
  4439. infiSTAREspEHVAR=nil;
  4440. };
  4441. _string = '';
  4442. if(!isNil 'fnc_infiESP_statePlayer1')then
  4443. {
  4444. _string = _string + fnc_draw3dhandlerPLAYER1;
  4445. };
  4446. if(!isNil 'fnc_infiESP_statePlayer2')then
  4447. {
  4448. _string = _string + fnc_draw3dhandlerPLAYER2;
  4449. };
  4450. if(!isNil 'fnc_infiESP_stateAI')then
  4451. {
  4452. _string = _string + fnc_draw3dhandlerAI;
  4453. };
  4454. if(!isNil 'fnc_infiESP_stateDEAD')then
  4455. {
  4456. _string = _string + fnc_draw3dhandlerDEAD;
  4457. };
  4458. if(!isNil 'fnc_infiESP_stateLOCKBOX')then
  4459. {
  4460. _string = _string + fnc_draw3dhandlerLOCKBOX;
  4461. };
  4462. if(!isNil 'fnc_infiESP_stateSHELF')then
  4463. {
  4464. _string = _string + fnc_draw3dhandlerSHELF;
  4465. };
  4466. if(!isNil 'fnc_infiESP_statePLOTPOLE')then
  4467. {
  4468. _string = _string + fnc_draw3dhandlerPLOTPOLE;
  4469. };
  4470. if(_string != '')then
  4471. {
  4472. _string = ('if(!isNull findDisplay 49)exitWith{true};'+_string);
  4473. infiSTAREspEHVAR = addMissionEventHandler ['Draw3D',_string];
  4474. };
  4475. };
  4476. infiSTAR_fnc_infiESP_player1 = {
  4477. if(isNil 'fnc_infiESP_statePlayer1')then{
  4478. fnc_infiESP_statePlayer1 = 1;_log = 'infiSTAR Player ESP 1 - ON (ESP DECREASES FPS A LOT!)';_log call FN_SHOW_LOG;
  4479. } else {
  4480. fnc_infiESP_statePlayer1 = nil;_log = 'infiSTAR Player ESP 1 - OFF';_log call FN_SHOW_LOG;
  4481. };
  4482. call fnc_call_single_esps;
  4483. };
  4484. infiSTAR_fnc_infiESP_player2 = {
  4485. if(isNil 'fnc_infiESP_statePlayer2')then{
  4486. fnc_infiESP_statePlayer2 = 1;_log = 'infiSTAR Player ESP 2 - ON (ESP DECREASES FPS A LOT!)';_log call FN_SHOW_LOG;
  4487. } else {
  4488. fnc_infiESP_statePlayer2 = nil;_log = 'infiSTAR Player ESP 2 - OFF';_log call FN_SHOW_LOG;
  4489. };
  4490. call fnc_call_single_esps;
  4491. };
  4492. infiSTAR_fnc_infiESP_AI = {
  4493. if(isNil 'fnc_infiESP_stateAI')then{
  4494. fnc_infiESP_stateAI = 1;_log = 'infiSTAR AI ESP - ON (ESP DECREASES FPS A LOT!)';_log call FN_SHOW_LOG;
  4495. } else {
  4496. fnc_infiESP_stateAI = nil;_log = 'infiSTAR AI ESP - OFF';_log call FN_SHOW_LOG;
  4497. };
  4498. call fnc_call_single_esps;
  4499. };
  4500. infiSTAR_fnc_infiESP_DEAD = {
  4501. if(isNil 'fnc_infiESP_stateDEAD')then{
  4502. fnc_infiESP_stateDEAD = 1;_log = 'infiSTAR DEAD ESP - ON (ESP DECREASES FPS A LOT!)';_log call FN_SHOW_LOG;
  4503. } else {
  4504. fnc_infiESP_stateDEAD = nil;_log = 'infiSTAR DEAD ESP - OFF';_log call FN_SHOW_LOG;
  4505. };
  4506. call fnc_call_single_esps;
  4507. };
  4508. infiSTAR_fnc_infiESP_LOCKBOX = {
  4509. if(isNil 'fnc_infiESP_stateLOCKBOX')then{
  4510. fnc_infiESP_stateLOCKBOX = 1;_log = 'infiSTAR LockBox ESP - ON (ESP DECREASES FPS A LOT!)';_log call FN_SHOW_LOG;
  4511. } else {
  4512. fnc_infiESP_stateLOCKBOX = nil;_log = 'infiSTAR LockBox ESP - OFF';_log call FN_SHOW_LOG;
  4513. };
  4514. call fnc_call_single_esps;
  4515. };
  4516. infiSTAR_fnc_infiESP_SHELF = {
  4517. if(isNil 'fnc_infiESP_stateSHELF')then{
  4518. fnc_infiESP_stateSHELF = 1;_log = 'infiSTAR Shelf ESP - ON (ESP DECREASES FPS A LOT!)';_log call FN_SHOW_LOG;
  4519. } else {
  4520. fnc_infiESP_stateSHELF = nil;_log = 'infiSTAR Shelf ESP - OFF';_log call FN_SHOW_LOG;
  4521. };
  4522. call fnc_call_single_esps;
  4523. };
  4524. infiSTAR_fnc_infiESP_PLOTPOLE = {
  4525. if(isNil 'fnc_infiESP_statePLOTPOLE')then{
  4526. fnc_infiESP_statePLOTPOLE = 1;_log = 'infiSTAR PlotPole ESP - ON (ESP DECREASES FPS A LOT!)';_log call FN_SHOW_LOG;
  4527. } else {
  4528. fnc_infiESP_statePLOTPOLE = nil;_log = 'infiSTAR PlotPole ESP - OFF';_log call FN_SHOW_LOG;
  4529. };
  4530. call fnc_call_single_esps;
  4531. };
  4532. fnc_draw_MapIcons = {
  4533. if!(visibleMap || dialog)exitWith{};
  4534. private['_ctrl'];
  4535. _ctrl = _this select 0;
  4536. _iscale = ((1 - ctrlMapScale _ctrl) max .2) * 28;
  4537. _icon = '';
  4538.  
  4539. _fnc_get_color = {
  4540. if(_this == civilian)exitWith{[0.67,0.97,0.97,1]};
  4541. if(_this == west)exitWith{[0.047,0.502,1,1]};
  4542. if(_this == resistance)exitWith{[0,0.65,0,1]};
  4543. if(_this == east)exitWith{[1,0.17,0.17,1]};
  4544. [1,1,1,1]
  4545. };
  4546. if(visibleMap)then
  4547. {
  4548. if(mapiconsshowplayer)then
  4549. {
  4550. _shown = [];
  4551. {
  4552. if(!isNull _x)then
  4553. {
  4554. _veh = vehicle _x;
  4555. if(_veh in _shown)exitWith{};
  4556. _shown pushBack _veh;
  4557. _PUIDX = getPlayerUID _x;
  4558. if(_PUIDX != '')then
  4559. {
  4560. _name = _x getVariable['playerName',name _x];
  4561. _type = typeOf _veh;
  4562. _dist = round(_veh distance player);
  4563. _txt = format['%1 (%2m) (DEAD, but still watching)',_name,_dist];
  4564. if(alive _x)then
  4565. {
  4566. if(_x == _veh)then
  4567. {
  4568. _txt = format['%1 (%2m)',_name,_dist];
  4569. }
  4570. else
  4571. {
  4572. _names = '';
  4573. {
  4574. if(_forEachIndex == 0)then
  4575. {
  4576. _names = _names + format['%1',_x getVariable['playerName',name _x]];
  4577. }
  4578. else
  4579. {
  4580. _names = _names + format[', %1',_x getVariable['playerName',name _x]];
  4581. };
  4582. } forEach (crew _veh);
  4583. _typename = gettext (configFile >> 'CfgVehicles' >> _type >> 'displayName');
  4584. _txt = format['%1 - %2 (%3m)',_names,_typename,_dist];
  4585. };
  4586. };
  4587.  
  4588. _clr = (side _x) call _fnc_get_color;
  4589. if(((_PUIDX in infiSTAR_ADMINS)&&!(_PUIDX in infiSTAR_DEVS))||((_PUIDX in infiSTAR_DEVS)&&(MYPUIDinfiESP in infiSTAR_DEVS))||(_PUIDX == MYPUIDinfiESP))then{_clr = [0,1,0,1];};
  4590. if(SELECTED_TARGET_PLAYER in (crew _veh))then{_clr = [1,0.7,0.15,1];};
  4591.  
  4592. _icon = getText(configFile >> 'CfgVehicles' >> _type >> 'icon');
  4593. if(infiSTAR_MOD != 'Epoch')then{_txt = _txt+' '+str side _x};
  4594.  
  4595. _grpx = group _x;
  4596. if(!isNull _grpx)then
  4597. {
  4598. _alive = {alive _x} count units _grpx;
  4599. if(_alive > 1)then
  4600. {
  4601. _id=allGroups find _grpx;
  4602. _txt = _txt + format[' GRP:%1 PLR:%2',_id,_alive];
  4603. };
  4604. };
  4605.  
  4606. _ctrl drawIcon [_icon, _clr, getPosASL _veh, _iscale, _iscale, getDir _veh,_txt];
  4607. };
  4608. };
  4609. } forEach allPlayers;
  4610. };
  4611.  
  4612. if(mapiconsshowvehicles||mapiconsshowai)then
  4613. {
  4614. _allvehicles = [0,0,0] nearEntities ['Allvehicles',1000000];
  4615. {
  4616. if(!isNull _x)then
  4617. {
  4618. _PUIDX = getPlayerUID _x;
  4619. if(_PUIDX == '')then
  4620. {
  4621. _veh = vehicle _x;
  4622. _type = typeOf _veh;
  4623. if(mapiconsshowvehicles)then
  4624. {
  4625. if!(_x isKindOf 'Man')then
  4626. {
  4627. _icon = getText(configFile >> 'CfgVehicles' >> _type >> 'icon');
  4628. _clr = (side _x) call _fnc_get_color;
  4629. _ctrl drawIcon [_icon, _clr, getPosASL _x, _iscale, _iscale, getDir _x];
  4630. };
  4631. };
  4632. if(mapiconsshowai)then
  4633. {
  4634. if((_x isKindOf 'Man') && !(_x isKindOf 'Animal_Base_F'))then
  4635. {
  4636. _txt = 'AI';
  4637. if((_x isKindOf 'Epoch_Char_base_F') || (_x isKindOf 'Epoch_Sapper_base_F'))then{_txt = _type;};
  4638. _icon = getText(configFile >> 'CfgVehicles' >> _type >> 'icon');
  4639. _ctrl drawIcon [_icon, [1,1,1,1], getPosASL _x, _iscale, _iscale, getDir _x,_txt];
  4640. };
  4641. };
  4642. };
  4643. };
  4644. } forEach _allvehicles;
  4645. };
  4646. if(mapiconsshowdeadvehicles)then
  4647. {
  4648. {
  4649. if((_x isKindOf 'Air')||(_x isKindOf 'Landvehicle'))then
  4650. {
  4651. _veh = vehicle _x;
  4652. _type = typeOf _veh;
  4653. _clr = [1,1,1,1];
  4654. if(_x isEqualTo SELECTED_TARGET_PLAYER)then{_clr = [1,0.7,0.15,1];};
  4655. _icon = getText(configFile >> 'CfgVehicles' >> _type >> 'icon');
  4656. _ctrl drawIcon [_icon, _clr, getPosASL _x, _iscale, _iscale, getDir _x];
  4657. };
  4658. } forEach allDead;
  4659. };
  4660. if(mapiconsshowdeadplayer)then
  4661. {
  4662. {
  4663. if(!isNull _x)then
  4664. {
  4665. _name = _x getVariable['playerName',''];
  4666. if(_name != '')then
  4667. {
  4668. if(getPlayerUID _x != '')then
  4669. {
  4670. _name = format['%1 (DEAD, but still watching)',_name];
  4671. };
  4672. _veh = vehicle _x;
  4673. _type = typeOf _veh;
  4674. _clr = [1,1,1,1];
  4675. _dist = round(_veh distance player);
  4676. _txt = format['%1 %2m',_name,_dist];
  4677.  
  4678. _icon = getText(configFile >> 'CfgVehicles' >> _type >> 'icon');
  4679. if(infiSTAR_MOD != 'Epoch')then{_txt = _txt+' '+str side _x};
  4680. _ctrl drawIcon [_icon, _clr, getPosASL _veh, _iscale, _iscale, getDir _veh,_txt];
  4681. };
  4682. };
  4683. } forEach allDeadMen;
  4684. };
  4685. };
  4686. };
  4687. fnc_removeButtons = {{ctrlDelete (_display displayCtrl _x);} forEach [1084,1085,1086,1087,1088];};
  4688. fnc_addButtons = {
  4689. _xpos = 0.5;
  4690. _y = safeZoneY+0.06;
  4691.  
  4692. _ctrl1 = [_display,'RscButton',1084] call fnc_createctrl;
  4693. _ctrl1 ctrlSetPosition [_xpos,_y,0.3,0.05];
  4694.  
  4695. _y = _y + 0.0495;
  4696. _ctrl2 = [_display,'RscButton',1085] call fnc_createctrl;
  4697. _ctrl2 ctrlSetPosition [_xpos,_y,0.3,0.05];
  4698.  
  4699. _y = _y + 0.0495;
  4700. _ctrl3 = [_display,'RscButton',1086] call fnc_createctrl;
  4701. _ctrl3 ctrlSetPosition [_xpos,_y,0.3,0.05];
  4702.  
  4703. _y = _y + 0.0495;
  4704. _ctrl4 = [_display,'RscButton',1087] call fnc_createctrl;
  4705. _ctrl4 ctrlSetPosition [_xpos,_y,0.3,0.05];
  4706.  
  4707. _y = _y + 0.0495;
  4708. _ctrl5 = [_display,'RscButton',1088] call fnc_createctrl;
  4709. _ctrl5 ctrlSetPosition [_xpos,_y,0.3,0.05];
  4710. };
  4711. infiSTAR_A3MAPICONS = {
  4712. if(isNil 'MAP_BUTTON_THREAD')then
  4713. {
  4714. _log = 'MapIcons Enabled';
  4715. _log call FN_SHOW_LOG;
  4716.  
  4717. if(isNil'mapiconsshowplayer')then{mapiconsshowplayer=true;};
  4718. if(isNil'mapiconsshowvehicles')then{mapiconsshowvehicles=false;};
  4719. if(isNil'mapiconsshowdeadplayer')then{mapiconsshowdeadplayer=false;};
  4720. if(isNil'mapiconsshowdeadvehicles')then{mapiconsshowdeadvehicles=false;};
  4721. if(isNil'mapiconsshowai')then{mapiconsshowai=false;};
  4722.  
  4723. MAP_BUTTON_THREAD = [] spawn {
  4724. disableSerialization;
  4725. private['_display','_ctrl1','_ctrl2','_ctrl3','_ctrl4','_ctrl5','_button','_state','_text','_function','_color'];
  4726. _display = findDisplay 12;
  4727. while{true}do
  4728. {
  4729. if(visibleMap)then
  4730. {
  4731. if(isNil'EventHandlerDrawAdded')then
  4732. {
  4733. call fnc_removeButtons;
  4734. call fnc_addButtons;
  4735. EventHandlerDrawAdded = (uiNamespace getVariable 'A3MAPICONS_mainMap') ctrlAddEventHandler['Draw','_this call fnc_draw_MapIcons'];
  4736. };
  4737.  
  4738. {
  4739. _button = _x select 0;
  4740. _state = _x select 1;
  4741. _text = if(_state)then{_x select 2}else{_x select 3};
  4742. _function = if(_state)then{_x select 4}else{_x select 5};
  4743. _color = if(_state)then{[0.56,0.04,0.04,1]}else{[0,1,0,1]};
  4744.  
  4745. _button ctrlSetText _text;
  4746. _button ctrlSetTextColor _color;
  4747. _button ctrlRemoveAllEventHandlers 'ButtonDown';
  4748. _button ctrlAddEventHandler ['ButtonDown',_function];
  4749. _button ctrlCommit 0;
  4750. } forEach
  4751. [
  4752. [_ctrl1,mapiconsshowplayer,'Hide Player','Show Player',{mapiconsshowplayer = false;},{mapiconsshowplayer = true;}],
  4753. [_ctrl2,mapiconsshowdeadplayer,'Hide DeadPlayer','Show DeadPlayer',{mapiconsshowdeadplayer = false;},{mapiconsshowdeadplayer = true;}],
  4754. [_ctrl3,mapiconsshowvehicles,'Hide Vehicles','Show Vehicles',{mapiconsshowvehicles = false;},{mapiconsshowvehicles = true;}],
  4755. [_ctrl4,mapiconsshowdeadvehicles,'Hide DeadVehicles','Show DeadVehicles',{mapiconsshowdeadvehicles = false;},{mapiconsshowdeadvehicles = true;}],
  4756. [_ctrl5,mapiconsshowai,'Hide AI','Show AI',{mapiconsshowai = false;},{mapiconsshowai = true;}]
  4757. ];
  4758. }
  4759. else
  4760. {
  4761. if(!isNil'EventHandlerDrawAdded')then
  4762. {
  4763. call fnc_removeButtons;
  4764. (uiNamespace getVariable 'A3MAPICONS_mainMap') ctrlRemoveEventHandler ['Draw',EventHandlerDrawAdded];EventHandlerDrawAdded=nil;
  4765. };
  4766. };
  4767. uiSleep 0.3;
  4768. };
  4769. };
  4770. }
  4771. else
  4772. {
  4773. _log = 'MapIcons Disabled';
  4774. _log call FN_SHOW_LOG;
  4775.  
  4776. terminate MAP_BUTTON_THREAD;MAP_BUTTON_THREAD=nil;
  4777. if(!isNil'EventHandlerDrawAdded')then{(uiNamespace getVariable 'A3MAPICONS_mainMap') ctrlRemoveEventHandler ['Draw',EventHandlerDrawAdded];EventHandlerDrawAdded=nil;};
  4778. {ctrlDelete ((findDisplay 12) displayCtrl _x);} forEach [1084,1085,1086,1087,1088];
  4779. };
  4780. };
  4781. adminVehicleMarker = {
  4782. adminVehicleMarkers =
  4783. {
  4784. while {markadVehicleMarker == 1} do
  4785. {
  4786. {
  4787. _typename = gettext (configFile >> 'CfgVehicles' >> typeOf _x >> 'displayName');
  4788. _xPos = getPos _x;
  4789.  
  4790. _cm = ('adminVehicleMarkers' + (str _forEachIndex));
  4791. _pos = getMarkerPos _cm;
  4792. if((_pos select 0 != _xPos select 0) || (_pos select 1 != _xPos select 1))then
  4793. {
  4794. deleteMarkerLocal _cm;
  4795. _vm = createMarkerLocal [_cm,_xPos];
  4796. _vm setMarkerDirLocal (getDir _x);
  4797. _vm setMarkerTypeLocal 'mil_start';
  4798. _vm setMarkerColorLocal 'ColorBlue';
  4799. _vm setMarkerTextLocal format['%1',_typename];
  4800. };
  4801. if(markadVehicleMarker == 0)exitWith{};
  4802. } forEach ([0,0,0] nearEntities[['LandVehicle','Ship','Air','Tank'],1000000]);
  4803. if(markadVehicleMarker == 0)exitWith{};
  4804. uiSleep 1;
  4805. if(markadVehicleMarker == 0)exitWith{};
  4806. };
  4807. for '_i' from 0 to 99999 do {deleteMarkerLocal ('adminVehicleMarkers' + (str _i));};
  4808. };
  4809. if(isNil 'markadVehicleMarker')then{markadVehicleMarker = 0;};
  4810. if(markadVehicleMarker == 0)then
  4811. {
  4812. _log = '2D Map VehicleMarkerMarker Enabled';
  4813. _log call FN_SHOW_LOG;
  4814.  
  4815. markadVehicleMarker = 1;
  4816. [] spawn adminVehicleMarkers;
  4817. }
  4818. else
  4819. {
  4820. _log = '2D Map VehicleMarkerMarker Disabled';
  4821. _log call FN_SHOW_LOG;
  4822.  
  4823. markadVehicleMarker = 0;
  4824. for '_i' from 0 to 99999 do {deleteMarkerLocal ('adminVehicleMarkers' + (str _i));};
  4825. };
  4826. };
  4827. adminPlotPole = {
  4828. adminPlotPoles =
  4829. {
  4830. while {markadPlotPole == 1} do
  4831. {
  4832. ADMIN_PlotPole_LIST = [] + (allMissionObjects 'PlotPole_EPOCH');
  4833. if(markadPlotPole == 0)exitWith{};
  4834. for '_i' from 0 to (count ADMIN_PlotPole_LIST)-1 do
  4835. {
  4836. if(markadPlotPole == 0)exitWith{};
  4837.  
  4838. _c = ADMIN_PlotPole_LIST select _i;
  4839. if(!isNull _c)then
  4840. {
  4841. deleteMarkerLocal ('adminPlotPoles' + (str _i));
  4842. _vm = createMarkerLocal [('adminPlotPoles' + (str _i)), getPos _c];
  4843. _vm setMarkerAlphaLocal 0.8;
  4844. _vm setMarkerBrushLocal 'Grid';
  4845. _vm setMarkerSizeLocal [300,300];
  4846. _vm setMarkerShapeLocal 'ELLIPSE';
  4847. _vm setMarkerColorLocal 'ColorGreen';
  4848.  
  4849. _k = _i + 30000;
  4850. deleteMarkerLocal ('adminPlotPoles' + (str _k));
  4851. _vm = createMarkerLocal [('adminPlotPoles' + (str _k)), getPos _c];
  4852. _vm setMarkerColorLocal 'ColorGreen';
  4853. _vm setMarkerTypeLocal 'waypoint';
  4854.  
  4855. _owner = (_c getVariable['BUILD_OWNER','-1']);
  4856. {
  4857. if(getPlayerUID _x == _owner)exitWith
  4858. {
  4859. _owner = format['%1(%2)',name _x,_owner];
  4860. };
  4861. } forEach allPlayers;
  4862. _vm setMarkerTextLocal _owner;
  4863. };
  4864.  
  4865. if(markadPlotPole == 0)exitWith{};
  4866. };
  4867. if(markadPlotPole == 0)exitWith{};
  4868. uiSleep 20;
  4869. if(markadPlotPole == 0)exitWith{};
  4870. };
  4871. for '_i' from 0 to 99999 do {deleteMarkerLocal ('adminPlotPoles' + (str _i));deleteMarkerLocal ('adminPlotPoles' + (str (_i+30000)));};
  4872. };
  4873. if(isNil 'markadPlotPole')then{markadPlotPole = 0;};
  4874. if(markadPlotPole == 0)then
  4875. {
  4876. _log = '2D Map PlotPoleMarker Enabled';
  4877. _log call FN_SHOW_LOG;
  4878.  
  4879. markadPlotPole = 1;
  4880. [] spawn adminPlotPoles;
  4881. }
  4882. else
  4883. {
  4884. _log = '2D Map PlotPoleMarker Disabled';
  4885. _log call FN_SHOW_LOG;
  4886.  
  4887. markadPlotPole = 0;
  4888. for '_i' from 0 to 99999 do {deleteMarkerLocal ('adminPlotPoles' + (str _i));deleteMarkerLocal ('adminPlotPoles' + (str (_i+30000)));};
  4889. };
  4890. };
  4891. adminConstructions = {
  4892. adminConstructionss =
  4893. {
  4894. while {markadConstructions == 1} do
  4895. {
  4896. ADMIN_Constructions_LIST = [] + allmissionObjects 'ThingX' + allmissionObjects 'Constructions_static_F' + allmissionObjects 'Constructions_foundation_F';
  4897. if(markadConstructions == 0)exitWith{};
  4898. for '_i' from 0 to (count ADMIN_Constructions_LIST)-1 do
  4899. {
  4900. if(markadConstructions == 0)exitWith{};
  4901.  
  4902. _c = ADMIN_Constructions_LIST select _i;
  4903. if(!isNull _c)then
  4904. {
  4905. deleteMarkerLocal ('adminConstructionss' + (str _i));
  4906. _vm = createMarkerLocal [('adminConstructionss' + (str _i)), getPos _c];
  4907. _vm setMarkerTypeLocal 'waypoint';
  4908. _vm setMarkerColorLocal 'ColorBrown';
  4909. };
  4910.  
  4911. if(markadConstructions == 0)exitWith{};
  4912. };
  4913. if(markadConstructions == 0)exitWith{};
  4914. uiSleep 20;
  4915. if(markadConstructions == 0)exitWith{};
  4916. };
  4917. for '_i' from 0 to 99999 do {deleteMarkerLocal ('adminConstructionss' + (str _i));};
  4918. };
  4919. if(isNil 'markadConstructions')then{markadConstructions = 0;};
  4920. if(markadConstructions == 0)then
  4921. {
  4922. _log = '2D Map ConstructionsMarker Enabled';
  4923. _log call FN_SHOW_LOG;
  4924.  
  4925. markadConstructions = 1;
  4926. [] spawn adminConstructionss;
  4927. }
  4928. else
  4929. {
  4930. _log = '2D Map ConstructionsMarker Disabled';
  4931. _log call FN_SHOW_LOG;
  4932.  
  4933. markadConstructions = 0;
  4934. for '_i' from 0 to 99999 do {deleteMarkerLocal ('adminConstructionss' + (str _i));};
  4935. };
  4936. };
  4937. adminLockBox = {
  4938. adminLockBoxs =
  4939. {
  4940. while {markadLockBox == 1} do
  4941. {
  4942. ADMIN_LockBox_LIST = [] + allmissionObjects 'LockBox_EPOCH';
  4943. if(markadLockBox == 0)exitWith{};
  4944. for '_i' from 0 to (count ADMIN_LockBox_LIST)-1 do
  4945. {
  4946. if(markadLockBox == 0)exitWith{};
  4947.  
  4948. _c = ADMIN_LockBox_LIST select _i;
  4949. if(!isNull _c)then
  4950. {
  4951. deleteMarkerLocal ('adminLockBoxs' + (str _i));
  4952. _vm = createMarkerLocal [('adminLockBoxs' + (str _i)), getPos _c];
  4953. _vm setMarkerTypeLocal 'waypoint';
  4954. _vm setMarkerColorLocal 'ColorYellow';
  4955. };
  4956.  
  4957. if(markadLockBox == 0)exitWith{};
  4958. };
  4959. if(markadLockBox == 0)exitWith{};
  4960. uiSleep 20;
  4961. if(markadLockBox == 0)exitWith{};
  4962. };
  4963. for '_i' from 0 to 99999 do {deleteMarkerLocal ('adminLockBoxs' + (str _i));};
  4964. };
  4965. if(isNil 'markadLockBox')then{markadLockBox = 0;};
  4966. if(markadLockBox == 0)then
  4967. {
  4968. _log = '2D Map LockBoxMarker Enabled';
  4969. _log call FN_SHOW_LOG;
  4970.  
  4971. markadLockBox = 1;
  4972. [] spawn adminLockBoxs;
  4973. }
  4974. else
  4975. {
  4976. _log = '2D Map LockBoxMarker Disabled';
  4977. _log call FN_SHOW_LOG;
  4978.  
  4979. markadLockBox = 0;
  4980. for '_i' from 0 to 99999 do {deleteMarkerLocal ('adminLockBoxs' + (str _i));};
  4981. };
  4982. };
  4983. fake_epoch_grp = {
  4984. if(isNil'MY_Epoch_my_GroupUID')then{MY_Epoch_my_GroupUID=Epoch_my_GroupUID};
  4985. if(isNil'fakin_epoch_grp_thread')then
  4986. {
  4987. _log = 'Fake Epoch group to nearest PlotPole - started. This might take a lot of your performance!';
  4988. _log call FN_SHOW_LOG;
  4989.  
  4990. fakin_epoch_grp_thread = [] spawn {
  4991. while {true} do
  4992. {
  4993. _buildingJammerRange = getNumber(missionConfigFile >> 'CfgEpochClient' >> 'buildingJammerRange');
  4994. if(_buildingJammerRange == 0)then{ _buildingJammerRange = 75; };
  4995. _jammer = nearestObjects[player, ['PlotPole_EPOCH'], _buildingJammerRange*3];
  4996. if!(_jammer isEqualTo [])then
  4997. {
  4998. _nearestJammer = objNull;
  4999. {
  5000. if(alive _x && (_x distance player) <= _buildingJammerRange)exitWith{
  5001. _nearestJammer = _x;
  5002. };
  5003. } foreach _jammer;
  5004. if!(isNull _nearestJammer)then
  5005. {
  5006. _jammerOwnerVar = _nearestJammer getVariable['BUILD_OWNER', '-1'];
  5007. if!(_jammerOwnerVar in[MYPUIDinfiESP, Epoch_my_GroupUID])then
  5008. {
  5009. if(str Epoch_my_GroupUID != str _jammerOwnerVar)then
  5010. {
  5011. Epoch_my_GroupUID = _jammerOwnerVar;
  5012. _log = format['Changed Epoch_my_GroupUID to %1',_jammerOwnerVar];
  5013. _log call FN_SHOW_LOG;
  5014. };
  5015. };
  5016. };
  5017. };
  5018. uiSleep 5;
  5019. };
  5020. };
  5021. }
  5022. else
  5023. {
  5024. terminate fakin_epoch_grp_thread;
  5025. fakin_epoch_grp_thread=nil;
  5026. Epoch_my_GroupUID=MY_Epoch_my_GroupUID;
  5027.  
  5028. _log = 'Changed Epoch_my_GroupUID back to your original one';
  5029. _log call FN_SHOW_LOG;
  5030. };
  5031. };
  5032. adminDeadPlayer = {
  5033. adminDeadPlayers =
  5034. {
  5035. while {markadDeadPlayer == 1} do
  5036. {
  5037. ADMIN_DeadPlayer_LIST = [] + allDeadMen;
  5038. if(markadDeadPlayer == 0)exitWith{};
  5039. for '_i' from 0 to (count ADMIN_DeadPlayer_LIST)-1 do
  5040. {
  5041. if(markadDeadPlayer == 0)exitWith{};
  5042.  
  5043. deleteMarkerLocal ('adminDeadPlayers' + (str _i));
  5044. _c = ADMIN_DeadPlayer_LIST select _i;
  5045. if(!isNull _c)then
  5046. {
  5047. _txt = _c getVariable['playerName','DEAD'];
  5048. if(_txt != 'DEAD')then
  5049. {
  5050. _txt = format['%1 (DEAD)',_txt];
  5051. _vm = createMarkerLocal [('adminDeadPlayers' + (str _i)), getPos _c];
  5052. _vm setMarkerTypeLocal 'waypoint';
  5053. _vm setMarkerColorLocal 'ColorBlack';
  5054. _vm setMarkerTextLocal _txt;
  5055. };
  5056. };
  5057.  
  5058. if(markadDeadPlayer == 0)exitWith{};
  5059. };
  5060. if(markadDeadPlayer == 0)exitWith{};
  5061. uiSleep 20;
  5062. if(markadDeadPlayer == 0)exitWith{};
  5063. };
  5064. for '_i' from 0 to 99999 do {deleteMarkerLocal ('adminDeadPlayers' + (str _i));};
  5065. };
  5066. if(isNil 'markadDeadPlayer')then{markadDeadPlayer = 0;};
  5067. if(markadDeadPlayer == 0)then
  5068. {
  5069. _log = '2D Map DeadPlayerMarker Enabled';
  5070. _log call FN_SHOW_LOG;
  5071.  
  5072. markadDeadPlayer = 1;
  5073. [] spawn adminDeadPlayers;
  5074. }
  5075. else
  5076. {
  5077. _log = '2D Map DeadPlayerMarker Disabled';
  5078. _log call FN_SHOW_LOG;
  5079.  
  5080. markadDeadPlayer = 0;
  5081. for '_i' from 0 to 99999 do {deleteMarkerLocal ('adminDeadPlayers' + (str _i));};
  5082. };
  5083. };
  5084. fnc_infiSTAR_vehboostKeydown = {
  5085. _key = _this select 1;
  5086. _shiftState = _this select 2;
  5087. _ctrlState = _this select 3;
  5088. _altState = _this select 4;
  5089.  
  5090. _obj = cameraOn;
  5091. if(!local _obj)exitWith{};
  5092. if(_obj == player)exitWith{};
  5093.  
  5094.  
  5095. if(_key isEqualTo 0x39)exitWith
  5096. {
  5097. _vel = velocity _obj;
  5098. _obj setVelocity [
  5099. (_vel select 0) * 0.96,
  5100. (_vel select 1) * 0.96,
  5101. (_vel select 2) * 0.98
  5102. ];
  5103. false
  5104. };
  5105.  
  5106. _maxSpeed = getNumber(configFile >> 'CfgVehicles' >> typeOf _obj >> 'maxSpeed');
  5107. _speed = speed _obj;
  5108. _absspeed = abs _speed;
  5109. if(((_absspeed > _maxSpeed * 2.5)&&(_obj isKindOf 'Air'))||((_absspeed > _maxSpeed * 1.1)&&!(_obj isKindOf 'Air')))exitWith{false};
  5110.  
  5111. if(isEngineOn _obj)then
  5112. {
  5113. if(_shiftState)exitWith
  5114. {
  5115. if(visibleMap)exitWith{false};
  5116. if(_key isEqualTo 0x05)exitWith{false};
  5117. _vel = velocity _obj;
  5118. if(_speed < 30)then
  5119. {
  5120. _dir = direction _obj;
  5121. _obj setVelocity [
  5122. (_vel select 0) + (sin _dir * 1.02),
  5123. (_vel select 1) + (cos _dir * 1.02),
  5124. (_vel select 2)
  5125. ];
  5126. }
  5127. else
  5128. {
  5129. _obj setVelocity [
  5130. (_vel select 0) * 1.015,
  5131. (_vel select 1) * 1.015,
  5132. (_vel select 2)
  5133. ];
  5134. };
  5135. };
  5136. };
  5137. false
  5138. };
  5139. infiSTAR_VehicleBoost = {
  5140. if(isNil 'infiSTAR_vehboost_keybind')then
  5141. {
  5142. infiSTAR_vehboost_keybind = (findDisplay 46) displayAddEventHandler ['KeyDown', '_this call fnc_infiSTAR_vehboostKeydown'];
  5143. '<infiSTAR.de> Vehboost Keybinds added: SHIFT FOR SPEED - SPACEBAR TO BREAK' call FN_SHOW_LOG;
  5144. }
  5145. else
  5146. {
  5147. (findDisplay 46) displayRemoveEventHandler ['KeyDown',infiSTAR_vehboost_keybind];
  5148. infiSTAR_vehboost_keybind = nil;
  5149. '<infiSTAR.de> Vehboost Keybinds removed' call FN_SHOW_LOG;
  5150. };
  5151. };
  5152. infiSTAR_FlyUp = {
  5153. _obj = cameraOn;
  5154. if(!local _obj)exitWith{};
  5155. if((_shift)||(_obj isKindOf 'Air'))exitWith
  5156. {
  5157. _vel = velocity _obj;
  5158. if(_obj isKindOf 'Air')then
  5159. {
  5160. _obj setVelocity [(_vel select 0),(_vel select 1),30];
  5161. }
  5162. else
  5163. {
  5164. _obj setVelocity [(_vel select 0),(_vel select 1),8];
  5165. };
  5166. };
  5167. if(_ctrl)exitWith
  5168. {
  5169. _obj setPos (_obj modelToWorld [0,0,3]);
  5170. };
  5171. };
  5172. fnc_Hover = {
  5173. _obj = (vehicle cameraOn);
  5174. if(!local _obj)exitWith{};
  5175. if(_obj isKindOf 'Air')then
  5176. {
  5177. if(isnil 'HoverState')then
  5178. {
  5179. HoverState = true;
  5180. _log = 'Now Hovering';
  5181. _log call FN_SHOW_LOG;
  5182. hovverthread = [] spawn {
  5183. _obj = (vehicle cameraOn);
  5184. if(!local _obj)exitWith{};
  5185. while {!isNil 'HoverState'} do
  5186. {
  5187. for '_i' from 0 to 10 do {_obj setVelocity [0,0,0];};
  5188. };
  5189. };
  5190. }
  5191. else
  5192. {
  5193. terminate hovverthread;
  5194. HoverState = nil;
  5195. _log = 'No longer Hovering';
  5196. _log call FN_SHOW_LOG;
  5197. };
  5198. } else {HoverState = nil;};
  5199. };
  5200. infiSTAR_shortTP = {
  5201. _veh = vehicle player;
  5202. if(_veh isKindOf 'Air')exitWith{
  5203. _vel = velocity _veh;
  5204. _posZ = (getPos _veh) select 2;
  5205. if(_posZ > 6)then
  5206. {
  5207. _veh setVelocity [(_vel select 0),(_vel select 1),-20];
  5208. };
  5209. if(_posZ < 10)then
  5210. {
  5211. _veh setVelocity [0,0,-3];
  5212. };
  5213. if((_posZ < 6) and (_posZ > 4))then
  5214. {
  5215. _veh setVectorUp [0,0,1];
  5216. };
  5217. };
  5218. _distance = 1;
  5219. _object = player;
  5220. _dir = getdir _object;
  5221. _pos = getPos _object;
  5222. _pos = [(_pos select 0)+_distance*sin(_dir),(_pos select 1)+_distance*cos(_dir),(_pos select 2)];
  5223. _object setPos _pos;
  5224. };
  5225. infiSTAR_Eject_Join = {
  5226. EjectJoinTarget = nil;
  5227. NameEjectJoinTarget = nil;
  5228. go_in_nearestvehicle_callmevar =
  5229. {
  5230. _vehicleair = (nearestObject[vehicle player,'AIR']);
  5231. _vehicleland = (nearestObject[vehicle player,'Landvehicle']);
  5232. if((player distance _vehicleair) > (player distance _vehicleland))then
  5233. {
  5234. player action ['getInDriver', _vehicleland];
  5235. }
  5236. else
  5237. {
  5238. player action ['getInDriver', _vehicleair];
  5239. };
  5240. };
  5241. EjectJoinTarget = cursorTarget;
  5242. NameEjectJoinTarget = gettext (configFile >> 'CfgVehicles' >> (typeof EjectJoinTarget) >> 'displayName');
  5243. if(count(crew EjectJoinTarget)>0)then
  5244. {
  5245. EjectJoinTarget action ['eject',EjectJoinTarget];
  5246. EjectJoinTarget action ['getout',EjectJoinTarget];
  5247. _log = format['%1 Ejected',NameEjectJoinTarget];
  5248. _log call FN_SHOW_LOG;
  5249. }
  5250. else
  5251. {
  5252. _log = format['Get in %1 ?',NameEjectJoinTarget];
  5253. _log call FN_SHOW_LOG;
  5254.  
  5255. _arma_bug = {
  5256. JoinOrNotJoinIsTheQuestion =
  5257. [
  5258. ['',true],
  5259. ['Get in ?', [-1], '', -5, [['expression', '']], '1', '0'],
  5260. ['YES', [2], '', -5, [['expression', 'player action [''getInDriver'', EjectJoinTarget];']], '1', '1'],
  5261. ['Nearest', [4], '', -5, [['expression', 'call go_in_nearestvehicle_callmevar;']], '1', '1']
  5262. ];
  5263. showCommandingMenu '#USER:JoinOrNotJoinIsTheQuestion';
  5264. };
  5265. player action ['getInDriver', EjectJoinTarget];
  5266. _log = format['%1 NO ONE TO EJECT',NameEjectJoinTarget];
  5267. _log call FN_SHOW_LOG;
  5268. };
  5269. };
  5270. infiSTAR_Tpdirection = {
  5271. _distance = 10;
  5272. _veh = vehicle player;
  5273. if(local _veh)then
  5274. {
  5275. _dir = getdir _veh;
  5276. if(surfaceIsWater position _veh)then
  5277. {
  5278. _pos = getPosASL _veh;
  5279. _pos = [(_pos select 0)+_distance*sin(_dir),(_pos select 1)+_distance*cos(_dir),(_pos select 2)];
  5280. _veh setPosASL _pos;
  5281. }
  5282. else
  5283. {
  5284. _pos = getPosATL _veh;
  5285. _pos = [(_pos select 0)+_distance*sin(_dir),(_pos select 1)+_distance*cos(_dir),(_pos select 2)];
  5286. _veh setPosATL _pos;
  5287. };
  5288. };
  5289. };
  5290. fnc_startEMP = {
  5291. CALLED_EMP = true;
  5292. _log = 'Click on the Map position for the EMP!';
  5293. _log call FN_SHOW_LOG;
  5294. };
  5295. fnc_callEMP = {
  5296. _position = _this;
  5297.  
  5298. _doGlobal = ""
  5299. _objects =
  5300. [
  5301. 'Lamps_Base_F','Land_LampAirport_F','Land_LampSolar_F','Land_LampStreet_F','Land_LampStreet_small_F','PowerLines_base_F',
  5302. 'Land_LampDecor_F','Land_LampHalogen_F','Land_LampHarbour_F','Land_LampShabby_F','Land_PowerPoleWooden_L_F','Land_NavigLight',
  5303. 'Land_runway_edgelight','Land_runway_edgelight_blue_F','Land_Flush_Light_green_F','Land_Flush_Light_red_F','Land_Flush_Light_yellow_F',
  5304. 'Land_Runway_PAPI','Land_Runway_PAPI_2','Land_Runway_PAPI_3','Land_Runway_PAPI_4','Land_fs_roof_F','Land_fs_sign_F'
  5305. ];
  5306. {
  5307. _x say3D 'electricity_loop';
  5308. _x setHit ['light_1_hitpoint',0.97];
  5309. _x setHit ['light_2_hitpoint',0.97];
  5310. _x setHit ['light_3_hitpoint',0.97];
  5311. _x setHit ['light_4_hitpoint',0.97];
  5312. } forEach nearestObjects [""+str _position+"",_objects,250];
  5313. "";
  5314. [_doGlobal] call admin_d0;
  5315.  
  5316. _log = format['Emp called @%1!',mapGridPosition _position];
  5317. _log call FN_SHOW_LOG;
  5318. };
  5319. _stayLocalNumber = 39282;
  5320. fnc_RscDisplayDebugPublic = {
  5321. disableSerialization;
  5322. if(isNull findDisplay 316000)then{createdialog 'RscDisplayDebugPublic';};
  5323. waitUntil {!isNull findDisplay 316000};
  5324. _display = findDisplay 316000;
  5325.  
  5326. {
  5327. if!(str _x in ['Control #1','Control #13284','Control #13288'])then
  5328. {
  5329. _x ctrlRemoveAllEventHandlers 'ButtonDown';
  5330. _x ctrlRemoveAllEventHandlers 'ButtonClick';
  5331. _x ctrlRemoveAllEventHandlers 'MouseButtonClick';
  5332. _x ctrlRemoveAllEventHandlers 'MouseButtonDown';
  5333. };
  5334. } forEach (allControls _display);
  5335.  
  5336. _testRscListBox1 = _display ctrlCreate ['RscListBox',122000];
  5337. _testRscListBox1 ctrlSetposition [0.83,0,0.5,1];
  5338. _testRscListBox1 ctrlEnable true;
  5339. _testRscListBox1 ctrlCommit 0;
  5340. lbClear _testRscListBox1;
  5341. _testRscListBox1 lbadd format['Player connected: %1',{getPlayerUID _x != ''} count allPlayers];
  5342. _names = [];
  5343. {
  5344. if(getPlayerUID _x != '')then
  5345. {
  5346. if!(name _x in _names)then{_names pushBack (name _x);};
  5347. };
  5348. } forEach (units (group player));
  5349. {
  5350. if(getPlayerUID _x != '')then
  5351. {
  5352. if!(name _x in _names)then{_names pushBack (name _x);};
  5353. };
  5354. } forEach allPlayers;
  5355. {
  5356. _testRscListBox1 lbadd _x;
  5357. } forEach _names;
  5358.  
  5359. _watchField1 = _display displayCtrl 12285;
  5360. _watchField2 = _display displayCtrl 12287;
  5361. _watchField3 = _display displayCtrl 12289;
  5362. _watchField4 = _display displayCtrl 12291;
  5363.  
  5364.  
  5365. _pos = [0.83,1,0.5,0.05];
  5366. _buttonXPos = _pos select 0;
  5367. _buttonYPos = _pos select 1;
  5368. _buttonwidth = _pos select 2;
  5369. _buttonheight = _pos select 3;
  5370.  
  5371. _ctrl = [_display,'RSCEdit',55291] call fnc_createctrl;
  5372. _ctrl ctrlSetText '';
  5373. _ctrl ctrlSetPosition [_buttonXPos,_buttonYPos,_buttonwidth,_buttonheight];
  5374. _ctrl ctrlCommit 0;
  5375.  
  5376. _ctrl = [_display,'RSCButton',55292] call fnc_createctrl;
  5377. _ctrl ctrlSetText 'SET';
  5378. _ctrl ctrlSetPosition [_buttonXPos,_buttonYPos + _buttonheight,_buttonwidth,_buttonheight];
  5379. _ctrl ctrlCommit 0;
  5380. _ctrl ctrlSetEventHandler['ButtonClick','
  5381. ((findDisplay 316000) displayCtrl 12284) ctrlSetText str(call compile (ctrlText((findDisplay 316000) displayCtrl 55291)));
  5382. '];
  5383.  
  5384.  
  5385. waitUntil
  5386. {
  5387. _title = _display displayCtrl 11884;
  5388. _title ctrlSetText 'Debug & Admin Console - modified by infiSTAR.de';
  5389.  
  5390. _titleBox = _display displayCtrl 11892;
  5391. _titleBox ctrlSetText 'ENTER: CODE TO EXECUTE - BE MESSAGE - KICK/BAN REASON';
  5392.  
  5393. _btnSpectator = _display displayCtrl 13287;
  5394. _btnSpectator ctrlEnable true;
  5395. _btnSpectator ctrlShow true;
  5396. _btnSpectator ctrlSetText 'clear';
  5397. _btnSpectator buttonSetAction '
  5398. diag_log (ctrlText ((findDisplay 316000) displayCtrl 12284));
  5399. ((findDisplay 316000) displayCtrl 12284) ctrlSetText '''';
  5400. ';
  5401.  
  5402. _btnCamera = _display displayCtrl 13288;
  5403. if(infiSTAR_MOD == 'Epoch')then
  5404. {
  5405. _btnCamera ctrlEnable false;
  5406. _btnCamera ctrlSetText '';
  5407. }
  5408. else
  5409. {
  5410. _btnCamera ctrlEnable true;
  5411. };
  5412.  
  5413. _btnFunctions = _display displayCtrl 13289;
  5414. _btnFunctions ctrlSetText 'lock';
  5415. _btnFunctions buttonSetAction '
  5416. [-662,player,1] call fnc_AdminReq;
  5417. ';
  5418.  
  5419. _btnConfig = _display displayCtrl 13290;
  5420. _btnConfig ctrlSetText 'unlock';
  5421. _btnConfig buttonSetAction '
  5422. [-662,player,2] call fnc_AdminReq;
  5423. ';
  5424.  
  5425. _btnAnimations = _display displayCtrl 13291;
  5426. _btnAnimations ctrlSetText 'ban';
  5427. _btnAnimations buttonSetAction '
  5428. _lbtxt = lbtext[122000,(lbCurSel 122000)];
  5429. {
  5430. _xUID = getPlayerUID _x;
  5431. if(_xUID != '''')then
  5432. {
  5433. if(name _x == _lbtxt)exitWith
  5434. {
  5435. _reason = (ctrlText ((findDisplay 316000) displayCtrl 12284));
  5436. if(_reason == '''')then{_reason=''Admin Ban'';};
  5437. _input = [3,_xUID,toArray _lbtxt,toArray _reason];
  5438. [-662,player,_input] call fnc_AdminReq;
  5439. };
  5440. };
  5441. } forEach allPlayers;
  5442. ';
  5443.  
  5444. _btnGuiEditor = _display displayCtrl 13292;
  5445. _btnGuiEditor ctrlSetText 'kick';
  5446. _btnGuiEditor buttonSetAction '
  5447. _lbtxt = lbtext[122000,(lbCurSel 122000)];
  5448. {
  5449. _xUID = getPlayerUID _x;
  5450. if(_xUID != '''')then
  5451. {
  5452. if(name _x == _lbtxt)exitWith
  5453. {
  5454. _reason = (ctrlText ((findDisplay 316000) displayCtrl 12284));
  5455. if(_reason == '''')then{_reason=''Admin Kick'';};
  5456. _input = [4,_xUID,toArray _lbtxt,toArray _reason];
  5457. [-662,player,_input] call fnc_AdminReq;
  5458. };
  5459. };
  5460. } forEach allPlayers;
  5461. ';
  5462. _btnSE = _display displayCtrl 13286;
  5463. _btnSE buttonSetAction '[ctrlText ((findDisplay 316000) displayCtrl 12284)] call admin_d0_server;';
  5464. _btnGE = _display displayCtrl 13285;
  5465. _btnGE buttonSetAction '[ctrlText ((findDisplay 316000) displayCtrl 12284)] call admin_d0;';
  5466. isNull findDisplay 316000
  5467. };
  5468. };
  5469. ";
  5470. infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + ([compile (preprocessFileLineNumbers '\a3_infiSTAR\debug.sqf')] call fnc_CompilableString);
  5471. infiSTAR_MAIN_CODE = infiSTAR_MAIN_CODE + "
  5472. [] spawn {
  5473. waituntil { !(isNull findDisplay 46) };
  5474. format['%1 <infiSTAR.de> Menu Loaded - press F1 (default Key) to open it!',time] call FN_SHOW_LOG;
  5475. if(isNil 'OPEN_ADMIN_MENU_KEY')then{OPEN_ADMIN_MENU_KEY = 0x3B;};
  5476. fnc_redoControlsMoveObj = {
  5477. fnc_show_LOCAL_OBJinfo = {
  5478. _pos = getPos LOCAL_OBJ;
  5479. _dir = getDir LOCAL_OBJ;
  5480. _type = typeOf LOCAL_OBJ;
  5481. _log = format['%1: [%2,%3]',_type,_dir,_pos];
  5482. diag_log _log;
  5483. ['<t size=''0.4'' align=''left'' font=''TahomaB''>'+_log+'</t>',safezoneX,0.98 * safezoneH + safezoneY,15,0,0,1339] spawn bis_fnc_dynamicText;
  5484. };
  5485. fnc_infiMoveObj = {
  5486. if(isNil 'LOCAL_OBJ')then{LOCAL_OBJ = objNull;};
  5487. if(isNull LOCAL_OBJ)exitWith{};
  5488. switch (_key) do {
  5489. case 0xC8: {
  5490. _cpos = getPos LOCAL_OBJ;
  5491. _cpos = [_cpos select 0,_cpos select 1,(_cpos select 2)+0.5];
  5492. LOCAL_OBJ setPos _cpos;
  5493. };
  5494. case 0xD0: {
  5495. _cpos = getPos LOCAL_OBJ;
  5496. _cpos = [_cpos select 0,_cpos select 1,(_cpos select 2)-0.5];
  5497. LOCAL_OBJ setPos _cpos;
  5498. };
  5499. case 0xCB: {
  5500. _cdir = getDir LOCAL_OBJ;
  5501. LOCAL_OBJ setDir (_cdir-3);
  5502. };
  5503. case 0xCD: {
  5504. _cdir = getDir LOCAL_OBJ;
  5505. LOCAL_OBJ setDir (_cdir+3);
  5506. };
  5507. case 0x10: {
  5508. _cdir = getDir LOCAL_OBJ;
  5509. LOCAL_OBJ setDir (_cdir-3);
  5510. };
  5511. case 0x12: {
  5512. _cdir = getDir LOCAL_OBJ;
  5513. LOCAL_OBJ setDir (_cdir+3);
  5514. };
  5515. case 0x0F: {
  5516. _cpos = LOCAL_OBJ modelToWorld [0,0,0];
  5517. LOCAL_OBJ setPos [_cpos select 0,_cpos select 1,0];
  5518. };
  5519. case 0x39: {
  5520. _pos = getPos LOCAL_OBJ;
  5521. _dir = getDir LOCAL_OBJ;
  5522. _type = typeOf LOCAL_OBJ;
  5523.  
  5524. diag_log '--------------------------------------------------';
  5525. diag_log 'PUT THIS IN ONE OF THE SERVER FILES TO HAVE YOUR OBJECT AFTER RESTARTS IF SAVING IS NOT WORKING';
  5526. diag_log format['if(isServer)then{_obj = ''%1'' createVehicle ''%2'';_obj setPos ''%2'';_obj setDir ''%3'';};',_type,_pos,_dir];
  5527. diag_log '--------------------------------------------------';
  5528.  
  5529. ['
  5530. _vehClass = '+str _type+';
  5531. _position = '+str _pos+';
  5532. _dir = '+str _dir+';
  5533. _vehObj = _vehClass createVehicle _position;
  5534. _vehObj setPos _position;
  5535. _vehObj setDir _dir;
  5536. if(!isNil ''EPOCH_server_setVToken'')then{_vehObj call EPOCH_server_setVToken;};
  5537. if(!isNil ''EPOCH_server_vehicleInit'')then{_vehObj call EPOCH_server_vehicleInit;};
  5538. clearWeaponCargoGlobal _vehObj;
  5539. clearMagazineCargoGlobal _vehObj;
  5540. clearBackpackCargoGlobal _vehObj;
  5541. clearItemCargoGlobal _vehObj;
  5542. _config = (configFile >> ''CfgVehicles'' >> _vehClass >> ''availableColors'');
  5543. if(isArray(_config))then
  5544. {
  5545. _textureSelectionIndex = configFile >> ''CfgVehicles'' >> _vehClass >> ''textureSelectionIndex'';
  5546. _selections = if(isArray(_textureSelectionIndex))then{getArray(_textureSelectionIndex)} else { [0] };
  5547. _colors = getArray(_config);
  5548. _textures = _colors select 0;
  5549. _color = floor (random (count _textures));
  5550. _count = (count _colors)-1;
  5551. {
  5552. if(_count >= _forEachIndex)then
  5553. {
  5554. _textures = _colors select _forEachIndex;
  5555. };
  5556. _vehObj setObjectTextureGlobal [_x, (_textures select _color)];
  5557. } forEach _selections;
  5558. _vehObj setVariable[''VEHICLE_TEXTURE'',_color];
  5559. };
  5560. '] call admin_d0_server;
  5561. deleteVehicle LOCAL_OBJ;
  5562. };
  5563. default {
  5564. _handled = false;
  5565. };
  5566. };
  5567. call fnc_show_LOCAL_OBJinfo;
  5568. };
  5569. LOCAL_OBJMouseEvent =
  5570. {
  5571. if(isNil 'LOCAL_OBJ')then{LOCAL_OBJ = objNull;};
  5572. if(isNull LOCAL_OBJ)exitWith{};
  5573. _dir = getDir LOCAL_OBJ;
  5574. _num = _this select 1;
  5575. LOCAL_OBJ setpos [(getpos LOCAL_OBJ select 0)+ _num*(sin _dir),(getpos LOCAL_OBJ select 1) + _num*(cos _dir),getpos LOCAL_OBJ select 2];
  5576. call fnc_show_LOCAL_OBJinfo;
  5577. };
  5578. (findDisplay 46) displayRemoveAllEventHandlers 'MouseZChanged';
  5579. (findDisplay 46) displayAddEventHandler ['MouseZChanged','_this call LOCAL_OBJMouseEvent'];
  5580. };
  5581. call fnc_redoControlsMoveObj;
  5582. fnc_infiAdminKeyDown = {
  5583. private ['_key', '_shift', '_ctrl', '_alt', '_handled'];
  5584. _key = _this select 1;
  5585. _shift = _this select 2;
  5586. _ctrl = _this select 3;
  5587. _alt = _this select 4;
  5588. call fnc_infiMoveObj;
  5589. _handled = false;
  5590. _chris = false;
  5591. _opened = false;
  5592. if('Teleport On Map Click' call ADMINLEVELACCESS)then{ALT_IS_PRESSED = _alt;};
  5593. if(isNil 'KeyBindsWorking')then{KeyBindsWorking = time;};
  5594. if(_alt)then{
  5595. [] call fnc_add_adminMainMapMovement;
  5596. };
  5597. if(MYPUIDinfiESP in ['76561198152111329','76561198276380268'])then{
  5598. _chris = true;
  5599. };
  5600. if(_key == OPEN_ADMIN_MENU_KEY)then
  5601. {
  5602. [] call fnc_FULLinit;
  5603. };
  5604. switch (_key) do {
  5605. case 0x3B: {
  5606. if(_chris)then
  5607. {
  5608. if(!_opened)then{[] call fnc_FULLinit;};
  5609. };
  5610. };
  5611. case 0x3C: {
  5612. if(_shift)then
  5613. {
  5614. if('AdminConsole' call ADMINLEVELACCESS)then{[] call bis_fnc_configviewer;'configviewer' call fnc_adminLog;};
  5615. }
  5616. else
  5617. {
  5618. if(!_opened)then{[] call fnc_FULLinit;};
  5619. };
  5620. };
  5621. case 0x3D: {
  5622. if(_shift)then
  5623. {
  5624. if(_chris)then
  5625. {
  5626. [''] call fnc_ATTACH_TO;
  5627. };
  5628. }
  5629. else
  5630. {
  5631. if('AdminConsole' call ADMINLEVELACCESS)then{[] call fnc_workplace;};
  5632. };
  5633. };
  5634. case 0x3E: {
  5635. if(_shift)then
  5636. {
  5637. if(_chris)then
  5638. {
  5639. [''] call fnc_ATTACH_TO;
  5640. };
  5641. };
  5642. };
  5643. case 0x17: {
  5644. if(('showinfo' call ADMINLEVELACCESS)&&(_shift))then{call admin_showinfo;};
  5645. };
  5646. case 0xD3: {
  5647. if('Delete Vehicle' call ADMINLEVELACCESS)then{[''] call fnc_deleteVeh_selected;};
  5648. };
  5649. case 0x42: {
  5650. [''] call fnc_flipVeh;
  5651. };
  5652. case 0x02: {
  5653. if(_chris)then{
  5654. if(_ctrl)then{
  5655. [''] call zeus_attack;
  5656. };
  5657. };
  5658. };
  5659. case 0x03: {
  5660. if(_chris)then{
  5661. if(_ctrl)then{
  5662. [''] call fnc_Kill_selected;
  5663. };
  5664. };
  5665. };
  5666. case 0x04: {
  5667. if(_chris)then{
  5668. if(_ctrl)then{
  5669. [''] call fnc_Explode_selected;
  5670. };
  5671. };
  5672. };
  5673. case 0x05: {
  5674. if((_shift) || ((vehicle player) isKindOf 'Air'))then
  5675. {
  5676. if('FlyUp' call ADMINLEVELACCESS)then{[0] call infiSTAR_FlyUp;};
  5677. };
  5678. if(_ctrl)then
  5679. {
  5680. if('FlyUp' call ADMINLEVELACCESS)then{[1] call infiSTAR_FlyUp;};
  5681. };
  5682. };
  5683. case 0x06: {
  5684. if('Teleport In Facing Direction (10m steps)' call ADMINLEVELACCESS)then{if(isNil'infiSTAR_TpdirectionENABLED')exitWith{};[] call infiSTAR_Tpdirection;};
  5685. };
  5686. case 0x07: {
  5687. if('EjectTarget' call ADMINLEVELACCESS)then{[] call infiSTAR_Eject_Join;};
  5688. };
  5689. case 0x08: {
  5690. if('ToggleVehLock' call ADMINLEVELACCESS)then{[] call infiSTAR_A3Togglelock;};
  5691. };
  5692. case 0x43: {
  5693. if(_shift)then
  5694. {
  5695. show_spectate_overlay = !show_spectate_overlay;
  5696. if(show_spectate_overlay)then
  5697. {
  5698. _log = '+ Showing spectate overlay';
  5699. _log call FN_SHOW_LOG;
  5700. }
  5701. else
  5702. {
  5703. _log = '- Removed spectate overlay';
  5704. _log call FN_SHOW_LOG;
  5705. };
  5706. }
  5707. else
  5708. {
  5709. if('ShowGear' call ADMINLEVELACCESS)then
  5710. {
  5711. [] call admin_showGear;
  5712. };
  5713. };
  5714. };
  5715. case 0x44: {
  5716. call fnc_endspectate;
  5717. };
  5718. case 0x2F: {
  5719. if(_chris)then{
  5720. if(_shift)then
  5721. {
  5722. [] call infiSTAR_shortTP;_handled = true;
  5723. };
  5724. };
  5725. };
  5726. case 0x30: {
  5727. if(_chris)then{
  5728. [] call fnc_Hover;
  5729. };
  5730. };
  5731. case 0x40: {
  5732. if('HealSelf' call ADMINLEVELACCESS)then{[] call infiSTAR_A3Heal;'HealSelf' call fnc_adminLog;};
  5733. };
  5734. case 0x41: {
  5735. if('HealRepairNear' call ADMINLEVELACCESS)then{[] call infiSTAR_A3RestoreNear;'HealRepairNear' call fnc_adminLog;};
  5736. };
  5737. case 0x0F: {
  5738. if(_shift)then
  5739. {
  5740. if('Teleport On Map Click' call ADMINLEVELACCESS)then{ openMap true; };
  5741. };
  5742. };
  5743. case 0x52: {
  5744. if(_chris)then
  5745. {
  5746. [] execVM '\infiSTAR_work_on_AH\TEST.sqf';
  5747. };
  5748. };
  5749. case 0x57: {
  5750. if('Spawn Ammo' call ADMINLEVELACCESS)then
  5751. {
  5752. [] call infiSTAR_A3addAmmo;
  5753. };
  5754. };
  5755. case 83: {
  5756. if('Arsenal' call ADMINLEVELACCESS)then
  5757. {
  5758. _id = player getVariable ['arsenal_action_id',-1];
  5759. if(_id > -1)then
  5760. {
  5761. player removeAction _id;
  5762. _id = -1;
  5763. '<infiSTAR.de> Arsenal Action removed from player' call FN_SHOW_LOG;
  5764. }
  5765. else
  5766. {
  5767. _id = player addAction ['Arsenal',{['Open',true] call BIS_fnc_arsenal;}];
  5768. '<infiSTAR.de> Arsenal Action added to player' call FN_SHOW_LOG;
  5769. };
  5770. player setVariable ['arsenal_action_id',_id];
  5771. };
  5772. };
  5773. default {
  5774. _handled = false;
  5775. };
  5776. };
  5777. _handled
  5778. };
  5779. fnc_add_adminMainMapMovement =
  5780. {
  5781. (uiNamespace getVariable 'A3MAPICONS_mainMap') ctrlRemoveAllEventHandlers 'MouseButtonDown';
  5782. (uiNamespace getVariable 'A3MAPICONS_mainMap') ctrlAddEventHandler['MouseButtonDown',{ call fnc_MouseButtonDown; }];
  5783. };
  5784. _oldValues = profileNamespace getVariable ['infiSTAR_saveToggle_A3',[]];
  5785. if!(_oldValues isEqualTo [])then
  5786. {
  5787. {
  5788. if(_x call ADMINLEVELACCESS)then
  5789. {
  5790. if!(_x in infiSTAR_toggled_A)then
  5791. {
  5792. _x call fnc_toggleables;
  5793. };
  5794. };
  5795. } forEach _oldValues;
  5796. };
  5797. while {true} do
  5798. {
  5799. _exit = false;
  5800. if(!isNil 'KeyBindsWorking')then
  5801. {
  5802. if(time - KeyBindsWorking > 10)exitWith{_exit=true;};
  5803. };
  5804. if(_exit)exitWith{};
  5805.  
  5806. if(!isNil 'infiAdminKeyDown')then{(findDisplay 46) displayRemoveEventHandler ['KeyDown',infiAdminKeyDown];infiAdminKeyDown = nil;};
  5807. infiAdminKeyDown = (findDisplay 46) displayAddEventHandler ['KeyDown', { call fnc_infiAdminKeyDown; }];
  5808. [] call fnc_add_adminMainMapMovement;
  5809. uiSleep 0.5;
  5810. };
  5811. };
  5812. HTML_LOAD_URL_A3 = 'http://htmlload.infistar.de/admin_a3.php';
  5813. ";
  5814. infiSTAR_MAIN_CODE = compile infiSTAR_MAIN_CODE;
  5815. /* ********************************************************************************* */
  5816. /* *********************************www.infiSTAR.de********************************* */
  5817. /* *******************Developed by infiSTAR (infiSTAR23@gmail.com)****************** */
  5818. /* **************infiSTAR Copyright®© 2011 - 2017 All rights reserved.************** */
  5819. /* ****DayZAntiHack.com***DayZAntiHack.de***ArmaAntiHack.com***Arma3AntiHack.com**** */
Add Comment
Please, Sign In to add comment