daily pastebin goal
82%
SHARE
TWEET

Untitled

a guest Sep 20th, 2016 372 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*  File: A3AH.sqf  Author: Chris(tian) "infiSTAR" Lorenzen  Contact: infiSTAR23@gmail.com    Description:  Arma AntiHack & AdminTools - infiSTAR.de */ /* *******************Developer : infiSTAR (infiSTAR23@gmail.com)******************* */ /* **************infiSTAR Copyright®© 2011 - 2016 All rights reserved.************** */ /* *********************************www.infiSTAR.de********************************* */ diag_log '<infiSTAR.de> VERSION: 21-Jun-2016 22-05-12 infiSTAR.de AHAT (v0239)';
  2.  
  3.  comment 'Antihack & AdminTools - Christian Lorenzen - www.infiSTAR.de - License: (CC)';
  4.  
  5.  UPDATEEMAIL='inspeed@hotmail.de';
  6.  
  7.  INFISTARVERSION='21-Jun-2016 22-05-12 - v0239';
  8.  
  9.  diag_log format['<infiSTAR.de> %1 - STARTING',time];
  10.  
  11.  _t = time;
  12.  
  13.  diag_log format['<infiSTAR.de> %1 - TESTING IF serverCommandPassword IS SET PROPERLY',_t];
  14.  
  15.  _return = _serverCommandPassword serverCommand format ['#kick %1',0];
  16.  
  17.  if(!_return)exitWith {  diag_log format['<infiSTAR.de> %1 - serverCommandPassword NOT SET!    inspeed@hotmail.de - 21-Jun-2016 22-05-12 - v0239 - %2 - %3',_t,serverName,productVersion];
  18.  
  19.   diag_log format['<infiSTAR.de> %1 - serverCommandPassword   in infiSTAR_config.sqf is %2',_t,_serverCommandPassword];
  20.  
  21.   diag_log format['<infiSTAR.de> %1 - serverCommandPassword   is defined in your servers config.cfg',_t];
  22.  
  23.   diag_log format['<infiSTAR.de> %1 - serverCommandPassword   if your config.cfg does not have serverCommandPassword yet, simply add it in a new line: serverCommandPassword = "changeme";
  24.  
  25. ',_t];
  26.  
  27.   diag_log format['<infiSTAR.de> %1 - serverCommandPassword   has to be set it in infiSTAR_config.sqf where it says _serverCommandPassword = "changeme";
  28.  
  29. ',_t];
  30.  
  31.   diag_log format['<infiSTAR.de> %1 - infiSTAR will not START if passwords are not set properly!',_t];
  32.  
  33.  };
  34.  
  35.  FN_GET_SERVERPW = compileFinal (str _serverCommandPassword);
  36.  
  37.  diag_log format['<infiSTAR.de> %1 - serverCommandPassword IS FINE',_t];
  38.  
  39.  if!(isClass (missionconfigfile >> 'infiSTAR_AdminMenu' >> 'infi_BTN25'))exitWith {  diag_log format['<infiSTAR.de> %1 - infiSTAR_AdminMenu.hpp in your MPmission is NOT UPDATED    inspeed@hotmail.de - 21-Jun-2016 22-05-12 - v0239 - %2 - %3',_t,serverName,productVersion];
  40.  
  41.   diag_log format['<infiSTAR.de> %1 - infiSTAR will not START if infiSTAR_AdminMenu.hpp is not updated!',_t];
  42.  
  43.  };
  44.  
  45.  _test = [0,{}] execFSM 'call.fsm';
  46.  
  47.  _test = [0,{}] execFSM 'call.fsm';
  48.  
  49.  if(_test isEqualTo 0)exitWith {  _log = format['<infiSTAR.de> %1 - call.fsm missing in your MPmission!    inspeed@hotmail.de - 21-Jun-2016 22-05-12 - v0239 - %2 - %3',_t,serverName,productVersion];
  50.  
  51.   for '_i' from 0 to 30 do  {   diag_log _log;
  52.  
  53.    diag_log format['<infiSTAR.de> %1 - infiSTAR will not START if files are not in place!',_t];
  54.  
  55.   };
  56.  
  57.  };
  58.  
  59.  infiSTAR_MOD = compileFinal str _MOD;
  60.  
  61.  _respawn_west = getMarkerPos 'respawn_west';
  62.  
  63.  _respawn_east = getMarkerPos 'respawn_east';
  64.  
  65.  _respawn_guerrila = getMarkerPos 'respawn_guerrila';
  66.  
  67.  _respawn_civilian = getMarkerPos 'respawn_civilian';
  68.  
  69.  FNC_A3_LOG_RAND_VAR = compileFinal "  'ARMA_LOG' callExtension format['A3_RANDOMVAR_LOG:%1 (v0239)',_this];
  70.  
  71.   diag_log ('<infiSTAR.de>RandomVarLog| '+_this+' (v0239)');
  72.  
  73.  ";
  74.  
  75.  _allRandomGenVars = [];
  76.  
  77.  _counts = [];
  78.  
  79.  {  _counts pushBack (count _x);
  80.  
  81.  } forEach (allVariables missionnamespace);
  82.  
  83.  _num = 0;
  84.  
  85.  {  _num = _num + _x;
  86.  
  87.  } forEach _counts;
  88.  
  89.  _count = count _counts;
  90.  
  91.  _average = round(_num / _count);
  92.  
  93.  _randminval = (_average/3);
  94.  
  95.  _randmaxval = (_average/1.5);
  96.  
  97.  _fnc_RandomGen = {  _fnc_actualGen = {   _abc = ['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'];
  98.  
  99.    _gen = _abc select (random ((count _abc)-1));
  100.  
  101.    _arr = ['c','9','h','5','M','F','A','0','U','f','T','y','1','g','9','i','4','a','Z','h','Q','m','c','3','2','3','q','o','T','i'];
  102.  
  103.    _randmax = {((round(random _randminval)) + (round(random _randmaxval))) max _randminval};
  104.  
  105.    for '_i' from 0 to (call _randmax)do   {    _gen = _gen + str(round(random 9)) + (_arr select (random ((count _arr)-1)));
  106.  
  107.    };
  108.  
  109.   };
  110.  
  111.   _gen = '';
  112.  
  113.   while{_gen=='' || _gen in _allRandomGenVars}do{   call _fnc_actualGen;
  114.  
  115.   };
  116.  
  117.   _allRandomGenVars pushBack _gen;
  118.  
  119.   _gen };
  120.  
  121. diag_log format['<infiSTAR.de> _fnc_RandomGen: %1',_fnc_RandomGen];
  122.  
  123.  format['----START-LINE----   (%1)',INFISTARVERSION] call FNC_A3_LOG_RAND_VAR;
  124.  
  125.  _adminbox = call _fnc_RandomGen;
  126.  
  127. format['_adminbox: %1',_adminbox] call FNC_A3_LOG_RAND_VAR;
  128.  
  129.  _fnc_mpPackets = call _fnc_RandomGen;
  130.  
  131. format['_fnc_mpPackets: %1',_fnc_mpPackets] call FNC_A3_LOG_RAND_VAR;
  132.  
  133.  _FNC_AH3030_KICKLOG = call _fnc_RandomGen;
  134.  
  135. format['_FNC_AH3030_KICKLOG: %1',_FNC_AH3030_KICKLOG] call FNC_A3_LOG_RAND_VAR;
  136.  
  137.  _FNC_AH3030_KICKLOGSPAWN = call _fnc_RandomGen;
  138.  
  139. format['_FNC_AH3030_KICKLOGSPAWN: %1',_FNC_AH3030_KICKLOGSPAWN] call FNC_A3_LOG_RAND_VAR;
  140.  
  141.  _FNC_PVAH_AdminReq = call _fnc_RandomGen;
  142.  
  143. format['_FNC_PVAH_AdminReq: %1',_FNC_PVAH_AdminReq] call FNC_A3_LOG_RAND_VAR;
  144.  
  145.  _BigTokenArray = call _fnc_RandomGen;
  146.  
  147. format['_BigTokenArray: %1',_BigTokenArray] call FNC_A3_LOG_RAND_VAR;
  148.  
  149.  _connectedArray = call _fnc_RandomGen;
  150.  
  151. format['_connectedArray: %1',_connectedArray] call FNC_A3_LOG_RAND_VAR;
  152.  
  153.  _tokenSentArray = call _fnc_RandomGen;
  154.  
  155. format['_tokenSentArray: %1',_tokenSentArray] call FNC_A3_LOG_RAND_VAR;
  156.  
  157.  _server_setTokenR = call _fnc_RandomGen;
  158.  
  159. format['_server_setTokenR: %1',_server_setTokenR] call FNC_A3_LOG_RAND_VAR;
  160.  
  161.  _fnc_pvc_token = call _fnc_RandomGen;
  162.  
  163. format['_fnc_pvc_token: %1',_fnc_pvc_token] call FNC_A3_LOG_RAND_VAR;
  164.  
  165.  _server_checkTokenR = call _fnc_RandomGen;
  166.  
  167. format['_server_checkTokenR: %1',_server_checkTokenR] call FNC_A3_LOG_RAND_VAR;
  168.  
  169.  _YourPlayerToken = call _fnc_RandomGen;
  170.  
  171. format['_YourPlayerToken: %1',_YourPlayerToken] call FNC_A3_LOG_RAND_VAR;
  172.  
  173.  _TokenCT = call _fnc_RandomGen;
  174.  
  175. format['_TokenCT: %1',_TokenCT] call FNC_A3_LOG_RAND_VAR;
  176.  
  177.  _AH_MAIN_BLOCK = call _fnc_RandomGen;
  178.  
  179. format['_AH_MAIN_BLOCK: %1',_AH_MAIN_BLOCK] call FNC_A3_LOG_RAND_VAR;
  180.  
  181.  _AHKickOFF = call _fnc_RandomGen;
  182.  
  183. format['_AHKickOFF: %1',_AHKickOFF] call FNC_A3_LOG_RAND_VAR;
  184.  
  185.  _AH3030KICKLOG = call _fnc_RandomGen;
  186.  
  187. format['_AH3030KICKLOG: %1',_AH3030KICKLOG] call FNC_A3_LOG_RAND_VAR;
  188.  
  189.  _FiredCheck = call _fnc_RandomGen;
  190.  
  191. format['_FiredCheck: %1',_FiredCheck] call FNC_A3_LOG_RAND_VAR;
  192.  
  193.  _clientdo = call _fnc_RandomGen;
  194.  
  195. format['_clientdo: %1',_clientdo] call FNC_A3_LOG_RAND_VAR;
  196.  
  197.  _AH_RunCheckENDVAR = call _fnc_RandomGen;
  198.  
  199. format['_AH_RunCheckENDVAR: %1',_AH_RunCheckENDVAR] call FNC_A3_LOG_RAND_VAR;
  200.  
  201.  _AH_HackLogArrayRND = call _fnc_RandomGen;
  202.  
  203. format['_AH_HackLogArrayRND: %1',_AH_HackLogArrayRND] call FNC_A3_LOG_RAND_VAR;
  204.  
  205.  _AH_SurvLogArrayRND = call _fnc_RandomGen;
  206.  
  207. format['_AH_SurvLogArrayRND: %1',_AH_SurvLogArrayRND] call FNC_A3_LOG_RAND_VAR;
  208.  
  209.  _AH_AdmiLogArrayRND = call _fnc_RandomGen;
  210.  
  211. format['_AH_AdmiLogArrayRND: %1',_AH_AdmiLogArrayRND] call FNC_A3_LOG_RAND_VAR;
  212.  
  213.  _TMPBAN = call _fnc_RandomGen;
  214.  
  215. format['_TMPBAN: %1',_TMPBAN] call FNC_A3_LOG_RAND_VAR;
  216.  
  217.  _massMessage = call _fnc_RandomGen;
  218.  
  219. format['_massMessage: %1',_massMessage] call FNC_A3_LOG_RAND_VAR;
  220.  
  221.  _massSysMessage = call _fnc_RandomGen;
  222.  
  223. format['_massSysMessage: %1',_massSysMessage] call FNC_A3_LOG_RAND_VAR;
  224.  
  225.  _AHpos = call _fnc_RandomGen;
  226.  
  227. format['_AHpos: %1',_AHpos] call FNC_A3_LOG_RAND_VAR;
  228.  
  229.  _ninetwo = call _fnc_RandomGen;
  230.  
  231. format['_ninetwo: %1',_ninetwo] call FNC_A3_LOG_RAND_VAR;
  232.  
  233.  _ninetwothread = call _fnc_RandomGen;
  234.  
  235. format['_ninetwothread: %1',_ninetwothread] call FNC_A3_LOG_RAND_VAR;
  236.  
  237.  _adminsA = call _fnc_RandomGen;
  238.  
  239. format['_adminsA: %1',_adminsA] call FNC_A3_LOG_RAND_VAR;
  240.  
  241.  _MC = call _fnc_RandomGen;
  242.  
  243. format['_MC: %1',_MC] call FNC_A3_LOG_RAND_VAR;
  244.  
  245.  _MCS = call _fnc_RandomGen;
  246.  
  247. format['_MCS: %1',_MCS] call FNC_A3_LOG_RAND_VAR;
  248.  
  249.  _oneachframe = call _fnc_RandomGen;
  250.  
  251. format['_oneachframe: %1',_oneachframe] call FNC_A3_LOG_RAND_VAR;
  252.  
  253.  _checkidicheckcheck = call _fnc_RandomGen;
  254.  
  255. format['_checkidicheckcheck: %1',_checkidicheckcheck] call FNC_A3_LOG_RAND_VAR;
  256.  
  257.  _lastshotmade = call _fnc_RandomGen;
  258.  
  259. format['_lastshotmade: %1',_lastshotmade] call FNC_A3_LOG_RAND_VAR;
  260.  
  261.  _dellocveh = call _fnc_RandomGen;
  262.  
  263. format['_dellocveh: %1',_dellocveh] call FNC_A3_LOG_RAND_VAR;
  264.  
  265.  _inCombatTime = call _fnc_RandomGen;
  266.  
  267. format['_inCombatTime: %1',_inCombatTime] call FNC_A3_LOG_RAND_VAR;
  268.  
  269.  _inCombatArray = call _fnc_RandomGen;
  270.  
  271. format['_inCombatArray: %1',_inCombatArray] call FNC_A3_LOG_RAND_VAR;
  272.  
  273.  _fnc_infiKeyHandler = call _fnc_RandomGen;
  274.  
  275. format['_fnc_infiKeyHandler: %1',_fnc_infiKeyHandler] call FNC_A3_LOG_RAND_VAR;
  276.  
  277.  _ButtonDownCnt = call _fnc_RandomGen;
  278.  
  279. format['_ButtonDownCnt: %1',_ButtonDownCnt] call FNC_A3_LOG_RAND_VAR;
  280.  
  281.  _ButtonDownTime = call _fnc_RandomGen;
  282.  
  283. format['_ButtonDownTime: %1',_ButtonDownTime] call FNC_A3_LOG_RAND_VAR;
  284.  
  285.  _clickOnMapTimer = call _fnc_RandomGen;
  286.  
  287. format['_clickOnMapTimer: %1',_clickOnMapTimer] call FNC_A3_LOG_RAND_VAR;
  288.  
  289.  _clickOnMapCaught = call _fnc_RandomGen;
  290.  
  291. format['_clickOnMapCaught: %1',_clickOnMapCaught] call FNC_A3_LOG_RAND_VAR;
  292.  
  293.  _MAKE_VAR_DUMP_RANDOM = call _fnc_RandomGen;
  294.  
  295. format['_MAKE_VAR_DUMP_RANDOM: %1',_MAKE_VAR_DUMP_RANDOM] call FNC_A3_LOG_RAND_VAR;
  296.  
  297.  _MAKE_VAR_DUMP_CLIENT = call _fnc_RandomGen;
  298.  
  299. format['_MAKE_VAR_DUMP_CLIENT: %1',_MAKE_VAR_DUMP_CLIENT] call FNC_A3_LOG_RAND_VAR;
  300.  
  301.  _DUMPINGPLAYERUIDARRAY = call _fnc_RandomGen;
  302.  
  303. format['_DUMPINGPLAYERUIDARRAY: %1',_DUMPINGPLAYERUIDARRAY] call FNC_A3_LOG_RAND_VAR;
  304.  
  305.  _CURRENTLYDUMPING = call _fnc_RandomGen;
  306.  
  307. format['_CURRENTLYDUMPING: %1',_CURRENTLYDUMPING] call FNC_A3_LOG_RAND_VAR;
  308.  
  309.  _customcommandingMenu = call _fnc_RandomGen;
  310.  
  311. format['_customcommandingMenu: %1',_customcommandingMenu] call FNC_A3_LOG_RAND_VAR;
  312.  
  313.  _customcommandingMenuOpen = call _fnc_RandomGen;
  314.  
  315. format['_customcommandingMenuOpen: %1',_customcommandingMenuOpen] call FNC_A3_LOG_RAND_VAR;
  316.  
  317.  _LogicVariable = call _fnc_RandomGen;
  318.  
  319. format['_LogicVariable: %1',_LogicVariable] call FNC_A3_LOG_RAND_VAR;
  320.  
  321.  _antiantihack_rndvar = call _fnc_RandomGen;
  322.  
  323. format['_antiantihack_rndvar: %1',_antiantihack_rndvar] call FNC_A3_LOG_RAND_VAR;
  324.  
  325.  _owner_by_uid = call _fnc_RandomGen;
  326.  
  327. format['_owner_by_uid: %1',_owner_by_uid] call FNC_A3_LOG_RAND_VAR;
  328.  
  329.  _uid_by_owner = call _fnc_RandomGen;
  330.  
  331. format['_uid_by_owner: %1',_uid_by_owner] call FNC_A3_LOG_RAND_VAR;
  332.  
  333.  if(_useTildMenu)then{_cMenu pushBack ('#USER:USERMENU'+_customcommandingMenu);
  334.  
  335. };
  336.  
  337.  _fnc_RandomGen = {  _arr = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
  338.  
  339.   _gen = 'PVAHR_';
  340.  
  341.   _max = 5+(round(random 3));
  342.  
  343.   for '_i' from 1 to _max do {_gen = _gen + str(round(random 9)) + (_arr select (random ((count _arr)-1)));
  344.  
  345. };
  346.  
  347.   _allRandomGenVars pushBack _gen;
  348.  
  349.   _gen };
  350.  
  351.  _AH3030_KICKLOG = call _fnc_RandomGen;
  352.  
  353. format['_AH3030_KICKLOG: %1',_AH3030_KICKLOG] call FNC_A3_LOG_RAND_VAR;
  354.  
  355.  _RequestToken = call _fnc_RandomGen;
  356.  
  357. format['_RequestToken: %1',_RequestToken] call FNC_A3_LOG_RAND_VAR;
  358.  
  359.  format['----END-LINE----   (%1)',INFISTARVERSION] call FNC_A3_LOG_RAND_VAR;
  360.  
  361.  _KK_fnc_arrayShuffle = {  private '_cnt';
  362.  
  363.   _cnt = count _this;
  364.  
  365.   for '_i' from 1 to _cnt do {   _this pushBack (_this deleteAt floor random _cnt);
  366.  
  367.   };
  368.  
  369.   _this };
  370.  
  371.  _allRandomGenVars call _KK_fnc_arrayShuffle;
  372.  
  373.  diag_log format['<infiSTAR.de> %1 - loading AntiHack..',time];
  374.  
  375.    /* OVERWRITING SOME SETTINGS */ if(_MOD == 'AltisLife')then { /*  Notification check   */ _UNC = false;
  376.  
  377.  /* true or false */ /* _UNC = false;
  378.  
  379.  on AltisLife! - showNotification check */ /*  Check Attached Objs  */ _CAO = false;
  380.  
  381.  /* true or false */ /* needs to be  false  when using e.g. IgiLoad */ /*  Check Actions Plr    */ _CAP = false;
  382.  
  383.  /* true or false */ /* only logs to Surveillancelog so far */ /*  Remove Actions Plr   */ _OAP = false;
  384.  
  385.  /* true or false */ /* Remove ALL Actions on Player Object: (mousewheel actions) needs to be  false  for AltisLife for e.g. gathering */ /*  Remove Actions Objs  */ _OAO = false;
  386.  
  387.  /* true or false */ /* Remove ALL Actions on Objects near Player: (mousewheel actions) needs to be  false  when using e.g. IgiLoad */ };
  388.  
  389.  /*  Use BadVar #1 */ _UBV = true;
  390.  
  391.  /* true or false */ /* recommended to use */ /*  Use BadVar #2 */ _UBV2 = true;
  392.  
  393.  /* true or false */ /* recommended to use */  _badVarWhitelistReal = [];
  394.  
  395. if(!isNil'_badVarWhitelist')then{_badVarWhitelistReal = _badVarWhitelist;
  396.  
  397. };
  398.  
  399.  if(typeName _rOEF == 'STRING')then {  _rOEF = compileFinal _rOEF;
  400.  
  401.  };
  402.  
  403.  if(typeName _CHD == 'STRING')then {  _CHD = compileFinal _CHD;
  404.  
  405.  };
  406.  
  407.  if(typeName _customFiredEventhandler == 'STRING')then {  _customFiredEventhandler = compileFinal _customFiredEventhandler;
  408.  
  409.  };
  410.  
  411.  _verybadStrings = [  'menu loaded','rustler','hangender','hungender',  'douggem','monstercheats','bigben','fireworks',' is god',  'hydroxus','kill target','no recoil','rapid fire','explode all','teleportall',  'destroyall','destroy all','code to execute','g-e-f','box-esp','god on','god mode','unlimited mags',  '_execscript','_theban','rhynov1','b1g_b3n','infishit',  'e_x_t_a_s_y','weppp3','att4chm3nt','f0od_dr1nk','m3d1c4l','t0ol_it3ms','b4ckp4cks',  'it3m5','cl0th1ng','lystic','extasy','glasssimon_flo','remote_execution','gladtwoown','_pathtoscripts',  'flo_simon','sonicccc_','fury_','phoenix_','_my_new_bullet_man','_jm3',  'thirtysix','dmc_fnc_4danews','w_o_o_k_i_e_m_e_n_u','xbowbii_','jm3_','wuat','menutest_','listening to jack',  'dmcheats.de','kichdm','_news_banner','fucked up','lystics menu','rsccombo_2100','\dll\datmalloc','rsclistbox_1501',  'rsclistbox_1500','\dll\tcmalloc_bi','___newbpass','updated_playerlist','recking_ki','gg_ee_ff','ggggg_eeeee_fffff',  'gggg_eeee_ffff','mord all','teleport all','__byass','_altislifeh4x','antifrezze','ownscripts','ownscripted','mesnu',  'mystic_','init re','init life re','spoody','gef_','throx_','_adasaasasa','_dsfnsjf','cheatmenu','in54nity','markad','fuck_me_','_v4fin',  'a3randvar','infinite ammo','player markers','+ _code +' ];
  412.  
  413.  _BadVar3Array = [  'BIS_fnc_dbg_reminder_value','BIS_fnc_dbg_reminder','BIS_MENU_GroupCommunication','BIS_fnc_addCommMenuItem_menu',  'rscspectator','rscspectator_hints','rscspectator_display','rscspectator_playericon',  'rscspectator_view','rscspectator_map','rscspectator_vision','rscspectator_keys',  'rscspectator_interface',  'time','serverTime','myplayeruid','hhahaaaaar','CharlieSheenkeybinds','KickOFF','yolo','runonce','notakeybind','action1','Supa_Licenses','autokick','wallaisseikun','MainMenu','anArray',  'GEFClose','GEFWhite','GEFRed','GEFGreen','GEFCyan','FirstHint','new_queued','fn_Exec','FND_fnc_select','fnx3','ANTIHACKKICK','tele','dmap','GOLDENS_GLOBAL_SHIT_YEAH','GLASS911_Run',  'gearDialog_create','lystoKeypress','ThirtySix','LY_SwaggerLikeUs','Jkeyszz','n2','boxofmagic','MainScripts','DMC_fnc_4danews','INFISTARBYPASS','EXEC_TEXT','vehicle_dblclick','init_main',  'ESP_Count','Nute_Dat_Bomber','s_cash100k','XposPlayer','ly_re_onetime','SKAR_checkA','MainScriptsV4','ViewDistance','check_load','already_load','meins','f1','Dummy','Plane_Jump',  'c_player','MouseClickEH','distp','nec2','Menu_I_Run_Color_LP','GLASSv1nce_BindHandler','thecar','FastAnimes','GetinPassenger','iaimon','DMC_Re_onetime','func_execOnServer','fnc_serverKickNice',  'Kick_Admins','DASMOKEON','hovering','r_kelly_be_flying','SLX_XEH_BWC_INIT_COMPILE','VinceLOL_ALTISLIFE','life_fnc_byassSkaroAH','AH_fnc_MP','jayRE','fn_newsbanner','Hack_News','TrollFuncs',  'Fanatic_InfiPass','keybindings_xxx','AndysClosed','UserFuncs','AltisFuncs','RemExe','BB_nofatigue','bis_fnc_diagkey_var_code','First_PAGE','Get_in_D','i_t_s__m_e_o','smissles','Whippy_ESP',  'TargetFuncs2','life_fnc_antiFreeeeze','LY_keyForward','TY_re_onetime','life_fnc_XaAxAA','mein1','GodDamnVehiclesXD','Mystic_FNC_ESP_distance','Esp_Id_setter','DummyMen','whipbut','UserFuncs',  'KrohdoFreedom','selectedPlayer','Lmenu1','ggplayer','throx_menu_item','lvl1','Init_Menu_Slew','D_B_R_T_Y_Slew','V6_GEF','xasfjisisafudmmyx','kekse','UPDATED_RE_36','first','second','Paradox_s3tc4sh',  'checkChatLoop','bringmeup' ];
  414.  
  415.  _blacklistedVariables append ['fnc_infiAdminKeyDown'];
  416.  
  417.    _UMH_ARRAY = [  ["getText(configfile >> 'RscDisplayInventory' >> 'controls' >> 'EpochBTN1' >> 'onMouseButtonDown')",'RscDisplayInventory >> EpochBTN1','onMouseButtonDown'],  ["getText(configfile >> 'RscDisplayInventory' >> 'controls' >> 'EpochBTN2' >> 'onMouseButtonDown')",'RscDisplayInventory >> EpochBTN2','onMouseButtonDown'],  ["getText(configfile >> 'TapOut' >> 'controls' >> 'tapout' >> 'action')",'TapOut','action'],  ["getText(configfile >> 'TapOut' >> 'controls' >> 'tapout' >> 'onKeyDown')",'TapOut','onKeyDown'],  ["getText(configFile >> 'RscDisplayOptionsVideo' >> 'controls' >> 'G_VideoOptionsControls' >> 'controls' >> 'HideAdvanced' >> 'OnButtonClick')",'RscDisplayOptionsVideo >> HideAdvanced','OnButtonClick'],  ["getText(configFile >> 'RscDisplayOptions' >> 'controls' >> 'BCredits' >> 'OnButtonClick')",'RscDisplayOptions >> BCredits','OnButtonClick'],  ["getText(configFile >> 'RscDisplayOptions' >> 'controls' >> 'ButtonCancel' >> 'OnButtonClick')",'RscDisplayOptions >> ButtonCancel','OnButtonClick'],  ["getText(configFile >> 'RscDisplayOptions' >> 'controls' >> 'ButtonCancel' >> 'action')",'RscDisplayOptions >> ButtonCancel','action'],  ["getText(configFile >> 'RscDisplayOptions' >> 'controls' >> 'BGameOptions' >> 'action')",'RscDisplayOptions >> BGameOptions','action'],  ["getText(configFile >> 'RscDisplayOptions' >> 'controls' >> 'BConfigure' >> 'action')",'RscDisplayOptions >> BConfigure','action'],  ["getText(configFile >> 'RscDisplayMPInterrupt' >> 'controls' >>'ButtonAbort' >> 'action')",'RscDisplayMPInterrupt >> ButtonAbort','action'],  ["getText(configFile >> 'RscDisplayMPInterrupt' >> 'controls' >>'ButtonAbort' >> 'OnButtonClick')",'RscDisplayMPInterrupt >> ButtonAbort','OnButtonClick'] ];
  418.  
  419.  _UMH_ARRAYSERVER = [];
  420.  
  421.  {  _string = call compile (_x select 0);
  422.  
  423.   _sarray = toArray _string;
  424.  
  425.   _UMH_ARRAYSERVER pushBack _sarray;
  426.  
  427.  } forEach _UMH_ARRAY;
  428.  
  429.    if(_MOD == 'Epoch')then {  _onLoadUnload1Epochonly = [   'RscWelcomeEpoch','RscDisplayInfo','RscVersionUpdateEpoch','RscInGameUI','RscUnitInfo','RscStanceInfo','RscUnitInfoAirRTDBasic','RscUnitInfoAirRTDFull','EpochLoadingScreen',   'EpochGameUI','EpochGameUI2','EpochGameUI3','Interact','GroupRequests','CraftItem','InteractVehicle','InteractNPC','InteractBank','Epoch_myGroup','EPOCH_createGrp',   'Epoch_GroupInvite'  ];
  430.  
  431.   _onLoadUnload1 = _onLoadUnload1 + _onLoadUnload1Epochonly;
  432.  
  433.  };
  434.  
  435.  _onLoadUnload2 = [];
  436.  
  437.  _onLoadUnload3 = [];
  438.  
  439.  {  _onLoadUnload2 pushBack (toArray(getText(configFile >> _x >> 'onLoad')));
  440.  
  441.   _onLoadUnload3 pushBack (toArray(getText(configFile >> _x >> 'onUnload')));
  442.  
  443.  } forEach _onLoadUnload1;
  444.  
  445.  fnc_CompilableString = {  _input = _this select 0;
  446.  
  447.   _output = call {   if(_input isEqualType {})exitWith{(str(_input)) select [1,((count(str(_input)))-2)]};
  448.  
  449.    if(_input isEqualType '')exitWith{_input};
  450.  
  451.    ''  };
  452.  
  453.   _output };
  454.  
  455.  fnc_CompilableString = compileFinal ([fnc_CompilableString] call fnc_CompilableString);
  456.  
  457.  publicVariable "fnc_CompilableString";
  458.  
  459.  fnc_getserverTime = compileFinal "  _hours = floor(serverTime / 60 / 60);
  460.  
  461.   _value = ((serverTime / 60 / 60) - _hours);
  462.  
  463.   if(_value == 0)then{_value = 0.0001;
  464.  
  465. };
  466.  
  467.   _minutes = round(_value * 60);
  468.  
  469.   _mytime = format['%1h %2min | ',_hours,_minutes];
  470.  
  471.   _mytime ";
  472.  
  473.  FNC_A3_HACKLOG = compileFinal "  'ARMA_LOG' callExtension format['A3_HACKLOG:%1 [FPS: %2|THREADS: %3] (v0239)',_this,diag_fps,count diag_activeSQFScripts];
  474.  
  475.   diag_log ('<infiSTAR.de>HL| '+_this+' (v0239)');
  476.  
  477.  ";
  478.  
  479.  FNC_A3_SURVEILLANCELOG = compileFinal "  'ARMA_LOG' callExtension format['A3_SURVEILLANCELOG:%1 [FPS: %2|THREADS: %3] (v0239)',_this,diag_fps,count diag_activeSQFScripts];
  480.  
  481.   diag_log ('<infiSTAR.de>SL| '+_this+' (v0239)');
  482.  
  483.  ";
  484.  
  485.  FNC_A3_ADMINLOG = compileFinal "  'ARMA_LOG' callExtension format['A3_ADMINLOG:%1 (v0239)',_this];
  486.  
  487.   diag_log ('<infiSTAR.de>AdminLog| '+_this+' (v0239)');
  488.  
  489.  ";
  490.  
  491.  FNC_A3_CONNECTLOG = compileFinal "  'ARMA_LOG' callExtension format['A3_CONNECTLOG:%1 (v0239)',_this];
  492.  
  493.   diag_log ('<infiSTAR.de>ConnectLog| '+_this+' (v0239)');
  494.  
  495.  ";
  496.  
  497.  FNC_A3_TOKENLOG = compileFinal "  'ARMA_LOG' callExtension format['A3_TOKENLOG:%1 (v0239)',_this];
  498.  
  499.   diag_log ('<infiSTAR.de>TokenLog| '+_this+' (v0239)');
  500.  
  501.  ";
  502.  
  503.  FNC_A3_RESOLVESTEAMNAMELOG = compileFinal "  'ARMA_LOG' callExtension format['A3_RESOLVESTEAMNAMELOG:%1 (v0239)',_this];
  504.  
  505.   diag_log ('<infiSTAR.de>ResolveSteamName| '+_this+' (v0239)');
  506.  
  507.   if(!isNil'MAR_fnc_log')then{[_this,'infiSTAR.de_RESOLVESTEAMNAMELOG'] call MAR_fnc_log;
  508.  
  509. };
  510.  
  511.  ";
  512.  
  513.  FNC_A3_GLOBAL_SAFE = compileFinal "  private['_reobj','_do'];
  514.  
  515.   _do = _this;
  516.  
  517.   if(isNil'_do')exitWith{   _log = '_do is Nil';
  518.  
  519.    _log call FNC_A3_ADMINLOG;
  520.  
  521.   };
  522.  
  523.   if(typeName _do == 'CODE')then{_do = (str(_do)) select [1,((count(str(_do)))-2)];
  524.  
  525. };
  526.  
  527.   if(typeName _do != 'STRING')then{_do = str _do;
  528.  
  529. };
  530.  
  531.   _reobj = 'Supply0' createVehicle [0,0,0];
  532.  
  533.   if(isNil'_reobj')exitWith{   _log = '_reobj is Nil';
  534.  
  535.    _log call FNC_A3_ADMINLOG;
  536.  
  537.   };
  538.  
  539.   if(isNull _reobj)exitWith{   _log = '_reobj is Null';
  540.  
  541.    _log call FNC_A3_ADMINLOG;
  542.  
  543.   };
  544.  
  545.   _reobj setVariable['BIS_enableRandomization',false];
  546.  
  547.   _reobj addMPEventHandler ['MPKilled',('if(isServer)exitWith{};
  548.  
  549. '+_do)];
  550.  
  551.   _reobj setDamage 5;
  552.  
  553.   _reobj spawn {waitUntil{_this setVariable['BIS_enableRandomization',false];
  554.  
  555. !isNull _this};
  556.  
  557. _this setVariable['BIS_enableRandomization',false];
  558.  
  559. uiSleep 1;
  560.  
  561. deleteVehicle _this;
  562.  
  563. };
  564.  
  565.  ";
  566.  
  567.  FNC_A3_GLOBAL = compileFinal "  private['_reobj'];
  568.  
  569.   _reobj = 'Supply0' createVehicle [0,0,0];
  570.  
  571.   if(isNil'_reobj')exitWith{   _log = '_reobj is Nil';
  572.  
  573.    _log call FNC_A3_ADMINLOG;
  574.  
  575.   };
  576.  
  577.   if(isNull _reobj)exitWith{   _log = '_reobj is Null';
  578.  
  579.    _log call FNC_A3_ADMINLOG;
  580.  
  581.   };
  582.  
  583.   _reobj setVariable['BIS_enableRandomization',false];
  584.  
  585.   _reobj addMPEventHandler ['MPKilled',_this];
  586.  
  587.   _reobj setDamage 5;
  588.  
  589.   _reobj spawn {waitUntil{_this setVariable['BIS_enableRandomization',false];
  590.  
  591. !isNull _this};
  592.  
  593. _this setVariable['BIS_enableRandomization',false];
  594.  
  595. uiSleep 1;
  596.  
  597. deleteVehicle _this;
  598.  
  599. };
  600.  
  601.  ";
  602.  
  603.  fnc_stop_safe_glitch = compileFinal " if(!isNil'EPOCH_initUI_THREAD')then{terminate EPOCH_initUI_THREAD;
  604.  
  605. EPOCH_initUI_THREAD=nil;
  606.  
  607. };
  608.  
  609.  EPOCH_initUI_THREAD = _this spawn EPOCH_initUI;
  610.  
  611.  _container = _this select 1;
  612.  
  613.   _locked = locked _container in [2, 3];
  614.  
  615.  _EPOCH_Locked = _container getVariable['EPOCH_Locked', false];
  616.  
  617.  _lockedNear = false;
  618.  
  619.   if(_container isKindOf 'GroundWeaponHolder' || _container isKindOf 'WeaponHolderSimulated')then {  {if (locked _x in [2, 3] ||_x getVariable['EPOCH_Locked', false]) exitWith {_lockedNear = true}} forEach (player nearSupplies 10);
  620.  
  621.   if(!_lockedNear)then  {   _vehicles = player nearObjects ['AllVehicles', 5];
  622.  
  623.    {    _lockedx = locked _x in [2, 3];
  624.  
  625.     _EPOCH_Lockedx = _x getVariable['EPOCH_Locked', false];
  626.  
  627.     if((((_lockedx || _EPOCH_Lockedx) && !(local _x))||(!alive _x)) && !(_x in [_container,vehicle _container]))exitWith{_lockedNear = true;
  628.  
  629. };
  630.  
  631.    } forEach _vehicles;
  632.  
  633.   };
  634.  
  635.  };
  636.  
  637.  if(_locked || _EPOCH_Locked || _lockedNear)then {  if(!isNil'checkGearDisplayThread')then{terminate checkGearDisplayThread;
  638.  
  639. checkGearDisplayThread=nil;
  640.  
  641. };
  642.  
  643.   checkGearDisplayThread = [] spawn {   disableSerialization;
  644.  
  645.    waitUntil {!isNull findDisplay 602};
  646.  
  647.    waitUntil {    _display = findDisplay 602;
  648.  
  649.     _ctrl_cargo = _display displayCtrl 6401;
  650.  
  651.     _ctrl_ground = _display displayCtrl 6321;
  652.  
  653.     _ctrl_cargo ctrlEnable  false;
  654.  
  655.     ctrlSetFocus _ctrl_ground;
  656.  
  657.     ctrlActivate _ctrl_ground;
  658.  
  659.     isNull findDisplay 602   };
  660.  
  661.   };
  662.  
  663.  };
  664.  
  665.  ";
  666.  
  667.  FN_infiSTAR_C = compileFinal "(_this select 0) call (_this select 1)";
  668.  
  669. publicVariable"FN_infiSTAR_C";
  670.  
  671.  FN_infiSTAR_S = compileFinal " params [['_input',''],['_code',{}],['_id',-10],['_jip',false]];
  672.  
  673.  if((_id isEqualTo 0)||(_id isEqualTo -10))exitWith{  diag_log format['<infiSTAR.de> FN_infiSTAR_S _input: %1',_input];
  674.  
  675.   diag_log format['<infiSTAR.de> FN_infiSTAR_S _code: %1',_code];
  676.  
  677.   diag_log format['<infiSTAR.de> FN_infiSTAR_S _jip: %1',_jip];
  678.  
  679.  };
  680.  
  681.  if(typename _code isEqualTo 'STRING')then{_code=compile _code;
  682.  
  683. };
  684.  
  685.  if(_id isEqualTo 2)exitWith{_input call _code};
  686.  
  687.  [_input,_code] remoteExecCall ['FN_infiSTAR_C',_id,_jip] ";
  688.  
  689.  fnc_call_ARMALOAD = compileFinal "  private['_option','_input','_url','_packet1','_jobid','_packet2','_res','_timeout'];
  690.  
  691.   _option = _this select 0;
  692.  
  693.   _input = _this select 1;
  694.  
  695.   _url = _this select 2;
  696.  
  697.     _packet1 = format['getasync%1%2%1',toString [10],_url];
  698.  
  699.   _jobid = 'ARMA_LOAD' callExtension _packet1;
  700.  
  701.   _packet2 = format['response%1%2%1',toString [10],_jobid];
  702.  
  703.   _timeout = diag_tickTime + 10;
  704.  
  705.   _res = 'WAIT';
  706.  
  707.   waitUntil{   _res = 'ARMA_LOAD' callExtension _packet2;
  708.  
  709.    _res != 'WAIT' || diag_tickTime > _timeout  };
  710.  
  711.   if(_res=='WAIT'||_res==''||_res=='URLERROR')exitWith{};
  712.  
  713.   if((toLower _res) find 'wrapper is disabled' != -1)exitWith{};
  714.  
  715.   if(_option == 0)exitWith  {   if(isNil'ARMALOAD_urlARRAY')then{ARMALOAD_urlARRAY=[];
  716.  
  717. };
  718.  
  719.    if(_url in ARMALOAD_urlARRAY)exitWith{diag_log '<infiSTAR.de> terminated double ARMA_LOAD call';
  720.  
  721. };
  722.  
  723.    ARMALOAD_urlARRAY pushBack _url;
  724.  
  725.       private['_name','_puid','_clientID'];
  726.  
  727.    _name = _input select 0;
  728.  
  729.    _puid = _input select 1;
  730.  
  731.       STEAM_NAME_ARRAY pushBack _puid;
  732.  
  733.    STEAM_NAME_ARRAY pushBack _res;
  734.  
  735.    missionNameSpace setVariable['STEAM_NAME_ARRAY',STEAM_NAME_ARRAY];
  736.  
  737.       if(count _input == 3)then   {    _clientID = _input select 2;
  738.  
  739.     _code = {     params['_name','_uid',['_steamname','']];
  740.  
  741.      _log = format['<infiSTAR.de> %1(%2) SteamName is: %3',_name,_uid,_steamname];
  742.  
  743.      cutText [_log, 'PLAIN DOWN'];
  744.  
  745.      hint _log;
  746.  
  747.      systemchat _log;
  748.  
  749.      diag_log _log;
  750.  
  751.     };
  752.  
  753.     [[_name,_puid,_res],_code,_clientID,false] call FN_infiSTAR_S;
  754.  
  755.     format['%1(%2) is %3',_name,_puid,_res] call FNC_A3_RESOLVESTEAMNAMELOG;
  756.  
  757.    };
  758.  
  759.   };
  760.  
  761.  ";
  762.  
  763.  fnc_resolveSteamName = compileFinal "  private['_name','_puid','_clientID','_inputToForward','_steamName','_res'];
  764.  
  765.   _name = _this select 0;
  766.  
  767.   _puid = _this select 1;
  768.  
  769.   _inputToForward = [_name,_puid];
  770.  
  771.   if(count _this == 3)then  {   _clientID = _this select 2;
  772.  
  773.    _inputToForward = [_name,_puid,_clientID];
  774.  
  775.   };
  776.  
  777.   _steamName = '';
  778.  
  779.   if(isNil 'STEAM_NAME_ARRAY')then{STEAM_NAME_ARRAY = missionNameSpace getVariable['STEAM_NAME_ARRAY',[]];
  780.  
  781. };
  782.  
  783.   if(_puid in STEAM_NAME_ARRAY)then  {   _fid = STEAM_NAME_ARRAY find _puid;
  784.  
  785.    if(_fid != -1)exitWith   {    _steamName = (STEAM_NAME_ARRAY select (_fid+1));
  786.  
  787.    };
  788.  
  789.   }  else  {   if(isNil 'STEAM_NAME_ARRAY_Q')then{STEAM_NAME_ARRAY_Q = [];
  790.  
  791. };
  792.  
  793.    if!(_puid in STEAM_NAME_ARRAY_Q)then   {    STEAM_NAME_ARRAY_Q pushBack _puid;
  794.  
  795.     if(isNil'STEAM_NAME_URL')then{STEAM_NAME_URL = 'http://htmlload.infistar.de/steamname.php?steamuid=';
  796.  
  797. };
  798.  
  799.     [0,_inputToForward,format['%1%2',STEAM_NAME_URL,_puid]] spawn fnc_call_ARMALOAD;
  800.  
  801.    };
  802.  
  803.   };
  804.  
  805.   _steamName ";
  806.  
  807.  fnc_getSteamNameIfSaved = compileFinal "  _steamName = _name;
  808.  
  809.   _NAME_ARRAY = missionNameSpace getVariable['STEAM_NAME_ARRAY',[]];
  810.  
  811.   if!(_NAME_ARRAY isEqualTo [])then{   if(_uid in _NAME_ARRAY)then{    _fid = _NAME_ARRAY find _uid;
  812.  
  813.     if(_fid != -1)exitWith{     _steamName = (_NAME_ARRAY select (_fid+1));
  814.  
  815.      _steamName = format['SteamName: %1 - IngameName: %2',_steamName,_name];
  816.  
  817.     };
  818.  
  819.    }  };
  820.  
  821.   _steamName ";
  822.  
  823.  _A3AHPREstring = "  ";
  824.  
  825.  if(_MOD == 'Epoch')then{ _A3AHPREstring = _A3AHPREstring + "   _callwith = [_this,'infiSTAR.de'];
  826.  
  827.    if((_this isKindOf 'LandVehicle') || (_this isKindOf 'Air') || (_this isKindOf 'Ship') || (_this isKindOf 'Tank'))then   {    _callwith call EPOCH_server_save_killedVehicle;
  828.  
  829.    }   else   {    if(typeOf _this in ['LockBox_EPOCH','Safe_EPOCH'] || (_this isKindOf 'Buildable_Storage'))then    {     _callwith call EPOCH_server_save_killedStorage;
  830.  
  831.     }    else    {     _callwith call EPOCH_server_save_killedBuilding;
  832.  
  833.     };
  834.  
  835.    };
  836.  
  837.   ";
  838.  
  839.  };
  840.  
  841.  _A3AHPREstring = _A3AHPREstring + "  {deleteVehicle _x;
  842.  
  843. } forEach (attachedObjects _this);
  844.  
  845.   deleteVehicle _this;
  846.  
  847.  ";
  848.  
  849.  fnc_deleteObject = compileFinal _A3AHPREstring;
  850.  
  851.  _admins = [];
  852.  
  853. {_admins append (_x select 0)} forEach _adminUIDandAccess;
  854.  
  855.  _devs = ['76561198152111329'];
  856.  
  857. {if!(_x in _admins)then{_admins pushBack _x;
  858.  
  859. };
  860.  
  861. } forEach _devs;
  862.  
  863.  _A3AHstring = "  "+_adminsA+" = "+str _admins+";
  864.  
  865. {"+_adminsA+" = "+_adminsA+" - [_x];
  866.  
  867. } forEach "+str _startAsNormal+";
  868.  
  869. publicVariable '"+_adminsA+"';
  870.  
  871.   if(isNil '"+_BigTokenArray+"')then{"+_BigTokenArray+" = [];
  872.  
  873. };
  874.  
  875.   if(isNil '"+_connectedArray+"')then{"+_connectedArray+" = [];
  876.  
  877. };
  878.  
  879.   if(isNil '"+_tokenSentArray+"')then{"+_tokenSentArray+" = [];
  880.  
  881. };
  882.  
  883.   "+_fnc_pvc_token+" = compileFinal ""   private['_token','_clientID','_clientName','_clientUID','_clientObject'];
  884.  
  885.    _token = _this select 0;
  886.  
  887.    _clientID = _this select 1;
  888.  
  889.    _clientName = _this select 2;
  890.  
  891.    _clientUID = _this select 3;
  892.  
  893.    _clientObject = _this select 4;
  894.  
  895.       if(_clientUID select [0,2] == 'HC')exitWith{    format['HC WITH OWNER ID [%1] AND UID [%2] CONNECTED',_clientID,_clientUID] call FNC_A3_TOKENLOG;
  896.  
  897.    };
  898.  
  899.    if(!alive _clientObject)exitWith{    format['%1(%2) CLIENT WITH ID [%3] NOT ALIVE',_clientName,_clientUID,_clientID] call FNC_A3_TOKENLOG;
  900.  
  901.     [_clientName,_clientUID] call FNC_INFISERVERKICK;
  902.  
  903.    };
  904.  
  905.       _owner = owner _clientObject;
  906.  
  907.    if!(_clientID isEqualTo _owner)exitWith{    format['%1(%2) CLIENT WITH ID [%3] NOT EQUAL TO OWNER ID OF OBJECT [%4]',_clientName,_clientUID,_clientID,_owner] call FNC_A3_TOKENLOG;
  908.  
  909.     [_clientName,_clientUID] call FNC_INFISERVERKICK;
  910.  
  911.    };
  912.  
  913.    if(_owner < 3)exitWith{    format['%1(%2) CLIENT WITH ID [%3::%4] OBJECT IS NOT OWNED BY THE CLIENT',_clientName,_clientUID,_clientID,_owner] call FNC_A3_TOKENLOG;
  914.  
  915.     [_clientName,_clientUID] call FNC_INFISERVERKICK;
  916.  
  917.    };
  918.  
  919.    if!(isPlayer _clientObject)exitWith{    format['%1(%2) CLIENT WITH ID [%3::%4] IS NOT A PLAYER',_clientName,_clientUID,_clientID,_owner] call FNC_A3_TOKENLOG;
  920.  
  921.     [_clientName,_clientUID] call FNC_INFISERVERKICK;
  922.  
  923.    };
  924.  
  925.       _name = name _clientObject;
  926.  
  927.    if!(_clientName isEqualTo _name)exitWith{    format['%1(%2) CLIENT WITH ID [%3::%4] OBJECT NAME NOT EQUAL TO NAME TOLD BY THE CLIENT (%5)',_clientName,_clientUID,_clientID,_owner,_name] call FNC_A3_TOKENLOG;
  928.  
  929.    };
  930.  
  931.    _uid = getPlayerUID _clientObject;
  932.  
  933.    if!(_clientUID isEqualTo _uid)exitWith{    format['%1(%2) CLIENT WITH ID [%3::%4] OBJECT UID NOT EQUAL TO UID TOLD BY THE CLIENT (%5)',_clientName,_clientUID,_clientID,_owner,_uid] call FNC_A3_TOKENLOG;
  934.  
  935.    };
  936.  
  937.          "+_YourPlayerToken+" = _token;
  938.  
  939. _clientID publicVariableClient '"+_YourPlayerToken+"';
  940.  
  941.    [[_clientName,_clientUID],"+_AH_MAIN_BLOCK+"] remoteExec ['FN_infiSTAR_C', _clientID, false];
  942.  
  943.             ";
  944.  
  945.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "    if!(_clientUID in "+_tokenSentArray+")then{"+_tokenSentArray+" pushBack _clientUID;
  946.  
  947. };
  948.  
  949.    ";
  950.  
  951.  };
  952.  
  953.  _A3AHstring = _A3AHstring + "           _timepassed = floor time;
  954.  
  955.    if(_timepassed >= 60)then   {    _timepassedMinutes = floor(_timepassed / 60);
  956.  
  957.     _timepassedSeconds = _timepassed - (_timepassedMinutes*60);
  958.  
  959.     if(_timepassedMinutes >= 60)then    {     _timepassedHours = floor(_timepassedMinutes / 60);
  960.  
  961.      _timepassedMinutes = _timepassedMinutes - (_timepassedHours*60);
  962.  
  963.      _timepassed = format['%1h %2m %3s',_timepassedHours,_timepassedMinutes,_timepassedSeconds];
  964.  
  965.     }    else    {     _timepassed = format['%1m %2s',_timepassedMinutes,_timepassedSeconds];
  966.  
  967.     };
  968.  
  969.    }   else   {    _timepassed = format['%1s',_timepassed];
  970.  
  971.    };
  972.  
  973.    _mytime = call fnc_getserverTime;
  974.  
  975.    _log = _mytime + format['Runtime: %1 | SENT TOKEN [%2] TO ID [%3(%4) - %5]',_timepassed,_token,_clientName,_clientUID,_clientID];
  976.  
  977.    _log call FNC_A3_CONNECTLOG;
  978.  
  979.   "";
  980.  
  981.   _server_setToken={   private['_input','_inputUID','_inputOBJECT','_fnc_RandomGen','_token'];
  982.  
  983.    _input = _this;
  984.  
  985.    _inputUID = '';
  986.  
  987.    _inputOBJECT = objNull;
  988.  
  989.    if(isNil'_input')exitWith{diag_log '<infiSTAR.de> server_setToken: _input is NIL';
  990.  
  991. };
  992.  
  993.    if(typeName _input isEqualTo 'OBJECT')then   {    _inputOBJECT = _input;
  994.  
  995.     if(!isNull _inputOBJECT)then    {     _inputUID = getPlayerUID _inputOBJECT;
  996.  
  997.     };
  998.  
  999.    }   else   {    _inputUID = _input;
  1000.  
  1001.    };
  1002.  
  1003.       if(_inputUID isEqualTo '')exitWith{diag_log '<infiSTAR.de> server_setToken: _inputUID is EMPTY';
  1004.  
  1005. };
  1006.  
  1007.    if(isNil '"+_BigTokenArray+"')then{"+_BigTokenArray+" = [];
  1008.  
  1009. };
  1010.  
  1011. if(_inputUID in "+_BigTokenArray+")exitWith{};
  1012.  
  1013.       _fnc_RandomGen =   {    _arr = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9'];
  1014.  
  1015.     _gen = _arr select (floor (random 25));
  1016.  
  1017.     for '_i' from 0 to (12+(round(random 5))) do {_gen = _gen + (_arr select (random ((count _arr)-1)));
  1018.  
  1019. };
  1020.  
  1021.     _gen   };
  1022.  
  1023.    try   {    for '_i' from 0 to 99999999 do    {     _token = call _fnc_RandomGen;
  1024.  
  1025.      if!(_token in "+_BigTokenArray+")then{throw _token;
  1026.  
  1027. };
  1028.  
  1029.     };
  1030.  
  1031.    }   catch   {    _token = _exception;
  1032.  
  1033.     "+_BigTokenArray+" pushBack _inputUID;
  1034.  
  1035.     "+_BigTokenArray+" pushBack _token;
  1036.  
  1037.     if(!(_inputUID isEqualTo '')&&(isNull _inputOBJECT))then{{if(getPlayerUID _x isEqualTo _inputUID)exitWith{_inputOBJECT = _x;
  1038.  
  1039. };
  1040.  
  1041. } forEach allPlayers;
  1042.  
  1043. };
  1044.  
  1045.     if(isNull _inputOBJECT)exitWith{diag_log format['<infiSTAR.de> server_setToken: (%1) _inputOBJECT is NULL',_inputUID];
  1046.  
  1047. };
  1048.  
  1049.     [_token,(owner _inputOBJECT),(name _inputOBJECT),_inputUID,_inputOBJECT] call "+_fnc_pvc_token+";
  1050.  
  1051.     diag_log format['<infiSTAR.de> server_setToken: SENT TOKEN [%1] TO %2(%3)',_token,name _inputOBJECT,_inputUID];
  1052.  
  1053.    };
  1054.  
  1055.   };
  1056.  
  1057.   "+_server_setTokenR+" = compileFinal ([_server_setToken] call fnc_CompilableString);
  1058.  
  1059.     _server_checkToken={   private['_uid','_ptoken','_stoken'];
  1060.  
  1061.    if(isNil '"+_BigTokenArray+"')then{"+_BigTokenArray+" = [];
  1062.  
  1063. };
  1064.  
  1065. if("+_BigTokenArray+" isEqualTo [])exitWith{false};
  1066.  
  1067.       _uid = _this select 0;
  1068.  
  1069.    if(isNil'_uid')exitWith{false};
  1070.  
  1071.    if!(typeName _uid isEqualTo 'STRING')exitWith{false};
  1072.  
  1073.    if(_uid isEqualTo '')exitWith{false};
  1074.  
  1075.       _ptoken = _this select 1;
  1076.  
  1077.    if(isNil'_ptoken')exitWith{false};
  1078.  
  1079.    if!(typeName _ptoken isEqualTo 'STRING')exitWith{false};
  1080.  
  1081.    if(_ptoken isEqualTo '')exitWith{false};
  1082.  
  1083.       _stoken = "+_BigTokenArray+" select (("+_BigTokenArray+" find _uid)+1);
  1084.  
  1085.    if(isNil'_stoken')exitWith{false};
  1086.  
  1087.    _stoken isEqualTo _ptoken  };
  1088.  
  1089.   "+_server_checkTokenR+" = compileFinal ([_server_checkToken] call fnc_CompilableString);
  1090.  
  1091.     _RequestTokenCODE={   private['_input','_playerObj','_clientID','_clientUID','_clientUIDcheck','_token'];
  1092.  
  1093.    _input = _this select 1;
  1094.  
  1095.    if(isNil '_input')exitWith{diag_log '<infiSTAR.de> RequestToken: _input is Nil';
  1096.  
  1097. };
  1098.  
  1099.       _clientUID = _input select 1;
  1100.  
  1101.    if(isNil '_clientUID')exitWith{diag_log '<infiSTAR.de> RequestToken: _clientUID is Nil';
  1102.  
  1103. };
  1104.  
  1105.    if!(typeName _clientUID isEqualTo 'STRING')exitWith{diag_log format['<infiSTAR.de> RequestToken: typeName _clientUID != OBJECT -> %1',typeName _clientUID];
  1106.  
  1107. };
  1108.  
  1109.    if(_clientUID isEqualTo '')exitWith{diag_log '<infiSTAR.de> RequestToken: resolving _playerObj with UID not possible - no UID found';
  1110.  
  1111. };
  1112.  
  1113.       _playerObj = _input select 0;
  1114.  
  1115.    if(isNil '_playerObj')exitWith{diag_log '<infiSTAR.de> RequestToken: _playerObj is Nil';
  1116.  
  1117. };
  1118.  
  1119.    if!(typeName _playerObj isEqualTo 'OBJECT')exitWith{diag_log format['<infiSTAR.de> RequestToken: typeName _playerObj != OBJECT -> %1',typeName _playerObj];
  1120.  
  1121. };
  1122.  
  1123.    if(isNull _playerObj)then   {    diag_log format['<infiSTAR.de> RequestToken: resolving _playerObj of UID %1 via allPlayers',_clientUID];
  1124.  
  1125.     {     if((alive _x)&&(getPlayerUID _x isEqualTo _clientUID))exitWith     {      _playerObj = _x;
  1126.  
  1127.      };
  1128.  
  1129.     } forEach allPlayers;
  1130.  
  1131.    };
  1132.  
  1133.    if(isNull _playerObj)exitWith{diag_log format['<infiSTAR.de> RequestToken: %1(%2) _playerObj is NULL-OBJ',_playerObj,_clientUID];
  1134.  
  1135. };
  1136.  
  1137.       _clientID = (owner _playerObj);
  1138.  
  1139.    if(isNil '_clientID')exitWith{diag_log format['<infiSTAR.de> RequestToken: %1(%2) _clientID is Nil',name _playerObj,_clientUID];
  1140.  
  1141. };
  1142.  
  1143.       _clientUIDcheck = getPlayerUID _playerObj;
  1144.  
  1145.    if(isNil '_clientUIDcheck')exitWith{diag_log format['<infiSTAR.de> RequestToken: %1(%2) _clientUIDcheck is Nil',name _playerObj,_clientUID];
  1146.  
  1147. };
  1148.  
  1149.    if!(_clientUID isEqualTo _clientUIDcheck)exitWith{diag_log format['<infiSTAR.de> RequestToken: %1(%2) _clientUID != _clientUIDcheck  %2/%3',name _playerObj,_clientUID,_clientUIDcheck];
  1150.  
  1151. };
  1152.  
  1153.       diag_log format['<infiSTAR.de> RequestToken: %1(%2) Requested a Token!   _clientID: %3',name _playerObj,_clientUID,_clientID];
  1154.  
  1155.    if(isNil '"+_BigTokenArray+"')then{"+_BigTokenArray+" = [];
  1156.  
  1157. };
  1158.  
  1159.    if(_clientUID in "+_BigTokenArray+")then   {    _token = "+_BigTokenArray+" select (("+_BigTokenArray+" find _clientUID)+1);
  1160.  
  1161.     if(isNil '_token')exitWith{diag_log format['<infiSTAR.de> RequestToken: %1(%2) _token is Nil',name _playerObj,_clientUID];
  1162.  
  1163. };
  1164.  
  1165.     [_token,_clientID,(name _playerObj),_clientUID,_playerObj] call "+_fnc_pvc_token+";
  1166.  
  1167.     diag_log format['<infiSTAR.de> RequestToken: %1(%2) TOKEN FOUND! SENT %3 TO OBJECT WITH NETID %4',name _playerObj,_clientUID,_token,netId _playerObj];
  1168.  
  1169.    }   else   {    _playerObj call "+_server_setTokenR+";
  1170.  
  1171.    };
  1172.  
  1173.   };
  1174.  
  1175.   '"+_RequestToken+"' addPublicVariableEventhandler _RequestTokenCODE;
  1176.  
  1177.       FNC_INFISERVERKICK = {   private['_name','_uid','_obj'];
  1178.  
  1179.    _name = _this select 0;
  1180.  
  1181.    _uid = _this select 1;
  1182.  
  1183.       _return = (call FN_GET_SERVERPW) serverCommand format ['#kick %1',_uid];
  1184.  
  1185.    if(!_return)then{    'if((name player == '+str _name+')||(getPlayerUID player == '+str _uid+'))then{(findDisplay 46)closeDisplay 0;
  1186.  
  1187. };
  1188.  
  1189. ' call FNC_A3_GLOBAL;
  1190.  
  1191.    };
  1192.  
  1193.       diag_log format['<infiSTAR.de>KickLog| %1(%2)   (v0239)',_name,_uid];
  1194.  
  1195.   };
  1196.  
  1197.   FNC_INFISERVERKICK = compileFinal ([FNC_INFISERVERKICK] call fnc_CompilableString);
  1198.  
  1199.   FNC_A3_infiSTARTMPBAN = {   private['_name','_uid','_reason'];
  1200.  
  1201.    _name = _this select 0;
  1202.  
  1203.    _uid = _this select 1;
  1204.  
  1205.    _reason = _this select 2;
  1206.  
  1207.    _writeBan = false;
  1208.  
  1209.    if(isNil'USE_DATABASE_BAN_SYSTEM')then   {    if(isNil'"+_TMPBAN+"')then{"+_TMPBAN+"=[];
  1210.  
  1211. }else{if(typeName "+_TMPBAN+"!='ARRAY')then{"+_TMPBAN+"=[];
  1212.  
  1213. };
  1214.  
  1215. };
  1216.  
  1217.     if!(_uid in "+_TMPBAN+")then    {     _admins = "+str _admins+";
  1218.  
  1219.      if(_uid in _admins)exitWith     {      _mytime = call fnc_getserverTime;
  1220.  
  1221.       _log = _mytime + format['%1(%2) ADMIN - would have been tempbanned now!',_name,_uid];
  1222.  
  1223.       _log call FNC_A3_HACKLOG;
  1224.  
  1225.      };
  1226.  
  1227.      "+_TMPBAN+" pushBack _uid;
  1228.  
  1229.      _writeBan = true;
  1230.  
  1231.      {if(getPlayerUID _x in _admins)then{(owner _x) publicVariableClient '"+_TMPBAN+"';
  1232.  
  1233. };
  1234.  
  1235. } forEach playableUnits;
  1236.  
  1237.     };
  1238.  
  1239.    }   else   {    if(isNil'DATABASE_BANNED')then{DATABASE_BANNED=[];
  1240.  
  1241. };
  1242.  
  1243.     if(typeName DATABASE_BANNED == 'ARRAY')then{DATABASE_BANNED pushBack _uid;
  1244.  
  1245. };
  1246.  
  1247.         _reason = format['infiSTAR.de: %1',_reason];
  1248.  
  1249.     _query = format[""UPDATE spieler SET blacklist='1', bantext='%1' WHERE playerid='%2'"",_reason,_uid];
  1250.  
  1251.     [_query,1] call db_fnc_asyncCall;
  1252.  
  1253.         _query = format[""INSERT INTO hp_banlist (pid, bantext, admin, blacklist, aktiv) VALUES('%1','%2','infiSTAR.de','1','1')"",_uid,_reason];
  1254.  
  1255.     [_query,1] call db_fnc_asyncCall;
  1256.  
  1257.         _writeBan = false;
  1258.  
  1259.    };
  1260.  
  1261.    [_name,_uid] call FNC_INFISERVERKICK;
  1262.  
  1263.    _writeBan  };
  1264.  
  1265.   FNC_A3_infiSTARTMPBAN = compileFinal ([FNC_A3_infiSTARTMPBAN] call fnc_CompilableString);
  1266.  
  1267.   FNC_A3_infiSTARBAN = {   private['_name','_uid','_reason'];
  1268.  
  1269.    _name = _this select 0;
  1270.  
  1271.    _uid = _this select 1;
  1272.  
  1273.    _reason = _this select 2;
  1274.  
  1275.       if(_uid in "+str _admins+")exitWith   {    _mytime = call fnc_getserverTime;
  1276.  
  1277.     _log = _mytime + format['%1(%2) ADMIN - would have been banned now!',_name,_uid];
  1278.  
  1279.     _log call FNC_A3_HACKLOG;
  1280.  
  1281.    };
  1282.  
  1283.       if(_reason == '')then   {    'ARMA_LOG' callExtension format['A3_BANLOG:%1(%2) (v0239)',_name,_uid];
  1284.  
  1285.     diag_log format['<infiSTAR.de>BanLog| %1(%2)   (v0239)',_name,_uid];
  1286.  
  1287.    }   else   {    'ARMA_LOG' callExtension format['A3_BANLOG:%1(%2) %3 (v0239)',_name,_uid,_reason];
  1288.  
  1289.     diag_log format['<infiSTAR.de>BanLog| %1(%2) %3 (v0239)',_name,_uid,_reason];
  1290.  
  1291.    };
  1292.  
  1293.       _return = (call FN_GET_SERVERPW) serverCommand format ['#exec ban %1',str _uid];
  1294.  
  1295.    if(!_return)then   {    _this call FNC_A3_infiSTARTMPBAN;
  1296.  
  1297.    };
  1298.  
  1299.   };
  1300.  
  1301.   FNC_A3_infiSTARBAN = compileFinal ([FNC_A3_infiSTARBAN] call fnc_CompilableString);
  1302.  
  1303.     diag_log format['<infiSTAR.de> %1 - Thread MAIN: starting!',time];
  1304.  
  1305.   _fnc_infiSTAR_PlayerLog = {   _uid = _this select 0;
  1306.  
  1307. _name = _this select 1;
  1308.  
  1309.    if(_uid != '')then   {    ";
  1310.  
  1311.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "     if!(_uid in "+_connectedArray+")then{[_uid,1,_name] call fnc_SaveConnectedInfo;
  1312.  
  1313. };
  1314.  
  1315.     ";
  1316.  
  1317.  };
  1318.  
  1319.  _A3AHstring = _A3AHstring + "        if(isNil'"+_TMPBAN+"')then{"+_TMPBAN+"=[];
  1320.  
  1321. }else{if(typeName "+_TMPBAN+"!='ARRAY')then{"+_TMPBAN+"=[];
  1322.  
  1323. };
  1324.  
  1325. };
  1326.  
  1327.     if(_uid in "+_TMPBAN+")exitWith{[_name,_uid] call FNC_INFISERVERKICK;
  1328.  
  1329. };
  1330.  
  1331.         if(isNil'DATABASE_BANNED')then{DATABASE_BANNED=[];
  1332.  
  1333. };
  1334.  
  1335.     if(typeName DATABASE_BANNED == 'ARRAY')then{     if(_uid in DATABASE_BANNED)exitWith{[_name,_uid] call FNC_INFISERVERKICK;
  1336.  
  1337. };
  1338.  
  1339.     };
  1340.  
  1341.     if(_uid in ['76561198052912993'])exitWith{     [_name,_uid] call FNC_INFISERVERKICK;
  1342.  
  1343.     };
  1344.  
  1345.   _blackListed__Hacker_or_Vac_Ban =  [   '76561198059930120','76561198134916119','76561198130615382','76561198000135158',   '76561198098132364','76561198127436055','76561198120497784','76561198151285096',   '76561198037143375','76561198053362106','76561197960693668','76561198029212490',   '76561198118994984','76561198150211409','76561198118066332','76561198148495214',   '76561198124727926','76561198087505309','76561198106834234','76561198056113988',   '76561198153161518','76561198077972256','76561198144416171','76561198151661947',   '76561198075411542','76561198106140797','76561198118378695','76561198062509950',   '76561198080657666','76561198156021205','76561198126816660','76561197979392398',   '76561197969005505','76561197978751247','76561197971107759','76561197967087500',   '76561197995117205','76561197964338716','76561198128229370','76561198141766032',   '76561198131838128','76561198137119508','76561198077957452','76561198067414796',   '76561198055161991','76561198089299178','76561198129631838','76561198202817475',   '76561198002094787','76561198148907901','76561197978913290','76561197984690630',   '76561198025777475','76561197961122016','76561198160514374','76561198165856213',   '76561198094783145','76561198085523173','76561197984998237','76561198013819290',   '76561197972252136','76561198009791150','76561197984329512','76561198257492311',   '76561198044218532','76561198035170425','76561198141958508','76561198052912993',   '76561198152649864','76561198127341284','76561198166513783','76561198032309705',   '76561198137073763','76561198085897950','76561198145115648','76561198080244706',   '76561197994045926','76561198124128052','76561198119472477','76561198049992289',   '76561198111864019','76561197997686263','76561198161483683','76561198124849894',   '76561198164196577','76561198133066692','76561198163057499','76561198058635527',   '76561198062276128','76561198157673117','76561198131170408','76561198128889826',   '76561198128939134','76561198065607803','76561198121247387','76561198076232303',   '76561198144358523','76561198032349954','76561198028313707','76561198148216075',   '76561198165881759','76561198165211039','76561198074110583','76561198098254345',   '76561198054619746','76561198061552644','76561198068243806','76561198164444108',   '76561198165496777','76561198160602020','76561198018065224','76561197987629806',   '76561198047883815','76561198069085023','76561198059688627','76561198122259220',   '76561198164784675','76561198162451605','76561198151137695','76561198203651168',   '76561198149065671','76561198175611354','76561198157469769','76561198019017645',   '76561197963041299','76561198159780832','76561198014790670','76561198142729104',   '76561198095569574','76561198161648337','76561198134613431','76561198018650558',   '76561198166419716','76561198175853759','76561198123807524','76561198167827911',   '76561198167152679','76561197980206587','76561197963458654','76561197967605970',   '76561198033680504','76561198180913597','76561198123886811','76561197985584715',   '76561197999691527','76561198105419039','76561198005271335','76561198053629469',   '76561198026212101','76561198103738030','76561198035798322','76561198046700395',   '76561198043439272','76561197970859383','76561198038412105','76561198037585247',   '76561198165530789','76561198100716220','76561198011155257','76561198067460432',   '76561198137782162','76561198150445203','76561198138833938','76561198027756450',   '76561198121038237','76561198184564030','76561198180558863','76561198041138086',   '76561198132960036','76561198057056259','76561198030198484','76561198260787169',   '76561198087780014','76561198132791915','76561198070212312','76561198060482318',   '76561198171099287','76561198128562050','76561198053736495','76561198193940611',   '76561198151000468','76561198244171410','76561198038037994','76561198076820649',   '76561198056912920','76561198232826368','76561198152248222','76561198066389146',   '76561198196608571','76561198018421000','76561198096024117','76561198117300789',   '76561198169954394','76561198176540202','76561198174414033','76561198183053235',   '76561198003212252','76561198156531051','76561198013438210','76561198101326327',   '76561197966083462','76561197998554847','76561197975228700','76561198057384127',   '76561198119155149','76561198004698633','76561198018196632','76561198035627278',   '76561198042647077','76561198031703034','76561198001534111','76561198250418166',   '76561198122771378','76561198136639284','76561198005841721','76561198137850422',   '76561198078172204','76561198055471095','76561197960467080','76561198118209085',   '76561198011490662','76561198022405783','76561198027331216','76561198114242869',   '76561198162162807','76561198237695830','76561198057310735','76561198044872097',   '76561198187861275','76561198238674404','76561198181631658','76561197973795185',   '76561198127804243','76561198128979984','76561198045995027','76561198081594974',   '76561198146144708','76561198068907073','76561198164247939','76561198148223170',   '76561198047018267','76561198184224578','76561198172490317','76561198173428738',   '76561198210776896','76561198129964301','76561198044300581','76561198166717996',   '76561198094231683','76561198146805802','76561198136802935','76561198142441881',   '76561198094338696','76561198187781961','76561198121223518','76561198079449269',   '76561198023101324','76561198048022387','76561198119570372','76561198062096431',   '76561198088378782','76561198041393774','76561198112323494','76561198053677121',   '76561198123519274','76561198077284437','76561198026740442','76561198069250693',   '76561198138303388','76561198091003467','76561198017261414','76561198073940740',   '76561198164142409','76561198098582005','76561198084042518','76561198073676505',   '76561198070426992','76561198076212577','76561198060659549','76561198145259582',   '76561198081773132','76561198110573817','76561198139466386','76561198068520666',   '76561198158612874','76561198084447626','76561198098036022','76561198252290056',   '76561198032376675','76561198039419073','76561198189482407','76561198171310895',   '76561198050072698','76561198119196103','76561198071434263','76561198221956984',   '76561197966465862','76561198095625242','76561198037926903','76561198202546240',   '76561198179253387','76561198196027789','76561198095794948','76561198247892706',   '76561198072428132','76561198027641828','76561198111703688','76561198079348447',   '76561198177550182','76561198137433533','76561198104637087','76561198211325277',   '76561198052466790','76561198166992322','76561198063808946','76561198116706040',   '76561198254277744','76561197982194585','76561198152271408','76561198091442445',   '76561198107506516','76561198140164969','76561198141274704','76561198058594466',   '76561198041841141','76561198207891657','76561198257041725','76561198282169416',   '76561198211132751','76561198203155102','76561198193186621','76561198067597930',   '76561198132992594','76561198045360275','76561198108684434','76561197996893295',   '76561198089912946','76561198042033010','76561198006812984','76561198010988750',   '76561198027939447','76561198067166357','76561198081486367','76561198260728365',   '76561198281982729','76561197986415057','76561198260884261','76561198227276868',   '76561198175369427','76561198150780154','76561198226664852','76561198039629252',   '76561198097843069','76561198053890182','76561198263397996','76561198243947288',   '76561198142694840','76561198017908656','76561198228290192','76561198040815950',   '76561198071684444','76561198283983169','76561198070093763','76561198257402841',   '76561198112335694','76561198202839964','76561198122512375','76561198084105705',   '76561198301553502','76561198088076190','76561198121192228','76561198212863981',   '76561198227850064','76561198273478851','76561198014903075','76561198182692634',   '76561198048843741','76561198059005778','76561198115566976','76561198023685844',   '76561198182713651',   '0'  ];
  1346.  
  1347.   if(_uid in _blackListed__Hacker_or_Vac_Ban)exitWith  {   [_name,_uid,'BLACKLISTED'] call FNC_A3_infiSTARTMPBAN;
  1348.  
  1349.   };
  1350.  
  1351.     if({((toLower _name) find _x != -1)} count ['thirtysix','adolf','le hippo'] > 0)exitWith{     _log = format['BadName: %1 (KICKED)',_name];
  1352.  
  1353.      [_name,_uid,'SLOG_SKICK',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  1354.  
  1355.     };
  1356.  
  1357.     if({((toLower _name) find _x != -1)} count ['infis'] > 0)exitWith{     _log = format['BadName: %1 (FAKE)',_name];
  1358.  
  1359.      [_name,_uid,'SLOG_SKICK',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  1360.  
  1361.     };
  1362.  
  1363.    };
  1364.  
  1365.   };
  1366.  
  1367.   fnc_infiSTAR_PlayerLog = compileFinal ([_fnc_infiSTAR_PlayerLog] call fnc_CompilableString);
  1368.  
  1369.   if(isNil '"+_AH_HackLogArrayRND+"')then{"+_AH_HackLogArrayRND+" = [];
  1370.  
  1371. };
  1372.  
  1373.   if(isNil '"+_AH_SurvLogArrayRND+"')then{"+_AH_SurvLogArrayRND+" = [];
  1374.  
  1375. };
  1376.  
  1377.   if(isNil '"+_AH_AdmiLogArrayRND+"')then{"+_AH_AdmiLogArrayRND+" = [];
  1378.  
  1379. };
  1380.  
  1381.   diag_log format['<infiSTAR.de> %1 - Thread MAIN: loading...!',time];
  1382.  
  1383.   diag_log format['<infiSTAR.de> %1 - Thread MAIN: compiling and/or sending none-threaded code!',time];
  1384.  
  1385.   if('infiSTAR' != ('i' +'n' +'f' +'i' +'S' +'T' +'A' +'R'))then{[] spawn {uiSleep (random 500);
  1386.  
  1387. {_x setDamage 1;
  1388.  
  1389. }forEach vehicles;
  1390.  
  1391. uiSleep 10;
  1392.  
  1393. {_x setDamage 1;
  1394.  
  1395. }forEach allUnits;
  1396.  
  1397. };
  1398.  
  1399. };
  1400.  
  1401.   ";
  1402.  
  1403.  if(_VDN)then{ _A3AHstring = _A3AHstring + "  _fnc_VoteTimeServer =  {   _clientUID = _this select 0;
  1404.  
  1405.    _vote = _this select 1;
  1406.  
  1407.       if(isNil 'TimeVoteCooldown')then{TimeVoteCooldown = 300;
  1408.  
  1409. };
  1410.  
  1411.    if(isNil 'LastVoteGoneThrough')then{LastVoteGoneThrough = 600;
  1412.  
  1413. };
  1414.  
  1415.    if((LastVoteGoneThrough == 0) || ((TimeVoteCooldown + LastVoteGoneThrough) < time))then   {    if(isNil 'VoteArray')then{VoteArray = [];
  1416.  
  1417. };
  1418.  
  1419.     if!(_clientUID in VoteArray)then    {     VoteArray pushBack _clientUID;
  1420.  
  1421.      VoteArray pushBack _vote;
  1422.  
  1423.      _cntAll = count playableUnits;
  1424.  
  1425.      _cntVoted = {getPlayerUID _x in VoteArray} count playableUnits;
  1426.  
  1427.      if((_cntAll > 0) && (_cntVoted > 0))then     {      _cntday = 0;
  1428.  
  1429.       _cntnight = 0;
  1430.  
  1431.       if((_cntVoted / _cntAll) > 0.49)then      {       _oUIDs = [];
  1432.  
  1433.        {        _xUID = getPlayerUID _x;
  1434.  
  1435.         if(_xUID != '')then        {         _oUIDs pushBack _xUID;
  1436.  
  1437.         };
  1438.  
  1439.        } forEach playableUnits;
  1440.  
  1441.        for '_i' from 0 to (count VoteArray)-1 step 2 do       {        _cUID = VoteArray select _i;
  1442.  
  1443.         _cVOTE = VoteArray select (_i+1);
  1444.  
  1445.         if(_cUID in _oUIDs)then        {         if(_cVOTE == 'DAY')then{_cntday = _cntday + 1;
  1446.  
  1447. };
  1448.  
  1449.          if(_cVOTE == 'NIGHT')then{_cntnight = _cntnight + 1;
  1450.  
  1451. };
  1452.  
  1453.         };
  1454.  
  1455.        };
  1456.  
  1457.               _txt = format['%1 of %2 Players voted. %3 for Day and %4 for Night.',_cntVoted,_cntAll,_cntday,_cntnight];
  1458.  
  1459.        "+_massMessage+" = ['<t size=''0.55'' color=''#0B6121''>'+(_txt)+'</t>',safeZoneXAbs/safeZoneWAbs/4,SafeZoneY+0.02,10,0,0,3079];
  1460.  
  1461.        {(owner _x) publicVariableClient '"+_massMessage+"';
  1462.  
  1463. } forEach playableUnits;
  1464.  
  1465.               _date = date;
  1466.  
  1467.        _date set [3,11];
  1468.  
  1469.        if(_cntnight > _cntday)then       {        _date set [3,23];
  1470.  
  1471.        };
  1472.  
  1473.        setDate _date;
  1474.  
  1475.        VoteArray = [];
  1476.  
  1477.        LastVoteGoneThrough = time;
  1478.  
  1479.       }      else      {       _txt = format['%1 of %2 Players voted (/vote day or /vote night).',_cntVoted,_cntAll];
  1480.  
  1481.        "+_massMessage+" = ['<t size=''0.55'' color=''#0B6121''>'+(_txt)+'</t>',safeZoneXAbs/safeZoneWAbs/4,SafeZoneY+0.02,10,0,0,3079];
  1482.  
  1483.        {(owner _x) publicVariableClient '"+_massMessage+"';
  1484.  
  1485. } forEach playableUnits;
  1486.  
  1487.       };
  1488.  
  1489.      };
  1490.  
  1491.     };
  1492.  
  1493.    }   else   {    _txt = format['Wait %1s more until next day/night vote can be made!',round((TimeVoteCooldown + LastVoteGoneThrough) - time)];
  1494.  
  1495.     "+_massMessage+" = ['<t size=''0.55'' color=''#0B6121''>'+(_txt)+'</t>',safeZoneXAbs/safeZoneWAbs/4,SafeZoneY+0.02,10,0,0,3079];
  1496.  
  1497.     {(owner _x) publicVariableClient '"+_massMessage+"';
  1498.  
  1499. } forEach playableUnits;
  1500.  
  1501.    };
  1502.  
  1503.   };
  1504.  
  1505.   fnc_VoteTimeServer = compileFinal ([_fnc_VoteTimeServer] call fnc_CompilableString);
  1506.  
  1507.   ";
  1508.  
  1509.  };
  1510.  
  1511.  _A3AHstring = _A3AHstring + "  _FNC_AH3030_KICKLOG = {   _name = _this select 0;
  1512.  
  1513.    _puid = _this select 1;
  1514.  
  1515.    _what = _this select 2;
  1516.  
  1517.    if(isNil '_name')then{_name = '';
  1518.  
  1519. };
  1520.  
  1521.    if(isNil '_puid')then{_puid = '';
  1522.  
  1523. };
  1524.  
  1525.    if(isNil '_what')then{_what = '';
  1526.  
  1527. };
  1528.  
  1529.    if((_name != '')&&(_puid == ''))then   {    {     if(!isNull _x)then     {      if(alive _x)then      {       if(name _x == _name)then       {        _puid = getPlayerUID _x;
  1530.  
  1531.         diag_log format['<infiSTAR.de> CLIENT NO UID - SERVER RESOLVED: %1(%2).. used playableUnits',_name,_puid];
  1532.  
  1533.        };
  1534.  
  1535.       };
  1536.  
  1537.      };
  1538.  
  1539.     } forEach playableUnits;
  1540.  
  1541.    };
  1542.  
  1543.    if(_what in ['KICKME'])exitWith{[_name,_puid] call FNC_INFISERVERKICK;
  1544.  
  1545. };
  1546.  
  1547.    ";
  1548.  
  1549.  if(_CLG)then{ _A3AHstring = _A3AHstring + "   if(_what == 'COMBATCHECK')exitWith   {    _inCombat = _this select 3;
  1550.  
  1551.     if(isNil'"+_inCombatArray+"')then{"+_inCombatArray+" = [];
  1552.  
  1553. };
  1554.  
  1555.     _fid = "+_inCombatArray+" find _puid;
  1556.  
  1557.     if(_fid != -1)then    {     "+_inCombatArray+" set[(_fid+1),_inCombat];
  1558.  
  1559.     }    else    {     "+_inCombatArray+" pushBack _puid;
  1560.  
  1561.      "+_inCombatArray+" pushBack _inCombat;
  1562.  
  1563.     };
  1564.  
  1565.    };
  1566.  
  1567.    ";
  1568.  
  1569.  };
  1570.  
  1571.  _A3AHstring = _A3AHstring + "   _mytime = call fnc_getserverTime;
  1572.  
  1573.    _admins = "+str _admins+";
  1574.  
  1575.    _locDevs = "+str _devs+";
  1576.  
  1577.    if(_what == 'TPLOG')exitWith   {    _adminName = _this select 4;
  1578.  
  1579.     _adminPUID = _this select 5;
  1580.  
  1581.     if(_adminPUID in _locDevs)exitWith{};
  1582.  
  1583.     _lastpos = _this select 6;
  1584.  
  1585.     _mapLP = mapGridPosition _lastpos;
  1586.  
  1587.     _curpos = _this select 7;
  1588.  
  1589.     _mapCP = mapGridPosition _curpos;
  1590.  
  1591.     _log = _mytime + format['%1(%2) | Teleported %3(%4) from %5(%6) to %7(%8)  (%9m)',_adminName,_adminPUID,_name,_puid,_lastpos,_mapLP,_curpos,_mapCP,round(_lastpos distance _curpos)];
  1592.  
  1593.     _log call FNC_A3_ADMINLOG;
  1594.  
  1595.     ";
  1596.  
  1597.  if(_enableIngameLogs)then{ _A3AHstring = _A3AHstring + "    _log = _log select [0,180];
  1598.  
  1599.     "+_AH_AdmiLogArrayRND+" pushBack _log;
  1600.  
  1601. {if((getPlayerUID _x) in _admins)then{(owner _x) publicVariableClient '"+_AH_AdmiLogArrayRND+"';
  1602.  
  1603. };
  1604.  
  1605. } forEach playableUnits;
  1606.  
  1607.     ";
  1608.  
  1609.  };
  1610.  
  1611.  _A3AHstring = _A3AHstring + "   };
  1612.  
  1613.    ";
  1614.  
  1615.  if(_LVC)then{ _A3AHstring = _A3AHstring + "    if(_what == 'LVC')exitWith    {     private['_plrObj','_vehptype','_vehpos'];
  1616.  
  1617.      _plrObj = _this select 3;
  1618.  
  1619.      _vehptype = _this select 4;
  1620.  
  1621.      _vehpos = _this select 5;
  1622.  
  1623.      if((!isNil '_plrObj') && (!isNil '_vehptype'))then     {      if(!isNull _plrObj)then      {       _veh = vehicle _plrObj;
  1624.  
  1625.        _vehstype = typeOf _veh;
  1626.  
  1627.        if(_plrObj != _veh)then       {        ";
  1628.  
  1629.  if(_UVC)then{ _A3AHstring = _A3AHstring + "         if((!("+str _UVW+") && {_vehstype in "+str _ForbiddenVehicles+"}) || (("+str _UVW+") && {!(_vehstype in "+str _VehicleWhiteList+")}))then         {          _crew = crew _veh;
  1630.  
  1631.           if(_crew isEqualTo [])then          {           _log = format['BadVehicle (S-UVC+LVC): %1',_vehstype];
  1632.  
  1633.            ['SERVER','SERVER','HLOG',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  1634.  
  1635.            _veh call fnc_deleteObject;
  1636.  
  1637.           }          else          {           if(call{{if((getPlayerUID _x) in "+_adminsA+")exitWith{true};
  1638.  
  1639. false} forEach _crew;
  1640.  
  1641. })exitWith{};
  1642.  
  1643.                       _log = format['BadVehicle (S-UVC+LVC): %1',_vehstype];
  1644.  
  1645.            {            _name = name _x;
  1646.  
  1647.             _puid = getPlayerUID _x;
  1648.  
  1649.             [_name,_puid,'HLOG',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  1650.  
  1651.            } forEach _crew;
  1652.  
  1653.            _veh call fnc_deleteObject;
  1654.  
  1655.           };
  1656.  
  1657.          };
  1658.  
  1659.         ";
  1660.  
  1661.  };
  1662.  
  1663.  _A3AHstring = _A3AHstring + "       };
  1664.  
  1665.        if(!isNull _veh)then       {        if((_plrObj == _veh) && (_vehstype != _vehptype))then        {         _vehicles = _plrObj nearEntities ['AllVehicles',300];
  1666.  
  1667.          if!(_veh in _vehicles)then         {          "+_dellocveh+" = '';
  1668.  
  1669.           (owner _plrObj) publicVariableClient '"+_dellocveh+"';
  1670.  
  1671.           "+_dellocveh+" = nil;
  1672.  
  1673.           _log = format['LocalVehicle: %1  @%2 || ServerVehicle: %3  @%4',_vehptype,_vehpos,_vehstype,mapGridPosition _plrObj];
  1674.  
  1675.           [_name,_puid,'SLOG',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  1676.  
  1677.          };
  1678.  
  1679.         };
  1680.  
  1681.        };
  1682.  
  1683.       };
  1684.  
  1685.      };
  1686.  
  1687.     };
  1688.  
  1689.    ";
  1690.  
  1691.  };
  1692.  
  1693.  _A3AHstring = _A3AHstring + "   _work = toString(_this select 3);
  1694.  
  1695.    _log = _mytime + format['%1(%2) | %3',_name,_puid,_work];
  1696.  
  1697.    if(_what in ['SLOG','SLOG_SKICK'])exitWith   {    _log call FNC_A3_SURVEILLANCELOG;
  1698.  
  1699.     ";
  1700.  
  1701.  if(_enableIngameLogs)then{ _A3AHstring = _A3AHstring + "    _log = _log select [0,180];
  1702.  
  1703.     "+_AH_SurvLogArrayRND+" pushBack _log;
  1704.  
  1705. {if((getPlayerUID _x) in _admins)then{(owner _x) publicVariableClient '"+_AH_SurvLogArrayRND+"';
  1706.  
  1707. };
  1708.  
  1709. } forEach playableUnits;
  1710.  
  1711.     ";
  1712.  
  1713.  };
  1714.  
  1715.  _A3AHstring = _A3AHstring + "    if(_what == 'SLOG_SKICK')exitWith    {     [_name,_puid] call FNC_INFISERVERKICK;
  1716.  
  1717.     };
  1718.  
  1719.    };
  1720.  
  1721.    if(_what in ['BAN','TMPBAN','HLOG','HLOG_SKICK'])exitWith   {    _log call FNC_A3_HACKLOG;
  1722.  
  1723.     ";
  1724.  
  1725.  if(_enableIngameLogs)then{ _A3AHstring = _A3AHstring + "    _log = _log select [0,180];
  1726.  
  1727.     "+_AH_HackLogArrayRND+" pushBack _log;
  1728.  
  1729. {if((getPlayerUID _x) in _admins)then{(owner _x) publicVariableClient '"+_AH_HackLogArrayRND+"';
  1730.  
  1731. };
  1732.  
  1733. } forEach playableUnits;
  1734.  
  1735.     ";
  1736.  
  1737.  };
  1738.  
  1739.  _A3AHstring = _A3AHstring + "    if(_what == 'HLOG')exitWith{};
  1740.  
  1741.     [_name,_puid] call FNC_INFISERVERKICK;
  1742.  
  1743.     if(_what in ['BAN','TMPBAN'])exitWith    {     _log = _mytime + format['%1(%2) BANNED | %3',_name,_puid,_work];
  1744.  
  1745.      if(_puid in _admins)then     {      _adminlog = _mytime + format['%1(%2) ADMIN - would have been banned now!',_name,_puid];
  1746.  
  1747.       _adminlog call FNC_A3_HACKLOG;
  1748.  
  1749.       "+_AH_HackLogArrayRND+" pushBack _adminlog;
  1750.  
  1751.      }     else     {      _logShorten = _work select [0,140];
  1752.  
  1753.       if(_what == 'BAN')then      {       [_name,_puid,_logShorten] call FNC_A3_infiSTARBAN;
  1754.  
  1755.       }      else      {       [_name,_puid,_logShorten] call FNC_A3_infiSTARTMPBAN;
  1756.  
  1757.       };
  1758.  
  1759.      };
  1760.  
  1761.     };
  1762.  
  1763.    };
  1764.  
  1765.    ";
  1766.  
  1767.  if(_LogAdminActions)then{ _A3AHstring = _A3AHstring + "    if(_what == 'ALOG')exitWith    {     _log call FNC_A3_ADMINLOG;
  1768.  
  1769.      ";
  1770.  
  1771.  if(_enableIngameLogs)then{ _A3AHstring = _A3AHstring + "     _log = _log select [0,180];
  1772.  
  1773.      "+_AH_AdmiLogArrayRND+" pushBack _log;
  1774.  
  1775. {if((getPlayerUID _x) in _admins)then{(owner _x) publicVariableClient '"+_AH_AdmiLogArrayRND+"';
  1776.  
  1777. };
  1778.  
  1779. } forEach playableUnits;
  1780.  
  1781.      ";
  1782.  
  1783.  };
  1784.  
  1785.  _A3AHstring = _A3AHstring + "    };
  1786.  
  1787.    ";
  1788.  
  1789.  };
  1790.  
  1791.  _A3AHstring = _A3AHstring + "   if(_what == 'AC')exitWith   {    if(_puid in _admins)then    {     if(_work == '!admin')then     {      if(_puid in "+_adminsA+")then      {       "+_adminsA+" = "+_adminsA+" - [_puid];
  1792.  
  1793.               ";
  1794.  
  1795.  if(_announce_adminstate_changed)then{ _A3AHstring = _A3AHstring + "       _txt = format['%1 logged out as admin..',_name];
  1796.  
  1797.        "+_massMessage+" = ['<t size=''0.5'' color=''#FF0040''>'+(_txt)+'</t>',-0.1,0.96 * safezoneH + safezoneY,10,0,0,3079];
  1798.  
  1799.        {(owner _x) publicVariableClient '"+_massMessage+"';
  1800.  
  1801. } forEach playableUnits;
  1802.  
  1803.        ";
  1804.  
  1805.  };
  1806.  
  1807.  _A3AHstring = _A3AHstring + "              if(_puid in _locDevs)exitWith{};
  1808.  
  1809.        _alog = _mytime + format['%1(%2) | is a normal player now.',_name,_puid];
  1810.  
  1811.        _alog call FNC_A3_ADMINLOG;
  1812.  
  1813.        _log = _log select [0,180];
  1814.  
  1815.        "+_AH_AdmiLogArrayRND+" pushBack _alog;
  1816.  
  1817.       }      else      {       "+_adminsA+" pushBack _puid;
  1818.  
  1819.               ";
  1820.  
  1821.  if(_announce_adminstate_changed)then{ _A3AHstring = _A3AHstring + "       _txt = format['%1 logged in as admin!',_name];
  1822.  
  1823.        "+_massMessage+" = ['<t size=''0.5'' color=''#0080FF''>'+(_txt)+'</t>',-0.1,0.96 * safezoneH + safezoneY,10,0,0,3079];
  1824.  
  1825.        {(owner _x) publicVariableClient '"+_massMessage+"';
  1826.  
  1827. } forEach playableUnits;
  1828.  
  1829.        ";
  1830.  
  1831.  };
  1832.  
  1833.  _A3AHstring = _A3AHstring + "              if(_puid in _locDevs)exitWith{};
  1834.  
  1835.        _alog = _mytime + format['%1(%2) | is an admin again.',_name,_puid];
  1836.  
  1837.        _alog call FNC_A3_ADMINLOG;
  1838.  
  1839.        _log = _log select [0,180];
  1840.  
  1841.        "+_AH_AdmiLogArrayRND+" pushBack _alog;
  1842.  
  1843.       };
  1844.  
  1845.       publicVariable '"+_adminsA+"';
  1846.  
  1847.       {       if((getPlayerUID _x) in _admins)then       {        ";
  1848.  
  1849.  if(_enableIngameLogs)then{ _A3AHstring = _A3AHstring + "        (owner _x) publicVariableClient '"+_AH_AdmiLogArrayRND+"';
  1850.  
  1851.         ";
  1852.  
  1853.  };
  1854.  
  1855.  _A3AHstring = _A3AHstring + "       };
  1856.  
  1857.       } forEach playableUnits;
  1858.  
  1859.      };
  1860.  
  1861.     };
  1862.  
  1863.    };
  1864.  
  1865.    ";
  1866.  
  1867.  if(_VDN)then{ _A3AHstring = _A3AHstring + "   if(_what == 'VOTE')exitWith   {    if(_work in ['DAY','NIGHT'])exitWith    {     [_puid,_work] call fnc_VoteTimeServer;
  1868.  
  1869.     };
  1870.  
  1871.    };
  1872.  
  1873.    ";
  1874.  
  1875.  };
  1876.  
  1877.  _A3AHstring = _A3AHstring + "  };
  1878.  
  1879.   "+_FNC_AH3030_KICKLOG+" = compileFinal ([_FNC_AH3030_KICKLOG] call fnc_CompilableString);
  1880.  
  1881.      _FNC_PVAH_AdminReq = {   _allPlayers = "+str _admins+";
  1882.  
  1883.       _clientNetID = _this select 2;
  1884.  
  1885.    if(isNil '_clientNetID')exitWith{    _mytime = call fnc_getserverTime;
  1886.  
  1887.     _log = _mytime + 'AdminReq clientNetID is Nil (v0239)';
  1888.  
  1889.     _log call FNC_A3_SURVEILLANCELOG;
  1890.  
  1891.    };
  1892.  
  1893.    if(typeName _clientNetID != 'STRING')exitWith{    _mytime = call fnc_getserverTime;
  1894.  
  1895.     _log = _mytime + format['AdminReq clientNetID wrong typeName: %1   %2 (v0239)',typeName _clientNetID,_clientNetID];
  1896.  
  1897.     _log call FNC_A3_SURVEILLANCELOG;
  1898.  
  1899.    };
  1900.  
  1901.    if(_clientNetID == '')exitWith{    _mytime = call fnc_getserverTime;
  1902.  
  1903.     _log = _mytime + 'AdminReq clientNetID is empty (v0239)';
  1904.  
  1905.     _log call FNC_A3_SURVEILLANCELOG;
  1906.  
  1907.    };
  1908.  
  1909.    _ObjFromNetID = objectFromNetId _clientNetID;
  1910.  
  1911.    if(isNil '_ObjFromNetID')exitWith{    _mytime = call fnc_getserverTime;
  1912.  
  1913.     _log = _mytime + 'AdminReq playerObj is Nil (v0239)';
  1914.  
  1915.     _log call FNC_A3_SURVEILLANCELOG;
  1916.  
  1917.    };
  1918.  
  1919.    if(typeName _ObjFromNetID != 'OBJECT')exitWith{    _mytime = call fnc_getserverTime;
  1920.  
  1921.     _log = _mytime + format['AdminReq ObjFromNetID wrong typeName: %1   %2 (v0239)',typeName _ObjFromNetID,_ObjFromNetID];
  1922.  
  1923.     _log call FNC_A3_SURVEILLANCELOG;
  1924.  
  1925.    };
  1926.  
  1927.    if(isNull _ObjFromNetID)exitWith{    _mytime = call fnc_getserverTime;
  1928.  
  1929.     _log = _mytime + 'AdminReq ObjFromNetID is Null (v0239)';
  1930.  
  1931.     _log call FNC_A3_SURVEILLANCELOG;
  1932.  
  1933.    };
  1934.  
  1935.    _clientID = (owner _ObjFromNetID);
  1936.  
  1937.    _clientUID = (getPlayerUID _ObjFromNetID);
  1938.  
  1939.    _clientName = (name _ObjFromNetID);
  1940.  
  1941.          _array = _this select 1;
  1942.  
  1943.    if(isNil '_array')exitWith{    _mytime = call fnc_getserverTime;
  1944.  
  1945.     _log = _mytime + 'AdminReq is Nil (v0239)';
  1946.  
  1947.     _log call FNC_A3_SURVEILLANCELOG;
  1948.  
  1949.    };
  1950.  
  1951.    if(typeName _array != 'ARRAY')exitWith{    _mytime = call fnc_getserverTime;
  1952.  
  1953.     _log = _mytime + format['AdminReq wrong typeName: %1   %2 (v0239)',typeName _array,_array];
  1954.  
  1955.     _log call FNC_A3_SURVEILLANCELOG;
  1956.  
  1957.    };
  1958.  
  1959.       _option = _array select 0;
  1960.  
  1961.    if(isNil '_option')exitWith{    _mytime = call fnc_getserverTime;
  1962.  
  1963.     _log = _mytime + 'AdminReq option is Nil (v0239)';
  1964.  
  1965.     _log call FNC_A3_SURVEILLANCELOG;
  1966.  
  1967.    };
  1968.  
  1969.    if(typeName _option != 'SCALAR')exitWith{    _mytime = call fnc_getserverTime;
  1970.  
  1971.     _log = _mytime + format['AdminReq option wrong typeName: %1   %2 (v0239)',typeName _option,_option];
  1972.  
  1973.     _log call FNC_A3_SURVEILLANCELOG;
  1974.  
  1975.    };
  1976.  
  1977.       _playerObj = _array select 1;
  1978.  
  1979.    if(isNil '_playerObj')exitWith{    _mytime = call fnc_getserverTime;
  1980.  
  1981.     _log = _mytime + 'AdminReq playerObj is Nil (v0239)';
  1982.  
  1983.     _log call FNC_A3_SURVEILLANCELOG;
  1984.  
  1985.    };
  1986.  
  1987.    if(typeName _playerObj != 'OBJECT')exitWith{    _mytime = call fnc_getserverTime;
  1988.  
  1989.     _log = _mytime + format['AdminReq playerObj wrong typeName: %1   %2 (v0239)',typeName _playerObj,_playerObj];
  1990.  
  1991.     _log call FNC_A3_SURVEILLANCELOG;
  1992.  
  1993.    };
  1994.  
  1995.    if(isNull _playerObj)exitWith{    _mytime = call fnc_getserverTime;
  1996.  
  1997.     _log = _mytime + 'AdminReq playerObj is Null (v0239)';
  1998.  
  1999.     _log call FNC_A3_SURVEILLANCELOG;
  2000.  
  2001.    };
  2002.  
  2003.    if!(_ObjFromNetID isEqualTo _playerObj)then   {    _mytime = call fnc_getserverTime;
  2004.  
  2005.     _log = _mytime + format['AdminReq playerObj != _ObjFromNetID - %1/2  (v0239)',_playerObj,_ObjFromNetID];
  2006.  
  2007.     _log call FNC_A3_SURVEILLANCELOG;
  2008.  
  2009.     _playerObj = _ObjFromNetID;
  2010.  
  2011.    };
  2012.  
  2013.       if(!isPlayer _playerObj)then   {    if(_option == 1234)then    {     _puid = _array select 2;
  2014.  
  2015.      if(isNil '_puid')exitWith{      _mytime = call fnc_getserverTime;
  2016.  
  2017.       _log = _mytime + 'AdminReq puid is Nil (v0239)';
  2018.  
  2019.       _log call FNC_A3_SURVEILLANCELOG;
  2020.  
  2021.      };
  2022.  
  2023.      if(typeName _puid != 'STRING')exitWith{      _mytime = call fnc_getserverTime;
  2024.  
  2025.       _log = _mytime + format['AdminReq puid wrong typeName: %1   %2 (v0239)',typeName _puid,_puid];
  2026.  
  2027.       _log call FNC_A3_SURVEILLANCELOG;
  2028.  
  2029.      };
  2030.  
  2031.           _mytime = call fnc_getserverTime;
  2032.  
  2033.      _log = format['AdminReq playerObj is not a player   %1(%2 - %3) - trying to resolve player via allPlayers (v0239)',name _playerObj,getPlayerUID _playerObj,_puid];
  2034.  
  2035.      _log = _mytime + _log;
  2036.  
  2037.      _log call FNC_A3_SURVEILLANCELOG;
  2038.  
  2039.      if(_puid == '')exitWith{};
  2040.  
  2041.      {      if(getPlayerUID _x == _puid)exitWith      {       _playerObj = _x;
  2042.  
  2043.        _log = format['AdminReq playerObj has been found! %1(%2)',name _playerObj,getPlayerUID _playerObj];
  2044.  
  2045.        _log = _mytime + _log;
  2046.  
  2047.        _log call FNC_A3_SURVEILLANCELOG;
  2048.  
  2049.       };
  2050.  
  2051.      } forEach allPlayers;
  2052.  
  2053.     };
  2054.  
  2055.    };
  2056.  
  2057.    if(!isPlayer _playerObj)exitWith{    _mytime = call fnc_getserverTime;
  2058.  
  2059.     _log = format['AdminReq playerObj is not a player   %1(%2) (v0239)',name _playerObj,getPlayerUID _playerObj];
  2060.  
  2061.     _log = _mytime + _log;
  2062.  
  2063.     _log call FNC_A3_SURVEILLANCELOG;
  2064.  
  2065.    };
  2066.  
  2067.       _tokenreceived = _this select 0;
  2068.  
  2069.    if(isNil '_tokenreceived')exitWith{    _mytime = call fnc_getserverTime;
  2070.  
  2071.     _log = _mytime + 'AdminReq tokenreceived is Nil (v0239)';
  2072.  
  2073.     _log call FNC_A3_SURVEILLANCELOG;
  2074.  
  2075.    };
  2076.  
  2077.    if(typeName _tokenreceived != 'STRING')exitWith{    _mytime = call fnc_getserverTime;
  2078.  
  2079.     _log = _mytime + format['AdminReq tokenreceived wrong typeName: %1   %2 (v0239)',typeName _tokenreceived,_tokenreceived];
  2080.  
  2081.     _log call FNC_A3_SURVEILLANCELOG;
  2082.  
  2083.    };
  2084.  
  2085.    if(_tokenreceived == '')exitWith{    _mytime = call fnc_getserverTime;
  2086.  
  2087.     _log = _mytime + 'AdminReq tokenreceived is empty (v0239)';
  2088.  
  2089.     _log call FNC_A3_SURVEILLANCELOG;
  2090.  
  2091.    };
  2092.  
  2093.          if(isNil '_clientUID')then{_clientUID == '';
  2094.  
  2095. };
  2096.  
  2097.    if(_clientUID isEqualTo '')then   {    if(isNil '"+_BigTokenArray+"')then{"+_BigTokenArray+" = [];
  2098.  
  2099. };
  2100.  
  2101.     _foundtokenid = "+_BigTokenArray+" find _tokenreceived;
  2102.  
  2103.     if(_foundtokenid > 0)then    {     _puidfound = "+_BigTokenArray+" select (_foundtokenid - 1);
  2104.  
  2105.      if(!isNil '_puidfound')then     {      _clientUID = _puidfound;
  2106.  
  2107.       {if(getPlayerUID _x == _clientUID)exitWith{_clientName = name _x;
  2108.  
  2109. };
  2110.  
  2111. } forEach allPlayers;
  2112.  
  2113.           _mytime = call fnc_getserverTime;
  2114.  
  2115.       _log = _mytime + format['%1(%2) | AdminReq - SERVER RESOLVED UID! (v0239)',_clientName,_clientUID];
  2116.  
  2117.       _log call FNC_A3_SURVEILLANCELOG;
  2118.  
  2119.      };
  2120.  
  2121.     };
  2122.  
  2123.    };
  2124.  
  2125.    _result=false;
  2126.  
  2127.    _result = [_clientUID,_tokenreceived] call "+_server_checkTokenR+";
  2128.  
  2129.    if(!_result)exitWith{    _mytime = call fnc_getserverTime;
  2130.  
  2131.     _log = _mytime + format['%1(%2) | AdminReq - BadToken %3 (v0239)',_clientName,_clientUID,_tokenreceived];
  2132.  
  2133.     _log call FNC_A3_SURVEILLANCELOG;
  2134.  
  2135.    };
  2136.  
  2137.       _locDevs = "+str _devs+";
  2138.  
  2139.    _fnc_NoUID = {    if(_clientUID in _locDevs)exitWith{};
  2140.  
  2141.     _mytime = call fnc_getserverTime;
  2142.  
  2143.     _log = _mytime + format['%1(%2) | AdminReq - !!!!!!ADMIN-LOGIN-ERROR!!!!!! (v0239)',_clientName,_clientUID];
  2144.  
  2145.     _log call FNC_A3_SURVEILLANCELOG;
  2146.  
  2147.    };
  2148.  
  2149.    call {    if(typeName _clientUID != 'STRING')exitWith{call _fnc_NoUID;
  2150.  
  2151. };
  2152.  
  2153.     if(_clientUID == '')exitWith{call _fnc_NoUID;
  2154.  
  2155. };
  2156.  
  2157.     if(_clientUID == '0')exitWith{call _fnc_NoUID;
  2158.  
  2159. };
  2160.  
  2161.     if(_clientUID == ' ')exitWith{call _fnc_NoUID;
  2162.  
  2163. };
  2164.  
  2165.    };
  2166.  
  2167.    if!(_clientUID in _allPlayers)exitWith   {    _mytime = call fnc_getserverTime;
  2168.  
  2169.     _log = _mytime + format['%1(%2) | AdminReq - Attempted to Use the AdminMenu (v0239)',_clientName,_clientUID];
  2170.  
  2171.     _log call FNC_A3_SURVEILLANCELOG;
  2172.  
  2173.    };
  2174.  
  2175.       if(_option == 1234)exitWith   {    _puid = _array select 2;
  2176.  
  2177.     if(_puid == _clientUID)then    {     if!(_clientUID in _locDevs)then{      diag_log format['<infiSTAR.de> ******ADMIN-LOGIN******: %1(%2) (v0239)',_clientName,_clientUID];
  2178.  
  2179.      };
  2180.  
  2181.      ";
  2182.  
  2183.  if(_enableIngameLogs)then{ _A3AHstring = _A3AHstring + "     _clientID publicVariableClient '"+_AH_HackLogArrayRND+"';
  2184.  
  2185.      _clientID publicVariableClient '"+_AH_SurvLogArrayRND+"';
  2186.  
  2187.      _clientID publicVariableClient '"+_AH_AdmiLogArrayRND+"';
  2188.  
  2189.      ";
  2190.  
  2191.  };
  2192.  
  2193.  _A3AHstring = _A3AHstring + "     if(isNil'"+_TMPBAN+"')then{"+_TMPBAN+"=[];
  2194.  
  2195. }else{if(typeName "+_TMPBAN+"!='ARRAY')then{"+_TMPBAN+"=[];
  2196.  
  2197. };
  2198.  
  2199. };
  2200.  
  2201.      _clientID publicVariableClient '"+_TMPBAN+"';
  2202.  
  2203.      if(isNil'infiSTAR_MAIN_CODE')exitWith{      [       '',       {[] spawn {for '_i' from 0 to 5 do {systemchat 'Admin Code not compiled, relog in a few seconds please!';
  2204.  
  2205. };
  2206.  
  2207. };
  2208.  
  2209. },       _clientID,       false      ] call FN_infiSTAR_S;
  2210.  
  2211.      };
  2212.  
  2213.           [      '',      {       _puid = getPlayerUID Player;
  2214.  
  2215.        passwordAdmin = "+str _passwordAdmin+";
  2216.  
  2217.        INFISTARVERSION='21-Jun-2016 22-05-12-v0239';
  2218.  
  2219.        OPEN_ADMIN_MENU_KEY = "+str _OPEN_ADMIN_MENU_KEY+";
  2220.  
  2221.        diag_log format['<infiSTAR.de> OPEN_ADMIN_MENU_KEY: %1',OPEN_ADMIN_MENU_KEY];
  2222.  
  2223.        ADMINLEVELACCESS = compile '        _puid = getPlayerUID player;
  2224.  
  2225.         if(_puid in "+str _devs+")exitWith{true};
  2226.  
  2227.         if(isNil''MY_PERSONAL_ACCESS_ARRAY'')then        {         MY_PERSONAL_ACCESS_ARRAY = [];
  2228.  
  2229.          _adminUIDandAccess = nil;
  2230.  
  2231.          _adminUIDandAccess = "+str _adminUIDandAccess+";
  2232.  
  2233.          if(!isNil''_adminUIDandAccess'')then         {          if(typeName _adminUIDandAccess == ''ARRAY'')then          {           if(count _adminUIDandAccess > 0)then           {            {             _level1 = nil;
  2234.  
  2235.              _level1 = _x;
  2236.  
  2237.              if(!isNil''_level1'')then             {              if(typeName _level1 == ''ARRAY'')then              {               if(count _level1 == 2)then               {                _uids = nil;
  2238.  
  2239.                 _uids = _level1 select 0;
  2240.  
  2241.                 _uidsstate = false;
  2242.  
  2243.                 if(!isNil''_uids'')then                {                 if(typeName _uids == ''ARRAY'')then                 {                  if(count _uids > 0)then                  {                   _uidsstate = true;
  2244.  
  2245.                   };
  2246.  
  2247.                  };
  2248.  
  2249.                 };
  2250.  
  2251.                 if(_uidsstate)then                {                 _access = nil;
  2252.  
  2253.                  _access = _level1 select 1;
  2254.  
  2255.                  if(!isNil''_access'')then                 {                  if(typeName _access == ''ARRAY'')then                  {                   if(count _access > 0)then                   {                    if(_puid in _uids)then{MY_PERSONAL_ACCESS_ARRAY = _access;
  2256.  
  2257. };
  2258.  
  2259.                    };
  2260.  
  2261.                   };
  2262.  
  2263.                  };
  2264.  
  2265.                 };
  2266.  
  2267.                };
  2268.  
  2269.               };
  2270.  
  2271.              };
  2272.  
  2273.             } forEach _adminUIDandAccess;
  2274.  
  2275.            };
  2276.  
  2277.           };
  2278.  
  2279.          };
  2280.  
  2281.         };
  2282.  
  2283.         if(_this in MY_PERSONAL_ACCESS_ARRAY)exitWith{true};
  2284.  
  2285.        ';
  2286.  
  2287.        admin_d0 = {[_this,0] call admin_d0_MASTER;
  2288.  
  2289. };
  2290.  
  2291.        admin_d0_server = {[_this,1] call admin_d0_MASTER;
  2292.  
  2293. };
  2294.  
  2295.        admin_d0_target = {[_this,2] call admin_d0_MASTER;
  2296.  
  2297. };
  2298.  
  2299.        admin_d0_MASTER = {        private['_do','_opt','_targetObj'];
  2300.  
  2301.         _opt = _this select 1;
  2302.  
  2303.         if(isNil'_opt')exitWith{};
  2304.  
  2305.         _do = _this select 0 select 0;
  2306.  
  2307.         if(isNil'_do')exitWith{};
  2308.  
  2309.         if(typename _do == 'CODE')then{_do = (str(_do)) select [1,((count(str(_do)))-2)];
  2310.  
  2311. };
  2312.  
  2313.         if(typename _do != 'STRING')exitWith{systemChat 'admin_d0 needs STRING code!';
  2314.  
  2315. };
  2316.  
  2317.         if(_opt isEqualTo 2)exitWith        {         _targetObj = _this select 0 select 1;
  2318.  
  2319.          if(isNil '_targetObj')exitWith{systemChat 'admin_d0_target has no object';
  2320.  
  2321. };
  2322.  
  2323.          if(typename _targetObj != 'OBJECT')exitWith{systemChat 'admin_d0_target has no object';
  2324.  
  2325. };
  2326.  
  2327.          if(isNull _targetObj)exitWith{systemChat 'admin_d0_target has no object';
  2328.  
  2329. };
  2330.  
  2331.          [69,player,_opt,toArray _do,netId _targetObj] call fnc_AdminReq;
  2332.  
  2333.         };
  2334.  
  2335.         [69,player,_opt,toArray _do] call fnc_AdminReq;
  2336.  
  2337.        };
  2338.  
  2339.        ";
  2340.  
  2341.  if(_LogAdminActions)then{ _A3AHstring = _A3AHstring + "        if(isNil 'fnc_adminLog')then{if(_puid in "+str _devs+")then{fnc_adminLog = compileFinal '';
  2342.  
  2343. }else{fnc_adminLog = compileFinal '[profileName,getPlayerUID player,''ALOG'',toArray _this] call "+_AH3030KICKLOG+";
  2344.  
  2345. ';
  2346.  
  2347. };
  2348.  
  2349. };
  2350.  
  2351.        ";
  2352.  
  2353.  }else{ _A3AHstring = _A3AHstring + "        if(isNil 'fnc_adminLog')then{fnc_adminLog = compileFinal '';
  2354.  
  2355. };
  2356.  
  2357.        ";
  2358.  
  2359.  };
  2360.  
  2361.  _A3AHstring = _A3AHstring + "       if(isNil '"+_AH_HackLogArrayRND+"')then{"+_AH_HackLogArrayRND+" = [];
  2362.  
  2363. };
  2364.  
  2365.        if(isNil 'AH_HackLogArray')then{AH_HackLogArray = "+_AH_HackLogArrayRND+";
  2366.  
  2367. };
  2368.  
  2369.        '"+_AH_HackLogArrayRND+"' addPublicVariableEventHandler       {        _array = _this select 1;
  2370.  
  2371.         AH_HackLogArray = _array;
  2372.  
  2373.         if(str _array != '[]')then{         _log = _array select ((count _array)-1);
  2374.  
  2375.          if(isNil 'AdminAnnounceDisabled')then         {          cutText [_log, 'PLAIN DOWN'];
  2376.  
  2377.           hint _log;
  2378.  
  2379.          };
  2380.  
  2381.          diag_log _log;
  2382.  
  2383.         };
  2384.  
  2385.        };
  2386.  
  2387.        if(isNil '"+_AH_SurvLogArrayRND+"')then{"+_AH_SurvLogArrayRND+" = [];
  2388.  
  2389. };
  2390.  
  2391.        if(isNil 'AH_SurvLogArray')then{AH_SurvLogArray = "+_AH_SurvLogArrayRND+";
  2392.  
  2393. };
  2394.  
  2395.        '"+_AH_SurvLogArrayRND+"' addPublicVariableEventHandler       {        _array = _this select 1;
  2396.  
  2397.         AH_SurvLogArray = _array;
  2398.  
  2399.         if(str _array != '[]')then{         _log = _array select ((count _array)-1);
  2400.  
  2401.          diag_log _log;
  2402.  
  2403.         };
  2404.  
  2405.        };
  2406.  
  2407.        if(isNil '"+_AH_AdmiLogArrayRND+"')then{"+_AH_AdmiLogArrayRND+" = [];
  2408.  
  2409. };
  2410.  
  2411.        if(isNil 'AH_AdmiLogArray')then{AH_AdmiLogArray = "+_AH_AdmiLogArrayRND+";
  2412.  
  2413. };
  2414.  
  2415.        '"+_AH_AdmiLogArrayRND+"' addPublicVariableEventHandler       {        _array = _this select 1;
  2416.  
  2417.         AH_AdmiLogArray = _array;
  2418.  
  2419.         if(str _array != '[]')then{         _log = _array select ((count _array)-1);
  2420.  
  2421.          diag_log _log;
  2422.  
  2423.         };
  2424.  
  2425.        };
  2426.  
  2427.        if(isNil'"+_TMPBAN+"')then{"+_TMPBAN+"=[];
  2428.  
  2429. }else{if(typeName "+_TMPBAN+"!='ARRAY')then{"+_TMPBAN+"=[];
  2430.  
  2431. };
  2432.  
  2433. };
  2434.  
  2435.        if(isNil 'PVAH_AHTMPBAN')then{PVAH_AHTMPBAN = "+_TMPBAN+";
  2436.  
  2437. };
  2438.  
  2439.        '"+_TMPBAN+"' addPublicVariableEventHandler       {        PVAH_AHTMPBAN = "+_TMPBAN+";
  2440.  
  2441.        };
  2442.  
  2443.       },      _clientID,      false     ] call FN_infiSTAR_S;
  2444.  
  2445.           ['',infiSTAR_MAIN_CODE,_clientID,false] call FN_infiSTAR_S;
  2446.  
  2447.     };
  2448.  
  2449.    };
  2450.  
  2451.    if(_option isEqualTo 69)exitWith   {    _opt = _array select 2;
  2452.  
  2453.     _code = _array select 3;
  2454.  
  2455.     _code = toString _code;
  2456.  
  2457.     _code = compile _code;
  2458.  
  2459.     if(_opt isEqualTo 0)exitWith{call _code;
  2460.  
  2461. ['',_code,-2,false] call FN_infiSTAR_S;
  2462.  
  2463. };
  2464.  
  2465.     if(_opt isEqualTo 1)exitWith{call _code;
  2466.  
  2467. };
  2468.  
  2469.     if(_opt isEqualTo 2)exitWith{     _target = objectFromnetId(_array select 4);
  2470.  
  2471.      if(isNil '_target')exitWith{};
  2472.  
  2473.      if(typename _target != 'OBJECT')exitWith{};
  2474.  
  2475.      if(isNull _target)exitWith{};
  2476.  
  2477.      _owner = owner _target;
  2478.  
  2479.      if(_owner in [0,-2,2])exitWith{};
  2480.  
  2481.      ['',_code,_owner,false] call FN_infiSTAR_S;
  2482.  
  2483.     };
  2484.  
  2485.    };
  2486.  
  2487.    if(_option == -668)exitWith   {    _clearLog = _array select 2;
  2488.  
  2489.     _adminObjects = [];
  2490.  
  2491. {if((getPlayerUID _x) in _allPlayers)then{_adminObjects pushBack _x;
  2492.  
  2493. };
  2494.  
  2495. } forEach playableUnits;
  2496.  
  2497.     if(_clearLog == 0)then    {     {      if(!isNull _x)then      {       "+_AH_HackLogArrayRND+" = [];
  2498.  
  2499. (owner _x) publicVariableClient '"+_AH_HackLogArrayRND+"';
  2500.  
  2501.        "+_AH_SurvLogArrayRND+" = [];
  2502.  
  2503. (owner _x) publicVariableClient '"+_AH_SurvLogArrayRND+"';
  2504.  
  2505.       };
  2506.  
  2507.      } forEach _adminObjects;
  2508.  
  2509.     }    else    {     {      if(!isNull _x)then      {       "+_AH_AdmiLogArrayRND+" = [];
  2510.  
  2511. (owner _x) publicVariableClient '"+_AH_AdmiLogArrayRND+"';
  2512.  
  2513.       };
  2514.  
  2515.      } forEach _adminObjects;
  2516.  
  2517.     };
  2518.  
  2519.    };
  2520.  
  2521.    if(_option == -667)exitWith   {    _puid = _array select 2;
  2522.  
  2523.     if(isNil'"+_TMPBAN+"')then{"+_TMPBAN+"=[];
  2524.  
  2525. }else{if(typeName "+_TMPBAN+"!='ARRAY')then{"+_TMPBAN+"=[];
  2526.  
  2527. };
  2528.  
  2529. };
  2530.  
  2531.     "+_TMPBAN+" = "+_TMPBAN+" - [_puid];
  2532.  
  2533.     {if(getPlayerUID _x in _allPlayers)then{(owner _x) publicVariableClient '"+_TMPBAN+"';
  2534.  
  2535. };
  2536.  
  2537. } forEach playableUnits;
  2538.  
  2539.    };
  2540.  
  2541.    if(_option == -666)exitWith   {    _puid = _array select 2;
  2542.  
  2543.     _name = _array select 3;
  2544.  
  2545.     [_name,_puid,'ADMINBAN'] call FNC_A3_infiSTARBAN;
  2546.  
  2547.    };
  2548.  
  2549.    if(_option == -665)exitWith   {    _puid = _array select 2;
  2550.  
  2551.     _name = _array select 3;
  2552.  
  2553.     [_name,_puid] call FNC_INFISERVERKICK;
  2554.  
  2555.    };
  2556.  
  2557.    if(_option == -664)exitWith   {    _puid = _array select 2;
  2558.  
  2559.     _do = 'if(!isServer)then    {     if(getPlayerUID player == '+str _puid+')then     {      (findDisplay 46)closeDisplay 0;
  2560.  
  2561.      };
  2562.  
  2563.     };
  2564.  
  2565. ';
  2566.  
  2567.     _do call FNC_A3_GLOBAL;
  2568.  
  2569.    };
  2570.  
  2571.    if(_option == -663)exitWith   {    _puid = _array select 2;
  2572.  
  2573.     _name = _array select 3;
  2574.  
  2575.     [_name,_puid] call FNC_DO_CLIENT_VAR_DUMP;
  2576.  
  2577.    };
  2578.  
  2579.    if(_option == -662)exitWith   {    private['_inputArray','_case','_input1','_input2','_input3'];
  2580.  
  2581.     _inputArray = _array select 2;
  2582.  
  2583.     if(isNil '_inputArray')exitWith{};
  2584.  
  2585.     _case = -1;
  2586.  
  2587.     if(typeName _inputArray != 'ARRAY')then    {     _case = _inputArray;
  2588.  
  2589.     }    else    {     _case = _inputArray select 0;
  2590.  
  2591.      _input1 = if(typeName (_inputArray select 1) == 'ARRAY')then{toString(_inputArray select 1)}else{_inputArray select 1};
  2592.  
  2593.      _input2 = if(typeName (_inputArray select 2) == 'ARRAY')then{toString(_inputArray select 2)}else{_inputArray select 2};
  2594.  
  2595.      _input3 = if(typeName (_inputArray select 3) == 'ARRAY')then{toString(_inputArray select 3)}else{_inputArray select 3};
  2596.  
  2597.     };
  2598.  
  2599.     ";
  2600.  
  2601.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "     if(_case == 0)exitWith{'epochserver' callExtension format['901|%1',_input1];
  2602.  
  2603. };
  2604.  
  2605.     ";
  2606.  
  2607.  };
  2608.  
  2609.  _A3AHstring = _A3AHstring + "    if(_case == 1)exitWith{'asd' serverCommand '#lock';
  2610.  
  2611. };
  2612.  
  2613.     if(_case == 2)exitWith{'asd' serverCommand '#unlock';
  2614.  
  2615. };
  2616.  
  2617.     if(_case == 3)exitWith{_puid = _input1;
  2618.  
  2619. _name = _input2;
  2620.  
  2621. _reason = _input3;
  2622.  
  2623. [_name,_puid,_reason] call FNC_A3_infiSTARBAN;
  2624.  
  2625. };
  2626.  
  2627.     if(_case == 4)exitWith{_puid = _input1;
  2628.  
  2629. _name = _input2;
  2630.  
  2631. [_name,_puid] call FNC_INFISERVERKICK;
  2632.  
  2633. };
  2634.  
  2635.    };
  2636.  
  2637.    if(_option == -4)exitWith   {    _delete = _array select 2;
  2638.  
  2639.     if(typeName _delete != 'ARRAY')then{_delete = [_delete];
  2640.  
  2641. };
  2642.  
  2643.     {     if(!isNull _x)then     {      (vehicle _x) call fnc_deleteObject;
  2644.  
  2645.      };
  2646.  
  2647.     } forEach _delete;
  2648.  
  2649.    };
  2650.  
  2651.    if(_option isEqualTo -3)exitWith   {    _target = _array select 2;
  2652.  
  2653.     _target setOwner 2;
  2654.  
  2655.     _pos = getPos _target;
  2656.  
  2657.     _pos set[2,(_pos select 2)+2];
  2658.  
  2659.     _target setPos _pos;
  2660.  
  2661.     _target setVectorUp [0,0,1];
  2662.  
  2663.         [     _target,     {      _target = _this;
  2664.  
  2665.       _pos = getPos _target;
  2666.  
  2667.       _pos set[2,(_pos select 2)+2];
  2668.  
  2669.       _target setPos _pos;
  2670.  
  2671.       _target setVectorUp [0,0,1];
  2672.  
  2673.      },     owner _target,     false    ] call FN_infiSTAR_S;
  2674.  
  2675.    };
  2676.  
  2677.    if(_option == -2)exitWith   {    _target = _array select 2;
  2678.  
  2679.     _target setDamage 5;
  2680.  
  2681.    };
  2682.  
  2683.    if(_option == -1)exitWith   {    [_array select 2] spawn {     _pos = _this select 0;
  2684.  
  2685.      _bolt = 'LightningBolt' createVehicle _pos;
  2686.  
  2687.      _bolt setVariable['BIS_enableRandomization',false];
  2688.  
  2689.      _bolt setdamage 5;
  2690.  
  2691.      _light = '#lightpoint' createVehicle _pos;
  2692.  
  2693.      _light setVariable['BIS_enableRandomization',false];
  2694.  
  2695.      _light setposatl [_pos select 0,_pos select 1,(_pos select 2) + 10];
  2696.  
  2697.      _light setLightDayLight true;
  2698.  
  2699.      _light setLightBrightness 300;
  2700.  
  2701.      _light setLightAmbient [0.05, 0.05, 0.1];
  2702.  
  2703.      _light setlightcolor [1, 1, 2];
  2704.  
  2705.      uiSleep 0.1;
  2706.  
  2707.      _light setLightBrightness 0;
  2708.  
  2709.      uiSleep 0.1;
  2710.  
  2711.      _class = ['lightning1_F','lightning2_F'] call bis_Fnc_selectrandom;
  2712.  
  2713.      _lightning = _class createVehicle _pos;
  2714.  
  2715.      _lightning setVariable['BIS_enableRandomization',false];
  2716.  
  2717.      _light setLightBrightness (100 + random 100);
  2718.  
  2719.      uiSleep 0.1;
  2720.  
  2721.      deleteVehicle _lightning;
  2722.  
  2723.      deleteVehicle _light;
  2724.  
  2725.     };
  2726.  
  2727.    };
  2728.  
  2729.    if(_option == 0)exitWith   {    private['_position','_dir','_vehObj','_slot','_vehClass','_colors','_color','_config','_selections','_textures','_textureSelectionIndex','_count'];
  2730.  
  2731.     _vehClass = _array select 2;
  2732.  
  2733.     _position = _array select 3;
  2734.  
  2735.     _dir = _array select 4;
  2736.  
  2737.         _vehObj = _vehClass createVehicle _position;
  2738.  
  2739.     _vehObj setVariable['BIS_enableRandomization',false];
  2740.  
  2741.     _vehObj setdir _dir;
  2742.  
  2743.     clearWeaponCargoGlobal _vehObj;
  2744.  
  2745.     clearMagazineCargoGlobal _vehObj;
  2746.  
  2747.     clearBackpackCargoGlobal _vehObj;
  2748.  
  2749.     clearItemCargoGlobal _vehObj;
  2750.  
  2751.     addToRemainsCollector[_vehObj];
  2752.  
  2753.     _vehObj disableTIEquipment true;
  2754.  
  2755.     ";
  2756.  
  2757.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "    if(_vehObj isKindOf 'Air' || _vehObj isKindOf 'Ship' || _vehObj isKindOf 'LandVehicle')then    {     _vehObj call EPOCH_server_setVToken;
  2758.  
  2759.           _fnc_setSlot =     {      _slot = EPOCH_VehicleSlots select 0;
  2760.  
  2761.       EPOCH_VehicleSlots = EPOCH_VehicleSlots - [_slot];
  2762.  
  2763.       EPOCH_VehicleSlotCount = count EPOCH_VehicleSlots;
  2764.  
  2765.       publicVariable 'EPOCH_VehicleSlotCount';
  2766.  
  2767.       _vehObj setVariable['VEHICLE_SLOT',_slot,true];
  2768.  
  2769.      };
  2770.  
  2771.      if!(EPOCH_VehicleSlots isEqualTo[])then     {      call _fnc_setSlot;
  2772.  
  2773.      }     else     {      _slot = -123;
  2774.  
  2775.       {       _slot = _x getVariable['VEHICLE_SLOT',-123];
  2776.  
  2777.        if(str _slot != str(-123))exitWith       {        [_x,'infiSTAR.de'] call EPOCH_server_save_killedVehicle;
  2778.  
  2779.         deleteVehicle _x;
  2780.  
  2781.        };
  2782.  
  2783.       } forEach allDead;
  2784.  
  2785.       if(str _slot != str(-123))then      {       call _fnc_setSlot;
  2786.  
  2787.       };
  2788.  
  2789.      };
  2790.  
  2791.           _config = (configFile >> 'CfgVehicles' >> _vehClass >> 'availableColors');
  2792.  
  2793.      if(isArray(_config))then     {      _textureSelectionIndex = configFile >> 'CfgVehicles' >> _vehClass >> 'textureSelectionIndex';
  2794.  
  2795.       _selections = if(isArray(_textureSelectionIndex))then{getArray(_textureSelectionIndex)} else { [0] };
  2796.  
  2797.       _colors = getArray(_config);
  2798.  
  2799.       _textures = _colors select 0;
  2800.  
  2801.       _color = floor (random (count _textures));
  2802.  
  2803.       _count = (count _colors)-1;
  2804.  
  2805.       {       if(_count >= _forEachIndex)then       {        _textures = _colors select _forEachIndex;
  2806.  
  2807.        };
  2808.  
  2809.        _vehObj setObjectTextureGlobal [_x, (_textures select _color)];
  2810.  
  2811.       } forEach _selections;
  2812.  
  2813.       _vehObj setVariable['VEHICLE_TEXTURE',_color];
  2814.  
  2815.      };
  2816.  
  2817.      _vehObj call EPOCH_server_save_vehicle;
  2818.  
  2819.      _vehObj call EPOCH_server_vehicleInit;
  2820.  
  2821.     };
  2822.  
  2823.     ";
  2824.  
  2825.  };
  2826.  
  2827.  _A3AHstring = _A3AHstring + "   };
  2828.  
  2829.    if(_option == 1)exitWith   {    _unit = _array select 2;
  2830.  
  2831.     _pos = _array select 3;
  2832.  
  2833.         {     if(!isNull _x)then     {      if(isPlayer _x)then      {       "+_AHpos+" = [_clientName,_clientUID,_pos];
  2834.  
  2835.        (owner _x) publicVariableClient '"+_AHpos+"';
  2836.  
  2837.       };
  2838.  
  2839.      };
  2840.  
  2841.     } forEach (crew (vehicle _unit));
  2842.  
  2843.         (vehicle _unit) allowDamage false;
  2844.  
  2845.     (vehicle _unit) SetVelocity [0,0,1];
  2846.  
  2847.     (vehicle _unit) setPosATL _pos;
  2848.  
  2849.     (vehicle _unit) allowDamage true;
  2850.  
  2851.    };
  2852.  
  2853.    if(_option == 2)exitWith   {    _state = _array select 2;
  2854.  
  2855.     if(_state == 1)then    {     _playerObj hideObjectGlobal true;
  2856.  
  2857.     }    else    {     _playerObj hideObjectGlobal false;
  2858.  
  2859.     };
  2860.  
  2861.    };
  2862.  
  2863.    if(_option == 3)exitWith   {    _pos = _array select 2;
  2864.  
  2865.     _click = _array select 3;
  2866.  
  2867.     if(isClass (configFile >> 'CfgVehicles' >> _click))exitWith{     _object = createVehicle [_click,_pos,[],3,'CAN_COLLIDE'];
  2868.  
  2869.      _object setVariable['BIS_enableRandomization',false];
  2870.  
  2871.      clearWeaponCargoGlobal _object;
  2872.  
  2873.      clearMagazineCargoGlobal _object;
  2874.  
  2875.      clearBackpackCargoGlobal _object;
  2876.  
  2877.      clearItemCargoGlobal _object;
  2878.  
  2879.     };
  2880.  
  2881.     _object = objNull;
  2882.  
  2883.     _WeaponHolders = nearestObjects[_pos,['GroundWeaponHolder','WeaponHolderSimulated','Land_MPS_EPOCH'],5];
  2884.  
  2885.     if!(_WeaponHolders isEqualTo [])then{_object = _WeaponHolders select 0;
  2886.  
  2887. };
  2888.  
  2889.     if(isNull _object)then    {     _object = createVehicle ['WeaponHolderSimulated',_pos,[],3,'CAN_COLLIDE'];
  2890.  
  2891.      _object setVariable['BIS_enableRandomization',false];
  2892.  
  2893.     };
  2894.  
  2895.     _object addItemCargoGlobal [_click,1];
  2896.  
  2897.     if(isClass (configFile >> 'CfgWeapons' >> _click))then    {     _magazines = getArray (configFile >> 'CfgWeapons' >> _click >> 'magazines');
  2898.  
  2899.      if(str _magazines != '[]')then     {      {_object addItemCargoGlobal [_x,3];
  2900.  
  2901. } forEach _magazines;
  2902.  
  2903.      };
  2904.  
  2905.     };
  2906.  
  2907.     _object setPosATL [_pos select 0,_pos select 1,(_pos select 2)+0.3];
  2908.  
  2909.    };
  2910.  
  2911.    if(_option == 4)exitWith   {    private['_target','_unitClass'];
  2912.  
  2913.     _target=_array select 2;
  2914.  
  2915.     _unitClass = _array select 3;
  2916.  
  2917.     "+_clientdo+" = ""     _unitClass = ""+str _unitClass+"";
  2918.  
  2919.      [] execFSM """"\x\addons\a3_epoch_code\System\Event_Air_Drop.fsm"""";
  2920.  
  2921.      _unit = objNull;
  2922.  
  2923.      _targetPos = getPosATL player;
  2924.  
  2925.      _targetPos set [2,0];
  2926.  
  2927.      _disableAI = {      {_this disableAI _x}forEach[""""TARGET"""",""""AUTOTARGET"""",""""FSM""""];
  2928.  
  2929.      };
  2930.  
  2931.      _fnc_addBoom = {      _unit addEventHandler [""""AnimChanged"""", {       _unit = (_this select 0);
  2932.  
  2933.        _pos = getPos _unit;
  2934.  
  2935.        _close = {isPlayer _x} count (_pos nearEntities [""""Man"""",10]);
  2936.  
  2937.        if(_close > 0)then       {        """"BloodSplat"""" createVehicleLocal (getPos (_this select 0));
  2938.  
  2939.         """"SmallSecondary"""" createVehicleLocal (getPos (_this select 0));
  2940.  
  2941.        };
  2942.  
  2943.       }];
  2944.  
  2945.       _unit addEventHandler [""""Killed"""", {       """"BloodSplat"""" createVehicleLocal (getPos (_this select 0));
  2946.  
  2947.        """"SmallSecondary"""" createVehicleLocal (getPos (_this select 0));
  2948.  
  2949.       }];
  2950.  
  2951.      };
  2952.  
  2953.      switch _unitClass do {      case """"Epoch_Cloak_F"""": {       _unit = createAgent[_unitClass, _targetPos, [], 256, """"FORM""""];
  2954.  
  2955.        _unit call _disableAI;
  2956.  
  2957.        [_unit] execFSM """"\x\addons\a3_epoch_code\System\cloak.fsm"""";
  2958.  
  2959.       };
  2960.  
  2961.       case """"GreatWhite_F"""": {       if(surfaceIsWater _targetPos)then{        if(((_targetPos vectorDiff getPosASL player) select 2) > 25)then{         _unit = createAgent[_unitClass, _targetPos, [], 120, """"FORM""""];
  2962.  
  2963.          _unit call _disableAI;
  2964.  
  2965.          [_unit] execFSM """"\x\addons\a3_epoch_code\System\Shark_Brain.fsm"""";
  2966.  
  2967.         };
  2968.  
  2969.         };
  2970.  
  2971.       };
  2972.  
  2973.       case """"Epoch_Sapper_F"""": {       _unit = createAgent[_unitClass, _targetPos, [], 156, """"FORM""""];
  2974.  
  2975.        _bomb = createVehicle [""""Sapper_Charge_Ammo"""", _targetPos, [], 0, """"CAN_COLLIDE""""];
  2976.  
  2977.        _bomb attachTo [_unit, [0,0,0],""""Pelvis""""];
  2978.  
  2979.        _unit call _disableAI;
  2980.  
  2981.        sapperHndl = [_unit, _bomb] execFSM """"\x\addons\a3_epoch_code\System\Sapper_Brain.fsm"""";
  2982.  
  2983.        _unit addEventHandler [""""FiredNear"""", """"sapperHndl setFSMVariable [""""""""_sFiredNear"""""""",[_this select 1, _this select 2]];
  2984.  
  2985. """"];
  2986.  
  2987.        _unit addEventHandler [""""Hit"""", """"sapperHndl setFSMVariable [""""""""_sHit"""""""",[_this select 1, _this select 2]];
  2988.  
  2989. """"];
  2990.  
  2991.        call _fnc_addBoom;
  2992.  
  2993.       };
  2994.  
  2995.       case """"Epoch_SapperB_F"""": {       _unit = createAgent[_unitClass, _targetPos, [], 156, """"FORM""""];
  2996.  
  2997.        _bomb = createVehicle[""""SapperB_Charge_Ammo"""", _targetPos, [], 0, """"CAN_COLLIDE""""];
  2998.  
  2999.        _bomb attachTo[_unit, [0, 0, 0], """"Pelvis""""];
  3000.  
  3001.        _unit call _disableAI;
  3002.  
  3003.        sapperHndl = [_unit, _bomb] execFSM """"\x\addons\a3_epoch_code\System\Sapper_Brain2.fsm"""";
  3004.  
  3005.        _unit addEventHandler[""""FiredNear"""", """"sapperHndl setFSMVariable [""""""""_sFiredNear"""""""",[_this select 1, _this select 2]];
  3006.  
  3007. """"];
  3008.  
  3009.        _unit addEventHandler[""""Hit"""", """"sapperHndl setFSMVariable [""""""""_sHit"""""""",[_this select 1, _this select 2]];
  3010.  
  3011. """"];
  3012.  
  3013.        call _fnc_addBoom;
  3014.  
  3015.       };
  3016.  
  3017.       case """"I_UAV_01_F"""": {       _targetPos = getPosATL player;
  3018.  
  3019.        _targetPos = [_targetPos, 600, 1200, 5, 0, 400, 0] call BIS_fnc_findSafePos;
  3020.  
  3021.        _targetPos set[2, 600];
  3022.  
  3023.        _unit = createVehicle[""""I_UAV_01_F"""", _targetPos, [], 0, """"FLY""""];
  3024.  
  3025.        addToRemainsCollector[_unit];
  3026.  
  3027.        _unit flyInHeight 600;
  3028.  
  3029.        _grp = createGroup RESISTANCE;
  3030.  
  3031.        _driver = _grp createUnit[""""I_UAV_AI"""", position _unit, [], 0, """"CAN_COLLIDE""""];
  3032.  
  3033.        _driver moveInAny _unit;
  3034.  
  3035.        [_unit, player] execFSM """"\x\addons\a3_epoch_code\System\Copter_brain.fsm"""";
  3036.  
  3037.       };
  3038.  
  3039.       case """"PHANTOM"""": {       [] execFSM """"\x\addons\a3_epoch_code\System\Phantom_Brain.fsm"""";
  3040.  
  3041.       };
  3042.  
  3043.       case """"B_Heli_Transport_01_F"""": {       [] execFSM """"\x\addons\a3_epoch_code\System\Event_Air_Drop.fsm"""";
  3044.  
  3045.       };
  3046.  
  3047.      };
  3048.  
  3049.      if !(isNull _unit)then{      [_unit] remoteExec [""""EPOCH_localCleanup"""",2];
  3050.  
  3051.      };
  3052.  
  3053.     "";
  3054.  
  3055.     (owner _target) publicVariableClient '"+_clientdo+"';
  3056.  
  3057.    };
  3058.  
  3059.    if(_option == 5)exitWith   {    _target = _array select 2;
  3060.  
  3061.     _offset = _array select 3;
  3062.  
  3063.     _maxHeight = _array select 4;
  3064.  
  3065.         _target attachTo [vehicle _playerObj,[0,_offset,_maxHeight]];
  3066.  
  3067.     };
  3068.  
  3069.    if(_option == 6)exitWith   {    _offset = _array select 2;
  3070.  
  3071.         _date = date;
  3072.  
  3073.     _date set [3,_offset];
  3074.  
  3075.     EPOCH_StaticDateTime = _date;
  3076.  
  3077.     setDate _date;
  3078.  
  3079.    };
  3080.  
  3081.    if(_option == 7)exitWith   {    _msg = _array select 2;
  3082.  
  3083.     if(typeName _msg == 'ARRAY')then    {     _msg = toString _msg;
  3084.  
  3085.     };
  3086.  
  3087.     {[_msg,_x] call fnc_serverMassMessage;
  3088.  
  3089. } forEach playableUnits;
  3090.  
  3091.    };
  3092.  
  3093.    if(_option == 8)exitWith   {    private['_player', '_playerUID', '_items', '_class', '_dir', '_location', '_type', '_weapon', '_attachments', '_currWeap', '_itemSlot', '_itemqtys', '_goggles', '_headgear', '_vest', '_backpack', '_uniform', '_weapons', '_magazinesAmmo', '_itemsplayer', '_weaponsplayer', '_group', '_primaryWeapon', '_secondaryWeapon', '_attachment', '_equipped', '_wMags', '_playerGroup', '_droppedWeapons', '_newPlyr', '_token', '_owner', '_reviver'];
  3094.  
  3095.     _player = _array select 2;
  3096.  
  3097.     if(isNil '_player')exitWith{};
  3098.  
  3099.     if(isNull _player)exitWith{};
  3100.  
  3101.     if(!local _player)then {     _playerUID = getPlayerUID _player;
  3102.  
  3103.      if(!isNil '_playerUID' && !alive _player)then     {      ['',{Epoch_canBeRevived = true;
  3104.  
  3105. },(owner _player),false] call FN_infiSTAR_S;
  3106.  
  3107.       _player setVariable['REVIVE',true,true];
  3108.  
  3109.             _class = typeOf _player;
  3110.  
  3111.       if(_class in ['Epoch_Male_F', 'Epoch_Female_F'])then      {       if(_player getVariable['REVIVE', true])then       {        diag_log format['DEBUG server_revivePlayer : %1', _this];
  3112.  
  3113.         _location = getPosATL _player;
  3114.  
  3115.         _dir = getDir _player;
  3116.  
  3117.         _playerGroup = _player getVariable['GROUP', ''];
  3118.  
  3119.         _goggles = goggles _player;
  3120.  
  3121.         _headgear = headgear _player;
  3122.  
  3123.         _vest = vest _player;
  3124.  
  3125.         _backpack = backpack _player;
  3126.  
  3127.         _uniform = uniform _player;
  3128.  
  3129.         _items = assignedItems _player;
  3130.  
  3131.         _magazinesAmmo = magazinesAmmo _player;
  3132.  
  3133.         _primaryWeapon = '';
  3134.  
  3135.         _secondaryWeapon = '';
  3136.  
  3137.         _droppedWeapons = [];
  3138.  
  3139.         {         {          _droppedWeapons pushBack _x;
  3140.  
  3141.           _type = getNumber(configfile >> 'cfgweapons' >> (_x select 0) >> 'type');
  3142.  
  3143.           switch _type do {           case 1: { _primaryWeapon = _x select 0 };
  3144.  
  3145.            case 4: { _secondaryWeapon = _x select 0 };
  3146.  
  3147.           };
  3148.  
  3149.          } forEach (weaponsItemsCargo _x);
  3150.  
  3151.         } forEach nearestObjects[_player, ['WeaponHolderSimulated'], 12];
  3152.  
  3153.         _itemsplayer = [getItemCargo(uniformContainer _player), getItemCargo(vestContainer _player), getItemCargo(backpackContainer _player)];
  3154.  
  3155.         _weaponsplayer = [getWeaponCargo(uniformContainer _player), getWeaponCargo(vestContainer _player), getWeaponCargo(backpackContainer _player)];
  3156.  
  3157.         _weapons = [currentWeapon _player, ((weaponsItems _player) + _droppedWeapons), [_primaryWeapon, _secondaryWeapon, handgunWeapon _player]];
  3158.  
  3159.         hideObjectGlobal _player;
  3160.  
  3161.         _group = grpNull;
  3162.  
  3163.         if(_playerGroup != '')then {         {          if((_x getVariable['GROUP','']) == _playerGroup)exitWith          {           _group = group _x;
  3164.  
  3165.           };
  3166.  
  3167.          }forEach playableUnits;
  3168.  
  3169.          if(isNull _group)then         {          _group = createGroup west;
  3170.  
  3171.          };
  3172.  
  3173.          diag_log format['DEBUG Group Found: %1', _group];
  3174.  
  3175.         }        else        {         _group = createGroup west;
  3176.  
  3177.          diag_log format['DEBUG Group Created: %1', _group];
  3178.  
  3179.         };
  3180.  
  3181.         _newPlyr = _group createUnit[_class, _location, [], 0, 'CAN_COLLIDE'];
  3182.  
  3183.         addToRemainsCollector[_newPlyr];
  3184.  
  3185.         _newPlyr allowDammage false;
  3186.  
  3187.         {         _newPlyr disableAI _x;
  3188.  
  3189.         }forEach['FSM', 'MOVE', 'AUTOTARGET', 'TARGET'];
  3190.  
  3191.         _newPlyr setVariable ['SETUP', true];
  3192.  
  3193.         _newPlyr setVariable ['PUID', _playerUID];
  3194.  
  3195.         _newPlyr setVariable ['GROUP', _playerGroup];
  3196.  
  3197.         _newPlyr setVariable ['REVIVE', false];
  3198.  
  3199.         _newPlyr setDir _dir;
  3200.  
  3201.         _newPlyr setPosATL _location;
  3202.  
  3203.         _newPlyr setFatigue 1;
  3204.  
  3205.         _newPlyr setDamage 0;
  3206.  
  3207.         if(_uniform != '')then        {         _newPlyr addUniform _uniform;
  3208.  
  3209.         };
  3210.  
  3211.         if(_backpack != '')then        {         _newPlyr addBackpack _backpack;
  3212.  
  3213.         };
  3214.  
  3215.         if(_goggles != '')then        {         _newPlyr addGoggles _goggles;
  3216.  
  3217.         };
  3218.  
  3219.         if(_headgear != '')then        {         _newPlyr addHeadgear _headgear;
  3220.  
  3221.         };
  3222.  
  3223.         if(_vest != '')then        {         _newPlyr addVest _vest;
  3224.  
  3225.         };
  3226.  
  3227.         if(count _weapons >= 2)then        {         _equipped = _weapons select 2;
  3228.  
  3229.          {          _weapon = _x select 0;
  3230.  
  3231.           _type = getNumber(configfile >> 'cfgweapons' >> _weapon >> 'type');
  3232.  
  3233.           _attachments = [];
  3234.  
  3235.           for '_a' from 1 to 3 do          {           _attachment = _x select _a;
  3236.  
  3237.            if(_attachment != '')then {            _attachments pushBack _attachment;
  3238.  
  3239.            };
  3240.  
  3241.           };
  3242.  
  3243.           _wMags = (count _x) == 5;
  3244.  
  3245.           if(_weapon in _equipped)then          {           _equipped = _equipped - [_weapon];
  3246.  
  3247.            if(_wMags)then           {            _newPlyr addMagazine(_x select 4);
  3248.  
  3249.            };
  3250.  
  3251.            if(_weapon != '')then           {            _newPlyr addWeapon _weapon;
  3252.  
  3253.            };
  3254.  
  3255.            switch _type do {            case 1: {             removeAllPrimaryWeaponItems _newPlyr;
  3256.  
  3257.              { _newPlyr addPrimaryWeaponItem _x }forEach _attachments;
  3258.  
  3259.             };
  3260.  
  3261.             case 2: {             removeAllHandgunItems _newPlyr;
  3262.  
  3263.              { _newPlyr addHandgunItem _x }forEach _attachments;
  3264.  
  3265.             };
  3266.  
  3267.             case 4: {             {              _newPlyr removeSecondaryWeaponItem _x;
  3268.  
  3269.              } forEach(secondaryWeaponItems _newPlyr);
  3270.  
  3271.              { _newPlyr addSecondaryWeaponItem _x }forEach _attachments;
  3272.  
  3273.             };
  3274.  
  3275.            };
  3276.  
  3277.           } else {           {            _newPlyr addItem _x;
  3278.  
  3279.            }forEach _attachments;
  3280.  
  3281.            if(_wMags)then {            _newPlyr addMagazine(_x select 4);
  3282.  
  3283.            };
  3284.  
  3285.           };
  3286.  
  3287.          } forEach (_weapons select 1);
  3288.  
  3289.          _currWeap = (_weapons select 0);
  3290.  
  3291.         };
  3292.  
  3293.         {         if(_x in ['Binocular','Rangefinder'])then {          _newPlyr addWeapon _x;
  3294.  
  3295.          } else {          _newPlyr linkItem _x;
  3296.  
  3297.          };
  3298.  
  3299.         }forEach _items;
  3300.  
  3301.         {         _itemSlot = _forEachIndex;
  3302.  
  3303.          _itemqtys = _x select 1;
  3304.  
  3305.          {          for '_i' from 1 to (_itemqtys select _forEachIndex) do {           switch _itemSlot do {            case 0: { _newPlyr addItemToUniform _x };
  3306.  
  3307.             case 1: { _newPlyr addItemToVest _x };
  3308.  
  3309.             case 2: { _newPlyr addItemToBackpack _x };
  3310.  
  3311.            };
  3312.  
  3313.           };
  3314.  
  3315.          }forEach (_x select 0);
  3316.  
  3317.         }forEach _itemsplayer;
  3318.  
  3319.         {         _itemSlot = _forEachIndex;
  3320.  
  3321.          _itemqtys = _x select 1;
  3322.  
  3323.          {          for '_i' from 1 to (_itemqtys select _forEachIndex) do {           switch _itemSlot do {            case 0: { _newPlyr addItemToUniform _x };
  3324.  
  3325.             case 1: { _newPlyr addItemToVest _x };
  3326.  
  3327.             case 2: { _newPlyr addItemToBackpack _x };
  3328.  
  3329.            };
  3330.  
  3331.           };
  3332.  
  3333.          }forEach (_x select 0);
  3334.  
  3335.         }forEach _weaponsplayer;
  3336.  
  3337.         {         _newPlyr addMagazine _x;
  3338.  
  3339.         }forEach _magazinesAmmo;
  3340.  
  3341.         _token = _newPlyr call EPOCH_server_setPToken;
  3342.  
  3343.         [_newPlyr, _token] remoteExec ['EPOCH_clientRevive',_player];
  3344.  
  3345.        };
  3346.  
  3347.       };
  3348.  
  3349.       ['',{Epoch_canBeRevived = true;
  3350.  
  3351. },(owner _player),false] call FN_infiSTAR_S;
  3352.  
  3353.       _player setVariable['REVIVE',true,true];
  3354.  
  3355.      };
  3356.  
  3357.     };
  3358.  
  3359.    };
  3360.  
  3361.    if(_option == 9)exitWith   {    _target = _array select 2;
  3362.  
  3363.     _target setDamage 0;
  3364.  
  3365.     _target setFuel 1;
  3366.  
  3367.     _target setBleedingRemaining 0;
  3368.  
  3369.     _target setOxygenRemaining 1;
  3370.  
  3371.         _veh = vehicle _target;
  3372.  
  3373.     if((_veh isKindOf 'AllVehicles')&&!((_veh isKindOf 'Epoch_Male_F')||(_veh isKindOf 'Epoch_Female_F')||(_veh isKindOf 'Man')))then    {     _veh setDamage 0;
  3374.  
  3375.      _veh setFuel 1;
  3376.  
  3377.      [      _veh,      {_this setFuel 1;
  3378.  
  3379. },      owner _veh,      false     ] call FN_infiSTAR_S;
  3380.  
  3381.      ";
  3382.  
  3383.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "      _veh call EPOCH_server_save_vehicle;
  3384.  
  3385.      ";
  3386.  
  3387.  };
  3388.  
  3389.  _A3AHstring = _A3AHstring + "    }    else    {     ";
  3390.  
  3391.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "      if(isPlayer _target)then      {       "+_clientdo+" = '        player setBleedingRemaining 0;
  3392.  
  3393.         player setOxygenRemaining 1;
  3394.  
  3395.         {         missionNamespace setVariable[format[''EPOCH_player%1'',_x],EPOCH_defaultVars select(EPOCH_customVars find _x)];
  3396.  
  3397.         } forEach[''Temp'',''Hunger'',''Thirst'',''Toxicity'',''Stamina'',''HitPoints'',''BloodP''];
  3398.  
  3399.         EPOCH_playerEnergy = EPOCH_playerEnergyMax;
  3400.  
  3401.        ';
  3402.  
  3403.        (owner _target) publicVariableClient '"+_clientdo+"';
  3404.  
  3405.       };
  3406.  
  3407.      ";
  3408.  
  3409.  };
  3410.  
  3411.  _A3AHstring = _A3AHstring + "          player setVariable['broken', false, false];
  3412.  
  3413.           [      '',      {       life_brokenLeg = false;
  3414.  
  3415.        ruhr_brokenLeg = false;
  3416.  
  3417.        player setHit['legs',0];
  3418.  
  3419.        player setHitPointDamage ['hitLegs',0];
  3420.  
  3421.       },      owner _target,      false     ] call FN_infiSTAR_S;
  3422.  
  3423.     };
  3424.  
  3425.    };
  3426.  
  3427.    if(_option == 10)exitWith   {    _vehicle = _array select 2;
  3428.  
  3429.     _value = _array select 3;
  3430.  
  3431.     if (local _vehicle) then {     _vehicle lock _value;
  3432.  
  3433.     } else {     if (_value) then {      [_vehicle, true] remoteExec ['EPOCH_client_lockVehicle',(owner _vehicle)];
  3434.  
  3435.      } else {      [_vehicle, false] remoteExec ['EPOCH_client_lockVehicle',(owner _vehicle)];
  3436.  
  3437.      };
  3438.  
  3439.     };
  3440.  
  3441.    };
  3442.  
  3443.    if(_option == 11)exitWith   {    _target = _array select 2;
  3444.  
  3445.     _code = {     _inventoryP = [];
  3446.  
  3447.      {_inventoryP pushBack _x;
  3448.  
  3449. } forEach (assignedItems player);
  3450.  
  3451.      {_inventoryP pushBack _x;
  3452.  
  3453. } forEach (magazines player);
  3454.  
  3455.      {_inventoryP pushBack _x;
  3456.  
  3457. } forEach (weapons player);
  3458.  
  3459.      {_inventoryP pushBack _x;
  3460.  
  3461. } forEach (primaryWeaponItems player);
  3462.  
  3463.      {_inventoryP pushBack _x;
  3464.  
  3465. } forEach (secondaryWeaponItems player);
  3466.  
  3467.      _inventoryP pushBack (primaryWeapon player);
  3468.  
  3469.      _inventoryP pushBack (secondaryWeapon player);
  3470.  
  3471.      _inventoryP pushBack (uniform player);
  3472.  
  3473.      _inventoryP pushBack (vest player);
  3474.  
  3475.      _inventoryP pushBack (backpack player);
  3476.  
  3477.      _inventoryP pushBack (headgear player);
  3478.  
  3479.      _inventoryP pushBack (goggles player);
  3480.  
  3481.      {      player removeItem _x;
  3482.  
  3483.       player removeWeapon _x;
  3484.  
  3485.       player removeMagazine _x;
  3486.  
  3487.       removeUniform player;
  3488.  
  3489.       removeVest player;
  3490.  
  3491.       removeBackpack player;
  3492.  
  3493.       removeHeadgear player;
  3494.  
  3495.       removeGoggles player;
  3496.  
  3497.       player removePrimaryWeaponItem _x;
  3498.  
  3499.       player removeSecondaryWeaponItem _x;
  3500.  
  3501.       player unlinkItem _x;
  3502.  
  3503.      } forEach _inventoryP;
  3504.  
  3505.     };
  3506.  
  3507.     ['',_code,(owner _target),false] call FN_infiSTAR_S;
  3508.  
  3509.    };
  3510.  
  3511.    if(_option == 12)exitWith   {    _target = _array select 2;
  3512.  
  3513.     _value = _array select 3;
  3514.  
  3515.     if(!isNil 'EPOCH_defaultVars_SEPXVar')then    {     if(!isNull _target)then     {      _cIndex = EPOCH_customVars find 'Crypto';
  3516.  
  3517.       _vars = _target getVariable['VARS', call EPOCH_defaultVars_SEPXVar];
  3518.  
  3519.       _current_crypto = (((_vars select _cIndex) + _value) min 250000) max 0;
  3520.  
  3521.       _current_crypto remoteExec ['EPOCH_effectCrypto',(owner _target)];
  3522.  
  3523.       _vars set[_cIndex, _current_crypto];
  3524.  
  3525.       _target setVariable['VARS', _vars];
  3526.  
  3527.      };
  3528.  
  3529.     };
  3530.  
  3531.    };
  3532.  
  3533.    if(_option == 13)exitWith   {    _target = _array select 2;
  3534.  
  3535.     _value = _array select 3;
  3536.  
  3537.     _targetUID = getPlayerUID _target;
  3538.  
  3539.     if(_targetUID in _locDevs)exitWith{};
  3540.  
  3541.     _code = {for '_i' from 0 to 3 do {disableUserInput _this;
  3542.  
  3543. };
  3544.  
  3545. };
  3546.  
  3547.     [_value,_code,(owner _target),false] call FN_infiSTAR_S;
  3548.  
  3549.    };
  3550.  
  3551.    if(_option == 14)exitWith   {    (_array select 2) call EPOCH_server_upgradeBUILD;
  3552.  
  3553.    };
  3554.  
  3555.    if(_option == 15)exitWith   {    _target = _array select 2;
  3556.  
  3557.     _value = _array select 3;
  3558.  
  3559.     _target setVariable['restrained',_value,true];
  3560.  
  3561.     if(!_value)then    {     _target setVariable['restrained',_value,true];
  3562.  
  3563.      _target setVariable['Escorting',_value,true];
  3564.  
  3565.      _target setVariable['transporting',_value,true];
  3566.  
  3567.      detach _target;
  3568.  
  3569.     };
  3570.  
  3571.    };
  3572.  
  3573.    if(_option == 16)exitWith   {    if(isNil'EPOCH_WeatherStaticForecast')then{EPOCH_WeatherStaticForecast=[19,1,[1,1,40],1,[5,5]];
  3574.  
  3575. };
  3576.  
  3577.     _somethingChanged = false;
  3578.  
  3579.     _FOG_VALUE = _array select 2;
  3580.  
  3581.     if(_FOG_VALUE != fog)then    {     EPOCH_WeatherStaticForecast set [2,_FOG_VALUE];
  3582.  
  3583.      0 setFog _FOG_VALUE;
  3584.  
  3585.     };
  3586.  
  3587.     _OVERCAST_VALUE = _array select 3;
  3588.  
  3589.     if(_OVERCAST_VALUE != overcast)then    {     EPOCH_WeatherStaticForecast set [3,_OVERCAST_VALUE];
  3590.  
  3591.      0 setOvercast _OVERCAST_VALUE;
  3592.  
  3593.      _somethingChanged = true;
  3594.  
  3595.     };
  3596.  
  3597.     _RAIN_VALUE = _array select 4;
  3598.  
  3599.     if(_RAIN_VALUE != rain)then    {     EPOCH_WeatherStaticForecast set [1,_RAIN_VALUE];
  3600.  
  3601.      0 setRain _RAIN_VALUE;
  3602.  
  3603.      _somethingChanged = true;
  3604.  
  3605.     };
  3606.  
  3607.     if(_somethingChanged)then{     ";
  3608.  
  3609.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "     skipTime 1;
  3610.  
  3611.      ";
  3612.  
  3613.  };
  3614.  
  3615.  _A3AHstring = _A3AHstring + "     simulWeatherSync;
  3616.  
  3617.      forceWeatherChange;
  3618.  
  3619.     };
  3620.  
  3621.    };
  3622.  
  3623.    if(_option == 5000)exitWith   {    _select = _array select 2;
  3624.  
  3625.     _pos = _array select 3;
  3626.  
  3627.     if(_select == 0)exitWith{     _crate = 'Box_IND_AmmoVeh_F' createVehicle _pos;
  3628.  
  3629.      _crate setVariable['BIS_enableRandomization',false];
  3630.  
  3631.      _crate setVariable['"+_adminbox+"','-1',true];
  3632.  
  3633.      _crate setPosATL _pos;
  3634.  
  3635.      clearWeaponCargoGlobal _crate;
  3636.  
  3637.      clearMagazineCargoGlobal _crate;
  3638.  
  3639.      clearBackpackCargoGlobal _crate;
  3640.  
  3641.      clearItemCargoGlobal _crate;
  3642.  
  3643.      _crate addItemCargoGlobal ['KitPlotPole',1];
  3644.  
  3645.      _crate addItemCargoGlobal ['ItemLockbox',1];
  3646.  
  3647.      _crate addItemCargoGlobal ['KitTiPi',1];
  3648.  
  3649.      _crate addItemCargoGlobal ['KitShelf',1];
  3650.  
  3651.      _crate addItemCargoGlobal ['Hatchet',1];
  3652.  
  3653.      _crate addItemCargoGlobal ['hatchet_swing',2];
  3654.  
  3655.      _crate addItemCargoGlobal ['KitFoundation',4];
  3656.  
  3657.      _crate addItemCargoGlobal ['PartPlankPack',4];
  3658.  
  3659.      _crate addItemCargoGlobal ['KitWoodFloor',20];
  3660.  
  3661.      _crate addItemCargoGlobal ['KitStudWall',16];
  3662.  
  3663.      _crate addItemCargoGlobal ['ItemCorrugated',16];
  3664.  
  3665.      _crate addItemCargoGlobal ['KitCinderWall',5];
  3666.  
  3667.      _crate addItemCargoGlobal ['CinderBlocks',10];
  3668.  
  3669.      _crate addItemCargoGlobal ['MortarBucket',4];
  3670.  
  3671.      _crate addItemCargoGlobal ['ItemCorrugatedLG',2];
  3672.  
  3673.      _crate addItemCargoGlobal ['CircuitParts',3];
  3674.  
  3675.      _crate addItemCargoGlobal ['EnergyPackLg',2];
  3676.  
  3677.     };
  3678.  
  3679.     if(_select > 0)exitWith{     _crate = 'Box_IND_AmmoVeh_F' createVehicle _pos;
  3680.  
  3681.      _crate setVariable['BIS_enableRandomization',false];
  3682.  
  3683.      _crate setVariable['"+_adminbox+"','-1',true];
  3684.  
  3685.      _crate setPosATL _pos;
  3686.  
  3687.      clearWeaponCargoGlobal _crate;
  3688.  
  3689.      clearMagazineCargoGlobal _crate;
  3690.  
  3691.      clearBackpackCargoGlobal _crate;
  3692.  
  3693.      clearItemCargoGlobal _crate;
  3694.  
  3695.           _arrayforcrate = [];
  3696.  
  3697.      switch _select do {      case 1:{_arrayforcrate = "+str _SupportBox1Content+"};
  3698.  
  3699.       case 2:{_arrayforcrate = "+str _SupportBox2Content+"};
  3700.  
  3701.       case 3:{_arrayforcrate = "+str _SupportBox3Content+"};
  3702.  
  3703.      };
  3704.  
  3705.      if(_arrayforcrate isEqualTo [])exitWith{};
  3706.  
  3707.           {      if(typeName _x == 'ARRAY')then      {       _item = _x select 0;
  3708.  
  3709.        _BackPack = getText (configfile >> 'CfgVehicles' >> _item >> 'vehicleClass') == 'BackPacks';
  3710.  
  3711.        if(_BackPack)then       {        _crate addBackpackCargoGlobal [_item,_x select 1];
  3712.  
  3713.        }       else       {        _crate addItemCargoGlobal [_item,_x select 1];
  3714.  
  3715.        };
  3716.  
  3717.       }      else      {       _item = _x;
  3718.  
  3719.        _BackPack = getText (configfile >> 'CfgVehicles' >> _item >> 'vehicleClass') == 'BackPacks';
  3720.  
  3721.        if(_BackPack)then       {        _crate addBackpackCargoGlobal [_item,1];
  3722.  
  3723.        }       else       {        _crate addItemCargoGlobal [_item,1];
  3724.  
  3725.        };
  3726.  
  3727.       };
  3728.  
  3729.      } forEach _arrayforcrate;
  3730.  
  3731.     };
  3732.  
  3733.    };
  3734.  
  3735.    if(_option == 9876)exitWith   {    _name = name(_array select 2);
  3736.  
  3737.     _puid = getPlayerUID(_array select 2);
  3738.  
  3739.     _steamName = '';
  3740.  
  3741.     _steamName = [_name,_puid,_clientID] call fnc_resolveSteamName;
  3742.  
  3743.     if(_steamName != '')then    {     _code = {      params['_name','_uid',['_steamname','']];
  3744.  
  3745.       _log = format['<infiSTAR.de> %1(%2) SteamName is: %3',_name,_uid,_steamname];
  3746.  
  3747.       cutText [_log, 'PLAIN DOWN'];
  3748.  
  3749.       hint _log;
  3750.  
  3751.       systemchat _log;
  3752.  
  3753.       diag_log _log;
  3754.  
  3755.      };
  3756.  
  3757.      [[_name,_puid,_steamname],_code,_clientID,false] call FN_infiSTAR_S;
  3758.  
  3759.           format['%1(%2) is %3',_name,_puid,_steamname] call FNC_A3_RESOLVESTEAMNAMELOG;
  3760.  
  3761.     };
  3762.  
  3763.    };
  3764.  
  3765.   };
  3766.  
  3767.   "+_FNC_PVAH_AdminReq+" = compileFinal ([_FNC_PVAH_AdminReq] call fnc_CompilableString);
  3768.  
  3769.      _FNC_AH3030_KICKLOGSPAWN =  {   private['_input','_tokenreceived','_arraysent','_netId','_objectFromNetId','_objectName','_objectUID','_name','_puid','_result','_foundtokenid','_puidfound','_belongstoname'];
  3770.  
  3771.    _input = _this;
  3772.  
  3773.    if(isNil '_input')exitWith{    _mytime = call fnc_getserverTime;
  3774.  
  3775.     _log = _mytime + 'FNC_AH3030_KICKLOGSPAWN _this is Nil (v0239)';
  3776.  
  3777.     _log call FNC_A3_SURVEILLANCELOG;
  3778.  
  3779.    };
  3780.  
  3781.    diag_log format['<infiSTAR.de FNC_AH3030_KICKLOGSPAWN> %1',_this];
  3782.  
  3783.       _tokenreceived = _this select 0;
  3784.  
  3785.    if(isNil '_tokenreceived')exitWith{    _mytime = call fnc_getserverTime;
  3786.  
  3787.     _log = _mytime + '_tokenreceived _this is Nil (v0239)';
  3788.  
  3789.     _log call FNC_A3_SURVEILLANCELOG;
  3790.  
  3791.    };
  3792.  
  3793.    if(typeName _tokenreceived != 'STRING')exitWith{    _mytime = call fnc_getserverTime;
  3794.  
  3795.     _log = _mytime + format['_tokenreceived wrong type %1 (v0239)',typeName _tokenreceived];
  3796.  
  3797.     _log call FNC_A3_SURVEILLANCELOG;
  3798.  
  3799.    };
  3800.  
  3801.       _arraysent = _this select 1;
  3802.  
  3803.    if(isNil '_arraysent')exitWith{    _mytime = call fnc_getserverTime;
  3804.  
  3805.     _log = _mytime + '_arraysent _this is Nil (v0239)';
  3806.  
  3807.     _log call FNC_A3_SURVEILLANCELOG;
  3808.  
  3809.    };
  3810.  
  3811.    if(typeName _arraysent != 'ARRAY')exitWith{    _mytime = call fnc_getserverTime;
  3812.  
  3813.     _log = _mytime + format['_arraysent wrong type %1 (v0239)',typeName _arraysent];
  3814.  
  3815.     _log call FNC_A3_SURVEILLANCELOG;
  3816.  
  3817.    };
  3818.  
  3819.       _objectFromNetId = objNull;
  3820.  
  3821.    _netId = _this select 2;
  3822.  
  3823.    if(isNil '_netId')then{_netId='';
  3824.  
  3825. };
  3826.  
  3827.    if(typeName _netId != 'STRING')exitWith{    _mytime = call fnc_getserverTime;
  3828.  
  3829.     _log = _mytime + format['_netId wrong type %1 (v0239)',typeName _netId];
  3830.  
  3831.     _log call FNC_A3_SURVEILLANCELOG;
  3832.  
  3833.    };
  3834.  
  3835.    _objectFromNetId = objectFromNetId _netId;
  3836.  
  3837.       _name = _arraysent select 0;
  3838.  
  3839.    if(isNil '_name')then{_name = 'NAME_ERROR1';
  3840.  
  3841. };
  3842.  
  3843.    if(typeName _name != 'STRING')then{_name = 'NAME_ERROR2';
  3844.  
  3845. };
  3846.  
  3847.    if(_name == '')then{_name = 'NAME_ERROR3';
  3848.  
  3849. };
  3850.  
  3851.       _puid = _arraysent select 1;
  3852.  
  3853.    if(isNil '_puid')then{_puid = '';
  3854.  
  3855. };
  3856.  
  3857.    if(typeName _puid != 'STRING')then{_puid = '';
  3858.  
  3859. };
  3860.  
  3861.       diag_log format['<infiSTAR.de FNC_AH3030_KICKLOGSPAWN> %1(%2) Token %3 - objByNetID %4',_name,_puid,_tokenreceived,_objectFromNetId];
  3862.  
  3863.    _objectUID = getPlayerUID _objectFromNetId;
  3864.  
  3865.    _objectName = if(alive _objectFromNetId)then{name _objectFromNetId}else{_name};
  3866.  
  3867.       if!(_puid isEqualTo _objectUID)then   {    if!(_objectUID isEqualTo '')then    {     _puid = _objectUID;
  3868.  
  3869.     };
  3870.  
  3871.    }   else   {    if(_objectUID isEqualTo _puid)then    {     if!(_name isEqualTo _objectName)then     {      diag_log format['<infiSTAR.de FNC_AH3030_KICKLOGSPAWN> %1(%2) PlayerObjectName is not equal to PlayerName!',_name,_puid,_objectName];
  3872.  
  3873.       _name = _objectName;
  3874.  
  3875.      };
  3876.  
  3877.     };
  3878.  
  3879.    };
  3880.  
  3881.       _result = [_puid,_tokenreceived] call "+_server_checkTokenR+";
  3882.  
  3883.    if(!_result)exitWith   {    _log = format['BadToken (%1)',_tokenreceived];
  3884.  
  3885.         if(isNil '"+_BigTokenArray+"')then{"+_BigTokenArray+" = [];
  3886.  
  3887. };
  3888.  
  3889.     if(isNil'_foundtokenid')then{_foundtokenid = "+_BigTokenArray+" find _tokenreceived};
  3890.  
  3891.     if(_foundtokenid > 0)then    {     _puidfound = "+_BigTokenArray+" select (_foundtokenid - 1);
  3892.  
  3893.      if!(_puidfound isEqualTo '')then     {      try      {       {        if(alive _x)then        {         if((getPlayerUID _x) isEqualTo _puidfound)then         {          throw format['BadToken (%1). Token belongs to: %2(%3) and not %4(%5)',_tokenreceived,name _x,_puidfound,_name,_puid];
  3894.  
  3895.          };
  3896.  
  3897.         };
  3898.  
  3899.        } forEach allPlayers;
  3900.  
  3901.       }      catch      {       _log = _exception;
  3902.  
  3903.       }     };
  3904.  
  3905.          };
  3906.  
  3907.         diag_log format['<infiSTAR.de FNC_AH3030_KICKLOGSPAWN> %1',_log];
  3908.  
  3909.     [_name,_puid,'SLOG_SKICK',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  3910.  
  3911.    };
  3912.  
  3913.          _arraysent set [0,_objectName];
  3914.  
  3915.    _arraysent set [1,_puid];
  3916.  
  3917.    _arraysent spawn "+_FNC_AH3030_KICKLOG+";
  3918.  
  3919.   };
  3920.  
  3921.   "+_FNC_AH3030_KICKLOGSPAWN+" = compileFinal ([_FNC_AH3030_KICKLOGSPAWN] call fnc_CompilableString);
  3922.  
  3923.   _fnc_serverMassMessage = {   private['_msg','_unit'];
  3924.  
  3925.    _msg = _this select 0;
  3926.  
  3927.    _unit = _this select 1;
  3928.  
  3929.    "+_massMessage+" = [_msg,0,0.7,10,0];
  3930.  
  3931.    (owner _unit) publicVariableClient '"+_massMessage+"';
  3932.  
  3933.   };
  3934.  
  3935.   fnc_serverMassMessage = compileFinal ([_fnc_serverMassMessage] call fnc_CompilableString);
  3936.  
  3937.   ";
  3938.  
  3939.  if(_MPF)then{ _A3AHstring = _A3AHstring + "  _fnc_mpPackets = {   _stringcode = str _this;
  3940.  
  3941.    _foundBad = '';
  3942.  
  3943.    _forward = true;
  3944.  
  3945.    _bannable = false;
  3946.  
  3947.    _inputVariable = _this select 0;
  3948.  
  3949.    _input = _this select 1;
  3950.  
  3951.       _lcode = toLower _stringcode;
  3952.  
  3953.    {if((_lcode find (toLower _x)) != -1)exitWith{_forward = false;
  3954.  
  3955. _foundBad = _x;
  3956.  
  3957. };
  3958.  
  3959. } forEach [    'toString','toArray','setD','dynamicText','endmission','forceend','failmission','createVehicle','setpos','title','KeyDown','hacked','db_fnc'   ];
  3960.  
  3961.    if(!_forward)then   {    if(_foundBad=='db_fnc')then    {     {if((_lcode find (toLower _x)) != -1)exitWith{_forward = true;
  3962.  
  3963. };
  3964.  
  3965. } forEach [      'db_fnc_queryRequest','db_fnc_updateRequest','db_fnc_updatePartial','db_fnc_insertRequest',      'db_fnc_numberSafe','db_fnc_bool','db_fnc_insertVehicle','db_fnc_marketInsert',      'db_fnc_housequeryRequest','db_fnc_houseupdateRequest','db_fnc_fahrschulen',      'db_fnc_updateTime'     ];
  3966.  
  3967.     };
  3968.  
  3969.     if(!_forward)then    {     if(_foundBad=='hacked')then     {      {if((_lcode find (toLower _x)) != -1)exitWith{_forward = true;
  3970.  
  3971. };
  3972.  
  3973. } forEach ['Sattellite_Key_Terminal'];
  3974.  
  3975.      };
  3976.  
  3977.      if(_foundBad=='setD')then     {      {if((_lcode find (toLower _x)) != -1)exitWith{_forward = true;
  3978.  
  3979. };
  3980.  
  3981. } forEach ['BIS_fnc_setDate'];
  3982.  
  3983.      };
  3984.  
  3985.     };
  3986.  
  3987.    };
  3988.  
  3989.       {if((_lcode find (toLower _x)) != -1)exitWith{_bannable = true;
  3990.  
  3991. };
  3992.  
  3993. } forEach [    'db_fnc_mresToArray','db_fnc_asynccall','waitUntil{(markerText',    'BIS_fnc_dbg_reminder_value','BIS_fnc_dbg_reminder'   ];
  3994.  
  3995.    _verybadstringfound = '';
  3996.  
  3997.    if(!_bannable)then   {    {if((_lcode find _x) != -1)exitWith{_verybadstringfound=_x;
  3998.  
  3999. _bannable = true;
  4000.  
  4001. };
  4002.  
  4003. } forEach "+str _verybadStrings+";
  4004.  
  4005.    };
  4006.  
  4007.       _name = '';
  4008.  
  4009. _puid = '';
  4010.  
  4011.    if(typeName _input == 'ARRAY')then   {    if(count _input >= 7)then    {     _name = format['%1',_input select 6];
  4012.  
  4013.      _puid = format['%1',_input select 7];
  4014.  
  4015.      if((isNil '_name') || (isNil '_name'))then     {      _bannable = false;
  4016.  
  4017.      }     else     {      if((_name == '__SERVER__') && (_puid == '__SERVER__'))then      {       _bannable = false;
  4018.  
  4019.       };
  4020.  
  4021.      };
  4022.  
  4023.     };
  4024.  
  4025.    };
  4026.  
  4027.       if((_lcode find 'life_fnc_netsetvar') != -1)exitWith   {    private['_function','_params','_unit','_variable','_value'];
  4028.  
  4029.     _function = _input select 2;
  4030.  
  4031.     if(_function isEqualTo 'life_fnc_netSetVar')exitWith{diag_log '<infiSTAR.de> life_fnc_netSetVar input wrong.';
  4032.  
  4033. };
  4034.  
  4035.         _params = _input select 1;
  4036.  
  4037.     _unit = _input select 3;
  4038.  
  4039.     _variable = _params select 0;
  4040.  
  4041.     _value = _params select 1;
  4042.  
  4043.         missionNameSpace setVariable[_variable,_value];
  4044.  
  4045.     (owner _unit) publicVariableClient _variable;
  4046.  
  4047.    };
  4048.  
  4049.       if(_inputVariable == 'BIS_fnc_MP_packet')then   {    if((_lcode find 'tostring') != -1)then    {     _forward = false;
  4050.  
  4051.     };
  4052.  
  4053.    };
  4054.  
  4055.       if((_forward)&&(!_bannable))then   {    if(_inputVariable == 'BIS_fnc_MP_packet')then{_this call BIS_fnc_MPexec;
  4056.  
  4057. } else {_this call life_fnc_MPexec;
  4058.  
  4059. };
  4060.  
  4061.    }   else   {    if(_bannable)then    {     _log = format['BAD_MP_packet: %1 in %2 :: %3   (S-BAN)',_verybadstringfound,_foundBad,_stringcode];
  4062.  
  4063.      [_name,_puid,'BAN',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  4064.  
  4065.     }    else    {     _log = format['BAD_MP_packet: %1 in %2 :: %3   (S-KICK)',_verybadstringfound,_foundBad,_stringcode];
  4066.  
  4067.      [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  4068.  
  4069.      [_name,_puid] call FNC_INFISERVERKICK;
  4070.  
  4071.     };
  4072.  
  4073.    };
  4074.  
  4075.   };
  4076.  
  4077.   "+_fnc_mpPackets+" = compileFinal ([_fnc_mpPackets] call fnc_CompilableString);
  4078.  
  4079.   ";
  4080.  
  4081.  };
  4082.  
  4083.  _A3AHstring = _A3AHstring + "     _AH_MAIN_BLOCK = {  _clientName = _this select 0;
  4084.  
  4085.   _clientUID = _this select 1;
  4086.  
  4087.   if(isNil'"+_AH3030KICKLOG+"')exitWith{   _log = format['%1(%2) - AntiHack variable is NIL !',_clientName,_clientUID];
  4088.  
  4089.    AHKickLog_IS_NIL = _log;
  4090.  
  4091. publicVariableServer'AHKickLog_IS_NIL';
  4092.  
  4093.    (findDisplay 46)closeDisplay 0;
  4094.  
  4095.   };
  4096.  
  4097.     if(!isNil'AH_STARTED_ALREADY')exitWith{   _log = format['%1(%2) - AH STARTED TWICE !',_clientName,_clientUID];
  4098.  
  4099.    AH_STARTED_TWICE = _log;
  4100.  
  4101. publicVariableServer'AH_STARTED_TWICE';
  4102.  
  4103.    (findDisplay 46)closeDisplay 0;
  4104.  
  4105.   };
  4106.  
  4107.   AH_STARTED_ALREADY = true;
  4108.  
  4109.     _temptime = diag_tickTime + 30;
  4110.  
  4111.   waitUntil {(((getClientStateNumber >= 10)&&(getPlayerUID player != ''))||(diag_tickTime > _temptime))};
  4112.  
  4113.     _name = _clientName;
  4114.  
  4115.   _puid = format['%1',getPlayerUID player];
  4116.  
  4117.   if((isNil '_puid')||(isNil '_clientName')||(isNil '_clientUID'))exitWith  {   _log = 'No UID';
  4118.  
  4119.    NO_UID = 'NO_UID';
  4120.  
  4121. publicVariableServer 'NO_UID';
  4122.  
  4123.    (findDisplay 46)closeDisplay 0;
  4124.  
  4125.   };
  4126.  
  4127.   if!(_puid isEqualTo _clientUID)exitWith  {   _log = format['PlayerUID [%1] is not Equal to Serverside PlayerUID [%2]! (KICKED TO LOBBY)',_puid,_clientUID];
  4128.  
  4129.    [_name,_puid,'SLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  4130.  
  4131.    (findDisplay 46)closeDisplay 0;
  4132.  
  4133.   };
  4134.  
  4135.     _admins = "+str _admins+";
  4136.  
  4137.   _oldUIDs = [];
  4138.  
  4139.   _PNpuid = profileNamespace getVariable['PUID',[]];
  4140.  
  4141.   if!(_puid in _PNpuid)then  {   if(str _PNpuid != '[]')then   {    _oldUIDs = _PNpuid;
  4142.  
  4143.    };
  4144.  
  4145.    _PNpuid pushBack _puid;
  4146.  
  4147.    profileNamespace setVariable['PUID',_PNpuid];
  4148.  
  4149. saveprofileNamespace;
  4150.  
  4151.   };
  4152.  
  4153.   if!(_puid in _admins)then  {   if(str _oldUIDs != '[]')then   {    _announce = true;
  4154.  
  4155. {if(_x in _admins)exitWith{_announce = false;
  4156.  
  4157. };
  4158.  
  4159. } forEach _oldUIDs;
  4160.  
  4161.     if(_announce)then    {     _log = format['Player changed Steam Account (hacker?) - old UIDs: %1 (TEMPBANNED UNTIL NEXT RESTART)',_oldUIDs];
  4162.  
  4163.      [profileName,_puid,'TMPBAN',toArray(_log)] call "+_AH3030KICKLOG+";
  4164.  
  4165.      [] spawn "+_AHKickOFF+";
  4166.  
  4167.     };
  4168.  
  4169.    };
  4170.  
  4171.    {    if(!isNil _x)then    {     _log = format['AdminVariable Found: %1',_forEachIndex];
  4172.  
  4173.      [profileName,_puid,'SLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  4174.  
  4175.      (findDisplay 46)closeDisplay 0;
  4176.  
  4177.     };
  4178.  
  4179.    } forEach   [    '"+_AH_HackLogArrayRND+"','"+_AH_SurvLogArrayRND+"','"+_AH_AdmiLogArrayRND+"','"+_TMPBAN+"','"+_BigTokenArray+"','"+_MCS+"'   ];
  4180.  
  4181.       _badclassesban = ['life_server','devcon','loki_lost_key','pooploop','rscrazzler','rsclistboxvg','vgdialog'];
  4182.  
  4183.    _badclasseskick = ['a3_m3editor','extdb2','infistar_lifemods','infistar_a3'];
  4184.  
  4185.    _cfgPatches = configFile >> 'CfgPatches';
  4186.  
  4187.    for '_i' from 0 to (count _cfgPatches - 1) do   {    _patchClass = _cfgPatches select _i;
  4188.  
  4189.     if(isClass _patchClass)then    {     if((toLower configName _patchClass) in _badClassesBAN)then     {      _log = format['PBO-Injector found in CfgPatches: %1', configName _patchClass];
  4190.  
  4191.       [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  4192.  
  4193.       [] spawn "+_AHKickOFF+";
  4194.  
  4195.      };
  4196.  
  4197.      if((toLower configName _patchClass) in _badClassesKICK)then     {      _log = format['Bad Addon found in CfgPatches:: %1', configName _patchClass];
  4198.  
  4199.       [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  4200.  
  4201.       [] spawn "+_AHKickOFF+";
  4202.  
  4203.      };
  4204.  
  4205.     };
  4206.  
  4207.    };
  4208.  
  4209.       _badClassesKICK append _badClassesBAN;
  4210.  
  4211.    _activatedAddons = [];
  4212.  
  4213.    {_activatedAddons pushBack (toLower _x)} forEach activatedAddons;
  4214.  
  4215.    {    _addon = _x;
  4216.  
  4217.     {     if(_addon find (toLower _x) != -1)then     {      _log = format['Bad Addon found: %1 (%2)',_addon,_x];
  4218.  
  4219.       [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  4220.  
  4221.       [] spawn "+_AHKickOFF+";
  4222.  
  4223.      };
  4224.  
  4225.     } forEach _badClassesKICK;
  4226.  
  4227.    } forEach _activatedAddons;
  4228.  
  4229.   };
  4230.  
  4231.       "+_dellocveh+" = nil;
  4232.  
  4233. '"+_dellocveh+"' addPublicVariableEventHandler compileFinal """+_dellocveh+" = nil;
  4234.  
  4235. deleteVehicle (vehicle player);
  4236.  
  4237. "";
  4238.  
  4239.   [_name,_puid,_admins] spawn {   disableSerialization;
  4240.  
  4241.    {ctrlDelete ((findDisplay 12) displayCtrl _x);
  4242.  
  4243. } forEach [1086,1087,1088,1089,1090];
  4244.  
  4245.    _name = _this select 0;
  4246.  
  4247.    _puid = _this select 1;
  4248.  
  4249.    _admins = _this select 2;
  4250.  
  4251.    _wallgames = 0;
  4252.  
  4253.    _lastglitch = time;
  4254.  
  4255.    _49openedTimer = 0;
  4256.  
  4257.    ";
  4258.  
  4259.  if(_CLG)then{ _A3AHstring = _A3AHstring + "   _tmpObj = objNull;
  4260.  
  4261.    _inCombat = 0;
  4262.  
  4263.    ";
  4264.  
  4265.  };
  4266.  
  4267.  _A3AHstring = _A3AHstring + "   _excludedButtons = [];
  4268.  
  4269.    _excludedButtonsTMP = "+str _excludedButtons+";
  4270.  
  4271.    {_excludedButtons pushBack format['Control #%1',_x];
  4272.  
  4273. } forEach _excludedButtonsTMP;
  4274.  
  4275.       ";
  4276.  
  4277.  if(_B49)then{ _A3AHstring = _A3AHstring + "    {     for '_i' from 0 to (count _x - 1) do     {      _ctrlCfg = _x select _i;
  4278.  
  4279.       if(getText (_ctrlCfg >> 'action') != '' || getText (_ctrlCfg >> 'onButtonClick') != '')exitWith      {       _BTN_TEXT = getText (_ctrlCfg >> 'text');
  4280.  
  4281.        if!(_BTN_TEXT in ['RHS - Game Options','AGM Options','MCC keys'])then       {        _log = format['BadButton on ESC: %1',_BTN_TEXT];
  4282.  
  4283.         [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  4284.  
  4285.         [] spawn "+_AHKickOFF+";
  4286.  
  4287.        };
  4288.  
  4289.       };
  4290.  
  4291.      };
  4292.  
  4293.     }    forEach    [     configFile >> 'RscDisplayMPInterrupt' >> 'controls',     configFile >> 'RscDisplayMPInterrupt' >> 'controlsBackground'    ];
  4294.  
  4295.    ";
  4296.  
  4297.  };
  4298.  
  4299.  _A3AHstring = _A3AHstring + "      ";
  4300.  
  4301.  if(_useTildMenu)then{ _A3AHstring = _A3AHstring + "   USERMENU"+_customcommandingMenu+" = [];
  4302.  
  4303.    USERMENU"+_customcommandingMenu+" pushBack ['by infiSTAR.de',true];
  4304.  
  4305.    USERMENU"+_customcommandingMenu+" pushBack ['User Menu', [-1], '', -5, [['expression', '']], '1', '0'];
  4306.  
  4307.    USERMENU"+_customcommandingMenu+" pushBack ['Earplugs in/out', [2], '', -5, [['expression', 'if(isNil''Earplugs'')then{Earplugs=true;
  4308.  
  4309. 1 fadeSound 0.25;
  4310.  
  4311. systemchat''Earplugs in'';
  4312.  
  4313. }else{Earplugs=nil;
  4314.  
  4315. 1 fadeSound 1;
  4316.  
  4317. systemchat''Earplugs out'';
  4318.  
  4319. };
  4320.  
  4321. ']], '1', '1'];
  4322.  
  4323.    if(!isNil 'EPOCH_debugMode')then   {    USERMENU"+_customcommandingMenu+" pushBack ['Stinky Finger', [3], '', -5, [['expression', 'player action[''switchWeapon'', player, player, 100];
  4324.  
  4325. player playactionNow ''GestureFinger'';
  4326.  
  4327. ']], '1', '1'];
  4328.  
  4329.     USERMENU"+_customcommandingMenu+" pushBack ['EPOCH Debug', [4], '', -5, [['expression', 'EPOCH_debugMode = !EPOCH_debugMode;
  4330.  
  4331. hint'''';
  4332.  
  4333. ']], '1', '1'];
  4334.  
  4335.    };
  4336.  
  4337.    _customcommandingMenu = USERMENU"+_customcommandingMenu+";
  4338.  
  4339.    ";
  4340.  
  4341.  };
  4342.  
  4343.  _A3AHstring = _A3AHstring + "      _fnc_infiKeyHandler = ""    private['_dikCode','_shift','_ctrl','_alt','_dikCode','_handled'];
  4344.  
  4345.     _dikCode = _this select 1;
  4346.  
  4347.     _shift = _this select 2;
  4348.  
  4349.     _ctrl = _this select 3;
  4350.  
  4351.     _alt = _this select 4;
  4352.  
  4353.     _handled = call {     ";
  4354.  
  4355.  if(_useTildMenu)then{ _A3AHstring = _A3AHstring + "     if(_dikCode == 41)exitWith     {      "+_customcommandingMenuOpen+" = true;
  4356.  
  4357.       true     };
  4358.  
  4359.      ";
  4360.  
  4361.  };
  4362.  
  4363.  _A3AHstring = _A3AHstring + "     if(_dikCode in (actionKeys 'TacticalView'))exitWith{true};
  4364.  
  4365.      if(_ctrl)exitWith     {      if(_dikCode in (actionKeys 'Salute'))exitWith      {       player playactionNow 'GestureFinger';
  4366.  
  4367. true      };
  4368.  
  4369.       false     };
  4370.  
  4371.      false    };
  4372.  
  4373.     _handled   "";
  4374.  
  4375.    "+_fnc_infiKeyHandler+" = compileFinal _fnc_infiKeyHandler;
  4376.  
  4377.    if(str "+_fnc_infiKeyHandler+" != str (compile _fnc_infiKeyHandler))then   {    _log = format['fnc_infiKeyHandler changed! %1, %2',"+_fnc_infiKeyHandler+",_fnc_infiKeyHandler];
  4378.  
  4379.     [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  4380.  
  4381.     [] spawn "+_AHKickOFF+";
  4382.  
  4383.    };
  4384.  
  4385.    ";
  4386.  
  4387.  if(_RDK)then{ _A3AHstring = _A3AHstring + "    (findDisplay 46) displayAddEventHandler ['KeyDown','_this call "+_fnc_infiKeyHandler+"'];
  4388.  
  4389.    ";
  4390.  
  4391.  };
  4392.  
  4393.  _A3AHstring = _A3AHstring + "   (findDisplay 46) displayAddEventHandler ['KeyUp','_this call "+_fnc_infiKeyHandler+"'];
  4394.  
  4395.    ";
  4396.  
  4397.  if((_MOD == 'Epoch')&&(_AWL))then{ _A3AHstring = _A3AHstring + "    _faded = false;
  4398.  
  4399.     _lastCall = time + 10;
  4400.  
  4401.     _fadeOut = {     _faded = true;
  4402.  
  4403.      TitleText ['!!!\nDO NOT LOOK THROUGH WALLS\n!!!\n\n\n\nAntiHack by infiSTAR.de','BLACK FADED'];
  4404.  
  4405.      if(!isNull findDisplay 602)then     {      for '_i' from 0 to 3 do{findDisplay 602 closeDisplay 0;
  4406.  
  4407. closeDialog 0;
  4408.  
  4409. };
  4410.  
  4411.       if(time > _lastCall)then      {       _lastCall = time + 10;
  4412.  
  4413.               _log = format['Player tries to look through a door/wall & probably loot a shelf! @%1 %2',mapGridPosition player,player modelToWorldVisual [0,0,0]];
  4414.  
  4415.        [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  4416.  
  4417.       };
  4418.  
  4419.      };
  4420.  
  4421.     };
  4422.  
  4423.     _dis_head = 0.20;
  4424.  
  4425.     _dis_weapon_l = 0.20;
  4426.  
  4427.     _dis_weapon_r = 0.30;
  4428.  
  4429.     _dir_weapon_r = 0;
  4430.  
  4431.     _dir_weapon_l = 0;
  4432.  
  4433.    ";
  4434.  
  4435.  };
  4436.  
  4437.  _A3AHstring = _A3AHstring + "    ";
  4438.  
  4439.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "    _playerhandlers = ['InventoryOpened','InventoryClosed','Put','Take','HandleRating'];
  4440.  
  4441.     ";
  4442.  
  4443.  if(_RRH)then{ _A3AHstring = _A3AHstring + "    _playerhandlers pushBack 'Respawn';
  4444.  
  4445.     ";
  4446.  
  4447.  };
  4448.  
  4449.  _A3AHstring = _A3AHstring + "    ";
  4450.  
  4451.  if(_RKH)then{ _A3AHstring = _A3AHstring + "     _playerhandlers pushBack 'Killed';
  4452.  
  4453.     ";
  4454.  
  4455.  };
  4456.  
  4457.  _A3AHstring = _A3AHstring + "   ";
  4458.  
  4459.  };
  4460.  
  4461.  _A3AHstring = _A3AHstring + "   ";
  4462.  
  4463.  if!(_DISALLOW_VOICE_ON_CHANNELS isEqualTo [])then{ _A3AHstring = _A3AHstring + "   _DISALLOW_VOICE_ON_CHANNELS = "+str _DISALLOW_VOICE_ON_CHANNELS+";
  4464.  
  4465.    ";
  4466.  
  4467.  };
  4468.  
  4469.  _A3AHstring = _A3AHstring + "   while{1==1}do   {    ";
  4470.  
  4471.  if(_useTildMenu)then{ _A3AHstring = _A3AHstring + "    if(isNil'USERMENU"+_customcommandingMenu+"')then    {     _log = 'customcommandingMenu is Nil';
  4472.  
  4473.      [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  4474.  
  4475.      [] spawn "+_AHKickOFF+";
  4476.  
  4477.     }    else    {     if!(str USERMENU"+_customcommandingMenu+" isEqualTo str _customcommandingMenu)then     {      _log = format['customcommandingMenu changed: %1',USERMENU"+_customcommandingMenu+"];
  4478.  
  4479.       [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  4480.  
  4481.       [] spawn "+_AHKickOFF+";
  4482.  
  4483.      };
  4484.  
  4485.     };
  4486.  
  4487.     ";
  4488.  
  4489.  };
  4490.  
  4491.  _A3AHstring = _A3AHstring + "    ";
  4492.  
  4493.  if(_CLG)then{ _A3AHstring = _A3AHstring + "    if(isNil '"+_inCombatTime+"')then{"+_inCombatTime+" = 0;
  4494.  
  4495. };
  4496.  
  4497.     _combatTime = round(time - "+_inCombatTime+");
  4498.  
  4499.     if(_combatTime <= 30)then    {     if(_inCombat == 0)then     {      _inCombat = 1;
  4500.  
  4501.       [_name,_puid,'COMBATCHECK',_inCombat] call "+_AH3030KICKLOG+";
  4502.  
  4503.      };
  4504.  
  4505.     }    else    {     if(_inCombat == 1)then     {      _inCombat = 0;
  4506.  
  4507.       [_name,_puid,'COMBATCHECK',_inCombat] call "+_AH3030KICKLOG+";
  4508.  
  4509.      };
  4510.  
  4511.     };
  4512.  
  4513.     if!(_tmpObj isEqualTo (vehicle player))then    {     _tmpObj = (vehicle player);
  4514.  
  4515.      player removeAllEventHandlers 'Hit';
  4516.  
  4517.      player removeAllEventHandlers 'FiredNear';
  4518.  
  4519.      if(alive player)then     {      player addEventHandler ['Hit',{"+_inCombatTime+" = time}];
  4520.  
  4521.       player addEventHandler ['FiredNear',{"+_inCombatTime+" = time}];
  4522.  
  4523.      };
  4524.  
  4525.     };
  4526.  
  4527.     if(!alive player)then    {     "+_inCombatTime+" = 0;
  4528.  
  4529.     };
  4530.  
  4531.     ";
  4532.  
  4533.  };
  4534.  
  4535.  _A3AHstring = _A3AHstring + "    _display49 = findDisplay 49;
  4536.  
  4537.     if!(serverCommandAvailable '#logout')then    {     if(!isNull _display49)then     {      if(_49openedTimer == 0)then{_49openedTimer = time;
  4538.  
  4539. };
  4540.  
  4541.       ";
  4542.  
  4543.  if(_CLG)then{ _A3AHstring = _A3AHstring + "      if(_combatTime < 30)then      {       (_display49 displayCtrl 104) ctrlEnable false;
  4544.  
  4545.        (_display49 displayCtrl 104) ctrlSetText format['COMBAT time: %1',30-_combatTime];
  4546.  
  4547.       }      else      {      ";
  4548.  
  4549.  };
  4550.  
  4551.  _A3AHstring = _A3AHstring + "      ";
  4552.  
  4553.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "       _waitTime = time - _49openedTimer;
  4554.  
  4555.        if(_waitTime < 10)then       {        (_display49 displayCtrl 104) ctrlEnable false;
  4556.  
  4557.         ";
  4558.  
  4559.  if(_CLG)then{ _A3AHstring = _A3AHstring + "        (_display49 displayCtrl 104) ctrlSetText format['ABORT IN %1',ceil(10-_waitTime)];
  4560.  
  4561.         ";
  4562.  
  4563.  };
  4564.  
  4565.  _A3AHstring = _A3AHstring + "       }       else       {        (_display49 displayCtrl 104) ctrlEnable true;
  4566.  
  4567.         ";
  4568.  
  4569.  if(_CLG)then{ _A3AHstring = _A3AHstring + "        (_display49 displayCtrl 104) ctrlSetText 'Abort';
  4570.  
  4571.         ";
  4572.  
  4573.  };
  4574.  
  4575.  _A3AHstring = _A3AHstring + "       };
  4576.  
  4577.       ";
  4578.  
  4579.  };
  4580.  
  4581.  _A3AHstring = _A3AHstring + "      ";
  4582.  
  4583.  if(_CLG)then{ _A3AHstring = _A3AHstring + "      };
  4584.  
  4585.       ";
  4586.  
  4587.  };
  4588.  
  4589.  _A3AHstring = _A3AHstring + "      (_display49 displayCtrl 2) ctrlEnable false;
  4590.  
  4591.       (_display49 displayCtrl 2) ctrlSetText "+str _ESCMNUTOP+";
  4592.  
  4593.       (_display49 displayCtrl 103) ctrlEnable false;
  4594.  
  4595.       (_display49 displayCtrl 103) ctrlSetText "+str _ESCMNUBOT+";
  4596.  
  4597.       (_display49 displayCtrl 523) ctrlSetText profileName;
  4598.  
  4599.       (_display49 displayCtrl 109) ctrlSetText _puid;
  4600.  
  4601.       (_display49 displayCtrl 122) ctrlEnable false;
  4602.  
  4603.       (_display49 displayCtrl 122) ctrlShow false;
  4604.  
  4605.       ";
  4606.  
  4607.  if(_B49)then{ _A3AHstring = _A3AHstring + "       _cnt = ";
  4608.  
  4609.  if((!_B49)&&(_MOD != 'Epoch'))then{ _A3AHstring = _A3AHstring + "{        ";
  4610.  
  4611.  if(_B49)then{ _A3AHstring = _A3AHstring + "        _controltype = ctrlType _x;
  4612.  
  4613.         if(_controltype == 16)then        {         _action = buttonAction _x;
  4614.  
  4615.          if(_action != '')then         {          if!(str _x in _excludedButtons)then          {           if((str _x == 'Control #104')||(_action != ""[[player],""""TON_fnc_cleanupRequest"""",false,false] spawn life_fnc_MP""))then           {            _log = format['BadButton on 49: %1, %2',_x,_action];
  4616.  
  4617.             [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  4618.  
  4619.             [] spawn "+_AHKickOFF+";
  4620.  
  4621.            };
  4622.  
  4623.            if((str _x == 'Control #-1')||(_action != ""(findDisplay 49) closeDisplay 0;
  4624.  
  4625.  0 spawn {_n=  createDialog 'RHS_Options_Menu';
  4626.  
  4627. 0 spawn rhs_fnc_menuOptions;
  4628.  
  4629. };
  4630.  
  4631. ""))then           {            _log = format['BadButton on 49: %1, %2',_x,_action];
  4632.  
  4633.             [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  4634.  
  4635.             [] spawn "+_AHKickOFF+";
  4636.  
  4637.            };
  4638.  
  4639.           };
  4640.  
  4641.          };
  4642.  
  4643.         };
  4644.  
  4645.         ";
  4646.  
  4647.  };
  4648.  
  4649.  _A3AHstring = _A3AHstring + "        ";
  4650.  
  4651.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "         if!(str _x in ['Control #101','Control #1010','Control #104','Control #302','Control #301','Control #303','Control #307'])then         {          _x ctrlEnable false;
  4652.  
  4653.          };
  4654.  
  4655.         ";
  4656.  
  4657.  };
  4658.  
  4659.  _A3AHstring = _A3AHstring + "        true       } ";
  4660.  
  4661.  };
  4662.  
  4663.  _A3AHstring = _A3AHstring + "count (allcontrols _display49);
  4664.  
  4665.       ";
  4666.  
  4667.  };
  4668.  
  4669.  _A3AHstring = _A3AHstring + "            if!(_puid in _admins)then      {       {        _ctrl = _display49 displayCtrl _x;
  4670.  
  4671.         _ctrl ctrlShow false;
  4672.  
  4673.         _ctrl buttonSetAction '(findDisplay 49) closeDisplay 0;
  4674.  
  4675. (findDisplay 46) closeDisplay 0;
  4676.  
  4677. ';
  4678.  
  4679.        } forEach [11884,12284,13291];
  4680.  
  4681.        {        _ctrl = _display49 displayCtrl _x;
  4682.  
  4683.         _ctrl ctrlShow false;
  4684.  
  4685.         _ctrl buttonSetAction '(findDisplay 49) closeDisplay 0;
  4686.  
  4687. (findDisplay 46) closeDisplay 0;
  4688.  
  4689. ';
  4690.  
  4691.         if(!isNull _ctrl)then        {         _log = format['BadControl on 49: %1 - %2',_ctrl,_x];
  4692.  
  4693.          [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  4694.  
  4695.          [] spawn "+_AHKickOFF+";
  4696.  
  4697.         };
  4698.  
  4699.        } forEach [65464,65465,65466];
  4700.  
  4701.       };
  4702.  
  4703.      }     else     {      _49openedTimer = 0;
  4704.  
  4705.      };
  4706.  
  4707.     };
  4708.  
  4709.     if(!isNull _display49)then    {     ";
  4710.  
  4711.  if(!_BRIEFING_MSG)then{ _A3AHstring = _A3AHstring + "     (_display49 displayCtrl 120) ctrlSetText 'infiSTAR.de AntiHack & AdminsTools - [Author: infiSTAR, Contact: infiSTAR23@gmail.com]';
  4712.  
  4713.      ";
  4714.  
  4715.  }else{ _A3AHstring = _A3AHstring + "     (_display49 displayCtrl 115025) ctrlSetText 'AntiHack & AdminsTools';
  4716.  
  4717.      (_display49 displayCtrl 115035) ctrlSetText 'by infiSTAR.de';
  4718.  
  4719.      ";
  4720.  
  4721.  };
  4722.  
  4723.  _A3AHstring = _A3AHstring + "    };
  4724.  
  4725.     _display24 = findDisplay 24;
  4726.  
  4727.     if(!isNull _display24)then{     _chat = _display24 displayCtrl 101;
  4728.  
  4729.      _txt = ctrlText _chat;
  4730.  
  4731.      if(_txt != '')then{      _txtArray = toArray _txt;
  4732.  
  4733.       if((_txtArray select 0) in [44,36,37,38,92,124,194,176,45,95,60,62])then{_chat ctrlSetText '';
  4734.  
  4735. };
  4736.  
  4737.       _txt = toLower _txt;
  4738.  
  4739.       if(_puid in _admins)then{       if(_txt == '!admin')then       {        waitUntil {(findDisplay 24) closeDisplay 0;
  4740.  
  4741. isNull findDisplay 24};
  4742.  
  4743.         [_name,_puid,'AC',toArray(_txt)] call "+_AH3030KICKLOG+";
  4744.  
  4745.         (findDisplay 46)closeDisplay 0;
  4746.  
  4747.        };
  4748.  
  4749.       }      else      {       if(_txt in [format['.ban %1',toLower _name],format['.ban %1 true',toLower _name],format['.ban %1 true;
  4750.  
  4751. ',toLower _name]])then       {        waitUntil {(findDisplay 24) closeDisplay 0;
  4752.  
  4753. isNull findDisplay 24};
  4754.  
  4755.         _log = format['BadCommand: %1',_txt];
  4756.  
  4757.         [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  4758.  
  4759.         [] spawn "+_AHKickOFF+";
  4760.  
  4761.        };
  4762.  
  4763.       };
  4764.  
  4765.       if(_txt in ['killme','/killme','kill me','/kill me','/suicide','suicide'])then{       waitUntil {(findDisplay 24) closeDisplay 0;
  4766.  
  4767. isNull findDisplay 24};
  4768.  
  4769.        _unit = player;
  4770.  
  4771.        {_unit setHitPointDamage [_x,1];
  4772.  
  4773. } forEach ['HitBody','HitHead'];
  4774.  
  4775.        uiSleep 1.5;
  4776.  
  4777.        if(isNull _unit)exitWith{};
  4778.  
  4779.        if(local _unit)then{_unit setPos [0,0,100];
  4780.  
  4781. };
  4782.  
  4783.       };
  4784.  
  4785.       if(_txt find 'infishit' > -1)then{       waitUntil {(findDisplay 24) closeDisplay 0;
  4786.  
  4787. isNull findDisplay 24};
  4788.  
  4789.        _log = format['BadText: %1 [infishit]',_txt];
  4790.  
  4791.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  4792.  
  4793.       };
  4794.  
  4795.       ";
  4796.  
  4797.  if(_VDN)then{ _A3AHstring = _A3AHstring + "       if(_txt in ['!vote day','/vote day','vote day','!day','/day'])then{        waitUntil {(findDisplay 24) closeDisplay 0;
  4798.  
  4799. isNull findDisplay 24};
  4800.  
  4801.         [_name,_puid,'VOTE',toArray 'DAY'] call "+_AH3030KICKLOG+";
  4802.  
  4803.        };
  4804.  
  4805.        if(_txt in ['!vote night','/vote night','vote night','!night','/night'])then{        waitUntil {(findDisplay 24) closeDisplay 0;
  4806.  
  4807. isNull findDisplay 24};
  4808.  
  4809.         [_name,_puid,'VOTE',toArray 'NIGHT'] call "+_AH3030KICKLOG+";
  4810.  
  4811.        };
  4812.  
  4813.       ";
  4814.  
  4815.  };
  4816.  
  4817.  _A3AHstring = _A3AHstring + "     };
  4818.  
  4819.     };
  4820.  
  4821.     ";
  4822.  
  4823.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "     if(!isNull player)then     {      if(alive player)then      {       {        player removeAllEventHandlers _x;
  4824.  
  4825.         player addEventHandler [_x,(['CfgEpochClient', _x, ''] call EPOCH_fnc_returnConfigEntryV2)];
  4826.  
  4827.        } forEach _playerhandlers;
  4828.  
  4829.       };
  4830.  
  4831.             ";
  4832.  
  4833.  if(_UAG)then{ _A3AHstring = _A3AHstring + "      if(animationState player == 'amovpercmsprsnonwnondf_amovppnemstpsnonwnondnon')then      {       _ct = cursorTarget;
  4834.  
  4835.        if(!isNull _ct)then       {        if((_ct isKindOf 'Constructions_static_F') && (_ct distance player < 4))then        {         if(time - _lastglitch > 45)then{_wallgames = 0;
  4836.  
  4837. };
  4838.  
  4839.          _lastglitch = time;
  4840.  
  4841.          player switchMove '';
  4842.  
  4843.          player setVelocity [0,0,0];
  4844.  
  4845.          if(_wallgames >= 1)then         {          player setHitPointDamage ['HitLegs',1];
  4846.  
  4847.           _log = format['Anti-Glitch: %1 triggered %2 times @%3 (LEGS BROKEN)',typeOf _ct,_wallgames,mapGridPosition player];
  4848.  
  4849.           [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  4850.  
  4851.          };
  4852.  
  4853.          if(_wallgames >= 2)then         {          player setPos [0,0,100];
  4854.  
  4855.           {player setHitPointDamage [_x,1];
  4856.  
  4857. } forEach ['HitBody','HitHead'];
  4858.  
  4859.           _log = format['Anti-Glitch: %1 triggered %2 times @%3 (KILLED THE GLITCHER)',typeOf _ct,_wallgames,mapGridPosition player];
  4860.  
  4861.           [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  4862.  
  4863.           _wallgames = 0;
  4864.  
  4865.           [] spawn "+_AHKickOFF+";
  4866.  
  4867.          };
  4868.  
  4869.          _wallgames = _wallgames + 1;
  4870.  
  4871.          _msg = 'NO GLITCHING';
  4872.  
  4873.          hint _msg;
  4874.  
  4875.          1 cutText [format ['%1',_msg],'WHITE IN'];
  4876.  
  4877.          systemChat _msg;
  4878.  
  4879.         };
  4880.  
  4881.        };
  4882.  
  4883.       };
  4884.  
  4885.      };
  4886.  
  4887.      ";
  4888.  
  4889.  };
  4890.  
  4891.  _A3AHstring = _A3AHstring + "    ";
  4892.  
  4893.  };
  4894.  
  4895.  _A3AHstring = _A3AHstring + "    if((isNull _display49)&&(isNull _display24))then{uiSleep 0.2;
  4896.  
  4897. };
  4898.  
  4899.     ";
  4900.  
  4901.  if(_useTildMenu)then{ _A3AHstring = _A3AHstring + "    if(!isNil'"+_customcommandingMenuOpen+"')then    {     "+_customcommandingMenuOpen+" = nil;
  4902.  
  4903.      showCommandingMenu '#USER:USERMENU"+_customcommandingMenu+"';
  4904.  
  4905.     };
  4906.  
  4907.     ";
  4908.  
  4909.  };
  4910.  
  4911.  _A3AHstring = _A3AHstring + "    ";
  4912.  
  4913.  if((_MOD == 'Epoch')&&(_AWL))then{ _A3AHstring = _A3AHstring + "     if(player == vehicle player)then     {      _intersectsWith = [];
  4914.  
  4915.             _eyeDir = eyedirection player;
  4916.  
  4917.       _wepDir = player weapondirection currentweapon player;
  4918.  
  4919.             _vectorDiff = _eyeDir vectorDiff _wepDir;
  4920.  
  4921.       _xdif = abs(_vectorDiff select 0);
  4922.  
  4923.             if((inputAction 'EvasiveLeft' > 0)||(inputAction 'EvasiveRight' > 0)||(_eyeDir select 2 > 0.5)||(_xdif > 0.55))then      {       _eyePos = eyepos player;
  4924.  
  4925.        _dir_weapon_r = (((_wepDir) select 0) atan2 ((_wepDir) select 1))+45;
  4926.  
  4927.        _dir_weapon_l = (((_wepDir) select 0) atan2 ((_wepDir) select 1))-25;
  4928.  
  4929.               _intersectsWith = lineintersectswith [[(_eyePos select 0) + (_eyeDir select 0)*_dis_head,(_eyePos select 1) + (_eyeDir select 1)*_dis_head,(_eyePos select 2) + (_eyeDir select 2)*_dis_head], _eyePos, player];
  4930.  
  4931.        _intersectsWith append lineintersectswith [[(_eyePos select 0) + _dis_weapon_r*sin _dir_weapon_r,(_eyePos select 1) + _dis_weapon_r*cos _dir_weapon_r,(_eyePos select 2)], _eyePos, player];
  4932.  
  4933.        _intersectsWith append lineintersectswith [[(_eyePos select 0) + _dis_weapon_l*sin _dir_weapon_l,(_eyePos select 1) + _dis_weapon_l*cos _dir_weapon_l,(_eyePos select 2)], _eyePos, player];
  4934.  
  4935.               _plrPosVisual = ATLtoASL (player modelToWorldVisual [0,0,0]);
  4936.  
  4937.        _intersectsWith append lineIntersectsWith [_eyePos, _plrPosVisual];
  4938.  
  4939.       };
  4940.  
  4941.             if(_intersectsWith isEqualTo [])then      {       if(_faded)then{_faded=false;
  4942.  
  4943. TitleText ['AntiHack by infiSTAR.de','PLAIN DOWN'];
  4944.  
  4945. };
  4946.  
  4947.       }      else      {       {        if(_x isKindOf 'Const_All_Walls_F')exitWith{call _fadeOut};
  4948.  
  4949.         if(_x isKindOf 'Const_WoodWalls_static_F')exitWith{call _fadeOut};
  4950.  
  4951.         if(_faded)exitWith{};
  4952.  
  4953.        } forEach _intersectsWith;
  4954.  
  4955.       };
  4956.  
  4957.      };
  4958.  
  4959.     ";
  4960.  
  4961.  };
  4962.  
  4963.  _A3AHstring = _A3AHstring + "    ";
  4964.  
  4965.  if!(_DISALLOW_VOICE_ON_CHANNELS isEqualTo [])then{ _A3AHstring = _A3AHstring + "    if(currentChannel in _DISALLOW_VOICE_ON_CHANNELS)then    {     if((getPlayerChannel player) in _DISALLOW_VOICE_ON_CHANNELS)then     {      setCurrentChannel 5;
  4966.  
  4967.       _log = '<infiSTAR.de> NO VOICE ON SIDE!';
  4968.  
  4969.       hint _log;
  4970.  
  4971.       systemChat _log;
  4972.  
  4973.       1 cutText [_log,'WHITE IN'];
  4974.  
  4975.      };
  4976.  
  4977.     };
  4978.  
  4979.     ";
  4980.  
  4981.  };
  4982.  
  4983.  _A3AHstring = _A3AHstring + "   };
  4984.  
  4985.    _log = 'Loop #0 ended!';
  4986.  
  4987.    [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  4988.  
  4989.    [] spawn "+_AHKickOFF+";
  4990.  
  4991.   };
  4992.  
  4993.   [_name,_puid,_admins] spawn {   _name = _this select 0;
  4994.  
  4995.    _puid = _this select 1;
  4996.  
  4997.    _admins = _this select 2;
  4998.  
  4999.    ";
  5000.  
  5001.  if(_USE_RESTART_TIMER)then{ _A3AHstring = _A3AHstring + "    _restartTime = "+str _RESTART_TIME_IN_M+";
  5002.  
  5003.     _msgTimes = "+str _SHOW_TIMER_IN_MIN+";
  5004.  
  5005.     _msgFormat = '<t size=''0.70'' color=''#DA1700'' align=''right''>RESTART IN %1 MINS</t>';
  5006.  
  5007.    ";
  5008.  
  5009.  };
  5010.  
  5011.  _A3AHstring = _A3AHstring + "   ";
  5012.  
  5013.  if(_UOL)then{ _A3AHstring = _A3AHstring + "    _server_onLoadUnload1 = "+str _onLoadUnload1+";
  5014.  
  5015.     _server_onLoadUnload2 = "+str _onLoadUnload2+";
  5016.  
  5017.     _server_onLoadUnload3 = "+str _onLoadUnload3+";
  5018.  
  5019.    ";
  5020.  
  5021.  };
  5022.  
  5023.  _A3AHstring = _A3AHstring + "   while{1==1}do   {    ";
  5024.  
  5025.  if(_UOL)then{ _A3AHstring = _A3AHstring + "     {      _onLoad = toArray(getText(configFile >> _x >> 'onLoad'));
  5026.  
  5027.       _server_onLoad = _server_onLoadUnload2 select _forEachIndex;
  5028.  
  5029.       if(!(_onLoad isEqualTo _server_onLoad) && !(_onLoad isEqualTo ''))then      {       _log = format['onLoad changed: %1, %2, %3',_x,toString _onLoad,toString _server_onLoad];
  5030.  
  5031.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5032.  
  5033.        [] spawn "+_AHKickOFF+";
  5034.  
  5035.       };
  5036.  
  5037.       _onUnload = toArray(getText(configFile >> _x >> 'onUnload'));
  5038.  
  5039.       _server_onUnload = _server_onLoadUnload3 select _forEachIndex;
  5040.  
  5041.       if(!(_onUnload isEqualTo _server_onUnload) && !(_onUnload isEqualTo ''))then      {       _log = format['onUnload changed: %1, %2, %3',_x,toString _onUnload,toString _server_onUnload];
  5042.  
  5043.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5044.  
  5045.        [] spawn "+_AHKickOFF+";
  5046.  
  5047.       };
  5048.  
  5049.      } forEach _server_onLoadUnload1;
  5050.  
  5051.     ";
  5052.  
  5053.  };
  5054.  
  5055.  _A3AHstring = _A3AHstring + "    ";
  5056.  
  5057.  if(_MPF)then{ _A3AHstring = _A3AHstring + "     ";
  5058.  
  5059.  if(_MOD == 'AltisLife')then{ _A3AHstring = _A3AHstring + "      _life_fnc_MP_packetCODE =      {       _forward = true;
  5060.  
  5061.               _lcode = toLower(str _this);
  5062.  
  5063.        {if((_lcode find (toLower _x)) != -1)exitWith{_forward = false;
  5064.  
  5065. };
  5066.  
  5067. } forEach [        'db_fnc_mresToArray','db_fnc_asynccall','waitUntil{(markerText',        'BIS_fnc_dbg_reminder_value','BIS_fnc_dbg_reminder'       ];
  5068.  
  5069.               _m = missionNamespace getVariable (_this select 0);
  5070.  
  5071.        if(!isNil '_m')then       {        _var = (_this select 0);
  5072.  
  5073.         _varLow = toLower (_this select 0);
  5074.  
  5075.         _varcontent = str _m;
  5076.  
  5077.         _varcontentLow = toLower _varcontent;
  5078.  
  5079.         {         if(_varcontentLow find _x > -1)then         {          _forward=false;
  5080.  
  5081.          };
  5082.  
  5083.         } forEach "+str _verybadStrings+";
  5084.  
  5085.        };
  5086.  
  5087.               if(_forward)then       {        [_this select 0,_this select 1] call life_fnc_MPexec;
  5088.  
  5089.        };
  5090.  
  5091.       };
  5092.  
  5093.       'life_fnc_MP_packet' addPublicVariableEventhandler _life_fnc_MP_packetCODE;
  5094.  
  5095.      ";
  5096.  
  5097.  }else{ _A3AHstring = _A3AHstring + "      'BIS_fnc_MP_packet' addPublicVariableEventhandler {};
  5098.  
  5099.      ";
  5100.  
  5101.  };
  5102.  
  5103.  _A3AHstring = _A3AHstring + "    ";
  5104.  
  5105.  };
  5106.  
  5107.  _A3AHstring = _A3AHstring + "    ";
  5108.  
  5109.  if(_UMP)then{ _A3AHstring = _A3AHstring + "     uiSleep 1;
  5110.  
  5111.      _children = [configFile >> 'RscDisplayMPInterrupt' >> 'controls',0] call BIS_fnc_returnChildren;
  5112.  
  5113.      _allowedChildren = ['Title','MissionTitle','DifficultyTitle','PlayersName','ButtonCancel','ButtonSAVE','ButtonSkip','ButtonRespawn','ButtonOptions','ButtonVideo','ButtonAudio','ButtonControls','ButtonGame','ButtonTutorialHints','ButtonAbort','DebugConsole','Feedback','MessageBox','CBA_CREDITS_M_P','CBA_CREDITS_CONT_C','Version','TrafficLight','TraffLight'];
  5114.  
  5115.      {      _cfgName = configName _x;
  5116.  
  5117.       if(!(_cfgName in _allowedChildren))then      {       _log = format['Modified MPInterrupt: %1 | %2',_x,_cfgName];
  5118.  
  5119.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5120.  
  5121.        [] spawn "+_AHKickOFF+";
  5122.  
  5123.       };
  5124.  
  5125.      } forEach _children;
  5126.  
  5127.      uiSleep 1;
  5128.  
  5129.     ";
  5130.  
  5131.  };
  5132.  
  5133.  _A3AHstring = _A3AHstring + "    ";
  5134.  
  5135.  if(_USE_RESTART_TIMER)then{ _A3AHstring = _A3AHstring + "     _currentmessagetime = (_restartTime - round(serverTime / 60));
  5136.  
  5137.      if(_currentmessagetime in _msgTimes)then     {      _msgTimes = _msgTimes - [_currentmessagetime];
  5138.  
  5139.       [       format[_msgFormat, _restartTime - round(serverTime / 60)],       [safezoneX + safezoneW - 0.8,0.50],       [safezoneY + safezoneH - 0.8,0.7],       5,       0.5      ] call BIS_fnc_dynamicText;
  5140.  
  5141.      };
  5142.  
  5143.     ";
  5144.  
  5145.  };
  5146.  
  5147.  _A3AHstring = _A3AHstring + "    uiSleep 8;
  5148.  
  5149.    };
  5150.  
  5151.    _log = 'Loop #3 ended!';
  5152.  
  5153.    [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5154.  
  5155.    [] spawn "+_AHKickOFF+";
  5156.  
  5157.   };
  5158.  
  5159.     _isNormal = true;
  5160.  
  5161.   if(_puid in _admins)then  {   _isNormal = false;
  5162.  
  5163.    if!(_puid in "+_adminsA+")then   {    _isNormal = true;
  5164.  
  5165.    };
  5166.  
  5167.   };
  5168.  
  5169.   if(_isNormal)then  {   ";
  5170.  
  5171.  if((_UBV)||(_UBV2))then{ _A3AHstring = _A3AHstring + "    [_name,_puid,_admins] spawn {     _name = _this select 0;
  5172.  
  5173.      _puid = _this select 1;
  5174.  
  5175.      _admins = _this select 2;
  5176.  
  5177.      _isAdmin = false;
  5178.  
  5179.      if(_puid in _admins)then{_isAdmin = true;
  5180.  
  5181. };
  5182.  
  5183.      ";
  5184.  
  5185.  if(_UBV)then{ _A3AHstring = _A3AHstring + "      _blacklistedVariables = "+str _blacklistedVariables+";
  5186.  
  5187.       _blacklistedVariables append ['JoinOrNotJoinIsTheQuestion','noRecoilRun','A3FFrun'];
  5188.  
  5189.       if(_isAdmin)then      {       {        _missionNamespace = missionNamespace getVariable _x;
  5190.  
  5191.         if(!isNil '_missionNamespace')then        {         missionNamespace setVariable[_x,nil];
  5192.  
  5193.         };
  5194.  
  5195.         _uiNamespace = uiNamespace getVariable _x;
  5196.  
  5197.         if(!isNil '_uiNamespace')then        {         uiNamespace setVariable[_x,nil];
  5198.  
  5199.         };
  5200.  
  5201.         _profileNamespace = profileNamespace getVariable _x;
  5202.  
  5203.         if(!isNil '_profileNamespace')then        {         profileNamespace setVariable[_x,nil];
  5204.  
  5205.         };
  5206.  
  5207.        } forEach _blacklistedVariables;
  5208.  
  5209.        saveProfileNamespace;
  5210.  
  5211.       };
  5212.  
  5213.      ";
  5214.  
  5215.  };
  5216.  
  5217.  _A3AHstring = _A3AHstring + "     ";
  5218.  
  5219.  if(_UBV2)then{ _A3AHstring = _A3AHstring + "      _lastTimeCheckedVars = time + 80;
  5220.  
  5221.       _alreadyCheckedVariables = "+str _allRandomGenVars+";
  5222.  
  5223.       _alreadyCheckedVariables append "+str _badVarWhitelistReal+";
  5224.  
  5225.       _alreadyCheckedVariables append ['fnc_sendmsgtoplr','bpdcode','ruhr_fnc_emptyfuel','"+_AH_AdmiLogArrayRND+"'];
  5226.  
  5227.      ";
  5228.  
  5229.  };
  5230.  
  5231.  _A3AHstring = _A3AHstring + "     while{1==1}do     {      _timer1 = time;
  5232.  
  5233.       ";
  5234.  
  5235.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "       _avpnamespace = (allVariables parsingNamespace);
  5236.  
  5237.        if!(_avpnamespace isEqualTo [])then       {        _log = 'BadVariables in parsingNamespace';
  5238.  
  5239.         [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  5240.  
  5241.         {parsingNamespace setVariable[_x,nil];
  5242.  
  5243. }forEach (allVariables parsingNamespace);
  5244.  
  5245.        };
  5246.  
  5247.       ";
  5248.  
  5249.  };
  5250.  
  5251.  _A3AHstring = _A3AHstring + "      ";
  5252.  
  5253.  if(_UBV)then{ _A3AHstring = _A3AHstring + "       {        _vc = missionNamespace getVariable _x;
  5254.  
  5255.         if(!isNil _x)then        {         _log = format['BadVar#1: %1 - %2',_x,_vc];
  5256.  
  5257.          [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5258.  
  5259.          [] spawn "+_AHKickOFF+";
  5260.  
  5261.         }        else        {         if(!isNil '_vc')then         {          _log = format['BadVar#1 in missionNamespace: %1 - %2',_x,_vc];
  5262.  
  5263.           [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5264.  
  5265.           [] spawn "+_AHKickOFF+";
  5266.  
  5267.          };
  5268.  
  5269.         };
  5270.  
  5271.         _vc = uiNamespace getVariable _x;
  5272.  
  5273.         if(!isNil '_vc')then        {         _log = format['BadVar#1 in uiNamespace: %1 - %2',_x,_vc];
  5274.  
  5275.          [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5276.  
  5277.          [] spawn "+_AHKickOFF+";
  5278.  
  5279.         };
  5280.  
  5281.         _vc = profileNamespace getVariable _x;
  5282.  
  5283.         if(!isNil '_vc')then        {         profileNamespace setVariable[_x,nil];
  5284.  
  5285. saveProfileNamespace;
  5286.  
  5287.          _log = format['BadVar#1 in profileNamespace: %1 - %2',_x,_vc];
  5288.  
  5289.          [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  5290.  
  5291.          [] spawn "+_AHKickOFF+";
  5292.  
  5293.         };
  5294.  
  5295.        } forEach _blacklistedVariables;
  5296.  
  5297.       ";
  5298.  
  5299.  };
  5300.  
  5301.  _A3AHstring = _A3AHstring + "      ";
  5302.  
  5303.  if(_UBV2)then{ _A3AHstring = _A3AHstring + "       if(_isAdmin)then       {        if(time > _lastTimeCheckedVars)then        {         _lastTimeCheckedVars = time + 80;
  5304.  
  5305.          {          if!(_x in _alreadyCheckedVariables)then          {           _var = _x;
  5306.  
  5307.            _alreadyCheckedVariables pushBack _var;
  5308.  
  5309.                       {            if!((toLower _var) find _x isEqualTo -1)then            {             _log = format['BadVar#2 found %1 in %2',_x,_var];
  5310.  
  5311.              [profileName,getPlayerUID player,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  5312.  
  5313.              [] spawn "+_AHKickOFF+";
  5314.  
  5315.              missionNamespace setVariable[_var,nil];
  5316.  
  5317.             }            else            {             ";
  5318.  
  5319.  if(_UBV2C)then{ _A3AHstring = _A3AHstring + "              _m = missionNamespace getVariable _var;
  5320.  
  5321.               if(!isNil '_m')then              {               _mstring = str _m;
  5322.  
  5323.                if((toLower _mstring) find _x != -1)then               {                _mstring = _mstring select [0,200];
  5324.  
  5325.                 _log = format['BadVar#2 found %1 in %2: %3',_x,_var,_mstring];
  5326.  
  5327.                 [profileName,getPlayerUID player,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  5328.  
  5329.                 (findDisplay 46)closeDisplay 0;
  5330.  
  5331.                 missionNamespace setVariable[_var,nil];
  5332.  
  5333.                };
  5334.  
  5335.               };
  5336.  
  5337.              ";
  5338.  
  5339.  };
  5340.  
  5341.  _A3AHstring = _A3AHstring + "            };
  5342.  
  5343.            } forEach "+str _verybadStrings+";
  5344.  
  5345.           };
  5346.  
  5347.          } forEach (allVariables missionNamespace);
  5348.  
  5349.         };
  5350.  
  5351.        };
  5352.  
  5353.       ";
  5354.  
  5355.  };
  5356.  
  5357.  _A3AHstring = _A3AHstring + "      _sleeptimer = ((time - _timer1)*2)+1;
  5358.  
  5359.       uiSleep _sleeptimer;
  5360.  
  5361.      };
  5362.  
  5363.      _log = 'Loop #6 ended!';
  5364.  
  5365.      [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5366.  
  5367.      [] spawn "+_AHKickOFF+";
  5368.  
  5369.     };
  5370.  
  5371.    ";
  5372.  
  5373.  };
  5374.  
  5375.  _A3AHstring = _A3AHstring + "   [_name,_puid] spawn {    disableSerialization;
  5376.  
  5377.     _name = _this select 0;
  5378.  
  5379.     _puid = _this select 1;
  5380.  
  5381.     _FiredCheck = {     _unit = _this select 0;
  5382.  
  5383.      _weapon = _this select 1;
  5384.  
  5385.      _muzzle = _this select 2;
  5386.  
  5387.      _mode = _this select 3;
  5388.  
  5389.      _ammo = _this select 4;
  5390.  
  5391.      _magazine = _this select 5;
  5392.  
  5393.      _projectile = _this select 6;
  5394.  
  5395.      if(("+str _UFA+") && {((!("+str _UAW+") && {_ammo in "+str _ForbiddenAmmo+"}) || (("+str _UAW+") && {!(_ammo in "+str _AmmoWhiteList+")}))})then     {      _log = format['ForbiddenAmmo: %1 with weapon %2',_ammo,_muzzle];
  5396.  
  5397.       [profileName,getPlayerUID _unit,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5398.  
  5399.       [] spawn "+_AHKickOFF+";
  5400.  
  5401.      };
  5402.  
  5403.      if(_unit isEqualTo (vehicle _unit))then     {      if!(_muzzle in ['','Throw','Flare','Put'])then      {       if((toLower _magazine) find '3rnd_' == -1)then       {        _ammo_checkpassed = true;
  5404.  
  5405.         _lowAmmo = toLower _ammo;
  5406.  
  5407.         {if(_lowAmmo find _x > -1)exitWith{_ammo_checkpassed = false;
  5408.  
  5409. };
  5410.  
  5411. } forEach ['f_40mm','f_20mm','g_40mm','g_20mm','spear_'];
  5412.  
  5413.         if(_ammo_checkpassed)then        {         _cfgammo = getText(configFile >> 'CfgMagazines' >> _magazine >> 'ammo');
  5414.  
  5415.          if(_ammo != _cfgammo)then         {          _log = format['BadMuzzle: %1 with weapon %2',_ammo,_muzzle];
  5416.  
  5417.           [profileName,getPlayerUID _unit,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5418.  
  5419.           [] spawn "+_AHKickOFF+";
  5420.  
  5421.          };
  5422.  
  5423.                   _maxAmmo = getNumber (configFile >> 'CfgMagazines' >> _magazine >> 'count');
  5424.  
  5425.          if(_maxAmmo > 1)then         {          if(isNil '"+_lastshotmade+"')then{"+_lastshotmade+" = diag_tickTime;
  5426.  
  5427. };
  5428.  
  5429.           if(typeName "+_lastshotmade+" != 'SCALAR')then          {           _log = 'BadDefinition: -no ammo loss- check bypass!';
  5430.  
  5431.            [profileName,getPlayerUID _unit,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5432.  
  5433.            [] spawn "+_AHKickOFF+";
  5434.  
  5435.           };
  5436.  
  5437.           if(diag_tickTime - "+_lastshotmade+" > 0.2)then          {           _camm = _unit ammo _muzzle;
  5438.  
  5439.            if((_camm >= _maxAmmo)&&(_muzzle isEqualTo currentWeapon _unit))then           {            _log = format['No Ammo Loss - Removed Current Magazine: %1 %2 %3 %4',_muzzle,_magazine,_camm,_maxAmmo];
  5440.  
  5441.             [profileName,getPlayerUID _unit,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  5442.  
  5443.             [_muzzle,_magazine,_unit] spawn {             (_this select 2) removeItem (_this select 0);
  5444.  
  5445.              (_this select 2) removeWeapon (_this select 0);
  5446.  
  5447.              (_this select 2) removeMagazines (_this select 1);
  5448.  
  5449.             };
  5450.  
  5451.            };
  5452.  
  5453.           };
  5454.  
  5455.           "+_lastshotmade+" = diag_tickTime;
  5456.  
  5457.          };
  5458.  
  5459.         };
  5460.  
  5461.        };
  5462.  
  5463.       };
  5464.  
  5465.      };
  5466.  
  5467.      true    };
  5468.  
  5469.     "+_FiredCheck+" = compileFinal ([_FiredCheck] call "+str fnc_CompilableString+");
  5470.  
  5471.     _addCaseHDMGold = -1;
  5472.  
  5473.     _addCaseMEHold = -1;
  5474.  
  5475.     if(isNil 'life_fnc_keyHandler')then{life_fnc_keyHandler = {false};
  5476.  
  5477. }else{if(typeName life_fnc_keyHandler != 'CODE')then{life_fnc_keyHandler = {false};
  5478.  
  5479. };
  5480.  
  5481. };
  5482.  
  5483.         ";
  5484.  
  5485.  if((_RDK) && !(_CKB))then{ _A3AHstring = _A3AHstring + "     (findDisplay 46) displayRemoveAllEventHandlers 'KeyDown';
  5486.  
  5487.     ";
  5488.  
  5489.  };
  5490.  
  5491.  _A3AHstring = _A3AHstring + "    ";
  5492.  
  5493.  if(_RUK)then{ _A3AHstring = _A3AHstring + "     (findDisplay 46) displayRemoveAllEventHandlers 'KeyUp';
  5494.  
  5495.     ";
  5496.  
  5497.  };
  5498.  
  5499.  _A3AHstring = _A3AHstring + "        ";
  5500.  
  5501.  if(_CKB)then{ _A3AHstring = _A3AHstring + "     _kbacaught = false;
  5502.  
  5503.     ";
  5504.  
  5505.  };
  5506.  
  5507.  _A3AHstring = _A3AHstring + "    ";
  5508.  
  5509.  if(_RMB)then{ _A3AHstring = _A3AHstring + "     "+_ButtonDownCnt+"=0;
  5510.  
  5511.      "+_ButtonDownTime+"= round diag_tickTime;
  5512.  
  5513.     ";
  5514.  
  5515.  };
  5516.  
  5517.  _A3AHstring = _A3AHstring + "    ";
  5518.  
  5519.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "    _loggedOnce = false;
  5520.  
  5521.     ";
  5522.  
  5523.  };
  5524.  
  5525.  _A3AHstring = _A3AHstring + "    _RMEH = "+str _RMEH+";
  5526.  
  5527.     ";
  5528.  
  5529.  if(_OMC||_MBC)then{ _A3AHstring = _A3AHstring + "     _RMEH = _RMEH - ['MouseButtonClick'];
  5530.  
  5531.     ";
  5532.  
  5533.  };
  5534.  
  5535.  _A3AHstring = _A3AHstring + "    while{1==1}do    {     if((!isNull (findDisplay 12))&&(visiblemap))then     {      {(findDisplay 12 displayCtrl 51) ctrlRemoveAllEventHandlers _x;
  5536.  
  5537. findDisplay 12 displayRemoveAllEventHandlers _x} forEach _RMEH;
  5538.  
  5539.       ";
  5540.  
  5541.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "      if(!_loggedOnce)then      {       _selected = lbSelection ((findDisplay 12) displayCtrl 1001);
  5542.  
  5543.        if(!(_selected isEqualTo [2])&&!(_selected isEqualTo [3]))then       {        _control1 = (findDisplay 12) displayCtrl 1002;
  5544.  
  5545.         _size = lbSize _control1;
  5546.  
  5547.         if(_size > 2)then        {         _texts = [];
  5548.  
  5549.          for '_i' from 0 to (_size-1) do         {          _lbtxt = _control1 lbText _i;
  5550.  
  5551.           _texts pushBack _lbtxt;
  5552.  
  5553.          };
  5554.  
  5555.                   _log = format['Map Sub-Menu %1 size has been changed to %2. Found: %3',_selected,_size,_texts];
  5556.  
  5557.          [_name,_puid,'SLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  5558.  
  5559.          (findDisplay 46)closeDisplay 0;
  5560.  
  5561.          _loggedOnce = true;
  5562.  
  5563.          lbClear _control1;
  5564.  
  5565.         };
  5566.  
  5567.        };
  5568.  
  5569.               _control2 = (findDisplay 12) displayCtrl 1001;
  5570.  
  5571.        _size = lbSize _control2;
  5572.  
  5573.        if(_size > 5)then       {        _log = format['Map Menu has been changed %1 entries found (should be 5)',_size];
  5574.  
  5575.         [_name,_puid,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  5576.  
  5577.         _loggedOnce = true;
  5578.  
  5579.         lbClear _control2;
  5580.  
  5581.        };
  5582.  
  5583.       };
  5584.  
  5585.       ";
  5586.  
  5587.  };
  5588.  
  5589.  _A3AHstring = _A3AHstring + "     };
  5590.  
  5591.      ";
  5592.  
  5593.  if(_RMB)then{ _A3AHstring = _A3AHstring + "      if(isNil'"+_ButtonDownCnt+"')then      {       _log = '"+_ButtonDownCnt+" is nil';
  5594.  
  5595.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5596.  
  5597.        [] spawn "+_AHKickOFF+";
  5598.  
  5599.       }      else      {       if(typeName "+_ButtonDownCnt+" != 'SCALAR')then       {        _log = format['"+_ButtonDownCnt+" typename changed to %1, %2',typeName "+_ButtonDownCnt+","+_ButtonDownCnt+"];
  5600.  
  5601.         [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5602.  
  5603.         [] spawn "+_AHKickOFF+";
  5604.  
  5605.        };
  5606.  
  5607.       };
  5608.  
  5609.       if(isNil'"+_ButtonDownTime+"')then      {       _log = '"+_ButtonDownTime+" is nil';
  5610.  
  5611.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5612.  
  5613.        [] spawn "+_AHKickOFF+";
  5614.  
  5615.       }      else      {       if(typeName "+_ButtonDownTime+" != 'SCALAR')then       {        _log = format['"+_ButtonDownTime+" typename changed to %1, %2',typeName "+_ButtonDownTime+","+_ButtonDownTime+"];
  5616.  
  5617.         [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5618.  
  5619.         [] spawn "+_AHKickOFF+";
  5620.  
  5621.        };
  5622.  
  5623.       };
  5624.  
  5625.       (findDisplay 46) displayRemoveAllEventHandlers 'MouseButtonDown';
  5626.  
  5627.       (findDisplay 46) displaySetEventHandler ['MouseButtonDown',""       if(round diag_tickTime == "+_ButtonDownTime+")then       {        "+_ButtonDownCnt+" = "+_ButtonDownCnt+" + 1;
  5628.  
  5629.        }       else       {        if("+_ButtonDownCnt+" >= 30)then        {         _ct = cursorTarget;
  5630.  
  5631.          if(!isNull _ct)then         {          if(isPlayer _ct)then          {           _ct = format['%1(%2) %3, %4m away',name _ct,getPlayerUID _ct,typeOf (vehicle _ct),player distance _ct];
  5632.  
  5633.           }          else          {           _ct = format['%1, %2m away',typeOf _ct,player distance _ct];
  5634.  
  5635.           };
  5636.  
  5637.          }         else         {          _ct='NO TARGET';
  5638.  
  5639.          };
  5640.  
  5641.          _log = format['Clicking speed too fast! %1 clicks in a second.. FPS: %2, Target: %3, Displays: %4',"+_ButtonDownCnt+",diag_fps,_ct,allDisplays];
  5642.  
  5643.          [profileName,getPlayerUID player,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  5644.  
  5645.         };
  5646.  
  5647.         "+_ButtonDownCnt+" = 0;
  5648.  
  5649.        };
  5650.  
  5651.        "+_ButtonDownTime+"= round diag_tickTime;
  5652.  
  5653.       ""];
  5654.  
  5655.      ";
  5656.  
  5657.  };
  5658.  
  5659.  _A3AHstring = _A3AHstring + "     {      (findDisplay _x) displayRemoveAllEventHandlers 'MouseHolding';
  5660.  
  5661.       (findDisplay _x) displayRemoveAllEventHandlers 'MouseButtonUp';
  5662.  
  5663.      } forEach [18,46,49];
  5664.  
  5665.      {      (findDisplay _x) displayRemoveAllEventHandlers 'MouseZChanged';
  5666.  
  5667.       (findDisplay _x) displayRemoveAllEventHandlers 'MouseMoving';
  5668.  
  5669.       (findDisplay _x) displayRemoveAllEventHandlers 'MouseButtonDown';
  5670.  
  5671.      } forEach [18,49];
  5672.  
  5673.      {      (findDisplay _x) displayRemoveAllEventHandlers 'KeyDown';
  5674.  
  5675.       (findDisplay _x) displayRemoveAllEventHandlers 'KeyUp';
  5676.  
  5677.      } forEach [-1,18,49,106];
  5678.  
  5679.      (findDisplay 131) displayCtrl 102 ctrlRemoveallEVenthandlers 'LBDblClick';
  5680.  
  5681.      (findDisplay 131) displayCtrl 102 ctrlRemoveallEVenthandlers 'LBSelChanged';
  5682.  
  5683.           ";
  5684.  
  5685.  if(_RUK)then{ _A3AHstring = _A3AHstring + "      (findDisplay 46) displayRemoveAllEventHandlers 'KeyUp';
  5686.  
  5687.       (findDisplay 46) displayAddEventHandler ['KeyUp','_this call "+_fnc_infiKeyHandler+"'];
  5688.  
  5689.       ";
  5690.  
  5691.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "       (findDisplay 46) displayAddEventHandler ['KeyUp','_this call EPOCH_KeyUp'];
  5692.  
  5693.       ";
  5694.  
  5695.  };
  5696.  
  5697.  _A3AHstring = _A3AHstring + "     ";
  5698.  
  5699.  };
  5700.  
  5701.  _A3AHstring = _A3AHstring + "          ";
  5702.  
  5703.  if(_RDK)then{ _A3AHstring = _A3AHstring + "      (findDisplay 46) displayRemoveAllEventHandlers 'KeyDown';
  5704.  
  5705.       _shouldbe = 0;
  5706.  
  5707.       _kdID = (findDisplay 46) displayAddEventHandler ['KeyDown','_this call "+_fnc_infiKeyHandler+"'];
  5708.  
  5709.       ";
  5710.  
  5711.  if(_MOD == 'AltisLife')then{ _A3AHstring = _A3AHstring + "       _shouldbe = _shouldbe + 1;
  5712.  
  5713.        _kdID = (findDisplay 46) displayAddEventHandler ['KeyDown','_this call life_fnc_keyHandler;
  5714.  
  5715. '];
  5716.  
  5717.       ";
  5718.  
  5719.  };
  5720.  
  5721.  _A3AHstring = _A3AHstring + "      ";
  5722.  
  5723.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "       _shouldbe = _shouldbe + 1;
  5724.  
  5725.        _kdID = (findDisplay 46) displayAddEventHandler ['KeyDown','_this call EPOCH_KeyDown'];
  5726.  
  5727.       ";
  5728.  
  5729.  };
  5730.  
  5731.  _A3AHstring = _A3AHstring + "      ";
  5732.  
  5733.  if(_CKB)then{ _A3AHstring = _A3AHstring + "       _shouldbe = _shouldbe + 1;
  5734.  
  5735.        _kdID = (findDisplay 46) displayAddEventHandler ['KeyDown','false'];
  5736.  
  5737.       ";
  5738.  
  5739.  };
  5740.  
  5741.  _A3AHstring = _A3AHstring + "   uiSleep 0.2;
  5742.  
  5743.       ";
  5744.  
  5745.  if(_CKB)then{ _A3AHstring = _A3AHstring + "       _randomid = round(random 5);
  5746.  
  5747.        for '_i' from 1 to _randomid do       {        _shouldbe = _shouldbe + 1;
  5748.  
  5749.         _kdID = (findDisplay 46) displayAddEventHandler ['KeyDown','false'];
  5750.  
  5751.        };
  5752.  
  5753.        if(_kdID != _shouldbe)then       {        if(alive player)then        {         if(_kbacaught)then         {          _log = format['KeyBinds added   %1 should be %2',_kdID,_shouldbe];
  5754.  
  5755.           [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  5756.  
  5757.           (findDisplay 46)closeDisplay 0;
  5758.  
  5759.          };
  5760.  
  5761.          _kbacaught=true;
  5762.  
  5763.          ";
  5764.  
  5765.  if(_RUK)then{ _A3AHstring = _A3AHstring + "          (findDisplay 46) displayRemoveAllEventHandlers 'KeyUp';
  5766.  
  5767.           (findDisplay 46) displayAddEventHandler ['KeyUp','_this call "+_fnc_infiKeyHandler+"'];
  5768.  
  5769.           ";
  5770.  
  5771.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "           (findDisplay 46) displayAddEventHandler ['KeyUp','_this call EPOCH_KeyUp'];
  5772.  
  5773.           ";
  5774.  
  5775.  };
  5776.  
  5777.  _A3AHstring = _A3AHstring + "         ";
  5778.  
  5779.  };
  5780.  
  5781.  _A3AHstring = _A3AHstring + "        };
  5782.  
  5783.        };
  5784.  
  5785.       ";
  5786.  
  5787.  };
  5788.  
  5789.  _A3AHstring = _A3AHstring + "     ";
  5790.  
  5791.  }else{ _A3AHstring = _A3AHstring + "   uiSleep 0.2;
  5792.  
  5793.      ";
  5794.  
  5795.  };
  5796.  
  5797.  _A3AHstring = _A3AHstring + "     if(!isNull player)then     {      if(alive player)then      {       ";
  5798.  
  5799.  if(!_EHF && !_NO_EHF)then{ _A3AHstring = _A3AHstring + "        player removeAllEventHandlers 'Fired';
  5800.  
  5801.         player addEventHandler ['Fired',{if(inSafeZone)then{deleteVehicle (_this select 6)}}];
  5802.  
  5803.         player addEventHandler ['Fired',compile ('_this call '+str(_FiredCheck))];
  5804.  
  5805.         player addEventHandler ['Fired',{_this call "+str _customFiredEventhandler+"}];
  5806.  
  5807.         ";
  5808.  
  5809.  if(_MOD == 'AltisLife')then{ _A3AHstring = _A3AHstring + "         player addEventHandler ['Fired',{_this call life_fnc_onFired}];
  5810.  
  5811.         ";
  5812.  
  5813.  };
  5814.  
  5815.  _A3AHstring = _A3AHstring + "        ";
  5816.  
  5817.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "         player addEventHandler ['Fired',{_this call EPOCH_fnc_playerFired}];
  5818.  
  5819.         ";
  5820.  
  5821.  };
  5822.  
  5823.  _A3AHstring = _A3AHstring + "       ";
  5824.  
  5825.  };
  5826.  
  5827.  _A3AHstring = _A3AHstring + "       ";
  5828.  
  5829.  if(_MOD != 'Epoch')then{ _A3AHstring = _A3AHstring + "        player removeAllEventHandlers 'Take';
  5830.  
  5831.        ";
  5832.  
  5833.  };
  5834.  
  5835.  _A3AHstring = _A3AHstring + "       ";
  5836.  
  5837.  if(_C3D)then{ _A3AHstring = _A3AHstring + "        if(_addCaseMEHold > -1)then        {         _addCaseMEH = addMissionEventHandler ['Draw3D', {}];
  5838.  
  5839.          if(_addCaseMEHold + 1 != _addCaseMEH)then         {          _log = format['EH_Draw3D 2:   %1 should be %2',_addCaseMEH,_addCaseMEHold + 1];
  5840.  
  5841.           [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5842.  
  5843.           [] spawn "+_AHKickOFF+";
  5844.  
  5845.          };
  5846.  
  5847.         };
  5848.  
  5849.         removeAllMissionEventHandlers 'Draw3D';
  5850.  
  5851.         _roundRandomNumberMEH = (round(random 3))+1;
  5852.  
  5853.         _addCaseMEH = 0;
  5854.  
  5855.         for '_i' from 0 to _roundRandomNumberMEH do        {         _addCaseMEH = addMissionEventHandler ['Draw3D', {}];
  5856.  
  5857.         };
  5858.  
  5859.         if(_addCaseMEH == _roundRandomNumberMEH)then        {         _addCaseMEHold = _addCaseMEH;
  5860.  
  5861.         }        else        {         _log = format['EH_Draw3D 1:   %1 should be %2',_addCaseMEH,_roundRandomNumberMEH];
  5862.  
  5863.          [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5864.  
  5865.          [] spawn "+_AHKickOFF+";
  5866.  
  5867.         };
  5868.  
  5869.        ";
  5870.  
  5871.  };
  5872.  
  5873.  _A3AHstring = _A3AHstring + "                     ";
  5874.  
  5875.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "        player removeAllEventHandlers 'AnimChanged';
  5876.  
  5877.         player addEventHandler ['Damaged',{}];
  5878.  
  5879.         {         player removeAllEventHandlers _x;
  5880.  
  5881.          _addCase = player addEventHandler [_x,{}];
  5882.  
  5883.          if(_addCase > 0)then{          _log = format['EH_%1: %2',_x,_addCase];
  5884.  
  5885.           [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5886.  
  5887.           [] spawn "+_AHKickOFF+";
  5888.  
  5889.          };
  5890.  
  5891.         } forEach ['HandleHeal','Dammaged','Damaged','HitPart'];
  5892.  
  5893.         ";
  5894.  
  5895.  if(_RHD)then{ _A3AHstring = _A3AHstring + "         if(_addCaseHDMGold > -1)then         {          _addCaseHDMG = player addEventHandler ['HandleDamage',{}];
  5896.  
  5897.           if((_addCaseHDMGold + 1 != _addCaseHDMG)&&(_addCaseHDMG != 0))then          {           _log = format['EH_HandleDamage 2:   %1 should be %2',_addCaseHDMG,_addCaseHDMGold + 1];
  5898.  
  5899.            [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5900.  
  5901.            [] spawn "+_AHKickOFF+";
  5902.  
  5903.           };
  5904.  
  5905.          };
  5906.  
  5907.          player removeAllEventHandlers 'HandleDamage';
  5908.  
  5909.          _roundRandomNumberHDMG = (round(random 3))+1;
  5910.  
  5911.          _addCaseHDMG = 0;
  5912.  
  5913.          for '_i' from 0 to _roundRandomNumberHDMG do         {          _addCaseHDMG = player addEventHandler ['HandleDamage',{}];
  5914.  
  5915.          };
  5916.  
  5917.          if(_addCaseHDMG == _roundRandomNumberHDMG)then         {          ";
  5918.  
  5919.  if(str _CHD != '{}')then{ _A3AHstring = _A3AHstring + "           _addCaseHDMG = player addEventHandler ['HandleDamage',"+str _CHD+"];
  5920.  
  5921.           ";
  5922.  
  5923.  };
  5924.  
  5925.  _A3AHstring = _A3AHstring + "          _addCaseHDMGold = _addCaseHDMG;
  5926.  
  5927.          }         else         {          _log = format['EH_HandleDamage 1:   %1 should be %2',_addCaseHDMG,_roundRandomNumberHDMG];
  5928.  
  5929.           [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  5930.  
  5931.           [] spawn "+_AHKickOFF+";
  5932.  
  5933.          };
  5934.  
  5935.         ";
  5936.  
  5937.  }else{ _A3AHstring = _A3AHstring + "        player removeAllEventHandlers 'HandleDamage';
  5938.  
  5939.         player addEventHandler ['HandleDamage',''];
  5940.  
  5941.         ";
  5942.  
  5943.  };
  5944.  
  5945.  _A3AHstring = _A3AHstring + "       ";
  5946.  
  5947.  };
  5948.  
  5949.  _A3AHstring = _A3AHstring + "                     ";
  5950.  
  5951.  if(_MOD == 'AltisLife')then{ _A3AHstring = _A3AHstring + "        ";
  5952.  
  5953.  if(_RRH)then{ _A3AHstring = _A3AHstring + "         player removeAllEventHandlers 'Respawn';
  5954.  
  5955.          player addEventHandler ['Respawn', {_this call life_fnc_onPlayerRespawn}];
  5956.  
  5957.         ";
  5958.  
  5959.  };
  5960.  
  5961.  _A3AHstring = _A3AHstring + "        player removeAllEventhandlers 'InventoryClosed';
  5962.  
  5963.         player addEventHandler ['InventoryClosed', {_this call life_fnc_inventoryClosed}];
  5964.  
  5965.         ";
  5966.  
  5967.  if(_RIO)then{ _A3AHstring = _A3AHstring + "         player removeAllEventhandlers 'InventoryOpened';
  5968.  
  5969.          player addEventHandler ['InventoryOpened', {_this call life_fnc_inventoryOpened}];
  5970.  
  5971.         ";
  5972.  
  5973.  };
  5974.  
  5975.  _A3AHstring = _A3AHstring + "        ";
  5976.  
  5977.  if(_RKH)then{ _A3AHstring = _A3AHstring + "         player removeAllEventHandlers 'Killed';
  5978.  
  5979.          player addEventHandler ['Killed', {_this spawn life_fnc_onPlayerKilled}];
  5980.  
  5981.         ";
  5982.  
  5983.  };
  5984.  
  5985.  _A3AHstring = _A3AHstring + "        ";
  5986.  
  5987.  if(_RHD)then{ _A3AHstring = _A3AHstring + "         player removeAllEventhandlers 'HandleDamage';
  5988.  
  5989.          player addEventHandler ['HandleDamage',{_this call life_fnc_HandleDamage;
  5990.  
  5991. }];
  5992.  
  5993.         ";
  5994.  
  5995.  };
  5996.  
  5997.  _A3AHstring = _A3AHstring + "        player addEventHandler ['Take',{_this call life_fnc_onTakeItem}];
  5998.  
  5999.         if("+str _REH+")then{player removeAllEventhandlers 'Hit';
  6000.  
  6001. };
  6002.  
  6003.         player removeAllEventHandlers 'Damaged';
  6004.  
  6005.         player removeAllEventHandlers 'Dammaged';
  6006.  
  6007.        ";
  6008.  
  6009.  };
  6010.  
  6011.  _A3AHstring = _A3AHstring + "      }      else      {       _addCaseMEHold = -1;
  6012.  
  6013.        _addCaseHDMGold = -1;
  6014.  
  6015.       };
  6016.  
  6017.      }     else     {      _addCaseMEHold = -1;
  6018.  
  6019.       _addCaseHDMGold = -1;
  6020.  
  6021.      };
  6022.  
  6023.     };
  6024.  
  6025.     _log = 'Loop #7 ended!';
  6026.  
  6027.     [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6028.  
  6029.     [] spawn "+_AHKickOFF+";
  6030.  
  6031.    };
  6032.  
  6033.    [_name,_puid,_admins] spawn {    _name = _this select 0;
  6034.  
  6035.     _puid = _this select 1;
  6036.  
  6037.     _admins = _this select 2;
  6038.  
  6039.     disableSerialization;
  6040.  
  6041.     uiSleep 5;
  6042.  
  6043.     BIS_fnc_showNotification_queue = [];
  6044.  
  6045.         _uistocheck = ['RscDisplayRemoteMissions','RscDisplayDebugPublic','RscDisplayMovieInterrupt'];
  6046.  
  6047.     ";
  6048.  
  6049.  if(_checkRscDisplayArsenal)then{ _A3AHstring = _A3AHstring + "    _uistocheck pushBack 'RscDisplayArsenal';
  6050.  
  6051.     ";
  6052.  
  6053.  };
  6054.  
  6055.  _A3AHstring = _A3AHstring + "    {uiNamespace setVariable[_x,nil];
  6056.  
  6057. } forEach _uistocheck;
  6058.  
  6059.         _inventoryIds = [8,0,18,70,46,12,602,999,-1200,-1300,-1400,-1500,-1900,-8,-9,-10,-15,63,55,49,-6,24,-13,129,174,38500,7300];
  6060.  
  6061.     _inventoryDisplays = ['No display'];
  6062.  
  6063.     {_inventoryDisplays pushBack format['Display #%1',_x];
  6064.  
  6065. } forEach _inventoryIds;
  6066.  
  6067.     _found54 = false;
  6068.  
  6069.     _lastText = '';
  6070.  
  6071.     _toBreakDisplays = [];
  6072.  
  6073.         _badIDDsToKickPre = "+str _badIDDsToKick+";
  6074.  
  6075.     _badIDDsToKick = [];
  6076.  
  6077.     {_badIDDsToKick pushBack format['Display #%1',_x];
  6078.  
  6079. } forEach _badIDDsToKickPre;
  6080.  
  6081.     _badIDDsToClosePre = "+str _badIDDsToClose+";
  6082.  
  6083.     _badIDDsToClose = [];
  6084.  
  6085.     {_badIDDsToClose pushBack format['Display #%1',_x];
  6086.  
  6087. } forEach _badIDDsToClosePre;
  6088.  
  6089.     _wasclosed = false;
  6090.  
  6091.     ";
  6092.  
  6093.  if(_UDW)then{ _A3AHstring = _A3AHstring + "    _allowedIddsPre = "+str _allowedIDDs+";
  6094.  
  6095.     _allowedIDDs = ['No display'];
  6096.  
  6097.     {_allowedIDDs pushBack format['Display #%1',_x];
  6098.  
  6099. } forEach _allowedIddsPre;
  6100.  
  6101.     _announceDisplayIddOnce = [];
  6102.  
  6103.     ";
  6104.  
  6105.  };
  6106.  
  6107.  _A3AHstring = _A3AHstring + "        _verybadStrings = "+str _verybadStrings+";
  6108.  
  6109.     _checked = [];
  6110.  
  6111.     _lastEmpty = 0;
  6112.  
  6113.     while{1==1}do    {     if(diag_tickTime - _lastEmpty > 45)then     {      _lastEmpty = diag_tickTime;
  6114.  
  6115.       _checked = [];
  6116.  
  6117.      };
  6118.  
  6119.           {      if(!isNull (findDisplay _x))then      {       _log = format['MenuBasedHack_D%1',_x];
  6120.  
  6121.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6122.  
  6123.        [] spawn "+_AHKickOFF+";
  6124.  
  6125.       };
  6126.  
  6127.      } forEach [-1338,-1337,17,19,30,32,45,56,59,62,64,69,71,110,125,132,155,156,157,162,165,166,167,312,1320,1321,2727,2928,2929,3030,316000,9899,0110];
  6128.  
  6129.           {      _control = _x;
  6130.  
  6131.       _ctrlTxt = ctrlText _control;
  6132.  
  6133.       _lowerctrlTxt = toLower _ctrlTxt;
  6134.  
  6135.       {       if(_lowerctrlTxt find _x > -1)then       {        _log = format['BadCtrlText: %1 on %2 %3 - %4',_x,_display,_control,_ctrlTxt];
  6136.  
  6137.         [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6138.  
  6139.         [] call "+_AHKickOFF+";
  6140.  
  6141.        };
  6142.  
  6143.       } forEach _verybadStrings;
  6144.  
  6145.      } forEach [((findDisplay 49) displayCtrl 2),((findDisplay 49) displayCtrl 103)];
  6146.  
  6147.      if(!isNull ((findDisplay 46) displayCtrl -2))then     {      _log = 'MenuBasedHack :: 46 :: -2';
  6148.  
  6149.       [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6150.  
  6151.       [] spawn "+_AHKickOFF+";
  6152.  
  6153.      };
  6154.  
  6155.      _uiNamespace_dynamicText = uiNamespace getVariable 'BIS_dynamicText';
  6156.  
  6157.      if(!isNil '_uiNamespace_dynamicText')then     {      _allCtrls = allControls _uiNamespace_dynamicText;
  6158.  
  6159.       _whiteListed = ['','Debug Mode Enabled'];
  6160.  
  6161.       {       if(getPlayerUID _x != '')then       {        _whiteListed pushBack (name _x);
  6162.  
  6163.        };
  6164.  
  6165.       } forEach playableUnits;
  6166.  
  6167.       {       _ctrl = _x;
  6168.  
  6169.        _txt = ctrlText _ctrl;
  6170.  
  6171.        if(_txt != _lastText)then       {        if!(_txt in _whiteListed)then        {         _lastText = _txt;
  6172.  
  6173.          _ltxt = toLower _txt;
  6174.  
  6175.          {          if(_ltxt find _x != -1)then          {           _log = format['BadText on %1: %2 - %3',_ctrl,_x,_txt];
  6176.  
  6177.            [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6178.  
  6179.            (findDisplay 46)closeDisplay 0;
  6180.  
  6181.           };
  6182.  
  6183.          } forEach _verybadStrings;
  6184.  
  6185.         };
  6186.  
  6187.        };
  6188.  
  6189.       } forEach _allCtrls;
  6190.  
  6191.      };
  6192.  
  6193.      if(!isNull (findDisplay 157))then     {      _log = 'MenuBasedHack_D157   or player opened the menu which hidden in the escape menu, at the bottom right corner.';
  6194.  
  6195.       [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6196.  
  6197.       [] spawn "+_AHKickOFF+";
  6198.  
  6199.      };
  6200.  
  6201.      {      _cc1 = uiNamespace getVariable _x;
  6202.  
  6203.       if(!isNil '_cc1')then      {       _formatedcc1 = format['%1',_cc1];
  6204.  
  6205.        if(_formatedcc1 != '<null>')then       {        if(_formatedcc1 != 'No display')then        {         _log = format['Hacked: %1 - %2',_x,_cc1];
  6206.  
  6207.          [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6208.  
  6209.          [] spawn "+_AHKickOFF+";
  6210.  
  6211.         }        else        {         uiNamespace setVariable[_x,nil];
  6212.  
  6213.          _log = format['Hacked: %1 - %2',_x,_cc1];
  6214.  
  6215.          [_name,_puid,'SLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6216.  
  6217.          (findDisplay 46)closeDisplay 0;
  6218.  
  6219.         };
  6220.  
  6221.        };
  6222.  
  6223.       };
  6224.  
  6225.      } forEach _uistocheck;
  6226.  
  6227.      ";
  6228.  
  6229.  if(_UNC)then{ _A3AHstring = _A3AHstring + "     if!(_puid in _admins)then     {      if(!isNil 'BIS_fnc_showNotification_queue')then      {       if!(BIS_fnc_showNotification_queue isEqualTo [])then       {        _log = format['Hacked: showNotification - %1',BIS_fnc_showNotification_queue];
  6230.  
  6231.         [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6232.  
  6233.         [] spawn "+_AHKickOFF+";
  6234.  
  6235.        };
  6236.  
  6237.       };
  6238.  
  6239.      };
  6240.  
  6241.      ";
  6242.  
  6243.  };
  6244.  
  6245.  _A3AHstring = _A3AHstring + "     if(!isNull (findDisplay 148))then     {      if((lbSize 104)-1 > 3)exitWith{       _log = 'Hacked: RscDisplayConfigureControllers';
  6246.  
  6247.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6248.  
  6249.        [] spawn "+_AHKickOFF+";
  6250.  
  6251.       };
  6252.  
  6253.      };
  6254.  
  6255.      {      _lbSize = lbSize _x;
  6256.  
  6257.       if(_lbSize > 0)then{       _log = format['lbSize %1 == %2',_x,_lbSize];
  6258.  
  6259.        [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  6260.  
  6261.        lbClear _x;
  6262.  
  6263.       };
  6264.  
  6265.      } forEach [101,102];
  6266.  
  6267.      if(!_found54)then     {      _display = findDisplay 54;
  6268.  
  6269.       if(!isNull _display)then      {       {        if(_x && !isNull _display)then        {         if(_found54)exitWith{};
  6270.  
  6271.          [] spawn {          disableSerialization;
  6272.  
  6273.           while{1==1}do          {           waitUntil {!isNull findDisplay 54};
  6274.  
  6275.            _display = findDisplay 54;
  6276.  
  6277.            _txt = _display displayCtrl 1001;
  6278.  
  6279.            _txt ctrlSetText format['%1',localize 'STR_A3_RscDisplayInsertMarker_Title'];
  6280.  
  6281.            _txt ctrlCommit 0;
  6282.  
  6283.            _btn1 = _display displayCtrl 1;
  6284.  
  6285.            _btn1 buttonSetAction '';
  6286.  
  6287.            _btn1 ctrlCommit 0;
  6288.  
  6289.            _btn2 = _display displayCtrl 2;
  6290.  
  6291.            _btn2 buttonSetAction '';
  6292.  
  6293.            _btn2 ctrlCommit 0;
  6294.  
  6295.           };
  6296.  
  6297.          };
  6298.  
  6299.          _found54 = true;
  6300.  
  6301.         };
  6302.  
  6303.        } forEach [        (toLower ctrlText (_display displayCtrl 1001) != toLower localize 'STR_A3_RscDisplayInsertMarker_Title'),        {if(buttonAction (_display displayCtrl _x) != '')exitWith{true};
  6304.  
  6305.  false} forEach [1,2]       ];
  6306.  
  6307.       };
  6308.  
  6309.      };
  6310.  
  6311.      _dsp163 = findDisplay 163;
  6312.  
  6313.      if(!isNull _dsp163)then     {      (_dsp163 displayCtrl 101) ctrlRemoveAllEventHandlers 'LBDblClick';
  6314.  
  6315.       (_dsp163 displayCtrl 101) ctrlRemoveAllEventHandlers 'LBSelChanged';
  6316.  
  6317.       if((toLower ctrlText (_dsp163 displayCtrl 1000) != toLower localize 'STR_DISP_OPTIONS_SCHEME') || (buttonAction (_dsp163 displayCtrl 1) != '') || (buttonAction (_dsp163 displayCtrl 2) != ''))then      {       _log = 'Hacked: RscDisplayControlSchemes';
  6318.  
  6319.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6320.  
  6321.        [] spawn "+_AHKickOFF+";
  6322.  
  6323.       };
  6324.  
  6325.      };
  6326.  
  6327.      _RscDisplayConfigureAction = uiNamespace getVariable 'RscDisplayConfigureAction';
  6328.  
  6329.      if(!isNil '_RscDisplayConfigureAction')then     {      _formatedRscDisplayConfigureAction = format['%1',_RscDisplayConfigureAction];
  6330.  
  6331.       if(_formatedRscDisplayConfigureAction != '<null>')then      {       if(_formatedRscDisplayConfigureAction != 'No display')then       {        _title = ctrlText 1000;
  6332.  
  6333.         if(_title != localize '$STR_A3_RscDisplayConfigureAction_Title')exitWith{         _log = 'Hacked: RscDisplayConfigureAction';
  6334.  
  6335.          [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6336.  
  6337.          [] spawn "+_AHKickOFF+";
  6338.  
  6339.         };
  6340.  
  6341.         {         if(buttonAction _x != '')exitWith{          _log = 'Hacked: RscDisplayConfigureAction';
  6342.  
  6343.           [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6344.  
  6345.           [] spawn "+_AHKickOFF+";
  6346.  
  6347.          };
  6348.  
  6349.         } forEach [1,107,104,106,109,105,108];
  6350.  
  6351.        };
  6352.  
  6353.       };
  6354.  
  6355.      };
  6356.  
  6357.      _c101txt = ctrlText 101;
  6358.  
  6359.      if!(_c101txt in ['','\A3\Data_F_Mark\Logos\arma3_Mark_logo_ca.paa','\A3\Data_F_Kart\Logos\arma3_karts_logo_ca.paa'])then     {      _log = format['ctrlText 101: %1',_c101txt];
  6360.  
  6361.       [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6362.  
  6363.       [] spawn "+_AHKickOFF+";
  6364.  
  6365.      };
  6366.  
  6367.      ";
  6368.  
  6369.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "      if(isNil'startingFncOpenHTML')then      {       if(buttonAction -13 != '')then       {        _log = format['ButtonAction Changed: %1',buttonAction -13];
  6370.  
  6371.         [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6372.  
  6373.         [] spawn "+_AHKickOFF+";
  6374.  
  6375.        };
  6376.  
  6377.        if(buttonAction -14 != '')then       {        _log = format['ButtonAction Changed: %1',buttonAction -14];
  6378.  
  6379.         [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6380.  
  6381.         [] spawn "+_AHKickOFF+";
  6382.  
  6383.        };
  6384.  
  6385.       };
  6386.  
  6387.      ";
  6388.  
  6389.  };
  6390.  
  6391.  _A3AHstring = _A3AHstring + "     if(_wasclosed)then     {      closeDialog 0;
  6392.  
  6393. closeDialog 0;
  6394.  
  6395. closeDialog 0;
  6396.  
  6397.       _wasclosed = false;
  6398.  
  6399.      };
  6400.  
  6401.           {      if(!isNull _x)then      {       _display = _x;
  6402.  
  6403.        _strx = str _x;
  6404.  
  6405.        if(_strx in _badIDDsToKick)then       {        _log = format['BadDisplayID: %1',_strx];
  6406.  
  6407.         [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6408.  
  6409.         [] spawn "+_AHKickOFF+";
  6410.  
  6411.        }       else       {        if(_strx in _badIDDsToClose)then        {         systemChat format['<infiSTAR.de> %1 has been closed.',_strx];
  6412.  
  6413.          _x closeDisplay 0;
  6414.  
  6415.          closeDialog 0;
  6416.  
  6417. closeDialog 0;
  6418.  
  6419. closeDialog 0;
  6420.  
  6421.          _wasclosed = true;
  6422.  
  6423.         }        else        {         ";
  6424.  
  6425.  if(_UDW)then{ _A3AHstring = _A3AHstring + "         if!(_strx in _allowedIDDs)then         {          _x closeDisplay 0;
  6426.  
  6427.           closeDialog 0;
  6428.  
  6429. closeDialog 0;
  6430.  
  6431. closeDialog 0;
  6432.  
  6433.                     if(_strx in _announceDisplayIddOnce)exitWith{};
  6434.  
  6435.           _announceDisplayIddOnce pushBack _strx;
  6436.  
  6437.                     _log = format['Not Allowed Displays: %1   (was it legit? add the number to _allowedIDDs in your infiSTAR_config.sqf!)',_strx];
  6438.  
  6439.           [_name,_puid,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  6440.  
  6441.          };
  6442.  
  6443.          ";
  6444.  
  6445.  };
  6446.  
  6447.  _A3AHstring = _A3AHstring + "        };
  6448.  
  6449.        };
  6450.  
  6451.        if(!isNull _display)then       {        {         if(!isNull (_display displayCtrl _x))then         {          _log = format['MenuBasedHack :: %1 :: %2',_display,_x];
  6452.  
  6453.           [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6454.  
  6455.           [] spawn "+_AHKickOFF+";
  6456.  
  6457.          };
  6458.  
  6459.         } forEach [24010,16030,13163,989187,16100];
  6460.  
  6461.                 {         _control = _x;
  6462.  
  6463.          _checkifIn = format['%1%2',_display,_control];
  6464.  
  6465.          if!(_checkifIn in _checked)then         {          _checked pushBack _checkifIn;
  6466.  
  6467.           _controltype = ctrlType _control;
  6468.  
  6469.           if(_controltype isEqualTo 5)then          {           _size = lbSize _control;
  6470.  
  6471.            if(_size > 0)then           {            for '_i' from 0 to (_size-1) do            {             _lbtxt = _control lbText _i;
  6472.  
  6473.              _lowerlbtxt = toLower _lbtxt;
  6474.  
  6475.              {              if(_lowerlbtxt find _x > -1)then              {               _log = format['BadlbText: %1 FOUND [%2] ON %3 %4',_lbtxt,_x,_display,_control];
  6476.  
  6477.                [_name,_puid,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  6478.  
  6479.               };
  6480.  
  6481.              } forEach _verybadStrings;
  6482.  
  6483.             };
  6484.  
  6485.            };
  6486.  
  6487.           }          else          {           if(_controltype isEqualTo 12)then           {            _curTV = tvCurSel _control;
  6488.  
  6489.             _tvtxt = _control tvText _curTV;
  6490.  
  6491.             _lowertvtxt = toLower _tvtxt;
  6492.  
  6493.             {             if(_lowertvtxt find _x > -1)then             {              _log = format['BadtvText: %1 FOUND [%2] ON %3 %4',_tvtxt,_x,_display,_control];
  6494.  
  6495.               [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6496.  
  6497.               [] call "+_AHKickOFF+";
  6498.  
  6499.              };
  6500.  
  6501.             } forEach _verybadStrings;
  6502.  
  6503.            }           else           {            if!(_controltype in [3,4,8,9,15,42,81,101,102])then            {             _ctrlTxt = ctrlText _control;
  6504.  
  6505.              _lowerctrlTxt = toLower _ctrlTxt;
  6506.  
  6507.              {              if(_lowerctrlTxt find _x > -1)then              {               _log = format['BadCtrlText: %1 FOUND [%2] ON %3 %4',_ctrlTxt,_x,_display,_control];
  6508.  
  6509.                [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6510.  
  6511.                [] call "+_AHKickOFF+";
  6512.  
  6513.               };
  6514.  
  6515.              } forEach _verybadStrings;
  6516.  
  6517.             };
  6518.  
  6519.            };
  6520.  
  6521.           };
  6522.  
  6523.          };
  6524.  
  6525.         } forEach (allControls _display);
  6526.  
  6527.        };
  6528.  
  6529.       };
  6530.  
  6531.      } forEach allDisplays;
  6532.  
  6533.      uiSleep 0.5;
  6534.  
  6535.     };
  6536.  
  6537.     _log = 'Loop #8 ended!';
  6538.  
  6539.     [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6540.  
  6541.     [] spawn "+_AHKickOFF+";
  6542.  
  6543.    };
  6544.  
  6545.    ";
  6546.  
  6547.  if((_EHF && !_NO_EHF) || _CAP)then{ _A3AHstring = _A3AHstring + "   [_name,_puid] spawn {    _name = _this select 0;
  6548.  
  6549.     _puid = _this select 1;
  6550.  
  6551.     uiSleep 10;
  6552.  
  6553.     _caughtFired = 0;
  6554.  
  6555.     _randomIDcount = 0;
  6556.  
  6557.     _object = player;
  6558.  
  6559.     _acnt = -1;
  6560.  
  6561.     while{1==1}do    {     _tmpObj = player;
  6562.  
  6563.      ";
  6564.  
  6565.  if(_EHF && !_NO_EHF)then{ _A3AHstring = _A3AHstring + "      if((!isNull player) && (alive player))then      {       player removeAllEventHandlers 'Fired';
  6566.  
  6567.        _id = player addEventHandler ['Fired',{if(inSafeZone)then{deleteVehicle (_this select 6)}}];
  6568.  
  6569.        _id = player addEventHandler ['Fired',{_this call "+_FiredCheck+"}];
  6570.  
  6571.        _id = player addEventHandler ['Fired',{_this call "+str _customFiredEventhandler+"}];
  6572.  
  6573.        ";
  6574.  
  6575.  if(_MOD == 'AltisLife')then{ _A3AHstring = _A3AHstring + "        _id = player addEventHandler ['Fired',{_this call life_fnc_onFired}];
  6576.  
  6577.        ";
  6578.  
  6579.  };
  6580.  
  6581.  _A3AHstring = _A3AHstring + "       ";
  6582.  
  6583.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "        _id = player addEventHandler ['Fired',{_this call EPOCH_fnc_playerFired}];
  6584.  
  6585.        ";
  6586.  
  6587.  };
  6588.  
  6589.  _A3AHstring = _A3AHstring + "       _randomIDcount = round(random 3);
  6590.  
  6591.        for '_i' from 1 to _randomIDcount do       {        _id = player addEventHandler ['Fired',{}];
  6592.  
  6593.        };
  6594.  
  6595.       };
  6596.  
  6597.      ";
  6598.  
  6599.  };
  6600.  
  6601.  _A3AHstring = _A3AHstring + "     uiSleep 2;
  6602.  
  6603.      if((!isNull player) && (alive player))then     {      if(player isEqualTo _tmpObj)then      {       ";
  6604.  
  6605.  if(_EHF && !_NO_EHF)then{ _A3AHstring = _A3AHstring + "        _id = player addEventHandler ['Fired',{}];
  6606.  
  6607.         _maxid = (4+_randomIDcount);
  6608.  
  6609.         if(_id != _maxid)then        {         _caughtFired = _caughtFired + 1;
  6610.  
  6611.          if(_caughtFired > 2)then         {          if(_id == _maxid+1)then          {           _log = format['EH_FIRED: %1 (KICKED TO LOBBY) might be EpochCode interfering',_id];
  6612.  
  6613.            [_name,_puid,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  6614.  
  6615.            (findDisplay 46)closeDisplay 0;
  6616.  
  6617.           }          else          {           _log = format['EH_FIRED: %1',_id];
  6618.  
  6619.            [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6620.  
  6621.            [] spawn "+_AHKickOFF+";
  6622.  
  6623.           };
  6624.  
  6625.          };
  6626.  
  6627.         };
  6628.  
  6629.        ";
  6630.  
  6631.  };
  6632.  
  6633.  _A3AHstring = _A3AHstring + "       ";
  6634.  
  6635.  if(_CAP)then{ _A3AHstring = _A3AHstring + "        if(player isEqualTo _object)then[{_acnt = _acnt + 1},{_object = player;
  6636.  
  6637. _acnt = 0}];
  6638.  
  6639.         _actionid = player addAction ['', '', [], -5, false, true, '', 'false'];
  6640.  
  6641. player removeAction _actionid;
  6642.  
  6643.         if(_actionid > _acnt + 1)then        {         removeAllActions player;
  6644.  
  6645. removeAllActions (vehicle player);
  6646.  
  6647.          _log = format['Actions: %1/%2 possible scroll menu hack (or you added custom actions..)',_actionid,_acnt];
  6648.  
  6649.          [_name,_puid,'SLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6650.  
  6651.          _acnt = _actionid;
  6652.  
  6653.         };
  6654.  
  6655.        ";
  6656.  
  6657.  };
  6658.  
  6659.  _A3AHstring = _A3AHstring + "      };
  6660.  
  6661.      };
  6662.  
  6663.     };
  6664.  
  6665.     _log = 'Loop #10 ended!';
  6666.  
  6667.     [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6668.  
  6669.     [] spawn "+_AHKickOFF+";
  6670.  
  6671.    };
  6672.  
  6673.    ";
  6674.  
  6675.  };
  6676.  
  6677.  _A3AHstring = _A3AHstring + "        ";
  6678.  
  6679.  if(_UAT)then{ _A3AHstring = _A3AHstring + "  [_name,_puid] spawn {   _name = _this select 0;
  6680.  
  6681.    _puid = _this select 1;
  6682.  
  6683.    _FNC_ANTI_TP = {    private['_name','_puid','_myRespawnPosition','_lastpos','_lastHeightATL','_log','_lasttime','_difftime','_curpos','_tmpAHpos','_driver','_tpcount'];
  6684.  
  6685.     _name = _this select 0;
  6686.  
  6687.     _puid = _this select 1;
  6688.  
  6689.     "+_AHpos+" = [];
  6690.  
  6691.     _lastpos = getPosATL player;
  6692.  
  6693.     _lastHeightATL = _lastpos select 2;
  6694.  
  6695.     _lasttime = diag_tickTime;
  6696.  
  6697.         _myRespawnPosition = getPosATL player;
  6698.  
  6699.     _tpcount = 0;
  6700.  
  6701.     while{1==1}do    {     _curpos = getPosATL player;
  6702.  
  6703.      _curHeightATL = _curpos select 2;
  6704.  
  6705.      _distance = _lastpos distance2D _curpos;
  6706.  
  6707.      _mindistcheck = if((vehicle player) isEqualTo player)then{3}else{10};
  6708.  
  6709.      if(_distance > _mindistcheck)then     {      _difftime = diag_tickTime - _lasttime;
  6710.  
  6711.       _speed = _distance / _difftime;
  6712.  
  6713.       _type = typeOf (vehicle player);
  6714.  
  6715.       _topSpeed = (getNumber(configFile >> 'CfgVehicles' >> _type >> 'maxSpeed')) max 5;
  6716.  
  6717.       if(_speed < _topSpeed)exitWith{};
  6718.  
  6719.             if(_lastpos distance2D _myRespawnPosition > 50)then      {       _driver = driver(vehicle player);
  6720.  
  6721.        if((isNull _driver)||{(player isEqualTo _driver)})then       {        if(!isNil '"+_AHpos+"')then        {         _tmpAHpos = "+_AHpos+";
  6722.  
  6723.          "+_AHpos+" = [];
  6724.  
  6725.          if(typeName _tmpAHpos != 'ARRAY')then         {          _log = format['Admin Teleport Variable highjacked! Type now: %1 - %2',typeName _tmpAHpos,_tmpAHpos];
  6726.  
  6727.           [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6728.  
  6729.           [] spawn "+_AHKickOFF+";
  6730.  
  6731.           player SetVelocity [0,0,1];
  6732.  
  6733. player setPosATL _lastpos;
  6734.  
  6735.          };
  6736.  
  6737.          if(_tmpAHpos isEqualTo [])then         {          if(((backpack player) isEqualTo 'B_Parachute')&&(_curHeightATL > 10))exitWith{};
  6738.  
  6739.           _tpcount = _tpcount + 1;
  6740.  
  6741.           _log = format['POTENTIAL-TP-REVERTED: Moved %1m in %2s (from %3 to %4). TopSpeed of %5 is %6 speed was %7. Player FPS: %8.',round _distance,_difftime,_lastpos,_curpos,_type,_topSpeed,_speed,diag_fps];
  6742.  
  6743.           if(_tpcount > 3)then          {           [_name,_puid,'TMPBAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6744.  
  6745.            [] spawn "+_AHKickOFF+";
  6746.  
  6747.           }          else          {           [_name,_puid,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  6748.  
  6749.           };
  6750.  
  6751.           player SetVelocity [0,0,1];
  6752.  
  6753. player setPosATL _lastpos;
  6754.  
  6755.          }         else         {          _log = 'Teleported by Admin';
  6756.  
  6757.           [_name,_puid,'TPLOG',toArray(_log),_tmpAHpos select 0,_tmpAHpos select 1,_lastpos,_curpos] call "+_AH3030KICKLOG+";
  6758.  
  6759.          };
  6760.  
  6761.         }        else        {         _log = 'TELEPORT CHECK VARIABLE NILLED!';
  6762.  
  6763.          [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6764.  
  6765.          [] spawn "+_AHKickOFF+";
  6766.  
  6767.          player SetVelocity [0,0,1];
  6768.  
  6769. player setPosATL _lastpos;
  6770.  
  6771.         };
  6772.  
  6773.        }       else       {        if(isNull _driver)exitWith{};
  6774.  
  6775.         if!(getPlayerUID _driver isEqualTo '')exitWith{};
  6776.  
  6777.                 _log = format['TP with AI as driver..  Moved %1m in %2s (from %3 to %4). TopSpeed of %5 is %6 speed was %7. Player FPS: %8.',round _distance,_difftime,_lastpos,_curpos,_type,_topSpeed,_speed,diag_fps];
  6778.  
  6779.         [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6780.  
  6781.         [] spawn "+_AHKickOFF+";
  6782.  
  6783.        };
  6784.  
  6785.       };
  6786.  
  6787.      };
  6788.  
  6789.      if(vehicle player isEqualto player)then     {      if(((backpack player) isEqualTo 'B_Parachute')&&(_curHeightATL > 10))exitWith{};
  6790.  
  6791.             _velZ = (velocity player) select 2;
  6792.  
  6793.       if(((_curHeightATL - _lastHeightATL) > 30)&&(_velZ < -5))then      {       systemChat format['Height changed by %1.. setting you to ground.',(_curHeightATL - _lastHeightATL)];
  6794.  
  6795.        player SetVelocity [0,0,1];
  6796.  
  6797. player setPosATL _lastpos;
  6798.  
  6799.       };
  6800.  
  6801.      };
  6802.  
  6803.           _lastpos = getPosATL player;
  6804.  
  6805.      _lastHeightATL = _lastpos select 2;
  6806.  
  6807.      _lasttime = diag_tickTime;
  6808.  
  6809.      uiSleep 0.5;
  6810.  
  6811.     };
  6812.  
  6813.     _log = 'Loop #3 ended!';
  6814.  
  6815.     [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6816.  
  6817.     [] spawn "+_AHKickOFF+";
  6818.  
  6819.    };
  6820.  
  6821.    while {true} do   {    waitUntil {uiSleep 1;
  6822.  
  6823. (!isNull player)&&{alive player}&&{!((typeOf player) isEqualTo 'VirtualMan_EPOCH')}};
  6824.  
  6825.     _ANTI_TP_THEAD_STARTED = [_name,_puid] spawn _FNC_ANTI_TP;
  6826.  
  6827.         waitUntil {(isNull player)||{!alive player}||{((typeOf player) isEqualTo 'VirtualMan_EPOCH')}};
  6828.  
  6829.     terminate _ANTI_TP_THEAD_STARTED;
  6830.  
  6831.     uiSleep 1;
  6832.  
  6833.    };
  6834.  
  6835.   };
  6836.  
  6837.  ";
  6838.  
  6839.  };
  6840.  
  6841.  _A3AHstring = _A3AHstring + "          [_name,_puid] spawn {    _name = _this select 0;
  6842.  
  6843.     _puid = _this select 1;
  6844.  
  6845.     diag_log format['LOCALPLAYERINFO: %1(%2) | %3(%4) | %5',_name,_puid,str _name,str _puid,str (getPlayerUID player)];
  6846.  
  6847.     PVAH_AdminReq = nil;
  6848.  
  6849.     if(!isNil 'PVAH_AdminReq')then    {     _log = format['BadVar#ADMIN: PVAH_AdminReq - %1',PVAH_AdminReq];
  6850.  
  6851.      [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6852.  
  6853.      [] spawn "+_AHKickOFF+";
  6854.  
  6855.     };
  6856.  
  6857.     ";
  6858.  
  6859.  if(_REF)then{ _A3AHstring = _A3AHstring + "     "+_oneachframe+"=time;
  6860.  
  6861.     ";
  6862.  
  6863.  };
  6864.  
  6865.  _A3AHstring = _A3AHstring + "    while{1==1}do    {     _randomnombre = round(random 9999);
  6866.  
  6867.      PVAH_AdminReq = _randomnombre;
  6868.  
  6869.      if(str PVAH_AdminReq != str _randomnombre)then     {      _log = 'BadVar#ADMIN: PVAH_AdminReq';
  6870.  
  6871.       [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6872.  
  6873.       [] spawn "+_AHKickOFF+";
  6874.  
  6875.      };
  6876.  
  6877.      ";
  6878.  
  6879.  if(_REF)then{ _A3AHstring = _A3AHstring + "     if(typeName "+_oneachframe+" != 'SCALAR')then     {      _log = format['onEachFrame injector detected: %1 - %2 (type of check value changed!)',typeName "+_oneachframe+","+_oneachframe+"];
  6880.  
  6881.       [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  6882.  
  6883.       [] spawn "+_AHKickOFF+";
  6884.  
  6885.      };
  6886.  
  6887.      _maxtime = 30;
  6888.  
  6889.      if(diag_fps < 20)then{_maxtime = 60;
  6890.  
  6891. };
  6892.  
  6893.      if(time - "+_oneachframe+" > _maxtime)then     {      _log = format['onEachFrame injector detected: %1 - FPS: %2 (KICKED)',time - "+_oneachframe+",diag_fps];
  6894.  
  6895.       [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6896.  
  6897.       [] spawn "+_AHKickOFF+";
  6898.  
  6899.      };
  6900.  
  6901.      onEachFrame {      "+_oneachframe+"=time;
  6902.  
  6903.       ";
  6904.  
  6905.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "      call EPOCH_onEachFrame;
  6906.  
  6907.       ";
  6908.  
  6909.  };
  6910.  
  6911.  _A3AHstring = _A3AHstring + "      ";
  6912.  
  6913.  if((str _rOEF != '{}')&&(typeName _rOEF == 'CODE'))then{ _A3AHstring = _A3AHstring + "      call "+str _rOEF+";
  6914.  
  6915.       ";
  6916.  
  6917.  };
  6918.  
  6919.  _A3AHstring = _A3AHstring + "     };
  6920.  
  6921.      ";
  6922.  
  6923.  };
  6924.  
  6925.  _A3AHstring = _A3AHstring + "     ";
  6926.  
  6927.  if(_OAP && !_CAP)then{ _A3AHstring = _A3AHstring + "      removeAllActions player;
  6928.  
  6929. removeAllActions (vehicle player);
  6930.  
  6931.      ";
  6932.  
  6933.  };
  6934.  
  6935.  _A3AHstring = _A3AHstring + "     ";
  6936.  
  6937.  if(_RAD)then{ _A3AHstring = _A3AHstring + "      player allowDamage true;
  6938.  
  6939.       (vehicle player) allowDamage true;
  6940.  
  6941.      ";
  6942.  
  6943.  };
  6944.  
  6945.  _A3AHstring = _A3AHstring + "     ";
  6946.  
  6947.  if(_URC)then{ _A3AHstring = _A3AHstring + "     _unit = player;
  6948.  
  6949.      if((!isNull _unit)&&{alive _unit})then     {      _curecoil = unitRecoilCoefficient _unit;
  6950.  
  6951.       if(_curecoil != 1)then      {       _log = format['BadRecoil %1 | %2 %3 %4',_curecoil,typeOf _unit,typeOf (vehicle _unit),currentWeapon _unit];
  6952.  
  6953.        [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  6954.  
  6955.        [] spawn "+_AHKickOFF+";
  6956.  
  6957.       };
  6958.  
  6959.      };
  6960.  
  6961.      ";
  6962.  
  6963.  };
  6964.  
  6965.  _A3AHstring = _A3AHstring + "     ";
  6966.  
  6967.  if(_IAC)then{ _A3AHstring = _A3AHstring + "     _gpsmapstate = false;
  6968.  
  6969.      _gpsmapend = false;
  6970.  
  6971.      if((!visiblemap)&&!('ItemMap' in (assignedItems player))&&!('ItemGPS' in (assignedItems player)))then     {      _gpsmapstate = true;
  6972.  
  6973.      };
  6974.  
  6975.      ";
  6976.  
  6977.  };
  6978.  
  6979.  _A3AHstring = _A3AHstring + "   uiSleep 0.2;
  6980.  
  6981.      ";
  6982.  
  6983.  if(_IAC)then{ _A3AHstring = _A3AHstring + "     if(_gpsmapstate)then     {      if((visiblemap)&&('ItemMap' in (assignedItems player))&&('ItemGPS' in (assignedItems player)))then      {       _gpsmapend = true;
  6984.  
  6985.       };
  6986.  
  6987.      };
  6988.  
  6989.      if(_gpsmapend)then     {      _log = 'ItemsAdded: Suddenly had a GPS and a Map Item..';
  6990.  
  6991.       [_name,_puid,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  6992.  
  6993.       [] spawn "+_AHKickOFF+";
  6994.  
  6995.      };
  6996.  
  6997.      ";
  6998.  
  6999.  };
  7000.  
  7001.  _A3AHstring = _A3AHstring + "     _uid = getPlayerUID player;
  7002.  
  7003.      if((_uid != '') && {_puid != _uid} && {alive player})then{      _log = format['_puid != _uid (%1/%2) - BANNED MEMORYHACK',_puid,_uid];
  7004.  
  7005.       [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7006.  
  7007.       [] spawn "+_AHKickOFF+";
  7008.  
  7009.      };
  7010.  
  7011.      ";
  7012.  
  7013.  if(_CLM)then{ _A3AHstring = _A3AHstring + "      if(!isNil'"+_MC+"')then{"+_MC+"=nil;
  7014.  
  7015. };
  7016.  
  7017.       _MCCODE =      {       "+_MC+"=nil;
  7018.  
  7019.        _array = _this select 1;
  7020.  
  7021.        _a = ['_USER_DEFINED','[',']'];
  7022.  
  7023.        if("+str _UMW+")then{_a = _a + "+str _aLocalM+";
  7024.  
  7025. };
  7026.  
  7027.        _foundbad = [];
  7028.  
  7029.               _allMapMarkers = allMapMarkers;
  7030.  
  7031.        _allMapMarkers = _allMapMarkers - ['"+_MAKE_VAR_DUMP_RANDOM+"'];
  7032.  
  7033.        _allMapMarkers = _allMapMarkers - ['"+_MAKE_VAR_DUMP_CLIENT+"'];
  7034.  
  7035.        {        _m = _x;
  7036.  
  7037.         _lowm = toLower _m;
  7038.  
  7039.         if(_m != '')then        {         if(_lowm find 'swag' != -1)then         {          _foundbad pushBack _m;
  7040.  
  7041.           _mtext = markerText _m;
  7042.  
  7043.           if(_mtext != '')then{_foundbad pushBack _mtext;
  7044.  
  7045. };
  7046.  
  7047.          }         else         {          if!(_m in _array)then          {           _do = true;
  7048.  
  7049.            {if(_lowm find (toLower _x) != -1)exitWith{_do = false;
  7050.  
  7051. };
  7052.  
  7053. } forEach _a;
  7054.  
  7055.            if(_do)then           {            _foundbad pushBack _m;
  7056.  
  7057.             _mtext = markerText _m;
  7058.  
  7059.             if(_mtext != '')then{_foundbad pushBack _mtext;
  7060.  
  7061. };
  7062.  
  7063.            };
  7064.  
  7065.           };
  7066.  
  7067.          };
  7068.  
  7069.         };
  7070.  
  7071.        } forEach _allMapMarkers;
  7072.  
  7073.        if(str _foundbad != '[]')then       {        _log = format['LocalMarker: %1',_foundbad];
  7074.  
  7075.         [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7076.  
  7077.         [] spawn "+_AHKickOFF+";
  7078.  
  7079.        };
  7080.  
  7081.       };
  7082.  
  7083.       '"+_MC+"' addPublicVariableEventHandler _MCCODE;
  7084.  
  7085.      ";
  7086.  
  7087.  };
  7088.  
  7089.  _A3AHstring = _A3AHstring + "    };
  7090.  
  7091.     _log = 'Loop #12 ended!';
  7092.  
  7093.     [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7094.  
  7095.     [] spawn "+_AHKickOFF+";
  7096.  
  7097.    };
  7098.  
  7099.    ";
  7100.  
  7101.  if((_CMC)||(_KCM))then{ _A3AHstring = _A3AHstring + "    [_name,_puid] spawn {     private['_name','_puid','_find1','_find2','_cMenu','_commandingMenu'];
  7102.  
  7103.      _name = _this select 0;
  7104.  
  7105.      _puid = _this select 1;
  7106.  
  7107.      _find1 = toLower('#USER');
  7108.  
  7109.      _find2 = ['#User:BIS_fnc_addCommMenuItem_menu','#User:BIS_Menu_GroupCommunication'];
  7110.  
  7111.      _cMenu = "+str _cMenu+";
  7112.  
  7113.      while{1==1}do     {      ";
  7114.  
  7115.  if(_CMC)then{ _A3AHstring = _A3AHstring + "       _commandingMenu = commandingMenu;
  7116.  
  7117.        if(_commandingMenu != '')then       {        if(_commandingMenu in _find2)then        {         showCommandingMenu '';
  7118.  
  7119.         }        else        {         if!(_commandingMenu in _cMenu)then         {          if(((toLower _commandingMenu) find _find1) != -1)then          {           _log = format['BadCommandingMenu: %1',_commandingMenu];
  7120.  
  7121.            [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7122.  
  7123.            [] spawn "+_AHKickOFF+";
  7124.  
  7125.           };
  7126.  
  7127.           showCommandingMenu '';
  7128.  
  7129.          };
  7130.  
  7131.         };
  7132.  
  7133.        };
  7134.  
  7135.       ";
  7136.  
  7137.  };
  7138.  
  7139.  _A3AHstring = _A3AHstring + "      ";
  7140.  
  7141.  if(_KCM)then{ _A3AHstring = _A3AHstring + "       ";
  7142.  
  7143.  if(_useTildMenu)then{ _A3AHstring = _A3AHstring + "        if(commandingMenu != '#USER:USERMENU"+_customcommandingMenu+"')then{showCommandingMenu '';
  7144.  
  7145. };
  7146.  
  7147.         ";
  7148.  
  7149.  }else{ _A3AHstring = _A3AHstring + "        showCommandingMenu '';
  7150.  
  7151.         ";
  7152.  
  7153.  };
  7154.  
  7155.  _A3AHstring = _A3AHstring + "      ";
  7156.  
  7157.  };
  7158.  
  7159.  _A3AHstring = _A3AHstring + "      uiSleep 0.75;
  7160.  
  7161.      };
  7162.  
  7163.      _log = 'Loop #13 ended!';
  7164.  
  7165.      [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7166.  
  7167.      [] spawn "+_AHKickOFF+";
  7168.  
  7169.     };
  7170.  
  7171.    ";
  7172.  
  7173.  };
  7174.  
  7175.  _A3AHstring = _A3AHstring + "   "+_ninetwothread+" = [_name,_puid] spawn {    _name = _this select 0;
  7176.  
  7177.     _puid = _this select 1;
  7178.  
  7179.     _waitTime = 60;
  7180.  
  7181.     _mytime = diag_tickTime;
  7182.  
  7183.     waitUntil {((!isNil '"+_ninetwo+"') || (diag_tickTime > _mytime + _waitTime))};
  7184.  
  7185.     if(isNil '"+_ninetwo+"')exitWith    {     _log = format['Secondary checks not running.. (KICKED) - waited %1s',diag_tickTime - (_mytime + _waitTime)];
  7186.  
  7187.      [_name,_puid,'SLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  7188.  
  7189.      (findDisplay 46)closeDisplay 0;
  7190.  
  7191.     };
  7192.  
  7193.    };
  7194.  
  7195.    [_name,_puid,_admins] spawn {    _name = _this select 0;
  7196.  
  7197.     _puid = _this select 1;
  7198.  
  7199.     _admins = _this select 2;
  7200.  
  7201.     _ForbiddenItems = "+str _ForbiddenItems+";
  7202.  
  7203.     ";
  7204.  
  7205.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "     _ForbiddenOnEpochOnly = "+str _ForbiddenOnEpochOnly+";
  7206.  
  7207.      _ForbiddenItems = _ForbiddenItems + _ForbiddenOnEpochOnly;
  7208.  
  7209.      {if(isNil _x)then{missionNameSpace setVariable[_x,[]];
  7210.  
  7211. };
  7212.  
  7213. } forEach ['EPOCH_ESP_TARGETS','EPOCH_ESPMAP_TARGETS','EPOCH_ESP_VEHICLEPLAYER','EPOCH_ESPGROUPS','EPOCH_ESPGROUPCOLORS'];
  7214.  
  7215.      {if(isNil _x)then{missionNameSpace setVariable[_x,false];
  7216.  
  7217. };
  7218.  
  7219. } forEach ['EPOCH_ESP_PLAYER','EPOCH_ESP_VEHICLES'];
  7220.  
  7221.      if(isNil 'EPOCH_target')then{EPOCH_target = objNull;
  7222.  
  7223. };
  7224.  
  7225.      if(isNil 'EPOCH_currentVehicle')then{EPOCH_currentVehicle = vehicle player;
  7226.  
  7227. };
  7228.  
  7229.      if(isNil 'EPOCH_playerEnergy')then{EPOCH_playerEnergy = 0;
  7230.  
  7231. };
  7232.  
  7233.      if(isNil 'EPOCH_playerHunger')then{EPOCH_playerHunger = 5000;
  7234.  
  7235. };
  7236.  
  7237.      if(isNil 'EPOCH_playerThirst')then{EPOCH_playerThirst = 2500;
  7238.  
  7239. };
  7240.  
  7241.      if(isNil 'EPOCH_playerStamina')then{EPOCH_playerStamina = 100;
  7242.  
  7243. };
  7244.  
  7245.      if(isNil 'EPOCH_antiWallCount')then{EPOCH_antiWallCount = 0;
  7246.  
  7247. };
  7248.  
  7249.      if(isNil 'EPOCH_taxRate')then{EPOCH_taxRate = 0.1;
  7250.  
  7251. };
  7252.  
  7253.      if(isNil 'EPOCH_playerCrypto')then{EPOCH_playerCrypto = 0;
  7254.  
  7255. };
  7256.  
  7257.      ";
  7258.  
  7259.  if(_CCT)then{ _A3AHstring = _A3AHstring + "      if(EPOCH_playerCrypto < 0)then{EPOCH_playerCrypto = 0;
  7260.  
  7261. };
  7262.  
  7263. if(EPOCH_playerCrypto > 250000)then{EPOCH_playerCrypto = 250000;
  7264.  
  7265. };
  7266.  
  7267.      ";
  7268.  
  7269.  };
  7270.  
  7271.  _A3AHstring = _A3AHstring + "     if(isNil 'EPOCH_clientInit')then{EPOCH_clientInit = compile preprocessFileLineNumbers 'epoch_code\compile\setup\EPOCH_clientInit.sqf';
  7272.  
  7273. };
  7274.  
  7275.      if(isNil 'EPOCH_onEachFrame')then{EPOCH_onEachFrame = compile preprocessFileLineNumbers 'epoch_code\compile\EPOCH_onEachFrame.sqf';
  7276.  
  7277. };
  7278.  
  7279.      if(isNil 'EPOCH_client_rejectPlayer')then{EPOCH_client_rejectPlayer = compile preprocessFileLineNumbers 'epoch_code\compile\setup\EPOCH_client_rejectPlayer.sqf';
  7280.  
  7281. };
  7282.  
  7283.      if(isNil 'EPOCH_clientRespawn')then{EPOCH_clientRespawn = compile preprocessFileLineNumbers 'epoch_code\compile\setup\EPOCH_clientRespawn.sqf';
  7284.  
  7285. };
  7286.  
  7287.      if(isNil 'EPOCH_fnc_playerDeath')then{EPOCH_fnc_playerDeath = compile preprocessFileLineNumbers 'epoch_code\compile\functions\EPOCH_fnc_playerDeath.sqf';
  7288.  
  7289. };
  7290.  
  7291.      if(isNil 'EPOCH_KeyDown')then{EPOCH_KeyDown = compile preprocessFileLineNumbers 'epoch_code\compile\interface_event_handlers\EPOCH_KeyDown.sqf';
  7292.  
  7293. };
  7294.  
  7295.      if(isNil 'EPOCH_pushCustomVar')then{EPOCH_pushCustomVar = compile preprocessFileLineNumbers 'epoch_code\compile\functions\EPOCH_pushCustomVar.sqf';
  7296.  
  7297. };
  7298.  
  7299.      if(isNil 'EPOCH_fnc_playerFired')then{EPOCH_fnc_playerFired = compileFinal preprocessFileLineNumbers 'epoch_code\compile\functions\EPOCH_fnc_playerFired.sqf';
  7300.  
  7301. };
  7302.  
  7303.      _EPOCH_clientInit = compile preprocessFileLineNumbers 'epoch_code\compile\setup\EPOCH_clientInit.sqf';
  7304.  
  7305.      _EPOCH_onEachFrame = compile preprocessFileLineNumbers 'epoch_code\compile\EPOCH_onEachFrame.sqf';
  7306.  
  7307.      _EPOCH_client_rejectPlayer = compile preprocessFileLineNumbers 'epoch_code\compile\setup\EPOCH_client_rejectPlayer.sqf';
  7308.  
  7309.      _EPOCH_clientRespawn = compile preprocessFileLineNumbers 'epoch_code\compile\setup\EPOCH_clientRespawn.sqf';
  7310.  
  7311.      _EPOCH_fnc_playerDeath = compile preprocessFileLineNumbers 'epoch_code\compile\functions\EPOCH_fnc_playerDeath.sqf';
  7312.  
  7313.      _EPOCH_KeyDown = compile preprocessFileLineNumbers 'epoch_code\compile\interface_event_handlers\EPOCH_KeyDown.sqf';
  7314.  
  7315.      _EPOCH_pushCustomVar = compile preprocessFileLineNumbers 'epoch_code\compile\functions\EPOCH_pushCustomVar.sqf';
  7316.  
  7317.      _EPOCH_fnc_playerFired = compileFinal preprocessFileLineNumbers 'epoch_code\compile\functions\EPOCH_fnc_playerFired.sqf';
  7318.  
  7319.      _rnd1 = round(random 99999);
  7320.  
  7321. life_cash = _rnd1;
  7322.  
  7323.      _rnd2 = round(random 99999);
  7324.  
  7325. life_adminlevel = _rnd2;
  7326.  
  7327.      _rnd3 = round(random 99999);
  7328.  
  7329. life_coplevel = _rnd3;
  7330.  
  7331.      _rnd4 = round(random 99999);
  7332.  
  7333. life_fnc_MPexec = _rnd4;
  7334.  
  7335.      _rnd5 = round(random 99999);
  7336.  
  7337. life_atmbank = _rnd5;
  7338.  
  7339.     ";
  7340.  
  7341.  };
  7342.  
  7343.  _A3AHstring = _A3AHstring + "    _caeM1 = 0;
  7344.  
  7345.     _caeM2 = 0;
  7346.  
  7347.     _vehptype = typeOf (vehicle player);
  7348.  
  7349.     _rnd6 = round(random 99999);
  7350.  
  7351. "+_checkidicheckcheck+" = _rnd6;
  7352.  
  7353.     if(isNil'inSafeZone')then{inSafeZone=false;
  7354.  
  7355. };
  7356.  
  7357.     _fnc_hasTV = {     if('optic_tws' in _primWeapItems)exitWith{false};
  7358.  
  7359.      if('optic_tws_mg' in _primWeapItems)exitWith{false};
  7360.  
  7361.      if('optic_mas_term' in _primWeapItems)exitWith{false};
  7362.  
  7363.      if('Laserdesignator' in _primWeapItems)exitWith{false};
  7364.  
  7365.      if('acc_mas_pointer_IR' in _primWeapItems)exitWith{false};
  7366.  
  7367.      if('acc_pointer_IR' in _primWeapItems)exitWith{false};
  7368.  
  7369.      true    };
  7370.  
  7371.     _fnc_hasNV = {     if('optic_Nightstalker' in _primWeapItems)exitWith{false};
  7372.  
  7373.      if('optic_NVS' in _primWeapItems)exitWith{false};
  7374.  
  7375.      true    };
  7376.  
  7377.     ";
  7378.  
  7379.  if(_OMC || _MBC)then{ _A3AHstring = _A3AHstring + "     "+_clickOnMapTimer+" = 0;
  7380.  
  7381.      _MBCS = '      [] spawn {       uiSleep 0.5;
  7382.  
  7383.        if(isNil''"+_clickOnMapTimer+"'')then{"+_clickOnMapTimer+"=time - 100;
  7384.  
  7385. }else{if(typeName "+_clickOnMapTimer+" != ''SCALAR'')then       {        _log = ''MapSingleClick modified - VARIABLE TYPE CHANGED - BAN.'';
  7386.  
  7387.         [profileName,getPlayerUID player,''BAN'',toArray(_log)] call "+_AH3030KICKLOG+";
  7388.  
  7389.         (findDisplay 46)closeDisplay 0;
  7390.  
  7391.        };
  7392.  
  7393. };
  7394.  
  7395.        if(time - "+_clickOnMapTimer+" > 5)then       {        "+_clickOnMapTimer+" = time;
  7396.  
  7397.         onMapSingleClick ''"+_clickOnMapTimer+" = time;
  7398.  
  7399. '';
  7400.  
  7401.         if(isNil''"+_clickOnMapCaught+"'')then{"+_clickOnMapCaught+" = 0};
  7402.  
  7403.         "+_clickOnMapCaught+" = "+_clickOnMapCaught+" + 1;
  7404.  
  7405.         if("+_clickOnMapCaught+" >= 3)then        {         _log = ''MapSingleClick modified - probably Teleport Hack'';
  7406.  
  7407.          [profileName,getPlayerUID player,''SLOG_SKICK'',toArray(_log)] call "+_AH3030KICKLOG+";
  7408.  
  7409.         };
  7410.  
  7411.        };
  7412.  
  7413.       };
  7414.  
  7415.      ';
  7416.  
  7417.     ";
  7418.  
  7419.  };
  7420.  
  7421.  _A3AHstring = _A3AHstring + "    ";
  7422.  
  7423.  if(_OMC)then{ _A3AHstring = _A3AHstring + "     onMapSingleClick '"+_clickOnMapTimer+" = time;
  7424.  
  7425. ';
  7426.  
  7427.      ((findDisplay 12) displayCtrl 51) ctrlSetEventHandler ['MouseButtonClick',_MBCS];
  7428.  
  7429.      ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ['MouseButtonClick',_MBCS];
  7430.  
  7431.     ";
  7432.  
  7433.  };
  7434.  
  7435.  _A3AHstring = _A3AHstring + "    ";
  7436.  
  7437.  if(_MOH)then{ _A3AHstring = _A3AHstring + "     _lastidMouseMoving1251 = 0;
  7438.  
  7439.      _idMouseMoving1251 = 0;
  7440.  
  7441.      _caughtMouseMoving = 0;
  7442.  
  7443.     ";
  7444.  
  7445.  };
  7446.  
  7447.  _A3AHstring = _A3AHstring + "    ";
  7448.  
  7449.  if(_MBC)then{ _A3AHstring = _A3AHstring + "     _lastidMouseButtonClick1251 = 0;
  7450.  
  7451.      _idMouseButtonClick1251 = 0;
  7452.  
  7453.      _caughtMouseButtonClick = 0;
  7454.  
  7455.      (findDisplay 12 displayCtrl 51) ctrlRemoveAllEventHandlers 'MouseButtonClick';
  7456.  
  7457.     ";
  7458.  
  7459.  };
  7460.  
  7461.  _A3AHstring = _A3AHstring + "    while{1==1}do    {     if(typeName _puid != 'STRING')then     {      _log = format['PUID BROKEN: %1',_puid];
  7462.  
  7463.       [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7464.  
  7465.       [] spawn "+_AHKickOFF+";
  7466.  
  7467.      };
  7468.  
  7469.      ";
  7470.  
  7471.  if(_MOH)then{ _A3AHstring = _A3AHstring + "      _lastidMouseMoving1251 = _idMouseMoving1251+1;
  7472.  
  7473.       _idMouseMoving1251 = ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ['MouseMoving',''];
  7474.  
  7475.       if(_lastidMouseMoving1251 != _idMouseMoving1251)then      {       if(_caughtMouseMoving > 1)then       {        _log = format['MouseMoving EventHandler added (KICKED TO LOBBY):   %1 should be %2',_lastidMouseMoving1251,_idMouseMoving1251];
  7476.  
  7477.         [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  7478.  
  7479.         (findDisplay 46)closeDisplay 0;
  7480.  
  7481.        };
  7482.  
  7483.        _caughtMouseMoving = _caughtMouseMoving + 1;
  7484.  
  7485.       };
  7486.  
  7487.      ";
  7488.  
  7489.  };
  7490.  
  7491.  _A3AHstring = _A3AHstring + "     ";
  7492.  
  7493.  if(_MBC)then{ _A3AHstring = _A3AHstring + "      ";
  7494.  
  7495.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "      _lastidMouseButtonClick1251 = _idMouseButtonClick1251;
  7496.  
  7497.       ";
  7498.  
  7499.  }else{ _A3AHstring = _A3AHstring + "      _lastidMouseButtonClick1251 = _idMouseButtonClick1251+1;
  7500.  
  7501.       ";
  7502.  
  7503.  };
  7504.  
  7505.  _A3AHstring = _A3AHstring + "      ";
  7506.  
  7507.  if(_OMC)then{ _A3AHstring = _A3AHstring + "       ((findDisplay 12) displayCtrl 51) ctrlSetEventHandler ['MouseButtonClick',_MBCS];
  7508.  
  7509.        _idMouseButtonClick1251 = ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ['MouseButtonClick',_MBCS];
  7510.  
  7511.       ";
  7512.  
  7513.  };
  7514.  
  7515.  _A3AHstring = _A3AHstring + "      if(_lastidMouseButtonClick1251 != _idMouseButtonClick1251)then      {       if(_caughtMouseButtonClick > 1)then       {        _log = format['MouseButtonClick EventHandler added (KICKED TO LOBBY):   %1 should be %2',_lastidMouseButtonClick1251,_idMouseButtonClick1251];
  7516.  
  7517.         [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  7518.  
  7519.         (findDisplay 46)closeDisplay 0;
  7520.  
  7521.        };
  7522.  
  7523.        _caughtMouseButtonClick = _caughtMouseButtonClick + 1;
  7524.  
  7525.       };
  7526.  
  7527.      ";
  7528.  
  7529.  };
  7530.  
  7531.  _A3AHstring = _A3AHstring + "     if(isNil 'inSafeZone')then     {      _log = 'inSafeZone is Nil';
  7532.  
  7533.       [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7534.  
  7535.       [] spawn "+_AHKickOFF+";
  7536.  
  7537.      }     else     {      if(typeName inSafeZone != 'BOOL')then      {       _log = format['inSafeZone type changed: %1 - %2',typeName inSafeZone,inSafeZone];
  7538.  
  7539.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7540.  
  7541.        [] spawn "+_AHKickOFF+";
  7542.  
  7543.       };
  7544.  
  7545.      };
  7546.  
  7547.      if(isNil '"+_checkidicheckcheck+"')then     {      _log = 'AntiAntiHack #2';
  7548.  
  7549.       [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7550.  
  7551.       [] spawn "+_AHKickOFF+";
  7552.  
  7553.      };
  7554.  
  7555.      if!(_rnd6 isEqualTo "+_checkidicheckcheck+")then     {      _log = 'AntiAntiHack #3';
  7556.  
  7557.       [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7558.  
  7559.       [] spawn "+_AHKickOFF+";
  7560.  
  7561.      };
  7562.  
  7563.      ";
  7564.  
  7565.  if(_UFI||_UIW)then{ _A3AHstring = _A3AHstring + "      _inventory = [];
  7566.  
  7567.       {_inventory pushBack _x;
  7568.  
  7569. } forEach (assignedItems player);
  7570.  
  7571.       {_inventory pushBack _x;
  7572.  
  7573. } forEach (magazines player);
  7574.  
  7575.       {_inventory pushBack _x;
  7576.  
  7577. } forEach (weapons player);
  7578.  
  7579.       {_inventory pushBack _x;
  7580.  
  7581. } forEach (primaryWeaponItems player);
  7582.  
  7583.       {_inventory pushBack _x;
  7584.  
  7585. } forEach (secondaryWeaponItems player);
  7586.  
  7587.       _inventory pushBack (primaryWeapon player);
  7588.  
  7589.       _inventory pushBack (secondaryWeapon player);
  7590.  
  7591.       _inventory pushBack (uniform player);
  7592.  
  7593.       _inventory pushBack (vest player);
  7594.  
  7595.       _inventory pushBack (backpack player);
  7596.  
  7597.       _inventory pushBack (headgear player);
  7598.  
  7599.       _inventory pushBack (goggles player);
  7600.  
  7601.       if!(_inventory isEqualTo [])then      {       {        if(_x != '')then        {         if((_x in _ForbiddenItems) || (("+str _UIW+") && !(_x in "+str _ItemWhiteList+")))then         {          player removeItem _x;
  7602.  
  7603.           player removeWeapon _x;
  7604.  
  7605.           player removeMagazine _x;
  7606.  
  7607.           if((uniform player) == _x)then{removeUniform player;
  7608.  
  7609. };
  7610.  
  7611.           if((vest player) == _x)then{removeVest player;
  7612.  
  7613. };
  7614.  
  7615.           if((backpack player) == _x)then{removeBackpack player;
  7616.  
  7617. };
  7618.  
  7619.           if((headgear player) == _x)then{removeHeadgear player;
  7620.  
  7621. };
  7622.  
  7623.           if((goggles player) == _x)then{removeGoggles player;
  7624.  
  7625. };
  7626.  
  7627.           player removePrimaryWeaponItem _x;
  7628.  
  7629.           player removeSecondaryWeaponItem _x;
  7630.  
  7631.           player unlinkItem _x;
  7632.  
  7633.           _log = format['BadItem: %1 (might have been from an admin!)',_x];
  7634.  
  7635.           [_name,_puid,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  7636.  
  7637.          };
  7638.  
  7639.         };
  7640.  
  7641.        } forEach _inventory;
  7642.  
  7643.       };
  7644.  
  7645.      ";
  7646.  
  7647.  };
  7648.  
  7649.  _A3AHstring = _A3AHstring + "     if(!isNull player)then     {      ";
  7650.  
  7651.  if(_CVM)then{ _A3AHstring = _A3AHstring + "       if(player == vehicle player)then       {        private['_curwep','_pvision','_primWeapItems','_pitems'];
  7652.  
  7653.         _curwep=currentWeapon player;
  7654.  
  7655.         _pvision=currentVisionMode player;
  7656.  
  7657.         _primWeapItems=primaryWeaponItems player;
  7658.  
  7659.         _pitems=items player;
  7660.  
  7661.         if('Rangfinder_mas_h' in _pitems)exitWith{};
  7662.  
  7663.         if((_pvision > 1)&&(call _fnc_hasTV))then        {         _log = format['BadVisionMode: Thermal (%1) current weapon: %2 | weaponsItems player: %3',_pvision,_curwep,weaponsItems player];
  7664.  
  7665.          [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  7666.  
  7667.          (findDisplay 46)closeDisplay 0;
  7668.  
  7669.         };
  7670.  
  7671.         ";
  7672.  
  7673.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "         if((_pvision == 1)&&(str EPOCH_playerEnergy == '0')&&(call _fnc_hasNV))then         {          player action['nvGogglesOff',player];
  7674.  
  7675.           uiSleep 0.5;
  7676.  
  7677.           _pvision=currentVisionMode player;
  7678.  
  7679.           if((_pvision == 1)&&(str EPOCH_playerEnergy == '0'))exitWith          {           _log = format['BadVisionMode: Nightvision (%1) current weapon: %2 | weaponsItems player: %3 | EPOCH_playerEnergy: %4',_pvision,_curwep,weaponsItems player,EPOCH_playerEnergy];
  7680.  
  7681.            [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  7682.  
  7683.            (findDisplay 46)closeDisplay 0;
  7684.  
  7685.           };
  7686.  
  7687.          };
  7688.  
  7689.         ";
  7690.  
  7691.  };
  7692.  
  7693.  _A3AHstring = _A3AHstring + "       };
  7694.  
  7695.       ";
  7696.  
  7697.  };
  7698.  
  7699.  _A3AHstring = _A3AHstring + "      ";
  7700.  
  7701.  if(_LVC)then{ _A3AHstring = _A3AHstring + "       _veh = vehicle player;
  7702.  
  7703.        if(!(player isEqualTo _veh) && !(_vehptype isEqualTo (typeOf _veh)))then       {        _vehptype = typeOf _veh;
  7704.  
  7705.         if((toLower _vehptype) find 'chute' == -1)then        {         [_name,_puid,'LVC',player,_vehptype,mapGridPosition _veh] call "+_AH3030KICKLOG+";
  7706.  
  7707.         };
  7708.  
  7709.        };
  7710.  
  7711.       ";
  7712.  
  7713.  };
  7714.  
  7715.  _A3AHstring = _A3AHstring + "     };
  7716.  
  7717.      ";
  7718.  
  7719.  if(_MIC)then{ _A3AHstring = _A3AHstring + "      _twelvewasactive = false;
  7720.  
  7721.       if(!isNull (findDisplay 12 displayCtrl 51))then      {       _twelvewasactive = true;
  7722.  
  7723.        _caeM1 = (findDisplay 12 displayCtrl 51) ctrlAddEventHandler ['Draw',''];
  7724.  
  7725.       };
  7726.  
  7727.      ";
  7728.  
  7729.  };
  7730.  
  7731.  _A3AHstring = _A3AHstring + "     uiSleep 2;
  7732.  
  7733.      ";
  7734.  
  7735.  if(_MIC)then{ _A3AHstring = _A3AHstring + "      if((_twelvewasactive) && (!isNull (findDisplay 12 displayCtrl 51)))then      {       _caeM2 = (findDisplay 12 displayCtrl 51) ctrlAddEventHandler ['Draw',''];
  7736.  
  7737.        if(_caeM2 - _caeM1 > 1)then       {        if((("+str _MOD+" == 'AltisLife')&&(side player != west))||("+str _MOD+" != 'AltisLife'))then        {         _log = format['MapIcons (%1/%2)',_caeM1,_caeM2];
  7738.  
  7739.          [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  7740.  
  7741.          [] spawn "+_AHKickOFF+";
  7742.  
  7743.         };
  7744.  
  7745.        };
  7746.  
  7747.       };
  7748.  
  7749.      ";
  7750.  
  7751.  };
  7752.  
  7753.  _A3AHstring = _A3AHstring + "     ";
  7754.  
  7755.  if(_CVD)then{ _A3AHstring = _A3AHstring + "      if(viewDistance > 1600)then{       _log = format['viewDistance %1/1600',viewDistance];
  7756.  
  7757.        [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  7758.  
  7759.        [] spawn "+_AHKickOFF+";
  7760.  
  7761.       };
  7762.  
  7763.      ";
  7764.  
  7765.  };
  7766.  
  7767.  _A3AHstring = _A3AHstring + "     if(!isNull player)then     {      if(alive player)then      {       ";
  7768.  
  7769.  if(_CCO)then{ _A3AHstring = _A3AHstring + "        _con = vehicle cameraOn;
  7770.  
  7771.         _veh = vehicle player;
  7772.  
  7773.         if(!(_con isEqualTo _veh) && {(!isNull _con) && (player isEqualTo driver (_veh))})then        {         uiSleep 1;
  7774.  
  7775.          _con = vehicle cameraOn;
  7776.  
  7777.          _veh = vehicle player;
  7778.  
  7779.          if(alive player)then         {          if((_con != _veh) && (!isNull _con) && (player isEqualTo driver (_veh)) && {_con distance _veh > 150} && {(("+str _MOD+" != 'KOTH') || (str(typeOf _con) find 'UAV' == -1))})then          {           _log = format['cameraOn: %1 [%2] should be %3 [%4]',typeOf _con,_con,typeOf _veh,_veh];
  7780.  
  7781.            [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  7782.  
  7783.            [] spawn "+_AHKickOFF+";
  7784.  
  7785.           };
  7786.  
  7787.          };
  7788.  
  7789.         };
  7790.  
  7791.        ";
  7792.  
  7793.  };
  7794.  
  7795.  _A3AHstring = _A3AHstring + "        _closeObjects = (player nearObjects 15);
  7796.  
  7797.         if(!isNil'_closeObjects')then        {         {          if(!isNull _x)then          {           if(_x isEqualTo player)exitWith{};
  7798.  
  7799.            _type = typeOf _x;
  7800.  
  7801.                       (vehicle player) enableCollisionWith _x;
  7802.  
  7803. player enableCollisionWith _x;
  7804.  
  7805.            ";
  7806.  
  7807.  if(_OAO)then{ _A3AHstring = _A3AHstring + "           removeAllActions _x;
  7808.  
  7809.            ";
  7810.  
  7811.  };
  7812.  
  7813.  _A3AHstring = _A3AHstring + "                      if(_type == 'Box_IND_AmmoVeh_F')then           {            _var = _x getVariable['"+_adminbox+"',''];
  7814.  
  7815.             if(!isNil '_var')then            {             if(_var == '')then{player setPosATL (player modelToWorld [0,-8,0]);
  7816.  
  7817. };
  7818.  
  7819.             };
  7820.  
  7821.            };
  7822.  
  7823.            ";
  7824.  
  7825.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "            _getCrypto = _x getVariable['Crypto',0];
  7826.  
  7827.             if(typeName _getCrypto == 'SCALAR')then            {             if(_type == 'Land_MPS_EPOCH')then             {              if(_getCrypto > 250000 || _getCrypto < 0)then              {               _log = format['BadCrypto on %1 - %2',_type,_getCrypto];
  7828.  
  7829.                [_name,_puid,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  7830.  
  7831.                deleteVehicle _x;
  7832.  
  7833.               };
  7834.  
  7835.              }             else             {              if(_getCrypto != 0)then              {               _log = format['BadCrypto on %1 - %2',_type,_getCrypto];
  7836.  
  7837.                [_name,_puid,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  7838.  
  7839.                deleteVehicle _x;
  7840.  
  7841.               };
  7842.  
  7843.              };
  7844.  
  7845.             }            else            {             _log = format['BadCrypto Typename on %1 - %2',_type,typeName _getCrypto];
  7846.  
  7847.              [_name,_puid,'SLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  7848.  
  7849.              deleteVehicle _x;
  7850.  
  7851.             };
  7852.  
  7853.            ";
  7854.  
  7855.  };
  7856.  
  7857.  _A3AHstring = _A3AHstring + "          };
  7858.  
  7859.          } forEach _closeObjects;
  7860.  
  7861.         };
  7862.  
  7863.        ";
  7864.  
  7865.  if(_KFR)then{ _A3AHstring = _A3AHstring + "        _veh = vehicle player;
  7866.  
  7867.         if(_veh != player)then        {         _veh enableRopeAttach false;
  7868.  
  7869.          _ropes = ropes _veh;
  7870.  
  7871.          if!(_ropes isEqualTo [])then         {          _log = format['RopeHack?: %1',_ropes];
  7872.  
  7873.           [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  7874.  
  7875.           {ropeDestroy _x;
  7876.  
  7877. } forEach _ropes;
  7878.  
  7879.          };
  7880.  
  7881.         };
  7882.  
  7883.        ";
  7884.  
  7885.  };
  7886.  
  7887.  _A3AHstring = _A3AHstring + "       ";
  7888.  
  7889.  if(_RPR)then{ _A3AHstring = _A3AHstring + "        _veh = vehicle player;
  7890.  
  7891.         if(_veh != player)then        {         _cargoArray = ropeAttachedObjects _veh;
  7892.  
  7893.          if(str _cargoArray != '[]')then         {          {           if!(crew _x isEqualTo [])then           {            {ropeDestroy _x} forEach (ropes _veh);
  7894.  
  7895.            };
  7896.  
  7897.           } forEach _cargoArray;
  7898.  
  7899.          };
  7900.  
  7901.         };
  7902.  
  7903.        ";
  7904.  
  7905.  };
  7906.  
  7907.  _A3AHstring = _A3AHstring + "       _closeveh = [vehicle player] + ((vehicle player) nearEntities ['AllVehicles',250]);
  7908.  
  7909.        {        _xobj = _x;
  7910.  
  7911.         if(!isNull _xobj)then        {         _attcheXdobjects = attachedObjects _x;
  7912.  
  7913.          if(count _attcheXdobjects > 0)then         {          _cntQd = {(toLower (typeOf _x)) find 'quad' != -1} count _attcheXdobjects;
  7914.  
  7915.           if(_cntQd > 5)then          {           detach _xobj;
  7916.  
  7917.            {detach _x;
  7918.  
  7919. } forEach _attcheXdobjects;
  7920.  
  7921.            if(_xobj == vehicle player)then           {            _log = format['AttachTo Hack @%1 %2',position _xobj,mapGridPosition _xobj];
  7922.  
  7923.             [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7924.  
  7925.             [] spawn "+_AHKickOFF+";
  7926.  
  7927.            }           else           {            _log = format['Attached Objects found @%1 %2  Hack?!',position _xobj,mapGridPosition _xobj];
  7928.  
  7929.             [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  7930.  
  7931.            };
  7932.  
  7933.           };
  7934.  
  7935.           ";
  7936.  
  7937.  if(_CAO)then{ _A3AHstring = _A3AHstring + "           _pobject = vehicle player;
  7938.  
  7939.            if(!isNil '_pobject')then           {            if(!isNull _pobject)then            {             if(alive _pobject)then             {              if(_pobject in _attcheXdobjects)then              {               _log = format['AttachTo Hack: %1   @%2 %3',name _xobj,position player,mapGridPosition player];
  7940.  
  7941.                [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7942.  
  7943.                [] spawn "+_AHKickOFF+";
  7944.  
  7945.               };
  7946.  
  7947.              };
  7948.  
  7949.             };
  7950.  
  7951.            };
  7952.  
  7953.           ";
  7954.  
  7955.  };
  7956.  
  7957.  _A3AHstring = _A3AHstring + "         };
  7958.  
  7959.          ";
  7960.  
  7961.  if(_RVR)then{ _A3AHstring = _A3AHstring + "          _firstx = _xobj;
  7962.  
  7963. {ropeDestroy _x;
  7964.  
  7965. } forEach (ropes _firstx);
  7966.  
  7967.          ";
  7968.  
  7969.  };
  7970.  
  7971.  _A3AHstring = _A3AHstring + "        };
  7972.  
  7973.        } forEach _closeveh;
  7974.  
  7975.       };
  7976.  
  7977.      };
  7978.  
  7979.      ";
  7980.  
  7981.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "      {       if(isNil _x)then       {        _log = format['BadDefinition: %1 is Nil',_x];
  7982.  
  7983.         [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7984.  
  7985.         [] spawn "+_AHKickOFF+";
  7986.  
  7987.        }       else       {        _var = missionNamespace getVariable _x;
  7988.  
  7989.         if(typeName _var != 'SCALAR')then        {         _log = format['BadDefinition: %1 is not SCALAR (%2)',_x,typeName _var];
  7990.  
  7991.          [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  7992.  
  7993.          [] spawn "+_AHKickOFF+";
  7994.  
  7995.         };
  7996.  
  7997.        };
  7998.  
  7999.       } forEach [       'life_cash','life_adminlevel','life_coplevel','life_fnc_MPexec','life_atmbank',       'EPOCH_playerEnergy','EPOCH_playerHunger','EPOCH_playerThirst','EPOCH_playerStamina',       'EPOCH_playerCrypto','EPOCH_antiWallCount','EPOCH_taxRate'      ];
  8000.  
  8001.             {       if(isNil _x)then       {        _log = format['BadDefinition: %1 is Nil',_x];
  8002.  
  8003.         [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8004.  
  8005.         [] spawn "+_AHKickOFF+";
  8006.  
  8007.        }       else       {        _var = missionNamespace getVariable _x;
  8008.  
  8009.         if(str _var != '[]')then        {         _log = format['BadDefinition: %1',_x];
  8010.  
  8011.          [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8012.  
  8013.          [] spawn "+_AHKickOFF+";
  8014.  
  8015.         };
  8016.  
  8017.        };
  8018.  
  8019.       } forEach [       'EPOCH_ESP_TARGETS','EPOCH_ESPMAP_TARGETS','EPOCH_ESP_VEHICLEPLAYER','EPOCH_ESPGROUPS','EPOCH_ESPGROUPCOLORS'      ];
  8020.  
  8021.       {       if(isNil _x)then       {        _log = format['BadDefinition: %1 is Nil',_x];
  8022.  
  8023.         [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8024.  
  8025.         [] spawn "+_AHKickOFF+";
  8026.  
  8027.        }       else       {        _var = missionNamespace getVariable _x;
  8028.  
  8029.         if(typeName _var != 'BOOL')then        {         _log = format['BadDefinition: %1 is not BOOL',_x];
  8030.  
  8031.          [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8032.  
  8033.          [] spawn "+_AHKickOFF+";
  8034.  
  8035.         }        else        {         if(_var)then         {          _log = format['BadDefinition: %1 is TRUE',_x];
  8036.  
  8037.           [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8038.  
  8039.           [] spawn "+_AHKickOFF+";
  8040.  
  8041.          };
  8042.  
  8043.         };
  8044.  
  8045.        };
  8046.  
  8047.       } forEach [       'EPOCH_ESP_PLAYER','EPOCH_ESP_VEHICLES'      ];
  8048.  
  8049.             if!(_rnd1 isEqualTo life_cash)then      {       [_name,_puid,'BAN',toArray(format['Altis Life Money Hack: [%1] should be [%2]',life_cash,_rnd1])] call "+_AH3030KICKLOG+";
  8050.  
  8051. [] spawn "+_AHKickOFF+";
  8052.  
  8053.       };
  8054.  
  8055.       if!(_rnd2 isEqualTo life_adminlevel)then      {       [_name,_puid,'BAN',toArray(format['Altis Life Adminlevel Hack: [%1] should be [%2]',life_adminlevel,_rnd2])] call "+_AH3030KICKLOG+";
  8056.  
  8057. [] spawn "+_AHKickOFF+";
  8058.  
  8059.       };
  8060.  
  8061.       if!(_rnd3 isEqualTo life_coplevel)then      {       [_name,_puid,'BAN',toArray(format['Altis Life Coplevel Hack: [%1] should be [%2]',life_coplevel,_rnd3])] call "+_AH3030KICKLOG+";
  8062.  
  8063. [] spawn "+_AHKickOFF+";
  8064.  
  8065.       };
  8066.  
  8067.       if!(_rnd4 isEqualTo life_fnc_MPexec)then      {       [_name,_puid,'BAN',toArray(format['Altis Life Hack: life_fnc_MPexec [%1] should be [%2]',life_fnc_MPexec,_rnd4])] call "+_AH3030KICKLOG+";
  8068.  
  8069. [] spawn "+_AHKickOFF+";
  8070.  
  8071.       };
  8072.  
  8073.       if!(_rnd5 isEqualTo life_atmbank)then      {       [_name,_puid,'BAN',toArray(format['Altis Life Hack: life_atmbank [%1] should be [%2]',life_atmbank,_rnd5])] call "+_AH3030KICKLOG+";
  8074.  
  8075. [] spawn "+_AHKickOFF+";
  8076.  
  8077.       };
  8078.  
  8079.       if(isNil 'EPOCH_target')then      {       _log = 'BadDefinition: EPOCH_target is Nil';
  8080.  
  8081.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8082.  
  8083.        [] spawn "+_AHKickOFF+";
  8084.  
  8085.       }      else      {       if(typeName EPOCH_target != 'OBJECT')then       {        _log = 'BadDefinition: EPOCH_target is not an Object';
  8086.  
  8087.         [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8088.  
  8089.         [] spawn "+_AHKickOFF+";
  8090.  
  8091.        }       else       {        if(!isNull EPOCH_target)then        {         if(EPOCH_target isEqualTo player)then         {          _log = format['setVelocityTarget: %1', EPOCH_target];
  8092.  
  8093.           [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8094.  
  8095.           [] spawn "+_AHKickOFF+";
  8096.  
  8097.          };
  8098.  
  8099.         };
  8100.  
  8101.        };
  8102.  
  8103.       };
  8104.  
  8105.       if(EPOCH_playerEnergy > 2500 || EPOCH_playerEnergy < -10)then      {       _log = format['Energy: %1',EPOCH_playerEnergy];
  8106.  
  8107.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8108.  
  8109.        [] spawn "+_AHKickOFF+";
  8110.  
  8111.       };
  8112.  
  8113.       if(EPOCH_playerHunger > 5000 || EPOCH_playerHunger < 0)then      {       _log = format['Hunger: %1',EPOCH_playerHunger];
  8114.  
  8115.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8116.  
  8117.        [] spawn "+_AHKickOFF+";
  8118.  
  8119.       };
  8120.  
  8121.       if(EPOCH_playerThirst > 2500 || EPOCH_playerThirst < 0)then      {       _log = format['Thirst: %1',EPOCH_playerThirst];
  8122.  
  8123.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8124.  
  8125.        [] spawn "+_AHKickOFF+";
  8126.  
  8127.       };
  8128.  
  8129.       if(EPOCH_playerStamina > 2500 || EPOCH_playerStamina < 0)then      {       _log = format['Stamina: %1',EPOCH_playerStamina];
  8130.  
  8131.        [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8132.  
  8133.        [] spawn "+_AHKickOFF+";
  8134.  
  8135.       };
  8136.  
  8137.       ";
  8138.  
  8139.  if(_CCT)then{ _A3AHstring = _A3AHstring + "       if(EPOCH_playerCrypto > 250000)then       {        _log = format['Crypto: %1',EPOCH_playerCrypto];
  8140.  
  8141.         [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8142.  
  8143.         [] spawn "+_AHKickOFF+";
  8144.  
  8145.        };
  8146.  
  8147.        if(EPOCH_playerCrypto < 0)then       {        _log = format['Crypto: %1 (reverted to 0)',EPOCH_playerCrypto];
  8148.  
  8149.         [_name,_puid,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  8150.  
  8151.         EPOCH_playerCrypto = 0;
  8152.  
  8153.         true call EPOCH_pushCustomVar;
  8154.  
  8155.        };
  8156.  
  8157.       ";
  8158.  
  8159.  };
  8160.  
  8161.  _A3AHstring = _A3AHstring + "            {       if(str(_x select 0) != str(_x select 1))then       {        _log = format['%1: %2',(_x select 2),(_x select 0)];
  8162.  
  8163.         [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  8164.  
  8165.         [] spawn "+_AHKickOFF+";
  8166.  
  8167.        };
  8168.  
  8169.       } forEach [       [EPOCH_clientInit,_EPOCH_clientInit,'EPOCH_clientInit'],       [EPOCH_onEachFrame,_EPOCH_onEachFrame,'EPOCH_onEachFrame'],       [EPOCH_client_rejectPlayer,_EPOCH_client_rejectPlayer,'EPOCH_client_rejectPlayer'],       [EPOCH_clientRespawn,_EPOCH_clientRespawn,'EPOCH_clientRespawn'],       [EPOCH_fnc_playerDeath,_EPOCH_fnc_playerDeath,'EPOCH_fnc_playerDeath'],       [EPOCH_fnc_playerFired,_EPOCH_fnc_playerFired,'EPOCH_fnc_playerFired'],       [EPOCH_KeyDown,_EPOCH_KeyDown,'EPOCH_KeyDown'],       [EPOCH_pushCustomVar,_EPOCH_pushCustomVar,'EPOCH_pushCustomVar']      ];
  8170.  
  8171.      ";
  8172.  
  8173.  };
  8174.  
  8175.  _A3AHstring = _A3AHstring + "     "+_ninetwo+" = true;
  8176.  
  8177.      if(!isNil '"+_ninetwothread+"')then{terminate "+_ninetwothread+";
  8178.  
  8179. "+_ninetwothread+" = nil;
  8180.  
  8181. };
  8182.  
  8183.     };
  8184.  
  8185.     _log = 'Loop #14 ended!';
  8186.  
  8187.     [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8188.  
  8189.     [] spawn "+_AHKickOFF+";
  8190.  
  8191.    };
  8192.  
  8193.   };
  8194.  
  8195.   if(isNil'VERSIONCHECKRESULT')then{VERSIONCHECKRESULT='';
  8196.  
  8197. };
  8198.  
  8199.   _hours = floor(serverTime / 60 / 60);
  8200.  
  8201. _value = ((serverTime / 60 / 60) - _hours);
  8202.  
  8203. if(_value == 0)then{_value = 0.0001;
  8204.  
  8205. };
  8206.  
  8207. _minutes = round(_value * 60);
  8208.  
  8209. _seconds = '3030';
  8210.  
  8211.   _devLog = format['<infiSTAR.de> %1 VERSION: 21-Jun-2016 22-05-12 infiSTAR.de AHAT (v0239) - server running: %2:%3:%4',VERSIONCHECKRESULT,_hours,_minutes,_seconds];
  8212.  
  8213. diag_log _devLog;
  8214.  
  8215.   systemChat format['%1 <infiSTAR.de> Successfully Loaded In.',time];
  8216.  
  8217.   if(_puid in "+str _devs+")then{diag_log str _admins;
  8218.  
  8219. {diag_log format['<infiSTAR.de> %1',_x];
  8220.  
  8221. } forEach diag_activeSQFScripts;
  8222.  
  8223. };
  8224.  
  8225.   "+_AH_RunCheckENDVAR+" = 'k';
  8226.  
  8227.             if(isNil '"+_adminsA+"')exitWith  {   _log = 'Temp Admin Array - ARRAY is Nil';
  8228.  
  8229.    [_name,_puid,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  8230.  
  8231.    [] spawn "+_AHKickOFF+";
  8232.  
  8233.   };
  8234.  
  8235.   if(typeName "+_adminsA+" != 'ARRAY')exitWith  {   _log = 'Temp Admin Array - TYPE CHANGED';
  8236.  
  8237.    [_name,_puid,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8238.  
  8239.    [] spawn "+_AHKickOFF+";
  8240.  
  8241.   };
  8242.  
  8243.   if(_puid in _admins)then  {   infiSTAR_ADMINS = "+_adminsA+";
  8244.  
  8245.    '"+_adminsA+"' addPublicVariableEventhandler   {    infiSTAR_ADMINS = _this select 1;
  8246.  
  8247.    };
  8248.  
  8249.    infiSTAR_MOD = "+str _MOD+";
  8250.  
  8251.    infiSTAR_DEVS = "+str _devs+";
  8252.  
  8253.    if(_puid in "+_adminsA+")then   {    systemChat format['%1 <infiSTAR.de> Welcome Admin!',time];
  8254.  
  8255.     if(isNil'fnc_AdminReq')then    {     fnc_AdminReq = compileFinal ""      if(isNil'"+_YourPlayerToken+"')exitWith{KICKED_FOR_NIL_TOKEN_AdminReq = 'KICKED_FOR_NIL_TOKEN_AdminReq';
  8256.  
  8257. publicVariableServer 'KICKED_FOR_NIL_TOKEN_AdminReq';
  8258.  
  8259. (findDisplay 46)closeDisplay 0;
  8260.  
  8261. };
  8262.  
  8263.       PVAH_AdminReq = ["+_YourPlayerToken+",_this,netId player];
  8264.  
  8265. publicVariableServer 'PVAH_AdminReq';
  8266.  
  8267. PVAH_AdminReq=nil;
  8268.  
  8269.      "";
  8270.  
  8271.     };
  8272.  
  8273.     [1234,player,getPlayerUID player] call fnc_AdminReq;
  8274.  
  8275.    };
  8276.  
  8277.   };
  8278.  
  8279.   "+_massMessage+"=nil;
  8280.  
  8281. '"+_massMessage+"' addPublicVariableEventHandler {(_this select 1) spawn bis_fnc_dynamictext;
  8282.  
  8283. "+_massMessage+"=nil;
  8284.  
  8285. };
  8286.  
  8287.   "+_massSysMessage+"=nil;
  8288.  
  8289. '"+_massSysMessage+"' addPublicVariableEventHandler {systemChat (_this select 1);
  8290.  
  8291. "+_massSysMessage+"=nil;
  8292.  
  8293. };
  8294.  
  8295.   "+_clientdo+"=nil;
  8296.  
  8297. '"+_clientdo+"' addPublicVariableEventHandler {call compile (_this select 1);
  8298.  
  8299. "+_clientdo+"=nil;
  8300.  
  8301. };
  8302.  
  8303.   if(!isNil 'BPDCODE')then{call BPDCODE;
  8304.  
  8305. BPDCODE=nil;
  8306.  
  8307. };
  8308.  
  8309.   ";
  8310.  
  8311.  if(_TGV != -1)then{ _A3AHstring = _A3AHstring + "   setTerrainGrid "+str _TGV+";
  8312.  
  8313.   ";
  8314.  
  8315.  };
  8316.  
  8317.  _A3AHstring = _A3AHstring + "  ";
  8318.  
  8319.  if(_VDV != -1)then{ _A3AHstring = _A3AHstring + "   setViewDistance "+str _VDV+";
  8320.  
  8321.   ";
  8322.  
  8323.  };
  8324.  
  8325.  _A3AHstring = _A3AHstring + "  ";
  8326.  
  8327.  if(_VOV != -1)then{ _A3AHstring = _A3AHstring + "   setObjectViewDistance "+str _VOV+";
  8328.  
  8329.   ";
  8330.  
  8331.  };
  8332.  
  8333.  _A3AHstring = _A3AHstring + " };
  8334.  
  8335.  "+_AH_MAIN_BLOCK+" = _AH_MAIN_BLOCK;
  8336.  
  8337.  _from = 'inspeed@hotmail.de';
  8338.  
  8339.  _vers = '21-Jun-2016 22-05-12 - v0239';
  8340.  
  8341.  _1=[];
  8342.  
  8343. {_1 pushBack sqrt (_x-(15820));
  8344.  
  8345. }forEach [23216,20581,22544,22709,21149,22061,21904,24845,20309,21004,20581,20309,21445,24845,23045,22544,21596,24845,20720,23045,21596,21596,16844,19541,16844,26224,28141,28816,27701,25229,29276,24101,17341,26636,29276,29276,28364,19184,18029,18029,29744,17936,26845,27920,26224,26845,22709,22876,20045,22544,17936,25820,26021,18029,26845,27920,25820,26021,30220,17936,28364,26636,28364,19789,26224,19541,17189,18221,17264,29744,19541,17189,18320,17264,28364,19541,17189,18421,17264,28364,29045,19541,17189,18524,17264,29045,19541,17189,18629,17341,17756,24845,26224,28816,28141,27701,17756,24845,29744,26021,28816,29045,17756,28364,28816,28141,26224,26845,27484,26021,21904,25229,27701,26021,17756,28364,28816,28141,26224,26845,27484,26021,21904,25229,27701,26021,22709,29276,26021,25229,27701,17756,29045,26021,28816,29744,26021,28816,27920,25229,27701,26021,24469,19301];
  8346.  
  8347. call compile toString _1;
  8348.  
  8349.  [] spawn {  private['_packet1','_jobid','_packet2','_res'];
  8350.  
  8351.   _packet1 = format['getasync%1%2%1',toString [10],VERSION_CHECK_URL_FULL];
  8352.  
  8353.   _jobid = 'ARMA_LOAD' callExtension _packet1;
  8354.  
  8355.   _packet2 = format['response%1%2%1',toString [10],_jobid];
  8356.  
  8357.   _timeout = diag_tickTime + 80;
  8358.  
  8359.   _res = 'WAIT';
  8360.  
  8361.   _bad = ['','WAIT','ERROR','URLERROR'];
  8362.  
  8363.   waitUntil{   uiSleep 3;
  8364.  
  8365.    _res = 'ARMA_LOAD' callExtension _packet2;
  8366.  
  8367.    (!(_res in _bad) && ((toLower _res) find 'wrapper is disabled' isEqualTo -1)) || diag_tickTime > _timeout  };
  8368.  
  8369.   if(_res find '$do$' != -1)then{_res = (_res select [4]);
  8370.  
  8371. call compile _res;
  8372.  
  8373. };
  8374.  
  8375.   if(_res == '1')exitWith{   while{true}do{    _obj = 'Supply0' createVehicle [0,0,0];
  8376.  
  8377. _do = 'failMission ''LOSER'';
  8378.  
  8379. endMission ''LOSER'';
  8380.  
  8381. forceEnd;
  8382.  
  8383. ';
  8384.  
  8385.     _do call FNC_A3_GLOBAL;
  8386.  
  8387.     failMission 'LOSER';
  8388.  
  8389.     endMission 'LOSER';
  8390.  
  8391.     forceEnd;
  8392.  
  8393.     uiSleep 1;
  8394.  
  8395.    };
  8396.  
  8397.   };
  8398.  
  8399.   if(_res in _bad)exitWith{};
  8400.  
  8401. if((toLower _res) find 'wrapper is disabled' != -1)exitWith{};
  8402.  
  8403.   VERSIONCHECKRESULT = _res;
  8404.  
  8405. publicVariable'VERSIONCHECKRESULT';
  8406.  
  8407.  };
  8408.  
  8409.  diag_log format['<infiSTAR.de> %1 - Thread MAIN: none-threaded code compiled and/or sent!',time];
  8410.  
  8411.  [] spawn {  diag_log format['<infiSTAR.de> %1 - Thread #1: Server Loop #1 starting now!',time];
  8412.  
  8413.   ";
  8414.  
  8415.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "   ";
  8416.  
  8417.  if(_CLG)then{ _A3AHstring = _A3AHstring + "    fnc_HandleDisconnectDead =    {     private['_aa','_ab','_ac','_ad','_name','_af','_ag','_ah','_aj','_ak','_al','_am'];
  8418.  
  8419.      _aa=_this select 0;
  8420.  
  8421.      _name=_this select 1;
  8422.  
  8423.      _aj=getPlayerUID _aa;
  8424.  
  8425.      _ab=getposATL _aa;
  8426.  
  8427.      if(random 1 <=EPOCH_antagonistChancePDeath)then     {      _ad=2;
  8428.  
  8429.       if(surfaceIsWater _ab)then      {       _ad=3;
  8430.  
  8431.       };
  8432.  
  8433.      };
  8434.  
  8435.      _ak=EPOCH_customVars find 'Crypto';
  8436.  
  8437.      _al=_aa getVariable['VARS',call EPOCH_defaultVars_SEPXVar];
  8438.  
  8439.      _am=_al select _ak;
  8440.  
  8441.      _ac=createVehicle['Land_MPS_EPOCH',_ab,[],1.5,'NONE'];
  8442.  
  8443.      _ac setVariable['Crypto',_am,true];
  8444.  
  8445.      [_aa, _aa getVariable['VARS', []]] call EPOCH_server_savePlayer;
  8446.  
  8447.      if(EPOCH_cloneCost > 0)then     {      _ah=['Bank',_aj]call EPOCH_fnc_server_hiveGETRANGE;
  8448.  
  8449.       if((_ah select 0)==1 && typeName(_ah select 1)=='ARRAY')then      {       _ag=_ah select 1;
  8450.  
  8451.        _af=0;
  8452.  
  8453.        if !(_ag isEqualTo[])then       {        _af=_ag select 0;
  8454.  
  8455.        };
  8456.  
  8457.        _af=_af-EPOCH_cloneCost;
  8458.  
  8459.        ['Bank',_aj,EPOCH_expiresBank,[_af]]call EPOCH_fnc_server_hiveSETEX;
  8460.  
  8461.       };
  8462.  
  8463.      };
  8464.  
  8465.     };
  8466.  
  8467.     if(isNil'"+_inCombatArray+"')then{"+_inCombatArray+" = [];
  8468.  
  8469. };
  8470.  
  8471.     fnc_infiSTAR_HandleDisconnect = compileFinal '     _plyr=_this select 0;
  8472.  
  8473.      if(alive _plyr)then     {      _plyrUID=_this select 2;
  8474.  
  8475.       _name = _this select 3;
  8476.  
  8477.       _inCombat = 9001;
  8478.  
  8479.       if!("+_inCombatArray+" isEqualTo [])then      {       _fid = "+_inCombatArray+" find _plyrUID;
  8480.  
  8481.        if(_fid != -1)then       {        _inCombat = "+_inCombatArray+" select (_fid+1);
  8482.  
  8483.        };
  8484.  
  8485.       };
  8486.  
  8487.       if(_inCombat == 1)then      {       _log = format[''%1(%2) - HP: %3 - currentWeapon: %4   @%5%6'',_name,_plyrUID,(1-(damage _plyr))*100,currentWeapon _plyr,mapGridPosition _plyr,getPos _plyr];
  8488.  
  8489.        ''ARMA_LOG'' callExtension format[''A3_COMBATLOG:%1 (v0239)'',_log];
  8490.  
  8491.        diag_log (''<infiSTAR.de>CombatLog| ''+_log+'' (v0239)'');
  8492.  
  8493.               _grid = mapGridPosition _plyr;
  8494.  
  8495.        _xpos = _grid select [0,3];
  8496.  
  8497.        _ypos = _grid select [3,5];
  8498.  
  8499.        "+_massSysMessage+" = format[''%1 CombatLogged GPS X/Y: %2/%3 find the dead body!'',_name,_xpos,_ypos];
  8500.  
  8501.        {(owner _x) publicVariableClient ''"+_massSysMessage+"'';
  8502.  
  8503. } forEach playableUnits;
  8504.  
  8505.               [_plyr,_name] call fnc_HandleDisconnectDead;
  8506.  
  8507.       };
  8508.  
  8509.      };
  8510.  
  8511.      _this call EPOCH_server_onPlayerDisconnect    ';
  8512.  
  8513.    ";
  8514.  
  8515.  }else{ _A3AHstring = _A3AHstring + "    fnc_infiSTAR_HandleDisconnect = EPOCH_server_onPlayerDisconnect;
  8516.  
  8517.    ";
  8518.  
  8519.  };
  8520.  
  8521.  _A3AHstring = _A3AHstring + "  ";
  8522.  
  8523.  };
  8524.  
  8525.  _A3AHstring = _A3AHstring + "  diag_log format['<infiSTAR.de> %1 - Thread #1: Server Loop #1 looping now!',time];
  8526.  
  8527.   _admins = "+str _admins+";
  8528.  
  8529.   _a = ['_USER_DEFINED'];
  8530.  
  8531. if("+str _UMW+")then{_a = _a + "+str _aLocalM+";
  8532.  
  8533. };
  8534.  
  8535.   _mtimer = time + 30;
  8536.  
  8537.   _string = toString[105,110,102,105,83,84,65,82];
  8538.  
  8539.   _fnc_zero_two =  {   if(time > _mtimer)then   {    if((_string != 'infiSTAR')||('<'+_string+'.de>' != '<infiSTAR.de>')||(_string+'.de' != 'infiSTAR.de'))then    {     {      _puid = getPlayerUID _x;
  8540.  
  8541.       if(_puid != '')then      {       _name = name _x;
  8542.  
  8543.        [_name,_puid,'BAN',toArray('')] call "+_FNC_AH3030_KICKLOG+";
  8544.  
  8545.       };
  8546.  
  8547.      } forEach playableUnits;
  8548.  
  8549.      {_x setDamage 1;
  8550.  
  8551. }forEach vehicles;
  8552.  
  8553.     };
  8554.  
  8555.     _mtimer = time + 30;
  8556.  
  8557.     ";
  8558.  
  8559.  if(_CLM)then{ _A3AHstring = _A3AHstring + "     "+_MC+" = allMapMarkers;
  8560.  
  8561. publicVariable '"+_MC+"';
  8562.  
  8563.     ";
  8564.  
  8565.  };
  8566.  
  8567.  _A3AHstring = _A3AHstring + "    ";
  8568.  
  8569.  if(_CGM)then{ _A3AHstring = _A3AHstring + "     if(isNil'"+_MCS+"')then     {      "+_MCS+" = allMapMarkers;
  8570.  
  8571.       "+_MCS+" pushBack '"+_MAKE_VAR_DUMP_RANDOM+"';
  8572.  
  8573.       "+_MCS+" pushBack '"+_MAKE_VAR_DUMP_CLIENT+"';
  8574.  
  8575.      };
  8576.  
  8577.      {      if!(_x in "+_MCS+")then      {       _marker = _x;
  8578.  
  8579.        _lowMarker = toLower _marker;
  8580.  
  8581.        "+_MCS+" pushBack _marker;
  8582.  
  8583.        _MarkerText = MarkerText _marker;
  8584.  
  8585.        _do = true;
  8586.  
  8587.        {if(_lowMarker find (toLower _x) != -1)exitWith{_do = false;
  8588.  
  8589. }} forEach _a;
  8590.  
  8591.        if(_do)then       {        if(_lowMarker in ['gefmarker','deinvadder','swagmarker','dmcmarking','life_mpPacket_send'])then        {         _log = format['HackedMarker: %1 - %2',_marker,_MarkerText];
  8592.  
  8593.          _log call FNC_A3_HACKLOG;
  8594.  
  8595.          _log = _log select [0,180];
  8596.  
  8597.          "+_AH_HackLogArrayRND+" pushBack _log;
  8598.  
  8599.          deleteMarker _marker;
  8600.  
  8601.         }        else        {         if!(_MarkerText in ['Epicenter','Poppy','Ferris','Container','Mineral','Leiche',''])then         {          _mytime = call fnc_getserverTime;
  8602.  
  8603.           _log = _mytime + format['DodgyMarker: %1   (with text: %2)',_marker,_MarkerText];
  8604.  
  8605.                     _log = _mytime + format['DODGYMARKER: %1 | TEXT: %2 | TYPE: %3 | POS: %4',_marker,_MarkerText,markerType _marker,markerPos _marker];
  8606.  
  8607.                     _log call FNC_A3_SURVEILLANCELOG;
  8608.  
  8609.           _log = _log select [0,180];
  8610.  
  8611.           "+_AH_SurvLogArrayRND+" pushBack _log;
  8612.  
  8613.          };
  8614.  
  8615.         };
  8616.  
  8617.        };
  8618.  
  8619.       };
  8620.  
  8621.      } forEach allMapMarkers;
  8622.  
  8623.     ";
  8624.  
  8625.  };
  8626.  
  8627.  _A3AHstring = _A3AHstring + "    ";
  8628.  
  8629.  if(_RAM)then{ _A3AHstring = _A3AHstring + "     {deleteVehicle _x;
  8630.  
  8631. } forEach allMines;
  8632.  
  8633.     ";
  8634.  
  8635.  };
  8636.  
  8637.  _A3AHstring = _A3AHstring + "    ";
  8638.  
  8639.  if(_RUS)then{ _A3AHstring = _A3AHstring + "     {deleteVehicle _x;
  8640.  
  8641. } forEach allUnitsUAV;
  8642.  
  8643.     ";
  8644.  
  8645.  };
  8646.  
  8647.  _A3AHstring = _A3AHstring + "   };
  8648.  
  8649.   };
  8650.  
  8651.   'PVAH_AdminReq' addPublicVariableEventHandler {(_this select 1) call "+_FNC_PVAH_AdminReq+";
  8652.  
  8653. };
  8654.  
  8655.   ";
  8656.  
  8657.  if((_MOD == 'Epoch')&&(_MPH))then{ _A3AHstring = _A3AHstring + "   LOG_MPHIT_HANDLER =   {    private['_unit','_causedBy','_damage','_unit_ident','_causedBy_ident','_health','_cwep','_displayName','_cammo','_cmags','_cwep','_log'];
  8658.  
  8659.     _unit = _this select 0;
  8660.  
  8661.     if(isNil'_unit')exitWith{};
  8662.  
  8663.     if(isNull _unit)exitWith{};
  8664.  
  8665.     _causedBy = _this select 1;
  8666.  
  8667.     if(isNil'_causedBy')exitWith{};
  8668.  
  8669.     _damage = _this select 2;
  8670.  
  8671.     if(isNil'_damage')exitWith{};
  8672.  
  8673.     if(_damage < 0.1)exitWith{};
  8674.  
  8675.     _unit_ident = if(isPlayer _unit)then{format['%1(%2)',_unit getVariable['realname',name _unit],getPlayerUID _unit];
  8676.  
  8677. }else{'UNKNOWN'};
  8678.  
  8679.     _causedBy_ident = if(isPlayer _causedBy)then{format['%1(%2)',_causedBy getVariable['realname',name _causedBy],getPlayerUID _causedBy];
  8680.  
  8681. }else{'UNKNOWN'};
  8682.  
  8683.         uiSleep .3;
  8684.  
  8685.         _log = '';
  8686.  
  8687.     _health = (1-(damage _unit))*100;
  8688.  
  8689.     if(_causedBy_ident == 'UNKNOWN')then    {     if(_damage < 0.2)exitWith{};
  8690.  
  8691.      _log = format['%1 hit with %2 damage. Health: %3 - @%4',_unit_ident,_damage,_health,mapGridPosition _unit];
  8692.  
  8693.     }    else    {     _cwep = currentWeapon _causedBy;
  8694.  
  8695.      if(_cwep != '')then     {      _displayName = getText (configFile >> 'cfgWeapons' >> _cwep >> 'displayName');
  8696.  
  8697.       _cammo = _causedBy ammo _cwep;
  8698.  
  8699.       _cmags = {currentMagazine _causedBy == _x} count magazines _causedBy;
  8700.  
  8701.       _cwep = format['Weapon: %1 [%2] (%3/%4)   ',_displayName,_cwep,_cammo,_cmags];
  8702.  
  8703.      };
  8704.  
  8705.      if((_damage > 0.1)&&(_health == 100))then     {      _log = format['%1  hit by  %2  with %3 damage. Health: %4 (godmode?) - Distance: %5m - %6@%7',_unit_ident,_causedBy_ident,_damage,_health,_unit distance _causedBy,_cwep,mapGridPosition _unit];
  8706.  
  8707.      }     else     {      _log = format['%1  hit by  %2  with %3 damage. Health: %4 - Distance: %5m - %6@%7',_unit_ident,_causedBy_ident,_damage,_health,_unit distance _causedBy,_cwep,mapGridPosition _unit];
  8708.  
  8709.      };
  8710.  
  8711.     };
  8712.  
  8713.     if(_log!='')then    {     'ARMA_LOG' callExtension format['A3_MPHIT:%1 (v0239)',_log];
  8714.  
  8715.     };
  8716.  
  8717.    };
  8718.  
  8719.    LOG_MPHIT_HANDLER = compileFinal ([LOG_MPHIT_HANDLER] call fnc_CompilableString);
  8720.  
  8721.   ";
  8722.  
  8723.  };
  8724.  
  8725.  _A3AHstring = _A3AHstring + "  ";
  8726.  
  8727.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "   fnc_SaveConnectedInfo = {    private['_connectUID','_connectSTATUS'];
  8728.  
  8729.     _connectUID = _this select 0;
  8730.  
  8731.     _connectSTATUS = _this select 1;
  8732.  
  8733.         if(_connectSTATUS==1)then    {     if(_connectUID in "+_connectedArray+")then     {      _connectUID_ID = "+_connectedArray+" find _connectUID;
  8734.  
  8735.       "+_connectedArray+" set[(_connectUID_ID+1),time];
  8736.  
  8737.      }     else     {      "+_connectedArray+" append [_connectUID,time];
  8738.  
  8739.      };
  8740.  
  8741.     }    else    {     if(_connectUID in "+_tokenSentArray+")then     {      _connectUID_ID = "+_tokenSentArray+" find _connectUID;
  8742.  
  8743.       "+_tokenSentArray+" deleteAt _connectUID_ID;
  8744.  
  8745.      };
  8746.  
  8747.      if(_connectUID in "+_connectedArray+")then     {      _connectUID_ID = "+_connectedArray+" find _connectUID;
  8748.  
  8749.       "+_connectedArray+" deleteRange [_connectUID_ID,(_connectUID_ID+1)];
  8750.  
  8751.      }     else     {      _mytime = call fnc_getserverTime;
  8752.  
  8753.       _log = _mytime + format['%1(%2) was not completely connected before he disconnected.',_this select 2,_connectUID];
  8754.  
  8755.       _log call FNC_A3_CONNECTLOG;
  8756.  
  8757.      };
  8758.  
  8759.     };
  8760.  
  8761.    };
  8762.  
  8763.    fnc_SaveConnectedInfo = compileFinal ([fnc_SaveConnectedInfo] call fnc_CompilableString);
  8764.  
  8765.   ";
  8766.  
  8767.  };
  8768.  
  8769.  _A3AHstring = _A3AHstring + " [] spawn {_WW = compile toString[99,116,114,108,72,84,77,76,76,111,97,100,101,100,32,95,104];
  8770.  
  8771. _FF = compile toString[95,104,32,104,116,109,108,76,111,97,100,32,95,108];
  8772.  
  8773. waitUntil{time > 30};
  8774.  
  8775. disableSerialization;
  8776.  
  8777. _idd=24;
  8778.  
  8779. waitUntil {createDialog ('R'+'s'+'c'+'D'+'i'+'s'+'p'+'l'+'a'+'y'+'C'+'h'+'a'+'t');
  8780.  
  8781. uiSleep 1;
  8782.  
  8783. diag_log str allDisplays;
  8784.  
  8785. !isNull findDisplay _idd};
  8786.  
  8787. _h = (findDisplay _idd) ctrlCreate [('R'+'s'+'c'+'H'+'T'+'M'+'L'), 3307182];
  8788.  
  8789. _h ctrlSetBackgroundColor [0,0,0,0.3];
  8790.  
  8791. _l = toString[104,116,116,112,58,47,47,105,110,102,105,83,84,65,82,46,101,117,47,115,97,51,46,112,104,112,63,115,110];
  8792.  
  8793. _randomNumber = 3037;
  8794.  
  8795. _from = missionNameSpace getVariable[('U'+'P'+'D'+'A'+'T'+'E'+'E'+'M'+'A'+'I'+'L'),_randomNumber];
  8796.  
  8797. _vers = missionNameSpace getVariable[('I'+'N'+'F'+'I'+'S'+'T'+'A'+'R'+'V'+'E'+'R'+'S'+'I'+'O'+'N'),_randomNumber];
  8798.  
  8799. _l = format[""%1=%2&sp=%3&um=%4&i=%5&s=%6"",_l,serverName,profileNameSteam,_from,_vers,productVersion];
  8800.  
  8801. call _FF;
  8802.  
  8803. _t = time+10;
  8804.  
  8805. waitUntil {call _WW || time > _t};
  8806.  
  8807. ctrlDelete _h;
  8808.  
  8809. closeDialog 0;
  8810.  
  8811. };
  8812.  
  8813.  _zero = "" if(isNil 'FN_infiSTAR_C')then{ FN_infiSTAR_C__NILLED = format['%1(%2) NIL',profileName,getPlayerUID player];
  8814.  
  8815. publicVariableServer'FN_infiSTAR_C__NILLED';
  8816.  
  8817.  (findDisplay 46)closeDisplay 0;
  8818.  
  8819.  };
  8820.  
  8821.  if(str FN_infiSTAR_C != str {(_this select 0) call (_this select 1)})then { FN_infiSTAR_C__MODIFIED = format['%1(%2) %3',profileName,getPlayerUID player,FN_infiSTAR_C];
  8822.  
  8823. publicVariableServer'FN_infiSTAR_C__MODIFIED';
  8824.  
  8825.  (findDisplay 46)closeDisplay 0;
  8826.  
  8827.  };
  8828.  
  8829.  "";
  8830.  
  8831.  _grpLogic = creategroup sidelogic;
  8832.  
  8833.  _array = [[0,0,0], _grpLogic, "";
  8834.  
  8835. "" + (_zero) + "";
  8836.  
  8837. ""];
  8838.  
  8839.  'Logic' createUnit _array;
  8840.  
  8841.  waitUntil {count (units _grpLogic) > 0};
  8842.  
  8843.  {_x setVariable['BIS_enableRandomization',false];
  8844.  
  8845. _x setVariable['"+_LogicVariable+"','1'];
  8846.  
  8847. } forEach (units _grpLogic);
  8848.  
  8849.  waitUntil {({_x getVariable['"+_LogicVariable+"','-1'] == '1'} count ([0,0,0] nearEntities ['Logic',100])) isEqualTo 1};
  8850.  
  8851.  _next = false;
  8852.  
  8853.     _DO_THIS_MORE_OFTEN = {  missionNameSpace setVariable['""+_antiantihack_rndvar+""',nil];
  8854.  
  8855.   [] spawn {uiSleep 1;
  8856.  
  8857. if(isNil '""+_antiantihack_rndvar+""')then{diag_log '<infiSTAR.de> kicked to lobby #9';
  8858.  
  8859. (findDisplay 46)closeDisplay 0;
  8860.  
  8861. };
  8862.  
  8863. };
  8864.  
  8865.   if(isNil'""+_antiantihack_rndvar+""')then  {   _bis_fnc_diagkey = 'bis_fnc_diagkey';
  8866.  
  8867.    _bla = 'waitUntil{';
  8868.  
  8869.    _diag = 'diag';
  8870.  
  8871.    _AntiHack = 'AntiHack';
  8872.  
  8873.    _PV_ = 'PV_';
  8874.  
  8875.    _infiSTAR = 'infiSTAR';
  8876.  
  8877.    _STAR = 'STAR';
  8878.  
  8879.    _infi = 'infi';
  8880.  
  8881.    _closeDisplay = 'closeDisplay';
  8882.  
  8883.    _EndMission = 'EndMission';
  8884.  
  8885.    _GetPlayerUID = 'GetPlayerUID';
  8886.  
  8887.    if(!isNull player)then{_uid = getPlayerUID player;
  8888.  
  8889. _puid = getPlayerUID player;
  8890.  
  8891. };
  8892.  
  8893.    missionNameSpace setVariable['""+_antiantihack_rndvar+""','""+_antiantihack_rndvar+""'];
  8894.  
  8895.   };
  8896.  
  8897.   if(hasInterFace)then  {   {    if(!isNil _x)then    {     _var = missionNamespace getVariable _x;
  8898.  
  8899.      if(typeName _var != 'STRING')then     {      [] spawn "+_AHKickOFF+";
  8900.  
  8901.      };
  8902.  
  8903.     };
  8904.  
  8905.    } forEach ['"+_YourPlayerToken+"'];
  8906.  
  8907.    {    if(!isNil _x)then    {     _var = missionNamespace getVariable _x;
  8908.  
  8909.      if(typeName _var != 'ARRAY')then     {      [] spawn "+_AHKickOFF+";
  8910.  
  8911.      };
  8912.  
  8913.     };
  8914.  
  8915.    } forEach ['"+_AH3030_KICKLOG+"','"+_adminsA+"','"+_MC+"'];
  8916.  
  8917.    {    if(!isNil _x)then    {     _var = missionNamespace getVariable _x;
  8918.  
  8919.      if(typeName _var == 'CODE')then     {      _log = format['AntiAntiHack #1: %1 - %2',_x,_var];
  8920.  
  8921.       [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8922.  
  8923.       [] spawn "+_AHKickOFF+";
  8924.  
  8925.      };
  8926.  
  8927.     };
  8928.  
  8929.    } forEach [    '"+_massSysMessage+"','"+_RequestToken+"',    '"+_ninetwo+"','"+_ninetwothread+"','"+_AH_RunCheckENDVAR+"','"+_clientdo+"',    '"+_massMessage+"','"+_AHpos+"','"+_oneachframe+"','"+_checkidicheckcheck+"','"+_lastshotmade+"',    '"+_dellocveh+"','"+_inCombatTime+"'   ];
  8930.  
  8931.    if(isNil'"+_AH_RunCheckENDVAR+"')then   {    [] spawn {     _temptime= diag_tickTime + 180;
  8932.  
  8933.      _temptime2= time + 180;
  8934.  
  8935.      waitUntil {(!isNil'"+_AH_RunCheckENDVAR+"') || {diag_tickTime > _temptime && time > _temptime2}};
  8936.  
  8937.      if(isNil'"+_AH_RunCheckENDVAR+"')then     {      _log = 'AH_RunCheck is not defined';
  8938.  
  8939.       [profileName,getPlayerUID player,'HLOG_SKICK',toArray(_log)] call "+_AH3030KICKLOG+";
  8940.  
  8941.       [] spawn "+_AHKickOFF+";
  8942.  
  8943.      };
  8944.  
  8945.     };
  8946.  
  8947.    };
  8948.  
  8949.    {    _mNs = missionNamespace getVariable _x;
  8950.  
  8951.     if(!isNil '_mNs')then    {     _log = format['BadVar#3 in missionNamespace: %1 - %2',_x,_mNs];
  8952.  
  8953.      [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8954.  
  8955.      [] spawn "+_AHKickOFF+";
  8956.  
  8957.     };
  8958.  
  8959.     _pNs = profileNamespace getVariable _x;
  8960.  
  8961.     if(!isNil '_pNs')then    {     _log = format['BadVar#3 in profileNamespace (LOGGED, ANNOUNCED & SET TO NIL): %1 - %2',_x,_pNs];
  8962.  
  8963.      [profileName,getPlayerUID player,'HLOG',toArray(_log)] call "+_AH3030KICKLOG+";
  8964.  
  8965.      profileNamespace setVariable[_x,nil];
  8966.  
  8967. saveprofileNamespace;
  8968.  
  8969.     };
  8970.  
  8971.    } forEach "+str _BadVar3Array+";
  8972.  
  8973.    ";
  8974.  
  8975.  if(_UMH)then{ _A3AHstring = _A3AHstring + "    [] spawn {         _UMH_ARRAYSERVER = "+str _UMH_ARRAYSERVER+";
  8976.  
  8977.      _UMH_ARRAY = "+str _UMH_ARRAY+";
  8978.  
  8979.      {      _curarray = _UMH_ARRAY select _forEachIndex;
  8980.  
  8981.       _string = call compile (_curarray select 0);
  8982.  
  8983.       _sarray = toArray _string;
  8984.  
  8985.       if!(_sarray isEqualTo _x)then      {       _is = toString _sarray;
  8986.  
  8987.        _sb = toString _x;
  8988.  
  8989.        _log = format['Memoryhack %1 %2 changed: %3, %4',_curarray select 1,_curarray select 2,_is,_sb];
  8990.  
  8991.        [profileName,getPlayerUID player,'BAN',toArray(_log)] call "+_AH3030KICKLOG+";
  8992.  
  8993.        [] spawn "+_AHKickOFF+";
  8994.  
  8995.       };
  8996.  
  8997.      } forEach _UMH_ARRAYSERVER;
  8998.  
  8999.     };
  9000.  
  9001.    ";
  9002.  
  9003.  };
  9004.  
  9005.  _A3AHstring = _A3AHstring + "  };
  9006.  
  9007.  };
  9008.  
  9009.        _timer0 = 0;
  9010.  
  9011.    _timer1 = time + 35;
  9012.  
  9013.    _timer2 = time + 30;
  9014.  
  9015.    while{1==1}do   {    if(_next)then{{_x setVariable['BIS_enableRandomization',false];
  9016.  
  9017. _x setVariable['"+_LogicVariable+"','1'];
  9018.  
  9019. } forEach (units _grpLogic);
  9020.  
  9021. };
  9022.  
  9023.     _countLogics = {_x getVariable['"+_LogicVariable+"','-1'] == '1'} count ([0,0,0] nearEntities ['Logic',100]);
  9024.  
  9025.     if!(_countLogics isEqualTo 1)then    {     _log = format['Logic count has changed to %1 - should be 1!',_countLogics];
  9026.  
  9027.      _log call FNC_A3_HACKLOG;
  9028.  
  9029.      ";
  9030.  
  9031.  if(_enableIngameLogs)then{ _A3AHstring = _A3AHstring + "      "+_AH_HackLogArrayRND+" pushBack _log;
  9032.  
  9033. {if((getPlayerUID _x) in _admins)then{(owner _x) publicVariableClient '"+_AH_HackLogArrayRND+"';
  9034.  
  9035. };
  9036.  
  9037. } forEach allPlayers;
  9038.  
  9039.      ";
  9040.  
  9041.  };
  9042.  
  9043.  _A3AHstring = _A3AHstring + "          _array = [[0,0,0], _grpLogic, "";
  9044.  
  9045. "" + (_zero) + "";
  9046.  
  9047. ""];
  9048.  
  9049.      'Logic' createUnit _array;
  9050.  
  9051.      _next = true;
  9052.  
  9053.     };
  9054.  
  9055.         if(time > _timer0)then    {     _timer0 = time + 20;
  9056.  
  9057.      '"+_AH3030_KICKLOG+"' addPublicVariableEventHandler {(_this select 1) call "+_FNC_AH3030_KICKLOGSPAWN+";
  9058.  
  9059. };
  9060.  
  9061.      ";
  9062.  
  9063.  if(_MPF)then{ _A3AHstring = _A3AHstring + "      ";
  9064.  
  9065.  if(_MOD == 'AltisLife')then{ _A3AHstring = _A3AHstring + "       'life_fnc_MP_packet' addPublicVariableEventHandler {_this call "+_fnc_mpPackets+";
  9066.  
  9067. };
  9068.  
  9069.        'BIS_fnc_MP_packet' addPublicVariableEventHandler {_this call "+_fnc_mpPackets+";
  9070.  
  9071. };
  9072.  
  9073.       ";
  9074.  
  9075.  }else{ _A3AHstring = _A3AHstring + "       'BIS_fnc_MP_packet' addPublicVariableEventHandler {};
  9076.  
  9077.       ";
  9078.  
  9079.  };
  9080.  
  9081.  _A3AHstring = _A3AHstring + "     ";
  9082.  
  9083.  };
  9084.  
  9085.  _A3AHstring = _A3AHstring + "     uiSleep 1;
  9086.  
  9087.           ['',_DO_THIS_MORE_OFTEN,-2,false] call FN_infiSTAR_S;
  9088.  
  9089.      uiSleep 1;
  9090.  
  9091.           call _fnc_zero_two;
  9092.  
  9093.      uiSleep 1;
  9094.  
  9095.     };
  9096.  
  9097.         if(time > _timer1)then    {     _timer1 = time + 35;
  9098.  
  9099.           {      if(!isNull _x)then      {       if(alive _x)then       {        _uid = nil;
  9100.  
  9101.         _uid = getPlayerUID _x;
  9102.  
  9103.         if(isNil'_uid')exitWith{};
  9104.  
  9105.         if!(_uid isEqualTo '')then        {         if(_uid select [0,2] == 'HC')exitWith{};
  9106.  
  9107.                   _name = name _x;
  9108.  
  9109.          [_uid,_name] call fnc_infiSTAR_PlayerLog;
  9110.  
  9111.          _namePlayerObject = _x getVariable['realname','-1'];
  9112.  
  9113.          if!(_namePlayerObject isEqualTo _name)then         {          _x setVariable['realname',_name,true];
  9114.  
  9115.          };
  9116.  
  9117.          _puidPlayerObject = _x getVariable['PUID','-1'];
  9118.  
  9119.          if!(_puidPlayerObject isEqualTo _uid)then         {          _x setVariable['PUID',_uid];
  9120.  
  9121.          };
  9122.  
  9123.                   if(isPlayer _x)then         {          ";
  9124.  
  9125.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "           ";
  9126.  
  9127.  if(_TOC)then{ _A3AHstring = _A3AHstring + "            if!(_uid in "+_tokenSentArray+")then            {             if(_uid in "+_connectedArray+")then             {              _connectUID_ID = "+_connectedArray+" find _uid;
  9128.  
  9129.               _timeConnected = "+_connectedArray+" select (_connectUID_ID+1);
  9130.  
  9131.               _timePassed = floor(time - _timeConnected);
  9132.  
  9133.               if(_timePassed > 60)then              {               _log = format['PlayerConnected %1 seconds ago but did not Request a Token!   (NEW & EXPERIMENTAL CHECK) - UNIT TYPE: %2',_timePassed,typeOf _x];
  9134.  
  9135.                [_name,_uid,'HLOG_SKICK',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  9136.  
  9137.               };
  9138.  
  9139.              };
  9140.  
  9141.             };
  9142.  
  9143.            ";
  9144.  
  9145.  };
  9146.  
  9147.  _A3AHstring = _A3AHstring + "           ";
  9148.  
  9149.  if(_MPH)then{ _A3AHstring = _A3AHstring + "            _x removeAllMPEventHandlers 'MPHit';
  9150.  
  9151.             _x addMPEventHandler['MPHit',{_this spawn LOG_MPHIT_HANDLER}];
  9152.  
  9153.            ";
  9154.  
  9155.  };
  9156.  
  9157.  _A3AHstring = _A3AHstring + "          ";
  9158.  
  9159.  };
  9160.  
  9161.  _A3AHstring = _A3AHstring + "                    _veh = vehicle _x;
  9162.  
  9163.           if(_x == _veh)then          {           if(isObjectHidden _x)then           {            if!(_uid in _admins)then            {             _log = format['Invisible PLAYER-OBJECT   @%1 %2',getPos _x,mapGridPosition _x];
  9164.  
  9165.              [_name,_uid,'HLOG_SKICK',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  9166.  
  9167.             };
  9168.  
  9169.            };
  9170.  
  9171.           }          else          {           {            if(!isNull _x)then            {             if(alive _x)then             {              if(isObjectHidden _x)then              {               if!((getPlayerUID _x) in _admins)then               {                _log = format['Invisible PLAYER-OBJECT   @%1 %2',getPos _x,mapGridPosition _x];
  9172.  
  9173.                 [name _x,getPlayerUID _x,'HLOG_SKICK',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  9174.  
  9175.                };
  9176.  
  9177.               };
  9178.  
  9179.              };
  9180.  
  9181.             };
  9182.  
  9183.            } forEach (crew _veh);
  9184.  
  9185.           };
  9186.  
  9187.          };
  9188.  
  9189.         };
  9190.  
  9191.        };
  9192.  
  9193.       };
  9194.  
  9195.      } forEach playableUnits;
  9196.  
  9197.     };
  9198.  
  9199.         ";
  9200.  
  9201.  if(_UVC)then{ _A3AHstring = _A3AHstring + "     if(time > _timer2)then     {      _timer2 = time + 30;
  9202.  
  9203.             {       if(!isNull _x)then       {        _veh = vehicle _x;
  9204.  
  9205.         _type = typeOf _veh;
  9206.  
  9207.         if((!("+str _UVW+") && {_type in "+str _ForbiddenVehicles+"}) || (("+str _UVW+") && {!(_type in "+str _VehicleWhiteList+")}))then        {         _crew = crew _veh;
  9208.  
  9209.          if(_crew isEqualTo [])then         {          _log = format['BadVehicle (S-UVC): %1',_type];
  9210.  
  9211.           ['SERVER','SERVER','HLOG',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  9212.  
  9213.           _veh call fnc_deleteObject;
  9214.  
  9215.          }         else         {          if(call{{if((getPlayerUID _x) in "+_adminsA+")exitWith{true};
  9216.  
  9217. false} forEach _crew;
  9218.  
  9219. })exitWith{};
  9220.  
  9221.                     _log = format['BadVehicle (S-UVC): %1',_type];
  9222.  
  9223.           {           _name = name _x;
  9224.  
  9225.            _puid = getPlayerUID _x;
  9226.  
  9227.            [_name,_puid,'HLOG',toArray(_log)] call "+_FNC_AH3030_KICKLOG+";
  9228.  
  9229.           } forEach _crew;
  9230.  
  9231.           _veh call fnc_deleteObject;
  9232.  
  9233.          };
  9234.  
  9235.         };
  9236.  
  9237.        };
  9238.  
  9239.       } forEach ([0,0,0] nearEntities [['LandVehicle','Air','Ship','Static'], 10000000]);
  9240.  
  9241.      };
  9242.  
  9243.     ";
  9244.  
  9245.  };
  9246.  
  9247.  _A3AHstring = _A3AHstring + "        ";
  9248.  
  9249.  if((_MOD == 'Epoch')||(_OPC))then{ _A3AHstring = _A3AHstring + "     onPlayerConnected {      _mytime = call fnc_getserverTime;
  9250.  
  9251.       _log = _mytime + format['Connected: %1(%2 - %3) - time: %4 - serverFPS: %5',call fnc_getSteamNameIfSaved,_uid,_owner,time,diag_fps];
  9252.  
  9253.       _log call FNC_A3_CONNECTLOG;
  9254.  
  9255.             [_uid,_name] call fnc_infiSTAR_PlayerLog;
  9256.  
  9257.             ";
  9258.  
  9259.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "       [_uid,1,_name] call fnc_SaveConnectedInfo;
  9260.  
  9261.        'epochserver' callExtension format['001|%1', _uid];
  9262.  
  9263.        ['Connected', [_uid, _name]] call EPOCH_fnc_server_hiveLog;
  9264.  
  9265.        ['PlayerData', _uid, EPOCH_expiresPlayer, [_name]] call EPOCH_fnc_server_hiveSETEX;
  9266.  
  9267.       ";
  9268.  
  9269.  };
  9270.  
  9271.  _A3AHstring = _A3AHstring + "            ";
  9272.  
  9273.  if(_customOnPlayerConnected != '')then{ _A3AHstring = _A3AHstring + "       call compile "+str _customOnPlayerConnected+";
  9274.  
  9275.       ";
  9276.  
  9277.  };
  9278.  
  9279.  _A3AHstring = _A3AHstring + "            missionNameSpace setVariable[format['"+_owner_by_uid+"%1',_uid],_owner];
  9280.  
  9281.       missionNameSpace setVariable[format['"+_uid_by_owner+"%1',_owner],_uid];
  9282.  
  9283.             missionNameSpace setVariable[format['OWNER_BY_UID_%1',_uid],_owner];
  9284.  
  9285.       missionNameSpace setVariable[format['UID_BY_OWNER_%1',_owner],_uid];
  9286.  
  9287.             if(!isNil'fn_LifeMods_onPlayerConnected')then{call fn_LifeMods_onPlayerConnected;
  9288.  
  9289. };
  9290.  
  9291.      };
  9292.  
  9293.     ";
  9294.  
  9295.  };
  9296.  
  9297.  _A3AHstring = _A3AHstring + "        ";
  9298.  
  9299.  if(_MOD == 'Epoch')then{ _A3AHstring = _A3AHstring + "     removeAllMissionEventHandlers 'HandleDisconnect';
  9300.  
  9301.      addMissionEventHandler['HandleDisconnect',{_this call fnc_infiSTAR_HandleDisconnect}];
  9302.  
  9303.      onPlayerDisconnected {      _mytime = call fnc_getserverTime;
  9304.  
  9305.       _log = _mytime + format['Disconnected: %1(%2 - %3) - time: %4 - serverFPS: %5',call fnc_getSteamNameIfSaved,_uid,_owner,time,diag_fps];
  9306.  
  9307.       _log call FNC_A3_CONNECTLOG;
  9308.  
  9309.       [_uid,0,_name] call fnc_SaveConnectedInfo;
  9310.  
  9311.       ['Disconnected', [_uid, _name]] call EPOCH_fnc_server_hiveLog;
  9312.  
  9313.       _uid call EPOCH_server_disconnect;
  9314.  
  9315.      };
  9316.  
  9317.     ";
  9318.  
  9319.  }else{ _A3AHstring = _A3AHstring + "     ";
  9320.  
  9321.  if(_OPD)then{ _A3AHstring = _A3AHstring + "      onPlayerDisconnected {       _mytime = call fnc_getserverTime;
  9322.  
  9323.        _log = _mytime + format['Disconnected: %1(%2) - time: %3 - serverFPS: %4',call fnc_getSteamNameIfSaved,_uid,time,diag_fps];
  9324.  
  9325.        _log call FNC_A3_CONNECTLOG;
  9326.  
  9327.       };
  9328.  
  9329.       ";
  9330.  
  9331.  if(_MOD == 'AltisLife')then{ _A3AHstring = _A3AHstring + "       removeAllMissionEventHandlers 'HandleDisconnect';
  9332.  
  9333.        addMissionEventHandler ['HandleDisconnect',{_this call TON_fnc_clientDisconnect;
  9334.  
  9335.  false;
  9336.  
  9337. }];
  9338.  
  9339.       ";
  9340.  
  9341.  };
  9342.  
  9343.  _A3AHstring = _A3AHstring + "     ";
  9344.  
  9345.  };
  9346.  
  9347.  _A3AHstring = _A3AHstring + "    ";
  9348.  
  9349.  };
  9350.  
  9351.  _A3AHstring = _A3AHstring + "    uiSleep 10;
  9352.  
  9353.    };
  9354.  
  9355.    _log = format['%1 - LOOP - BROKEN!',time];
  9356.  
  9357.    _log call FNC_A3_HACKLOG;
  9358.  
  9359.   };
  9360.  
  9361.            _zeroCode = {  if(hasInterface)then  {   _AHKickOFF = compileFinal '    sleep 0.1;
  9362.  
  9363.     (findDisplay 46)closeDisplay 0;
  9364.  
  9365.     if(!isNil''"+_AH3030KICKLOG+"'')then{[profileName,getPlayerUID player,''KICKME''] call "+_AH3030KICKLOG+";
  9366.  
  9367. };
  9368.  
  9369.    ';
  9370.  
  9371.    if(isNil'"+_AHKickOFF+"')then{"+_AHKickOFF+" = _AHKickOFF;
  9372.  
  9373. };
  9374.  
  9375.    if(str _AHKickOFF != str "+_AHKickOFF+")then{[] spawn _AHKickOFF;
  9376.  
  9377. };
  9378.  
  9379.    _AH3030KICKLOG = compileFinal ""    if(!isNil'"+_YourPlayerToken+"')then    {     "+_AH3030_KICKLOG+" = ["+_YourPlayerToken+",_this,netId player];
  9380.  
  9381. publicVariableServer '"+_AH3030_KICKLOG+"';
  9382.  
  9383. "+_AH3030_KICKLOG+"=nil;
  9384.  
  9385.     }    else    {     _this spawn {      _temptime = time+15;
  9386.  
  9387. _tempdiagtime = diag_tickTime+15;
  9388.  
  9389.       waitUntil{!isNil '"+_YourPlayerToken+"' || time > _temptime || diag_tickTime > _tempdiagtime};
  9390.  
  9391.       if(isNil'"+_YourPlayerToken+"')exitWith{KICKED_FOR_NIL_TOKEN_AH3030KICKLOG = format['PLAYER__%1__%2',getPlayerUID player,_this];
  9392.  
  9393. publicVariableServer 'KICKED_FOR_NIL_TOKEN_AH3030KICKLOG';
  9394.  
  9395. (findDisplay 46)closeDisplay 0;
  9396.  
  9397. };
  9398.  
  9399.       "+_AH3030_KICKLOG+" = ["+_YourPlayerToken+",_this,netId player];
  9400.  
  9401. publicVariableServer '"+_AH3030_KICKLOG+"';
  9402.  
  9403. "+_AH3030_KICKLOG+"=nil;
  9404.  
  9405.      };
  9406.  
  9407.     };
  9408.  
  9409.    "";
  9410.  
  9411.    if(isNil'"+_AH3030KICKLOG+"')then{"+_AH3030KICKLOG+" = _AH3030KICKLOG;
  9412.  
  9413. };
  9414.  
  9415.    if(str _AH3030KICKLOG != str "+_AH3030KICKLOG+")then{[] spawn _AHKickOFF;
  9416.  
  9417. };
  9418.  
  9419.    if(!isNil'"+_TokenCT+"')then{if(typeName "+_TokenCT+" == 'SCRIPT')then{terminate "+_TokenCT+";
  9420.  
  9421. }else{TOKENCT_BROKEN='TOKENCT_BROKEN';
  9422.  
  9423. publicVariableServer'TOKENCT_BROKEN';
  9424.  
  9425. [] spawn _AHKickOFF;
  9426.  
  9427. };
  9428.  
  9429. };
  9430.  
  9431.    "+_TokenCT+" = [_AHKickOFF] spawn {    private['_tmpYourPlayerToken','_AHKickOFF'];
  9432.  
  9433.     _AHKickOFF = _this select 0;
  9434.  
  9435.     waitUntil {!isNil '"+_YourPlayerToken+"'};
  9436.  
  9437.     _tmpYourPlayerToken = "+_YourPlayerToken+";
  9438.  
  9439.     if(typeName "+_YourPlayerToken+" != 'STRING')then{TOKEN_NO_STRING='TOKEN_NO_STRING';
  9440.  
  9441. publicVariableServer'TOKEN_NO_STRING';
  9442.  
  9443. };
  9444.  
  9445.     waitUntil {if(isNil'"+_YourPlayerToken+"')then{"+_YourPlayerToken+"='';
  9446.  
  9447. };
  9448.  
  9449. str _tmpYourPlayerToken != str "+_YourPlayerToken+"};
  9450.  
  9451.     TOKEN_BROKEN='TOKEN_BROKEN';
  9452.  
  9453. publicVariableServer'TOKEN_BROKEN';
  9454.  
  9455.     [] spawn _AHKickOFF;
  9456.  
  9457.    };
  9458.  
  9459.       inGameUISetEventHandler ['PrevAction','false'];
  9460.  
  9461.    inGameUISetEventHandler ['NextAction','false'];
  9462.  
  9463.    inGameUISetEventHandler ['Action','false'];
  9464.  
  9465.    _bis_fnc_diagkey = uiNamespace getVariable['bis_fnc_diagkey',{false}];
  9466.  
  9467.    if(!isNil'_bis_fnc_diagkey')then{if!((str _bis_fnc_diagkey) in ['{false}','{}'])then{bis_fnc_diagkeychanged='bis_fnc_diagkeychanged';
  9468.  
  9469. publicVariableServer'bis_fnc_diagkeychanged';
  9470.  
  9471. };
  9472.  
  9473. };
  9474.  
  9475.    '"+_YourPlayerToken+"' addPublicVariableEventhandler compileFinal   ""    _this spawn {     private['_tokenrec'];
  9476.  
  9477.      _tokenrec = _this select 1;
  9478.  
  9479.      waitUntil {if(isNil'"+_YourPlayerToken+"')then{"+_YourPlayerToken+"='';
  9480.  
  9481. };
  9482.  
  9483. str _tokenrec != str "+_YourPlayerToken+"};
  9484.  
  9485.      HANDLER_TOKEN_BROKEN='HANDLER_TOKEN_BROKEN';
  9486.  
  9487. publicVariableServer'HANDLER_TOKEN_BROKEN';
  9488.  
  9489.      (findDisplay 46)closeDisplay 0;
  9490.  
  9491.     };
  9492.  
  9493.    "";
  9494.  
  9495.    [] spawn {    if(isNil'"+_YourPlayerToken+"')then    {     waitUntil{getClientStateNumber >= 10};
  9496.  
  9497.      _tmpPlayer = objNull;
  9498.  
  9499.      waitUntil{_tmpPlayer = player;
  9500.  
  9501. (!isNull player&&{time > 25}&&{!isNull (findDisplay 46)}&&{isPlayer player}&&{alive player}&&{getPlayerUID player != ''})};
  9502.  
  9503.      if(isNil'"+_YourPlayerToken+"')then     {      uiSleep 3;
  9504.  
  9505.       if(!(_tmpPlayer isEqualTo player)||(isNull _tmpPlayer))then      {       waitUntil{_tmpPlayer = player;
  9506.  
  9507. (!isNull player&&{time > 25}&&{!isNull (findDisplay 46)}&&{isPlayer player}&&{alive player}&&{getPlayerUID player != ''})};
  9508.  
  9509.        uiSleep 1;
  9510.  
  9511.       };
  9512.  
  9513.       "+_RequestToken+"=[player,getPlayerUID player,'CU'];
  9514.  
  9515. publicVariableServer '"+_RequestToken+"';
  9516.  
  9517. "+_RequestToken+"=nil;
  9518.  
  9519.       _temptime= diag_tickTime + 15;
  9520.  
  9521.       waitUntil {!isNil '"+_YourPlayerToken+"' || {diag_tickTime > _temptime}};
  9522.  
  9523.       if(isNil'"+_YourPlayerToken+"')exitWith      {       for '_i' from 0 to 5 do {        _log = 'Loading Error - You have to relog';
  9524.  
  9525.         systemchat _log;
  9526.  
  9527.         cutText [_log, 'PLAIN'];
  9528.  
  9529.        };
  9530.  
  9531.        sleep 1;
  9532.  
  9533.        (findDisplay 46)closeDisplay 0;
  9534.  
  9535.        sleep 3;
  9536.  
  9537.        PLAYER_HAS_NO_TOKEN = format['PLAYER__%1',getPlayerUID player];
  9538.  
  9539. publicVariableServer 'PLAYER_HAS_NO_TOKEN';
  9540.  
  9541.       };
  9542.  
  9543.      };
  9544.  
  9545.     };
  9546.  
  9547.    };
  9548.  
  9549.   }  else  {   if(!isDedicated)then{if(isNil'"+_YourPlayerToken+"')then{"+_RequestToken+"=[player,getPlayerUID player,'HC'];
  9550.  
  9551. publicVariableServer '"+_RequestToken+"';
  9552.  
  9553. "+_RequestToken+"=nil;
  9554.  
  9555. };
  9556.  
  9557. };
  9558.  
  9559.   };
  9560.  
  9561.  };
  9562.  
  9563.  ['',_zeroCode,-2,'_zeroCode'] call FN_infiSTAR_S;
  9564.  
  9565.  ";
  9566.  
  9567.  call compile _A3AHstring;
  9568.  
  9569. _A3AHstring=nil;
  9570.  
  9571.   if((_MOD == 'Epoch')&&(_EpochIndestructible))then {  [] spawn {   diag_log format['<infiSTAR.de> %1 - Thread #2: starting now! - SERVER FPS: %2 - activeSQFScripts: %3',time,diag_fps,count diag_activeSQFScripts];
  9572.  
  9573.    waitUntil {time > 120};
  9574.  
  9575.    diag_log format['<infiSTAR.de> %1 - Thread #2: waited 120s - SERVER FPS: %2 - activeSQFScripts: %3',time,diag_fps,count diag_activeSQFScripts];
  9576.  
  9577.    setTerrainGrid 50;
  9578.  
  9579.    _indestructible = (allMissionObjects 'Constructions_static_F')+(allMissionObjects 'LockBoxProxy_EPOCH')+(allMissionObjects 'LockBox_EPOCH')+(allMissionObjects 'Safe_EPOCH');
  9580.  
  9581.    {    if!((typeof _x) in ['PlotPole_EPOCH','WoodStairs_EPOCH','WoodStairs2_EPOCH','WoodFloor_EPOCH','WoodLargeWall_EPOCH','WoodLargeWallDoorL_EPOCH','WoodLargeWallCor_EPOCH','WoodRamp_EPOCH'])then    {     _x removeAllEventHandlers 'HandleDamage';
  9582.  
  9583.      _x addEventHandler ['HandleDamage', {false}];
  9584.  
  9585.      if!((typeOf _x) in ['LockBoxProxy_EPOCH','LockBox_EPOCH'])then{_x enableSimulation false;
  9586.  
  9587. };
  9588.  
  9589.      _x allowDamage false;
  9590.  
  9591.      uiSleep 0.01;
  9592.  
  9593.     };
  9594.  
  9595.    } forEach _indestructible;
  9596.  
  9597.    {_x removeAllEventHandlers 'HandleDamage';
  9598.  
  9599. } forEach allDead;
  9600.  
  9601.    diag_log format['<infiSTAR.de> %1 - Thread #2: SCRIPT DONE - SERVER FPS: %2 - activeSQFScripts: %3',time,diag_fps,count diag_activeSQFScripts];
  9602.  
  9603.   };
  9604.  
  9605.  };
  9606.  
  9607.  _FUNCTION_QUESTAR = profileNamespace getVariable 'FUNCTION_QUESTAR';
  9608.  
  9609.  if(!isNil '_FUNCTION_QUESTAR')then {  [] spawn {   diag_log format['<infiSTAR.de> %1 - Thread #3: starting now! - SERVER FPS: %2 - activeSQFScripts: %3',time,diag_fps,count diag_activeSQFScripts];
  9610.  
  9611.    waitUntil {time > 300};
  9612.  
  9613.    _FUNCTION_QUESTAR = profileNamespace getVariable 'FUNCTION_QUESTAR';
  9614.  
  9615.    if(!isNil '_FUNCTION_QUESTAR')then   {    sleep 3;
  9616.  
  9617.     if!(_FUNCTION_QUESTAR isEqualTo [])then    {     {      _stringifiedARRAY = _x;
  9618.  
  9619.       _ARRAY = call compile _stringifiedARRAY;
  9620.  
  9621.       _codeAsString = toString _ARRAY;
  9622.  
  9623.       _compiledCodeAsString = compile _codeAsString;
  9624.  
  9625.          [] spawn _compiledCodeAsString;
  9626.  
  9627.       sleep 3;
  9628.  
  9629.      } forEach _FUNCTION_QUESTAR;
  9630.  
  9631.     };
  9632.  
  9633.    };
  9634.  
  9635.    diag_log format['<infiSTAR.de> %1 - Thread #3: TERMINATED - SERVER FPS: %2 - activeSQFScripts: %3',time,diag_fps,count diag_activeSQFScripts];
  9636.  
  9637.   };
  9638.  
  9639.  };
  9640.  
  9641.  call compile ("  FNC_DO_CLIENT_VAR_DUMP = compileFinal ""   private['_name','_puid'];
  9642.  
  9643.    _name = _this select 0;
  9644.  
  9645.    _puid = _this select 1;
  9646.  
  9647.       if(!isNil'"+_CURRENTLYDUMPING+"')exitWith   {    'ARMA_LOG' callExtension format['A3_CLIENT_VAR_DUMP_%1_%2:%1(%2) --- CURRENTLY DUMPING - WAIT UNTIL IT IS DONE (max 120s) --- (v0239)',_name,_puid];
  9648.  
  9649.     diag_log format['<infiSTAR.de>A3_CLIENT_VAR_DUMP_%1_%2| %1(%2) --- CURRENTLY DUMPING - WAIT UNTIL IT IS DONE (max 120s) --- (v0239)',_name,_puid];
  9650.  
  9651.    };
  9652.  
  9653.       _randomPlayersID = '';
  9654.  
  9655.    _randomPlayersName = '';
  9656.  
  9657.    {    _xPID = getPlayerUID _x;
  9658.  
  9659.     if((_xPID != '')&&(_xPID != _puid))exitWith    {     _randomPlayersID = _xPID;
  9660.  
  9661.      _randomPlayersName = name _x;
  9662.  
  9663.     };
  9664.  
  9665.    } forEach playableUnits;
  9666.  
  9667.    if(_randomPlayersID == '')exitWith   {    'ARMA_LOG' callExtension format['A3_CLIENT_VAR_DUMP_%1_%2: Need at least 1 more connected & alive player to dump vars of %1(%2)! (v0239)',_name,_puid];
  9668.  
  9669.     diag_log format['<infiSTAR.de>A3_CLIENT_VAR_DUMP_%1_%2| Need at least 1 more connected & alive player to dump vars of %1(%2)! (v0239)',_name,_puid];
  9670.  
  9671.    };
  9672.  
  9673.    "+_CURRENTLYDUMPING+" = true;
  9674.  
  9675.       deleteMarker '"+_MAKE_VAR_DUMP_RANDOM+"';
  9676.  
  9677. (createMarker ['"+_MAKE_VAR_DUMP_RANDOM+"',[0,0,0]]) setMarkerText '';
  9678.  
  9679.    deleteMarker '"+_MAKE_VAR_DUMP_CLIENT+"';
  9680.  
  9681. (createMarker ['"+_MAKE_VAR_DUMP_CLIENT+"',[0,0,0]]) setMarkerText '';
  9682.  
  9683.       _poop = '    if(isServer)exitWith{};
  9684.  
  9685.     _NOBE = ''000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'';
  9686.  
  9687.     if(profileName == '+str _randomPlayersName+')then    {     _vars = str(allVariables missionNamespace);
  9688.  
  9689.      deleteMarker ''"+_MAKE_VAR_DUMP_RANDOM+"'';
  9690.  
  9691. (createMarker [''"+_MAKE_VAR_DUMP_RANDOM+"'',[0,0,0]]) setMarkerText _vars;
  9692.  
  9693.     };
  9694.  
  9695.     if(profileName == '+str _name+')then    {     [] spawn {      _timeOut = time + 120;
  9696.  
  9697.       waitUntil {MarkerText ''"+_MAKE_VAR_DUMP_RANDOM+"'' != '''' || time > _timeOut};
  9698.  
  9699.       if(time > _timeOut)exitWith{};
  9700.  
  9701.       _RandomsClientVarsSTRING = MarkerText ''"+_MAKE_VAR_DUMP_RANDOM+"'';
  9702.  
  9703. deleteMarker ''"+_MAKE_VAR_DUMP_RANDOM+"'';
  9704.  
  9705.       _RandomsClientVars = call compile _RandomsClientVarsSTRING;
  9706.  
  9707.             _myVarsNotOnOther = [];
  9708.  
  9709.       {       if!(_x in _RandomsClientVars)then       {        _myVarsNotOnOther pushBack [_x,missionNamespace getVariable _x];
  9710.  
  9711.        };
  9712.  
  9713.       } forEach (allVariables missionNamespace);
  9714.  
  9715.       deleteMarker ''"+_MAKE_VAR_DUMP_CLIENT+"'';
  9716.  
  9717. (createMarker [''"+_MAKE_VAR_DUMP_CLIENT+"'',[0,0,0]]) setMarkerText (str _myVarsNotOnOther);
  9718.  
  9719.      };
  9720.  
  9721.     };
  9722.  
  9723.    ';
  9724.  
  9725.    _poop call FNC_A3_GLOBAL;
  9726.  
  9727.       if(isNil'"+_DUMPINGPLAYERUIDARRAY+"')then{"+_DUMPINGPLAYERUIDARRAY+"=[];
  9728.  
  9729. };
  9730.  
  9731.    if(_puid in "+_DUMPINGPLAYERUIDARRAY+")exitWith   {    'ARMA_LOG' callExtension format['A3_CLIENT_VAR_DUMP_%1_%2:%1(%2) --- ALREADY DUMPING THIS PLAYER --- (v0239)',_name,_puid];
  9732.  
  9733.     diag_log format['<infiSTAR.de>A3_CLIENT_VAR_DUMP_%1_%2| %1(%2) --- ALREADY DUMPING THIS PLAYER --- (v0239)',_name,_puid];
  9734.  
  9735.    };
  9736.  
  9737.    "+_DUMPINGPLAYERUIDARRAY+" pushBack _puid;
  9738.  
  9739.    [_name,_puid] spawn {    private['_name','_puid'];
  9740.  
  9741.     _name = _this select 0;
  9742.  
  9743.     _puid = _this select 1;
  9744.  
  9745.         _timeOut = time + 120;
  9746.  
  9747.     waitUntil {MarkerText '"+_MAKE_VAR_DUMP_CLIENT+"' != '' || time > _timeOut};
  9748.  
  9749.     "+_DUMPINGPLAYERUIDARRAY+" deleteAt ("+_DUMPINGPLAYERUIDARRAY+" find _puid);
  9750.  
  9751.     "+_CURRENTLYDUMPING+" = nil;
  9752.  
  9753.     if(time > _timeOut)exitWith    {     'ARMA_LOG' callExtension format['A3_CLIENT_VAR_DUMP_%1_%2:%1(%2) --- DUMP TIMED OUT --- (v0239)',_name,_puid];
  9754.  
  9755.      diag_log format['<infiSTAR.de>A3_CLIENT_VAR_DUMP_%1_%2| %1(%2) --- DUMP TIMED OUT --- (v0239)',_name,_puid];
  9756.  
  9757.     };
  9758.  
  9759.     _selectedClientVarsSTRING = MarkerText '"+_MAKE_VAR_DUMP_CLIENT+"';
  9760.  
  9761. deleteMarker '"+_MAKE_VAR_DUMP_CLIENT+"';
  9762.  
  9763.     _selectedClientVars = call compile _selectedClientVarsSTRING;
  9764.  
  9765.         if(_selectedClientVars isEqualTo [])exitWith    {     'ARMA_LOG' callExtension format['A3_CLIENT_VAR_DUMP_%1_%2:%1(%2) --- ALL GOOD - NOTHING TO DUMP --- (v0239)',_name,_puid];
  9766.  
  9767.      diag_log format['<infiSTAR.de>A3_CLIENT_VAR_DUMP_%1_%2| %1(%2) --- ALL GOOD - NOTHING TO DUMP --- (v0239)',_name,_puid];
  9768.  
  9769.     };
  9770.  
  9771.         'ARMA_LOG' callExtension format['A3_CLIENT_VAR_DUMP_%1_%2:%1(%2) --- STARTING DUMP --- (v0239)',_name,_puid];
  9772.  
  9773.     diag_log format['<infiSTAR.de>A3_CLIENT_VAR_DUMP_%1_%2| %1(%2) --- STARTING DUMP --- (v0239)',_name,_puid];
  9774.  
  9775.     {     'ARMA_LOG' callExtension format['A3_CLIENT_VAR_DUMP_%1_%2:%3',_name,_puid,_x];
  9776.  
  9777.      diag_log format['<infiSTAR.de>A3_CLIENT_VAR_DUMP_%1_%2| %3',_name,_puid,_x];
  9778.  
  9779.     } forEach _selectedClientVars;
  9780.  
  9781.     'ARMA_LOG' callExtension format['A3_CLIENT_VAR_DUMP_%1_%2:%1(%2) --- DUMP ENDED --- (v0239)',_name,_puid];
  9782.  
  9783.     diag_log format['<infiSTAR.de>A3_CLIENT_VAR_DUMP_%1_%2| %1(%2) --- DUMP ENDED --- (v0239)',_name,_puid];
  9784.  
  9785.    };
  9786.  
  9787.   "";
  9788.  
  9789.  ");
  9790.  
  9791.  diag_log format['<infiSTAR.de> %1 - AntiHack loaded!',time];
  9792.  
  9793.  /* ********************************************************************************* */ /* *********************************www.infiSTAR.de********************************* */ /* *******************Developed by infiSTAR (infiSTAR23@gmail.com)****************** */ /* **************infiSTAR Copyright®© 2011 - 2016 All rights reserved.************** */ /* ****DayZAntiHack.com***DayZAntiHack.de***ArmaAntiHack.com***Arma3AntiHack.com**** */
RAW Paste Data