Advertisement
J3r3my133

Untitled

Jan 30th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.77 KB | None | 0 0
  1. /*
  2. AUTHOR: Lystic
  3. DATE: 06/19/14
  4. VERSION: 1.5
  5. FILE: AdminMenu.sqf
  6. COMMENT: Do not edit this file. Run this file from your mission init!
  7.  
  8. */
  9.  
  10. /* Configuration */
  11.  
  12. Admin_List = compileFinal "[]"; //replace these with your admin player UIDS (steamID64)
  13.  
  14. /* End Configuration */
  15.  
  16. _toCompilableString = {
  17. _code = _this select 0;
  18. _string = "";
  19. if(typename _code == "CODE") then {
  20. _string = str(_code);
  21. _arr = toArray(_string);
  22. _arr set[0,32];
  23. _arr set[count(_arr)-1,32];
  24. _string = toString(_arr);
  25. };
  26. _string;
  27. };
  28. AH_AdminCheck = {
  29. _object = _this;
  30. _isAdmin = if(getplayeruid _object in (call Admin_List)) then {true} else {false};
  31. _isAdmin;
  32. };
  33. AH_AdminCheck = compileFinal ([AH_AdminCheck] call _toCompilableString);
  34. if(isNil "AH_fnc_MP") then {
  35. AH_fnc_MP = compileFinal ([BIS_fnc_MP] call _toCompilableString);
  36. if(!isDedicated) then {
  37. [] spawn {
  38. while{true} do {
  39. waitUntil{!isNull (findDisplay 49)};
  40. ((findDisplay 49) displayCtrl 2) ctrlEnable false;
  41. ((findDisplay 49) displayCtrl 2) ctrlSetText "2DaysLife RPG:";
  42. ((findDisplay 49) displayCtrl 103) ctrlEnable false;
  43. ((findDisplay 49) displayCtrl 103) ctrlSetText "Bis bald!";
  44. ((findDisplay 49) displayCtrl 122) ctrlEnable false;
  45. ((findDisplay 49) displayCtrl 122) ctrlShow false;
  46. ((findDisplay 49) displayCtrl 523) ctrlSetText "v1.5";
  47. waitUntil{isNull (findDisplay 49)}
  48. };
  49. };
  50. };
  51. };
  52. if(isServer) then {
  53. AH_Menu_DoSpawn = {
  54. _object = _this select 0;
  55. _vehicle = _this select 1;
  56. _pos = _this select 2;
  57. _dir = _this select 3;
  58.  
  59. if(_object call AH_AdminCheck) then {
  60. _v = _vehicle createVehicle _pos;
  61. _v setDir _dir;
  62. _v setPos _pos;
  63. format["%1 has created the vehicle '%2' at the position %3",name _object,_vehicle,_pos] call SERVER_LOG;
  64. };
  65. };
  66. AH_Menu_DoTP = {
  67. _pos = _this select 1;
  68. _object = _this select 0;
  69.  
  70. if(_object call AH_AdminCheck) then {
  71. _object setpos _pos;
  72. format["%1 has teleported to %2",name _object,_pos] call SERVER_LOG;
  73. };
  74. };
  75. AH_Menu_CleanUp = {
  76. _object = _this;
  77. if(_object call AH_AdminCheck) then {
  78. {
  79. deleteVehicle _x;
  80. } forEach allDead;
  81. {
  82. if (count(crew _x) < 1 || !(alive _x)) then {
  83. deleteVehicle _x;
  84. };
  85. } forEach vehicles;
  86. format["%1 has deleted all the vehicles!",name _object] call SERVER_LOG;
  87. [{hint "All Dead And Empty Vehicles Have Been Removed!";},"BIS_fnc_Spawn",_object,false] call AH_fnc_MP;
  88. };
  89. };
  90. AH_Menu_TPAHere = {
  91. _object = _this;
  92. if(_object call AH_AdminCheck) then {
  93. _pos = getposatl _object;
  94. {
  95. _x setposatl _pos;
  96. } forEach playableUnits;
  97. format["%1 has teleported everyone to himself!",name _object] call SERVER_LOG;
  98. [{hint "All players have been teleported!";},"BIS_fnc_Spawn",_object,false]call AH_fnc_MP;
  99. };
  100. };
  101. AH_Menu_Kick = {
  102. _sender = _this select 0;
  103. _receiver = _this select 1;
  104. if(_sender call AH_AdminCheck) then {
  105. format["%1 has kicked %2",name _sender,name _receiver] call SERVER_LOG;
  106. [{endMission "FAIL";},"BIS_fnc_Spawn",_receiver,false] call AH_fnc_MP;
  107. [{hint "The Target Has Been Kicked!";},"BIS_fnc_Spawn",_sender,false] call AH_fnc_MP;
  108. };
  109. };
  110. AH_Menu_Input = {
  111. _sender = _this select 0;
  112. _receiver = _this select 1;
  113. _allow = _this select 2;
  114. if(_sender call AH_AdminCheck) then {
  115. format["%1 has set %2's input to %3",name _sender,name _receiver,_allow] call SERVER_LOG;
  116. if(_allow) then {
  117. [{disableUserInput false;},"BIS_fnc_Spawn",_receiver,false] call AH_fnc_MP;
  118. [{hint "The Targets Input Has Been Enabled!";},"BIS_fnc_Spawn",_sender,false] call AH_fnc_MP;
  119. } else {
  120. [{disableUserInput true;},"BIS_fnc_Spawn",_receiver,false] call AH_fnc_MP;
  121. [{hint "The Targets Input Has Been Disabled!";},"BIS_fnc_Spawn",_sender,false] call AH_fnc_MP;
  122. };
  123. };
  124. };
  125. SERVER_LOG = {
  126. _message = _this;
  127. _message = format["<%1>: %2",serverTime,_message];
  128. LOG_LIST = LOG_LIST + [_message];
  129. };
  130. REQUEST_LOGS = {
  131. _object = _this;
  132. _owner = owner _object;
  133. if(_object call AH_AdminCheck) then {
  134. ADMIN_LOGS = LOG_LIST;
  135. _owner publicVariableClient "ADMIN_LOGS";
  136. };
  137. };
  138. LOG_LIST = [];
  139. [] spawn {
  140. _log_list_backUp = LOG_LIST;
  141. while{true} do {
  142. waitUntil{count(LOG_LIST) != count(_log_list_backUp)};
  143. if(count(LOG_LIST) > count(_log_list_backUp)) then {
  144. _log_list_backUp = LOG_LIST;
  145. } else {
  146. LOG_LIST = _log_list_backUp;
  147. };
  148. };
  149. };
  150. AH_Menu_DoTP = compileFinal ([AH_Menu_DoTP] call _toCompilableString);
  151. AH_Menu_CleanUp = compileFinal ([AH_Menu_CleanUp] call _toCompilableString);
  152. AH_Menu_TPAHere = compileFinal ([AH_Menu_TPAHere] call _toCompilableString);
  153. AH_Menu_Kick = compileFinal ([AH_Menu_Kick] call _toCompilableString);
  154. AH_Menu_Input = compileFinal ([AH_Menu_Input] call _toCompilableString);
  155. AH_Menu_DoSpawn = compileFinal ([AH_Menu_DoSpawn] call _toCompilableString);
  156. SERVER_LOG = compileFinal ([SERVER_LOG] call _toCompilableString);
  157. REQUEST_LOGS = compileFinal ([REQUEST_LOGS] call _toCompilableString);
  158. };
  159. if(!isDedicated) then {
  160. if(player call AH_AdminCheck) then {
  161. AH_PM = false;
  162. AH_VM = false;
  163. AH_NT = false;
  164. AH_GM = false;
  165. [format["The admin '%1' has joined!",name player],"SERVER_LOG",false,false] call AH_fnc_MP;
  166. if(isNil "AH_Init") then {
  167. [] spawn {
  168. while{true} do {
  169. sleep 10;
  170. if(!isNil "AH_BIND") then {(findDisplay 46) displayRemoveEventHandler["KeyDown",AH_BIND];};
  171. AH_BIND = (findDisplay 46) displayAddEventHandler ["KeyDown",{if((_this select 1) == 61) then {[] spawn AH_ViewLogs;};if((_this select 1) == 59) then {deleteVehicle cursorTarget;};if((_this select 1) == 60) then {cursorTarget setDamage 0;cursorTarget setFuel 1;cursorTarget setVectorUp (surfaceNormal (getpos cursorTarget));};false}];
  172. };
  173. };
  174. [] spawn {
  175. while{true} do {
  176. if !(player call AH_AdminCheck) exitWith {};
  177. waitUntil{inputAction "User4" > 0};
  178. call AH_Init;
  179. waitUntil{inputAction "User4" == 0};
  180. };
  181. };
  182. [] spawn {
  183. while{true} do {
  184. if !(player call AH_AdminCheck) exitWith {};
  185. waitUntil{inputAction "User3" > 0};
  186. call AH_SpawnMenu;
  187. waitUntil{inputAction "User3" == 0};
  188. };
  189. };
  190. };
  191. AH_ViewLogs = {
  192. [player,"REQUEST_LOGS",false,false] call AH_fnc_MP;
  193. waitUntil{!isNil "ADMIN_LOGS"};
  194. _logs = ADMIN_LOGS;
  195. ADMIN_LOGS = nil;
  196. createDialog "RscDisplayChooseEditorLayout";
  197. disableSerialization;
  198. ctrlSetText[1000,"Team-Atomic's Admin Menu - View Server Logs"];
  199. _ctrl = (findDisplay 164) displayctrl 1;
  200. _ctrl ctrlSetText "Close";
  201. _ctrl ctrlCommit 0;
  202. _ctrl = (findDisplay 164) displayctrl 101;
  203. _c = 0;
  204. {
  205. _c = _c + 1;
  206. _ctrl lbAdd format["LOG #%1",_c];
  207. _ctrl lbSetData [(lbSize _ctrl)-1,_x];
  208. } forEach _logs;
  209. _ctrl ctrlAddEventHandler ["LbSelChanged",{
  210. _index = _this select 1;
  211. _message = ([lbData[101,_index],":"] call BIS_fnc_splitString) select 1;
  212. _ctrl = (findDisplay 164) displayctrl 1100;
  213. _ctrl ctrlSetStructuredText parseText format["<t size='0.7'>LOG: %1</t>",_message];
  214. _ctrl ctrlCommit 0;
  215. }];
  216. _ctrl ctrlCommit 0;
  217. };
  218. AH_SpawnMenu = {
  219. if(isNil "VEHICLE_LIST") then {
  220. VEHICLE_LIST = [];
  221. LAST_SEL_VEH = "";
  222. _AIR_LIST = [];
  223. _LAND_LIST = [];
  224. _WATER_LIST = [];
  225. _OBJECT_LIST = [];
  226. _cfg = configFile >> "cfgVehicles";
  227. for "_i" from 0 to count(_cfg)-1 do {
  228. _conf = _cfg select _i;
  229. if(isClass _conf) then {
  230. _type = configName _conf;
  231. if !(_type isKindOf "ParachuteBase") then {
  232. _picture = getText(configFile >> "cfgVehicles" >> _type >> "picture");
  233. _desc = getText(configFile >> "cfgVehicles" >> _type >> "library" >> "libTextDesc");
  234. if(_picture != "" && _desc != "" && (getNumber (configFile >> "cfgVehicles" >> _type >> "scope") == 2)) then {
  235. if(_type isKindOf "Air") then {
  236. _AIR_LIST = _AIR_LIST + [_type];
  237. };
  238. if(_type isKindOf "LandVehicle") then {
  239. _LAND_LIST = _LAND_LIST + [_type];
  240. };
  241. if(_type isKindOf "Ship") then {
  242. _WATER_LIST = _WATER_LIST + [_type];
  243. };
  244. if(_type isKindOf "Building") then {
  245. _OBJECT_LIST = _OBJECT_LIST + [_type];
  246. };
  247. };
  248. };
  249. };
  250. };
  251. VEHICLE_LIST = _AIR_LIST + _LAND_LIST + _WATER_LIST + _OBJECT_LIST;
  252. };
  253.  
  254. createDialog "RscDisplayChooseEditorLayout";
  255. disableSerialization;
  256. ctrlSetText[1000,"Team-Atomic's Admin Menu - Spawn A Vehicle"];
  257. _ctrl = (findDisplay 164) displayctrl 1;
  258. _ctrl ctrlSetText "Spawn";
  259. _ctrl buttonSetAction 'hint "spawning vehicle!";_veh = LAST_SEL_VEH;_dir = getdir vehicle player;_pos = getPos vehicle player;_pos = [(_pos select 0)+8*sin(_dir),(_pos select 1)+8*cos(_dir),0];[[player,_veh,_pos,_dir],"AH_Menu_DoSpawn",false,false] call AH_fnc_MP;';
  260. _ctrl ctrlCommit 0;
  261. _ctrl = (findDisplay 164) displayctrl 101;
  262. {
  263. _name = getText(configFile >> "cfgVehicles" >> _x >> "displayName");
  264. _ctrl lbAdd _name;
  265. _ctrl lbSetData [(lbSize _ctrl)-1,_x];
  266. _ctrl lbSetPicture [(lbSize _ctrl)-1,getText(configFile >> "cfgVehicles" >> _x >> "Icon")];
  267. } forEach VEHICLE_LIST;
  268. _ctrl ctrlAddEventHandler ["LbSelChanged",{
  269. _index = _this select 1;
  270. _text = lbData[101,_index];
  271. LAST_SEL_VEH = _text;
  272. _picture = getText(configFile >> "cfgVehicles" >> _text >> "picture");
  273. _desc = getText(configFile >> "cfgVehicles" >> _text >> "library" >> "libTextDesc");
  274. _openLet = toArray(_desc) select 0;
  275. if(_openLet == (toArray("$") select 0)) then {
  276. _desc = localize _desc;
  277. };
  278. disableSerialization;
  279. _ctrl = (findDisplay 164) displayctrl 102;
  280. _ctrl ctrlSetText _picture;
  281. _ctrl ctrlCommit 0;
  282. _ctrl = (findDisplay 164) displayctrl 1100;
  283. _ctrl ctrlSetStructuredText parseText format["<t size='0.6'>%1</t>",_desc];
  284. _ctrl ctrlCommit 0;
  285. }];
  286. _ctrl ctrlCommit 0;
  287. };
  288. AH_Init = {
  289. if(player call AH_AdminCheck) then {
  290. if(isNull (FindDisplay 163)) then {
  291. disableserialization;
  292. createDialog "RscDisplayControlSchemes";
  293.  
  294. _ctrl = (findDisplay 163) displayctrl 1000;
  295. _ctrl ctrlSetText "Team-Atomic's Admin Menu";
  296. _ctrl ctrlSetFont "PuristaSemiBold";
  297. _ctrl ctrlCommit 0;
  298.  
  299. _ctrl = (findDisplay 163) displayctrl 1;
  300. _ctrl buttonSetAction "createDialog 'RscDisplayDebugPublic'";
  301. _ctrl ctrlSetFont "PuristaSemiBold";
  302. _ctrl ctrlSetText "Debug Menu";
  303. _ctrl ctrlCommit 0;
  304.  
  305. _ctrl = (findDisplay 163) displayCtrl 2;
  306. _ctrl buttonSetAction "[] spawn AH_TP";
  307. _ctrl ctrlSetFont "PuristaSemiBold";
  308. _ctrl ctrlSetText "Teleport";
  309. _ctrl ctrlCommit 0;
  310.  
  311. _ctrl = (findDisplay 163) displayctrl 101;
  312. _ctrl ctrlSetFont "PuristaSemiBold";
  313. _ctrl ctrlAddEventHandler ["LBDblClick",{(_this select 1) call AH_DBLClick}];
  314. _ctrl lbAdd "Kick A Player";
  315. _ctrl lbAdd "Spectate A Player";
  316. _ctrl lbAdd "Disable Input";
  317. _ctrl lbAdd "Enable Input";
  318. _ctrl lbAdd "Cleanup Vehicles";
  319. _ctrl lbAdd "Teleport All Here";
  320. _ctrl lbAdd "God Mode";
  321. if(AH_GM) then {
  322. _ctrl lbSetColor [6,[0,1,0,1]];
  323. } else {
  324. _ctrl lbSetColor [6,[1,0,0,1]];
  325. };
  326. _ctrl lbAdd "Player Markers";
  327. if(AH_PM) then {
  328. _ctrl lbSetColor [7,[0,1,0,1]];
  329. } else {
  330. _ctrl lbSetColor [7,[1,0,0,1]];
  331. };
  332. _ctrl lbAdd "Vehicle Markers";
  333. if(AH_VM) then {
  334. _ctrl lbSetColor [8,[0,1,0,1]];
  335. } else {
  336. _ctrl lbSetColor [8,[1,0,0,1]];
  337. };
  338. _ctrl lbAdd "Show Name Tags";
  339. if(AH_NT) then {
  340. _ctrl lbSetColor [9,[0,1,0,1]];
  341. } else {
  342. _ctrl lbSetColor [9,[1,0,0,1]];
  343. };
  344. };
  345. };
  346. };
  347. AH_GetObject = {
  348. if !(player call AH_AdminCheck) exitWith {objnull};
  349. _name = _this;
  350. _obj = objnull;
  351. {
  352. if(name _x == _name) exitWith {
  353. _obj = _x;
  354. };
  355. } forEach allUnits;
  356. _obj;
  357. };
  358. AH_Spectate = {
  359. if !(player call AH_AdminCheck) exitWith {};
  360. _target = _this;
  361. _target switchCamera "INTERNAL";
  362. [format["The admin '%1' has started spectating '%2'!",name player,name _target],"SERVER_LOG",false,false] call AH_fnc_MP;
  363. hint "PRESS F10 TO EXIT SPECTATOR MODE";
  364. AH_TEMPBIND = (findDisplay 46) displayAddEventHandler ["KeyDown","if((_this select 1) == 68) then {(findDisplay 46) displayRemoveEventHandler ['KeyDown',AH_TEMPBIND];player switchCamera 'INTERNAL';hint 'YOU HAVE EXITED SPECTOR MODE!';};false"];
  365. };
  366. AH_Target = {
  367. if !(player call AH_AdminCheck) exitWith {};
  368. _script = _this;
  369. disableserialization;
  370. createDialog "RscDisplayChooseEditorLayout";
  371. ctrlSetText[1000,"Team-Atomic's Admin Menu - Select a target"];
  372. if(_script == 0) then {
  373. _ctrl = (findDisplay 164) displayctrl 1100;
  374. _ctrl ctrlSetStructuredText parseText "<t size='1.1'>Kick A Player</t><br/><t size='0.9'>Select a target to kick from the server!</t>";
  375. _ctrl ctrlCommit 0;
  376.  
  377. _ctrl = (findDisplay 164) displayctrl 1;
  378. _ctrl ctrlSetText "Kick";
  379. _ctrl buttonSetAction "[[player,(lbText[101,lbCurSel 101] call AH_GetObject)],'AH_Menu_Kick',false,false] call AH_fnc_MP";
  380. _ctrl ctrlCommit 0;
  381. };
  382. if(_script == 1) then {
  383. _ctrl = (findDisplay 164) displayctrl 1100;
  384. _ctrl ctrlSetStructuredText parseText "<t size='1.1'>Spectate A Player</t><br/><t size='0.9'>Select a target to spectate them!</t>";
  385. _ctrl ctrlCommit 0;
  386.  
  387. _ctrl = (findDisplay 164) displayctrl 1;
  388. _ctrl ctrlSetText "Spectate";
  389. _ctrl buttonSetAction "(lbText[101,lbCurSel 101] call AH_GetObject) spawn AH_Spectate;";
  390. _ctrl ctrlCommit 0;
  391. };
  392. if(_script == 2) then {
  393. _ctrl = (findDisplay 164) displayctrl 1100;
  394. _ctrl ctrlSetStructuredText parseText "<t size='1.1'>Disable Input</t><br/><t size='0.9'>Select a target to disable their input!</t>";
  395. _ctrl ctrlCommit 0;
  396.  
  397. _ctrl = (findDisplay 164) displayctrl 1;
  398. _ctrl ctrlSetText "Disable Input";
  399. _ctrl buttonSetAction "[[player,(lbText[101,lbCurSel 101] call AH_GetObject),false],'AH_Menu_Input',false,false] call AH_fnc_MP";
  400. _ctrl ctrlCommit 0;
  401. };
  402. if(_script == 3) then {
  403. _ctrl = (findDisplay 164) displayctrl 1100;
  404. _ctrl ctrlSetStructuredText parseText "<t size='1.1'>Enable Input</t><br/><t size='0.9'>Select a target to enable their input!</t>";
  405. _ctrl ctrlCommit 0;
  406.  
  407. _ctrl = (findDisplay 164) displayctrl 1;
  408. _ctrl ctrlSetText "Enable Input";
  409. _ctrl buttonSetAction "[[player,(lbText[101,lbCurSel 101] call AH_GetObject),true],'AH_Menu_Input',false,false] call AH_fnc_MP";
  410. _ctrl ctrlCommit 0;
  411. };
  412. _ctrl = (findDisplay 164) displayctrl 101;
  413. {
  414. if(alive _x && isplayer _x) then {
  415. _ctrl lbadd (name _x);
  416. };
  417. } forEach allUnits;
  418. _ctrl ctrlCommit 0;
  419. };
  420. AH_DBLClick = {
  421. if !(player call AH_AdminCheck) exitWith {};
  422. _index = _this;
  423. switch(_index) do {
  424. case 0: {0 spawn AH_Target;};
  425. case 1: {1 spawn AH_Target;};
  426. case 2: {2 spawn AH_Target;};
  427. case 3: {3 spawn AH_Target;};
  428. case 4: {if(player call AH_AdminCheck) then {[player,"AH_Menu_CleanUp",false,false] call AH_fnc_MP;};};
  429. case 5: {if(player call AH_AdminCheck) then {[player,"AH_Menu_TPAHere",false,false] call AH_fnc_MP;};};
  430. case 6: {if(player call AH_AdminCheck) then {AH_GM = !AH_GM; if(AH_GM) then {lbSetColor[101,6,[0,1,0,1]];player allowDamage false;[] spawn AH_CarGod;hint "God Mode ON";} else {lbSetColor[101,6,[1,0,0,1]];player allowDamage true;[] spawn AH_CarGod;hint "God Mode OFF";};};};
  431. case 7: {[] spawn AH_MapMarkers;};
  432. case 8: {[] spawn AH_VehMarkers;};
  433. case 9: {call AH_ESP;};
  434. };
  435. };
  436. AH_CarGod = {
  437. if !(player call AH_AdminCheck) exitWith {};
  438. if(AH_GM) then {
  439. while{AH_GM} do {
  440. _oldVeh = vehicle player;
  441. _oldVeh allowDamage false;
  442. _oldVeh setFuel 1;
  443. _oldVeh setDamage 0;
  444. waitUntil{_oldVeh != (vehicle player)};
  445. if(_oldVeh != player) then {
  446. _oldVeh allowDamage true;
  447. _oldVeh = vehicle player;
  448. };
  449. };
  450. } else {
  451. if(vehicle player != player) then {
  452. vehicle player allowDamage true;
  453. };
  454. };
  455. };
  456. AH_MapMarkers = {
  457. if !(player call AH_AdminCheck) exitWith {};
  458. AH_PM = !AH_PM;
  459. if(AH_PM) then {
  460. lbSetColor[101,7,[0,1,0,1]];
  461. AH_PrevMarkers = [];
  462. AH_DoneWhileLoop = false;
  463. hint "Player Markers ON";
  464. [format["The admin '%1' has enabled map markers",name player],"SERVER_LOG",false,false] call AH_fnc_MP;
  465. while{AH_PM} do {
  466. {
  467. if !(_x in allUnits) then {
  468. deleteMarkerLocal str _x;
  469. };
  470. } forEach AH_PrevMarkers;
  471. AH_PrevMarkers = [];
  472. {
  473. if(alive _x && isplayer _x) then {
  474. deleteMarkerLocal str _x;
  475. _PlrMark = createMarkerLocal [str _x,getpos _x];
  476. _PlrMark setMarkerTypeLocal "waypoint";
  477. _PlrMark setMarkerPosLocal getPos _x;
  478. _PlrMark setMarkerSizeLocal [0.5,0.5];
  479. _PlrMark setMarkerTextLocal format['%1',name _x];
  480. _PlrMark setMarkerColorLocal ("ColorGreen");
  481. AH_PrevMarkers = AH_PrevMarkers + [_x];
  482. };
  483. } forEach allUnits;
  484. sleep 1;
  485. };
  486. AH_DoneWhileLoop = true;
  487. } else {
  488. [format["The admin '%1' has disabled map markers",name player],"SERVER_LOG",false,false] call AH_fnc_MP;
  489. if(isNil "AH_DoneWhileLoop") exitWith {};
  490. lbSetColor[101,7,[1,0,0,1]];
  491. hint "Player Markers OFF";
  492. waitUntil{AH_DoneWhileLoop};
  493. {
  494. deleteMarkerLocal str _x;
  495. } forEach AH_PrevMarkers;
  496. };
  497. };
  498. AH_VehMarkers = {
  499. if !(player call AH_AdminCheck) exitWith {};
  500. AH_VM = !AH_VM;
  501. if(AH_VM) then {
  502. lbSetColor[101,8,[0,1,0,1]];
  503. hint "Vehicle Markers ON";
  504. [format["The admin '%1' has enabled vehicle markers",name player],"SERVER_LOG",false,false] call AH_fnc_MP;
  505. while{AH_VM} do {
  506. {
  507. if( (_x iskindof "Air" ) || (_x iskindof "Tank") || (_x isKindOf "Land") || (_x isKindOf "Ship")) then {
  508. _VehMark = str _x;
  509. deleteMarkerLocal _VehMark;
  510. _VehMark = createMarkerLocal [_VehMark, getPos _x];
  511. _VehMark setMarkerTypeLocal "waypoint";
  512. _VehMark setMarkerPosLocal getPos _x;
  513. _VehMark setMarkerSizeLocal [0.5,0.5];
  514. _VehMark setMarkerTextLocal format['%1',typeOf _x];
  515. if ((_x isKindOf "Air") || (_x isKindOf "Tank")) then {
  516. _VehMark setMarkerColorLocal ("ColorRed");
  517. } else {
  518. if ((_x isKindOf "Land") || (_x isKindOf "Ship")) then {
  519. _VehMark setMarkerColorLocal ("ColorBlue");
  520. };
  521. };
  522. };
  523. } forEach vehicles;
  524. sleep 1;
  525. };
  526. } else {
  527. hint "Vehicle Markers OFF";
  528. [format["The admin '%1' has disabled vehicle markers",name player],"SERVER_LOG",false,false] call AH_fnc_MP;
  529. lbSetColor[101,8,[1,0,0,1]];
  530. {
  531. if( (_x iskindof "Air" ) || (_x iskindof "Tank") || (_x isKindOf "Land") || (_x isKindOf "Ship")) then {
  532. deleteMarkerLocal str _x;
  533. };
  534. } forEach vehicles;
  535. };
  536. };
  537. AH_ESP = {
  538. if !(player call AH_AdminCheck) exitWith {};
  539. AH_NT = !AH_NT;
  540. if(AH_NT) then {
  541. [format["The admin '%1' has enabled ESP",name player],"SERVER_LOG",false,false] call AH_fnc_MP;
  542. lbSetColor[101,9,[0,1,0,1]];
  543. addMissionEventHandler["Draw3D", {
  544. {
  545. if((isPlayer _x) && ((side _x) == (side player)) && ((player distance _x) < 700) && (getplayeruid _x != "")) then {
  546. _pos = getposatl _x;
  547. _eyepos = ASLtoATL eyepos _x;
  548. if((getTerrainHeightASL [_pos select 0,_pos select 1]) < 0) then {
  549. _eyepos = eyepos _x;
  550. _pos = getposasl _x;
  551. };
  552. _1 = _x modelToWorld [-0.5,0,0];
  553. _2 = _x modelToWorld [0.5,0,0];
  554. _3 = _x modelToWorld [-0.5,0,0];
  555. _4 = _x modelToWorld [0.5,0,0];
  556. _1 set [2,_pos select 2];
  557. _2 set [2,_pos select 2];
  558. _3 set [2,(_eyepos select 2)+0.25];
  559. _4 set [2,(_eyepos select 2)+0.25];
  560. _HP = (damage _x - 1) * -100;
  561. _fontsize = 0.02;
  562. _eyepos set [2,(_3 select 2) - 0.1];
  563. drawIcon3D["",[0,1,0,1],_eyepos,0.1,0.1,45,format["%1(%2m) - %3HP",name _x,round(player distance _x),round(_HP)],1,_fontsize,'EtelkaNarrowMediumPro'];
  564. drawLine3D[_1,_2,[0,1,0,1]];
  565. drawLine3D[_2,_4,[0,1,0,1]];
  566. drawLine3D[_4,_3,[0,1,0,1]];
  567. drawLine3D[_3,_1,[0,1,0,1]];
  568. };
  569. if((isPlayer _x) && ((side _x) != (side player)) && ((player distance _x) < 1400) && (getplayeruid _x != "")) then {
  570. _pos = getposatl _x;
  571. _eyepos = ASLtoATL eyepos _x;
  572. _1 = _x modelToWorld [-0.5,0,0];
  573. _2 = _x modelToWorld [0.5,0,0];
  574. _3 = _x modelToWorld [-0.5,0,0];
  575. _4 = _x modelToWorld [0.5,0,0];
  576. _1 set [2,_pos select 2];
  577. _2 set [2,_pos select 2];
  578. _3 set [2,(_eyepos select 2)+0.25];
  579. _4 set [2,(_eyepos select 2)+0.25];
  580. _HP = (damage _x - 1) * -100;
  581. _fontsize = 0.02;
  582. _eyepos set [2,(_3 select 2) - 0.1];
  583. drawIcon3D["",[1,0,0,1],_eyepos,0.1,0.1,45,format["%1(%2m) - %3HP",name _x,round(player distance _x),round(_HP)],1,_fontsize,'EtelkaNarrowMediumPro'];
  584. drawLine3D[_1,_2,[1,0,0,1]];
  585. drawLine3D[_2,_4,[1,0,0,1]];
  586. drawLine3D[_4,_3,[1,0,0,1]];
  587. drawLine3D[_3,_1,[1,0,0,1]];
  588. };
  589. } forEach allUnits;
  590. }];
  591. hint "Name Tags ON";
  592. } else {
  593. [format["The admin '%1' has disabled ESP",name player],"SERVER_LOG",false,false] call AH_fnc_MP;
  594. hint "Name Tags OFF";
  595. removeAllMissionEventHandlers "Draw3D";
  596. lbSetColor[101,9,[1,0,0,1]];
  597. };
  598. };
  599. AH_TP = {
  600. if(player call AH_AdminCheck) then {
  601. if !("ItemMap" in items player) then {
  602. player addItem "ItemMap";
  603. };
  604. openMap[true,false];
  605. onMapSingleClick '[[player,_pos],"AH_Menu_DoTP",false,fale] call AH_fnc_MP;openMap[false,false];onMapSingleClick "";false';
  606. };
  607. };
  608. AH_TP = compileFinal ([AH_TP] call _toCompilableString);
  609. AH_ESP = compileFinal ([AH_ESP] call _toCompilableString);
  610. AH_CarGod = compileFinal ([AH_CarGod] call _toCompilableString);
  611. AH_VehMarkers = compileFinal ([AH_VehMarkers] call _toCompilableString);
  612. AH_MapMarkers = compileFinal ([AH_MapMarkers] call _toCompilableString);
  613. AH_DBLClick = compileFinal ([AH_DBLClick] call _toCompilableString);
  614. AH_Target = compileFinal ([AH_Target] call _toCompilableString);
  615. AH_Spectate = compileFinal ([AH_Spectate] call _toCompilableString);
  616. AH_GetObject = compileFinal ([AH_GetObject] call _toCompilableString);
  617. AH_Init = compileFinal ([AH_Init] call _toCompilableString);
  618. AH_SpawnMenu = compileFinal ([AH_SpawnMenu] call _toCompilableString);
  619. AH_ViewLogs = compileFinal ([AH_ViewLogs] call _toCompilableString);
  620. hint parseText format["Press '%1' to open the admin menu!<br/>Press '%2' to open the spawn menu!<br/>Press F1 F2 and F3 to delete and repair vehicles or open the log menu respectively",(actionKeysNames ["User3",1]),(actionKeysNames ["User4",1])];
  621. };
  622. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement