SHARE
TWEET

Untitled

a guest Mar 20th, 2016 121 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Reference: Facepunch.ID
  2. // Reference: Facepunch.MeshBatch
  3. // Reference: Google.ProtocolBuffers
  4.  
  5. // Reference: Newtonsoft.Json
  6. using System.Collections.Generic;
  7. using System;
  8. using System.Reflection;
  9. using UnityEngine;
  10. using System.Data;
  11. using Facepunch;
  12. using uLink;
  13. // Reference: Facepunch.Cursor
  14.  
  15. using Oxide.Core;
  16. using Oxide.Core.Plugins;
  17. using RustProto;
  18.  
  19. using Oxide.Core;
  20. using System.Text.RegularExpressions;
  21.  
  22. using Newtonsoft.Json;
  23.  
  24. using Google.ProtocolBuffers;
  25. using Google.ProtocolBuffers.Collections;
  26. using Google.ProtocolBuffers.Descriptors;
  27. using Google.ProtocolBuffers.FieldAccess;
  28. using System.Collections.Generic;
  29. using Oxide.Core.Libraries;
  30. using System.Linq;
  31. using System.Text;
  32. using uLink;
  33. using Facepunch;
  34. using Rust;
  35. using InventoryExtensions;
  36. using Facepunch.Cursor;
  37. using Facepunch.Cursor.Internal;
  38.  
  39. namespace Oxide.Plugins
  40. {
  41.     [Info("AdminCompanion - devcheck v3", "copper", "2.1.3")]
  42.     class AdminCompanion : RustLegacyPlugin
  43.     {
  44.         private static Core.Configuration.DynamicConfigFile Ipban;
  45.         public bool hasrefreshedplugin;
  46.         public static float gg;
  47.         string cachedReason;
  48.         string cachedName;
  49.         public static GameObject Load;
  50.         public static int numberofbansdizzy;
  51.         public static int reportnum;
  52.         public static int numberofbansjacked;
  53.         public static int numberofbanssteven;
  54.         public static int numberofbansnorecoil;
  55.         public static int numberofbansnofalldamage;
  56.         public static int numberofcheckevade;
  57.         public static int numberofspeedjumpban;
  58.         public static bool shouldsendstatisticstoadminonconnect = true;
  59.         NetUser cachedUser;
  60.         string cachedSteamid;
  61.  
  62.         public Type BanType;
  63.         public FieldInfo steamid;
  64.         public FieldInfo username;
  65.         public FieldInfo reason;
  66.         public FieldInfo bannedUsers;
  67.         static int terrainLayerr;
  68.  
  69.         Vector3 VectorUp = new Vector3(0f, 1f, 0f);
  70.         Vector3 VectorDown = new Vector3(0f, -0.4f, 0f);
  71.         Vector3 VectorDownn = new Vector3(0f, -0.1f, 0f);
  72.        
  73.         public static Vector3 Vector3Down = new Vector3(0f,-1f,0f);
  74.         public static Vector3 Vector3Down2 = new Vector3(0f,-3f,0f);
  75.         public static Vector3 Vector3Up = new Vector3(0f, 1f, 0f);
  76.         public static Vector3 UnderPlayerAdjustement = new Vector3(0f, -1.15f, 0f);
  77.         public static Vector3 UnderPlayerAdjustement2 = new Vector3(0f, -1.16f, 0f);
  78.         public static RustServerManagement management2;
  79.         public static Vector3 vectorup2 = new Vector3(0f, 1f, 0f);
  80.         int terrainLayer;
  81.        
  82.         public static float distanceDown = 10f;
  83.         public static  RaycastHit cachedRaycasttt;
  84.         private static Dictionary<string, ItemDataBlock> displaynameToDataBlock = new Dictionary<string, ItemDataBlock>();
  85.         public Dictionary<string, string> hascalled = new Dictionary<string, string>();
  86.         public static string laststring;
  87.         public static bool finishedcheck1;
  88.         public static bool finishedcheck2;
  89.         public static bool finishedcheck3;
  90.         public static JsonSerializerSettings jsonsettings;
  91.         private Core.Configuration.DynamicConfigFile Data;
  92.         private static Core.Configuration.DynamicConfigFile Datablock;
  93.         private static Core.Configuration.DynamicConfigFile Info;
  94.         private static Core.Configuration.DynamicConfigFile DataStore;
  95.         public static RaycastHit cachedRaycastttt;
  96.        
  97.         Dictionary<string, object> GetPlayerdata(string userid)
  98.         {
  99.             if (Data[userid] == null)
  100.                 Data[userid] = new Dictionary<string, object>();
  101.             return Data[userid] as Dictionary<string, object>;
  102.         }
  103.         static Dictionary<string, ItemDataBlock> Getdatablock(string userid)
  104.         {
  105.             if (Datablock[userid] == null)
  106.                 Datablock[userid] = new Dictionary<string, ItemDataBlock>();
  107.             return Datablock[userid] as Dictionary<string, ItemDataBlock>;
  108.         }
  109.         Dictionary<string, object> GetPlayeinfo(string userid)
  110.         {
  111.             if (Info[userid] == null)
  112.                 Info[userid] = new Dictionary<string, object>();
  113.             return Info[userid] as Dictionary<string, object>;
  114.         }
  115.         static Dictionary<string, object> Getplayerdatastore(string userid)
  116.         {
  117.             if (DataStore[userid] == null)
  118.                 DataStore[userid] = new Dictionary<string, object>();
  119.             return DataStore[userid] as Dictionary<string, object>;
  120.         }
  121.        
  122.        
  123.        
  124.         void LoadData() { Data = Interface.GetMod().DataFileSystem.GetDatafile("AIAdmin(pl)"); Info = Interface.GetMod().DataFileSystem.GetDatafile("AdminCompanion(Reports.pl)"); DataStore = Interface.GetMod().DataFileSystem.GetDatafile("AdminCompanion(DataStore(pl))");  Ipban = Interface.GetMod().DataFileSystem.GetDatafile("Blacklist(ip)"); Datablock = Interface.GetMod().DataFileSystem.GetDatafile("AdminCompanion(Datablock(pl))");}
  125.         void SaveData() { Interface.GetMod().DataFileSystem.SaveDatafile("AIAdmin(pl)");  Interface.GetMod().DataFileSystem.SaveDatafile("AdminCompanion(DataStore(pl))"); Interface.GetMod().DataFileSystem.SaveDatafile("AdminCompanion(Datablock(pl))");}  
  126.         void Unload()
  127.         {
  128.             SaveData();
  129.             var objects = GameObject.FindObjectsOfType(typeof(PlayerHandler));
  130.             var objects2 = GameObject.FindObjectsOfType(typeof(PlayerHandlerflagcheck));
  131.             if (objects != null)
  132.                 foreach (var gameObj in objects)
  133.                 {
  134.                     GameObject.Destroy(gameObj);
  135.                 }            
  136.             if (objects2 != null)
  137.                 foreach (var gameObj2 in objects)
  138.                 {
  139.                     GameObject.Destroy(gameObj2);
  140.                 }
  141.         }
  142.         public bool timerallowed;
  143.        
  144.         public bool ischecking = false;
  145.        
  146.         public static bool shouldlogwhoputstuffin = false;
  147.         public static bool shoulddoipban = true;
  148.         public static bool shouldbepinglienient = true;
  149.         public static int pinglimitbeforeignore = 380;
  150.         public static int ismovingflag = 6208;
  151.         public static bool shouldbanforidle = true;
  152.         public static float idletimetillban = 330f;
  153.         public static int numberoffakecallslmit = 5;
  154.         public static bool shouldchecknorecoil = false;
  155.         public static bool shouldcheckjacked = false;
  156.         public static bool shouldchecksteven = true;
  157.         public static bool shouldcheckdizzy = true;
  158.         public static bool shouldcheckjumpspeed = true;
  159.         public static bool shouldcheckhackmenu = true;
  160.         public static bool shouldchecknofall = true;
  161.         public static bool shouldcheckforspeedjump = true;
  162.         public static bool shoulduseplayerdatabase = false;
  163.         public static bool shouldogwhotakestuffout = true;
  164.         public static bool shouldlogfurnace = true;
  165.         public static bool shouldbanforitmingjumps = true;
  166.         public static string icon = "★";
  167.         public static float duration = 10.0f;
  168.         public static float numberofvotes = 3.0f;
  169.         public static float idletimetillautoseectlanguage = 60f;
  170.         public static int numberoftimedjumpdettectionsbeforeban = 5;
  171.         public static int numberofpercentagevtoesbeforecheck = 50;
  172.         public static int maxammoutnoflanguagerefreshbeforeignore = 3;
  173.         public static bool shouldbanifplayerdcduringtest = true;
  174.         public static bool shouldresetdetectionwhenplayerdisconnects = true;
  175.         public static bool shouldcheckonce = true;
  176.         public static bool shouldcheckplayeroncewhenconnect = false;
  177.         public static bool shouldcheckplayerwhenfirstconnect = false;
  178.         public static bool shouldsendprobablybanevadetoadmin = true;
  179.         public static bool shouldkicknoname = true;
  180.         public static bool allowlanguagerefresh = true;
  181.         public static bool shouldcheckplayerswithpermisions = true;
  182.         public static bool shoulduseenglishdictionaryonly = false;
  183.         public static bool shouldautoselectlagnuageifplayeridl = true;
  184.         public static bool shouldcheckmultinofall = true;
  185.         public static bool falldamageenabled = false;
  186.         public static bool shouldallowtestresetifdisconnected = true;
  187.         public static bool smartcheck = true;
  188.         public static int menuscreenflag = 128;
  189.         public static int crouchdetetctionsecondflagcheck = 6145;
  190.         public static int crouchmovedetectionflagcheck = 6209;
  191.         public static bool shouldignore = true;
  192.         public static string Email = "enteryouremailisneeded@gmail.com";
  193.         void LoadDefaultConfig() { }
  194.  
  195.         private void CheckCfg<T>(string Key, ref T var)
  196.         {
  197.             if (Config[Key] is T)
  198.                 var = (T)Config[Key];
  199.             else
  200.                 Config[Key] = var;
  201.         }
  202.         void LoadDefaultMessages()
  203.         {
  204.             var messages = new Dictionary<string, string>
  205.             {
  206.                 {"Prefix", "AntiCheat"},  
  207.                 {"TestWarning", "[color red]During test only press buttons as directed."},
  208.                 {"TestWarningAltTab", "[color cyan]Alt+tabbing [color red]or pressing [color cyan]F1 [color red]will result in a ban during the test."},
  209.  
  210.                 {"TargetVitals", "Your targets vitals are:"}    
  211.             };
  212.             lang.RegisterMessages(messages, this);
  213.         }
  214.        
  215.         void Init()
  216.         {
  217.        
  218.            
  219.             CheckCfg<string>("Messages: Icon", ref icon);
  220.             CheckCfg<bool>("Messages: should do ping exception", ref shouldbepinglienient);
  221.             CheckCfg<bool>("Messages: Should check JackeD", ref shouldcheckjacked);
  222.             CheckCfg<bool>("Messages: Should check Dizzy Hack", ref shouldcheckdizzy);
  223.             CheckCfg<bool>("Messages: should check Steven Hack", ref shouldchecksteven);
  224.             CheckCfg<bool>("Messages: should do ip ban", ref shoulddoipban);
  225.             CheckCfg<int>("Messages: Ping Exception", ref pinglimitbeforeignore);
  226.             CheckCfg<int>("Messages: crouch Detection State Flag", ref crouchmovedetectionflagcheck);
  227.             CheckCfg<int>("Messages: Crouch Detcetion Exploit", ref crouchdetetctionsecondflagcheck);
  228.             CheckCfg<int>("Messages: Menu Screen Flag", ref menuscreenflag);
  229.             CheckCfg<bool>("Messages: should ignore player if fake language detected", ref shouldignore);
  230.             CheckCfg<int>("Messages: number of fake language dettection before ignore", ref numberoffakecallslmit);
  231.             CheckCfg<string>("Messages: Enter a valid email to enable the api's full potential", ref Email);
  232.             CheckCfg<bool>("Messages: Should smart check(check players whos name's are in the banlist?)", ref smartcheck);
  233.             CheckCfg<float>("Messages: Maximum amount  of votes needed beforce check", ref numberofvotes);
  234.             CheckCfg<float>("Messages: idle time till auto select language", ref idletimetillautoseectlanguage);
  235.             CheckCfg<bool>("Messages: should ban for idle ?", ref shouldbanforidle);
  236.             CheckCfg<float>("Messages: message duraton", ref duration);
  237.             CheckCfg<int>("Messages: number of percentage of votes before check ", ref numberofpercentagevtoesbeforecheck);
  238.             CheckCfg<float>("Messages: idle time till ban ", ref idletimetillban);
  239.             CheckCfg<int>("Messages: Max amount of language resset before ignore ", ref maxammoutnoflanguagerefreshbeforeignore);
  240.             CheckCfg<bool>("Messages: should check for speed jump? ", ref shouldcheckjumpspeed);
  241.             CheckCfg<bool>("Messages: should check Players with permision's on conenct? ", ref shouldcheckplayerswithpermisions);
  242.             CheckCfg<bool>("Messages: Allow Language refresh? ", ref allowlanguagerefresh);
  243.             CheckCfg<bool>("Messages: should kick noname?? ", ref shouldkicknoname);
  244.             CheckCfg<bool>("Messages: should send probably ban evade to chat? ", ref shouldsendprobablybanevadetoadmin);
  245.             CheckCfg<bool>("Messages: should checkplayer once ? this will check the player one time when he/she connects unless votechecked or force checked ", ref shouldcheckplayeroncewhenconnect);
  246.             CheckCfg<bool>("Messages: should checkplayer when first connect? ", ref shouldcheckplayerwhenfirstconnect);
  247.             CheckCfg<bool>("Messages: shouldcheck once when voted? ", ref shouldcheckonce);
  248.             CheckCfg<bool>("Messages: should reset dettection when playr disconnects? ", ref shouldresetdetectionwhenplayerdisconnects);
  249.             CheckCfg<bool>("Messages: should ban if player dc during test? ", ref shouldbanifplayerdcduringtest);
  250.             CheckCfg<bool>("Messages: should check for no fall? ", ref shouldchecknofall);
  251.             CheckCfg<int>("Messages: number of timed jump dettections before ban? ", ref numberoftimedjumpdettectionsbeforeban);
  252.             CheckCfg<bool>("Messages: should check for hack menu? ", ref shouldcheckhackmenu);
  253.             CheckCfg<bool>("Messages: shouldcheck for no recoil? ", ref shouldchecknorecoil);
  254.             CheckCfg<bool>("Messages: should ban for timing jump's? ", ref shouldbanforitmingjumps);
  255.             CheckCfg<bool>("Messages: should use english dictionary only? ", ref shoulduseenglishdictionaryonly);
  256.             CheckCfg<bool>("Messages: should auto select english language if player is idle? ", ref shouldautoselectlagnuageifplayeridl);
  257.             CheckCfg<bool>("Messages: should send statistic's to admins/mods on connect? ", ref shouldsendstatisticstoadminonconnect);
  258.             CheckCfg<bool>("Messages: check multi nofall this is a method to detect stevens so called undetected no fall hack you will have to specify whether your server has nofall enabled or not", ref shouldcheckmultinofall);
  259.             CheckCfg<bool>("Messages: do you have falldamage enabled on youur server?", ref falldamageenabled);
  260.             CheckCfg<bool>("Messages: should alllow report resset if disconnected fromt the server?", ref shouldallowtestresetifdisconnected);
  261.             SaveConfig();
  262.         }
  263.  
  264.         static Dictionary<string, object> Getipban(string userid)
  265.         {
  266.             if (Ipban[userid] == null)
  267.                 Ipban[userid] = new Dictionary<string, object>();
  268.             return Ipban[userid] as Dictionary<string, object>;
  269.         }
  270.         public static void ipban(PlayerHandler player, string reason)
  271.         {
  272.            
  273.             if(shoulddoipban)
  274.             {
  275.                 var ip = player.playerclient.netUser.networkPlayer.externalIP.ToString();
  276.                 var name = player.playerclient.userName;
  277.                 var GetPlayerdata = Getipban("Blacklist(ip)");
  278.                 if(!GetPlayerdata.ContainsKey(ip))
  279.                     GetPlayerdata.Add(ip, name + " Reason : " + reason);
  280.             }
  281.         }
  282.         void Loaded()
  283.         {
  284.             LoadDefaultMessages();
  285.             LoadData();
  286.             SaveData();
  287.             if (!permission.PermissionExists("AdminCompanion.Companion")) permission.RegisterPermission("AdminCompanion.Companion", this);
  288.             terrainLayer = LayerMask.GetMask(new string[] { "Terrain" });
  289.             terrainLayerr = LayerMask.GetMask(new string[] { "Static" });
  290.             management2 = RustServerManagement.Get();
  291.             InitializeTable();
  292.             BanType = typeof(BanList).GetNestedType("Ban", BindingFlags.Instance | BindingFlags.NonPublic);
  293.             steamid = BanType.GetField("steamid");
  294.             username = BanType.GetField("username");
  295.             reason = BanType.GetField("reason");
  296.  
  297.             bannedUsers = typeof(BanList).GetField("bannedUsers", (BindingFlags.Static | BindingFlags.NonPublic));
  298.         }
  299.         bool hasAccess(NetUser netuser)
  300.         {
  301.             if (netuser.CanAdmin())
  302.                 return true;
  303.            
  304.             return permission.UserHasPermission(netuser.playerClient.userID.ToString(), "AdminCompanion.Companion");
  305.         }
  306.         public static void refreshrecoiltest(PlayerHandler player)
  307.         {
  308.             ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "input.bind Fire c c");
  309.             ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "input.mousespeed 0");
  310.             return;
  311.         }
  312.         [ChatCommand("aisafezone")]
  313.         void cmdChatsavezone(NetUser netuser, string command, string[] args)
  314.         {
  315.             if (!hasAccess(netuser)) { rust.SendChatMessage(netuser, "AdminCompanion", "you are not allowed to use this command"); return; }
  316.             var loc = Getplayerdatastore("SafeZone");
  317.             if(loc.ContainsKey("x"))
  318.             {
  319.                 DataStore["SafeZone"] = null;
  320.                 rust.SendChatMessage(netuser, "AdminCompanion", "you have removed the current TestZone");
  321.                 return;
  322.             }
  323.             loc.Add("x", netuser.playerClient.lastKnownPosition.x);
  324.             loc.Add("y", netuser.playerClient.lastKnownPosition.y);
  325.             loc.Add("z", netuser.playerClient.lastKnownPosition.z);
  326.             rust.SendChatMessage(netuser, "AdminCompanion", "you have added your current location as a TestZone");
  327.         }  
  328.         [ChatCommand("airefresh")]
  329.         void cmdChatrefreshalllanguage(NetUser netuser, string command, string[] args)
  330.         {
  331.             if(!allowlanguagerefresh)
  332.             {
  333.                 rust.SendChatMessage(netuser, "AdminCompanion", "This command is disabled");
  334.                 return;
  335.             }
  336.             var datastore = GetPlayeinfo(netuser.playerClient.userID.ToString());
  337.             if(!datastore.ContainsKey("RefreshCount"))
  338.             {
  339.                 datastore.Add("RefreshCount", 1);
  340.             }
  341.             var currentdatastore = Convert.ToSingle(datastore["RefreshCount"]);
  342.             if(currentdatastore >= maxammoutnoflanguagerefreshbeforeignore)
  343.             {
  344.                 rust.SendChatMessage(netuser, "AdminCompanion", "you cannot use this command as you have exceeded the amount of refreshes that is allowed");
  345.                 return;
  346.             }
  347.             PlayerHandler phandler = netuser.playerClient.GetComponent<PlayerHandler>();
  348.             if(phandler != null)
  349.             {
  350.                 rust.SendChatMessage(netuser, "AdminCompanion", "you cannot Refresh your language while being tested");
  351.                 return;
  352.             }
  353.             currentdatastore++;
  354.             var datastore2 = Getplayerdatastore(netuser.playerClient.userID.ToString());
  355.             if(datastore2.ContainsKey("Language"))
  356.             {
  357.                 datastore2.Remove("Language");
  358.                 rust.SendChatMessage(netuser, "AdminCompanion", "your previously selected language has been removed");
  359.                 return;
  360.             }
  361.             rust.SendChatMessage(netuser, "AdminCompanion", "your previously selected language has already been removed");
  362.             return;
  363.         }
  364.         [ChatCommand("aipromote")]
  365.         void cmdChatpromotepl(NetUser netuser, string command, string[] args)
  366.         {
  367.             if (!hasAccess(netuser)) { rust.SendChatMessage(netuser, "AdminCompanion", "you are not allowed to use this command"); return; }
  368.             if (args.Length != 1)
  369.             {
  370.                 rust.SendChatMessage(netuser, "AdminCompanion", "wrong syntax: /airpromote 'playername < must be precise");
  371.                 return;
  372.             }
  373.             var hasacess = GetPlayerdata("Flags(pl)");
  374.             NetUser targetuser = rust.FindPlayer(args[0]);
  375.             if(hasacess.ContainsKey(targetuser.userID.ToString()))
  376.             {
  377.                 rust.SendChatMessage(netuser, "AdminCompanion", targetuser.displayName + " has already been added to the AdminCompanion Associate's list");
  378.                 return;
  379.             }
  380.             hasacess.Add(targetuser.userID.ToString(), true);
  381.             return;
  382.         }
  383.         [ChatCommand("aidemote")]
  384.         void cmdChatdemotepl(NetUser netuser, string command, string[] args)
  385.         {
  386.             if (!hasAccess(netuser)) { rust.SendChatMessage(netuser, "AdminCompanion", "you are not allowed to use this command"); return; }
  387.             if (args.Length != 1)
  388.             {
  389.                 rust.SendChatMessage(netuser, "AdminCompanion", "wrong syntax: /aidemote 'playername < must be precise");
  390.                 return;
  391.             }
  392.             var hasacess = GetPlayerdata("Flags(pl)");
  393.             NetUser targetuser = rust.FindPlayer(args[0]);
  394.             if(!hasacess.ContainsKey(targetuser.userID.ToString()))
  395.             {
  396.                 rust.SendChatMessage(netuser, "AdminCompanion", targetuser.displayName + " has already been Removed to the Companion list");
  397.                 return;
  398.             }
  399.             rust.SendChatMessage(netuser, "AdminCompanion", targetuser.displayName + " has been Removed from the Companion list");
  400.             hasacess.Remove(targetuser.userID.ToString());
  401.             return;
  402.         }
  403.         [ChatCommand("aiforceremovelang")]
  404.         void cmdChatforcermeovedictionary(NetUser netuser, string command, string[] args)
  405.         {
  406.             if (!hasAccess(netuser)) { rust.SendChatMessage(netuser, "AdminCompanion", "you are not allowed to use this command"); return; }
  407.             if (args.Length != 1)
  408.             {
  409.                 rust.SendChatMessage(netuser, "AdminCompanion", "wrong syntax: /aiforceremovelang 'language prefix < must be precise");
  410.                 return;
  411.             }
  412.             if(DataStore[args[0].ToString()] == null)
  413.             {
  414.                 rust.SendChatMessage(netuser, "AdminCompanion", "The dictionary has already been removed for " + args[0].ToString());
  415.                 return;
  416.             }
  417.             DataStore[args[0].ToString()] = null;
  418.             SaveData();
  419.             rust.SendChatMessage(netuser, "AdminCompanion", "you have removed the language dictionary for " + args[0].ToString());
  420.             return;
  421.         }
  422.         [ChatCommand("reportrules")]
  423.         void cmdReportRules(NetUser netuser, string command, string[] args)
  424.         {
  425.             rust.SendChatMessage(netuser, "AntiCheat", "[color orange]Abuse of this system will result in an irreversible ban.");
  426.             rust.SendChatMessage(netuser, "AntiCheat", "- Keep in mind that there are always going to be people better than you.");
  427.             rust.SendChatMessage(netuser, "AntiCheat", "- If you feel someone is hacking, /report them and after their test, if they");
  428.             rust.SendChatMessage(netuser, "AntiCheat", "pass move on. If your still suspicious message an admin and we will look into it.");
  429.             rust.SendChatMessage(netuser, "AntiCheat", "- Griefing using this plugin [color red]WILL [color white]get you [color red]banned[color white]. There are two records running");
  430.             rust.SendChatMessage(netuser, "AntiCheat", "first how many times you've reported people, and second how many times you've");
  431.             rust.SendChatMessage(netuser, "AntiCheat", "reported a particular individual.");
  432.         }
  433.         public bool isvalidtest(string x)
  434.         {
  435.             if(x.ToString() == "stevenmenu" || x.ToString() == "dizzy" || x.ToString() == "a3mon" || x.ToString() == "drop" || x.ToString() == "jacked")
  436.                 return true;
  437.             return false;
  438.                        
  439.                    
  440.         }
  441.         [ChatCommand("run")]
  442.         void cmdRun(NetUser netuser, string command, string[] args)
  443.                 {
  444.                     if (!hasAccess(netuser)) { rust.SendChatMessage(netuser, "AntiCheat", "you are not allowed to use this command"); return; }
  445.                     else if (args.Length != 2)
  446.                     {
  447.                         rust.SendChatMessage(netuser, "AntiCheat", "Incorrect syntax: Use /run 'user' 'test'");
  448.  
  449.                     }
  450.                     else
  451.                     {
  452.                         if(!isvalidtest(args[1].ToString()))
  453.                             return;
  454.                         NetUser targetuser = rust.FindPlayer(args[0]);
  455.                         string userid = targetuser.playerClient.userID.ToString();
  456.                         string net = targetuser.userID.ToString();
  457.                         if (targetuser != null)
  458.                         {
  459.                      PlayerHandler player = targetuser.playerClient.GetComponent<PlayerHandler>();
  460.                     if (player != null)
  461.                     {
  462.                         rust.SendChatMessage(netuser, "AntiCheat", "already running a test on color yellow]" + targetuser.displayName);
  463.                         return;
  464.                     }
  465.                     player = targetuser.playerClient.gameObject.AddComponent<PlayerHandler>();
  466.                    
  467.                     var character = targetuser.playerClient.rootControllable.GetComponent<Character>();
  468.                     if (args[1] == "stevenmenu")
  469.                     {
  470.                         player.finisheddizzycheck = true;
  471.                         player.finishedjackedcheck = true;
  472.                         player.hascompletednofallcheck = true;
  473.                         player.passedjumptest = true;
  474.                         player.passednorecoiltest = true;
  475.                         player.StartCheck();
  476.                         rust.SendChatMessage(netuser, "AntiCheat", "Running test 'Steven Menu' on [color yellow]" + targetuser.displayName);
  477.                     }
  478.                     else if (args[1] == "a3mon")
  479.                     {
  480.                         player.finishedstevencheck = true;
  481.                         player.finishedjackedcheck = true;
  482.                         player.hascompletednofallcheck = true;
  483.                         player.passedjumptest = true;
  484.                         player.passednorecoiltest = true;
  485.                         player.StartCheck();
  486.                         rust.SendChatMessage(netuser, "AntiCheat", "Running test 'A3mon' on [color yellow]" + targetuser.displayName);
  487.                     }
  488.                     else if (args[1] == "jacked")
  489.                     {
  490.                         player.finishedstevencheck = true;
  491.                         player.finisheddizzycheck = true;
  492.                         player.hascompletednofallcheck = true;
  493.                         player.passedjumptest = true;
  494.                         player.passednorecoiltest = true;
  495.                         player.StartCheck();
  496.                         rust.SendChatMessage(netuser, "AntiCheat", "Running test 'A3mon' on [color yellow]" + targetuser.displayName);
  497.                     }
  498.                     else if (args[1] == "dizzy")
  499.                     {
  500.                         rust.SendChatMessage(netuser, "AntiCheat", "Running test 'Dizzy Client' on [color yellow]" + targetuser.displayName);
  501.                     }
  502.                     else if (args[1] == "drop")
  503.                     {
  504.                         player.finishedstevencheck = true;
  505.                         player.finishedjackedcheck = true;
  506.                         player.finisheddizzycheck = true;
  507.                         player.passedjumptest = true;
  508.                         player.passednorecoiltest = true;
  509.                         player.StartCheck();
  510.                         rust.SendChatMessage(netuser, "AntiCheat", "Running test 'Drop Test' on [color yellow]" + targetuser.displayName);
  511.                     }
  512.                     else
  513.                     {
  514.                         rust.SendChatMessage(netuser, "AntiCheat", "The test [color orange]" + args[1] + " [color white]does not exist");
  515.                     }
  516.                         }
  517.                     }
  518.                 }
  519.         [ChatCommand("system")]
  520.         void cmdSystem(NetUser netuser, string command, string[] args)
  521.             {
  522.             PlayerHandler player = netuser.playerClient.GetComponent<PlayerHandler>();
  523.             if (player == null)
  524.             {
  525.                 SendReply(netuser, "You are not currently being tested");
  526.             }
  527.             else if (args.Length != 1)
  528.             {
  529.                 rust.SendChatMessage(netuser, "AntiCheat", "Wrong syntax: Use /system 'pc' or /system 'mac'");
  530.             }
  531.             else if (args[0].ToString().ToLower() == "pc")
  532.             {
  533.                 player.system = "pc";
  534.                 rust.SendChatMessage(netuser, "AntiCheat", "You have chosen your system as: [color yellow]" + args[0]);
  535.             }
  536.             else if (args[0].ToString().ToLower() == "mac")
  537.             {
  538.                 player.system = "mac";
  539.                 rust.SendChatMessage(netuser, "AntiCheat", "You have chosen your system as: [color yellow]" + args[0]);
  540.             }
  541.             }
  542.        
  543.         [ChatCommand("report")]
  544.         void cmdChatProdwholootedd(NetUser netuser, string command, string[] args)
  545.         {
  546.             if (args.Length == 0 )
  547.             {
  548.                 rust.SendChatMessage(netuser, "AntiCheat", "wrong syntax: /report 'playername < must be precise");
  549.                 return;
  550.             }
  551.            
  552.             cachedName = string.Empty;
  553.             cachedReason = string.Empty;
  554.             if (args.Length > 1)
  555.             {
  556.                 if (cachedName == string.Empty)
  557.                 {
  558.                     cachedName = args[1];
  559.                     if (args.Length > 2)
  560.                     {
  561.                         cachedReason = args[2];
  562.                     }
  563.                     else
  564.                     {
  565.                         cachedReason = args[1];
  566.                     }
  567.                 }
  568.             }
  569.             cachedReason += "(" + netuser.displayName + ")";
  570.             NetUser targetuser = rust.FindPlayer(args[0]);
  571.             if(targetuser == null)
  572.             {
  573.                 rust.SendChatMessage(netuser, "AdminCompanion", "there is no players found with that name");
  574.                 return;
  575.             }
  576.             var haschecked = Getplayerdatastore("AdminCompanion(haschecked)");
  577.             if(shouldcheckonce)
  578.             {
  579.                 if(haschecked.ContainsKey(targetuser.playerClient.userID.ToString()))
  580.                 {
  581.                     rust.SendChatMessage(netuser, "AdminCompanion", "I am sorry I was told not to check players twice");
  582.                     return;
  583.                 }
  584.             }
  585.             var newdata = GetPlayeinfo(targetuser.playerClient.userID.ToString());
  586.             var newdata2 = GetPlayeinfo("Reporteddata");
  587.             if(newdata.ContainsKey(netuser.playerClient.userID.ToString()))
  588.             {
  589.                 var newdatacount2 =  Convert.ToSingle(newdata["Reportspl"]);
  590.                 rust.SendChatMessage(netuser, "AntiCheat", "[color green]----------------------------------------------------------------------");
  591.                 rust.SendChatMessage(netuser, "AntiCheat", "[color yellow]" + targetuser.displayName + " [color white] he needs a total of : [color orange]" + newdatacount2 + "/" + numberofvotes + " [color white]reports.");
  592.                 rust.SendChatMessage(netuser, "AntiCheat", "[color green]----------------------------------------------------------------------");
  593.                 rust.SendChatMessage(netuser, "AntiCheat", "You have already reported [color yellow]" + targetuser.displayName + "[color white]!");
  594.                 rust.SendChatMessage(netuser, "AntiCheat", "[color red]Intentional abuse of this plugin will result in a ban.");
  595.                 rust.SendChatMessage(netuser, "AntiCheat", "Use /reportrules if you have questions!");
  596.                 return;
  597.                 rust.SendChatMessage(netuser, "AdminCompanion", "You have already voted to check " + targetuser.playerClient.userName);
  598.                 return;
  599.  
  600.             }
  601.            
  602.             if(!newdata.ContainsKey("Reportspl"))
  603.             {
  604.                 reportnum++;
  605.                 newdata.Add("Reportspl", 1f);
  606.                 timer.Once((float)300 , () => newdata.Remove("Reportspl".ToString()));
  607.                 if(!newdata.ContainsKey(netuser.playerClient.userID.ToString()))
  608.                 {
  609.                     timer.Once((float)300 , () => newdata.Remove(netuser.playerClient.userID.ToString()));
  610.                     newdata.Add(netuser.playerClient.userID.ToString(), cachedReason);
  611.                 }
  612.                 var text = Convert.ToSingle(newdata["Reportspl"]);
  613.                 if(text >= numberofvotes)
  614.                 {
  615.                     AntiCheatBroadcastplayerr(targetuser.displayName + " is now being checked for hacks");
  616.                     targetuser.playerClient.rootControllable.rootCharacter.takeDamage.SetGodMode(true);
  617.                     PlayerHandler phandler = targetuser.playerClient.GetComponent<PlayerHandler>();
  618.                     if (phandler == null) { phandler = targetuser.playerClient.gameObject.AddComponent<PlayerHandler>(); }
  619.                     timer.Once(0.1f, () => phandler.StartCheck());
  620.                     rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " is now being checked for hacks");
  621.                     rust.Notice(targetuser, targetuser.displayName + " You are now being tested for hacks do as you are told");
  622.                     rust.RunClientCommand(targetuser, "config.save");
  623.                     rust.RunClientCommand(targetuser, "input.bind Inventory 0 0");
  624.                     rust.RunClientCommand(targetuser, "input.bind Up F2 F2");
  625.                     rust.RunClientCommand(targetuser, "input.bind Down F2 F2");
  626.                     rust.RunClientCommand(targetuser, "input.bind Left " + "t" + " " + "t");
  627.                     rust.RunClientCommand(targetuser, "input.bind Up " + "t" + " " + "t");
  628.                     rust.RunClientCommand(targetuser, "input.bind Duck " + "t" + " " + "t");
  629.                     rust.SendChatMessage(netuser, "AntiCheat", "this player will be checked for hacks shortly");
  630.                     rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " will be checked shortley");
  631.                     haschecked.Add(targetuser.playerClient.userID.ToString(), targetuser.displayName);
  632.                     if(!newdata.ContainsKey("numberoftimeschecked"))
  633.                     {
  634.                         newdata.Add("numberoftimeschecked", 1);
  635.                     }
  636.                     if(!newdata.ContainsKey(netuser.playerClient.userID.ToString()))
  637.                     {
  638.                         timer.Once((float)300 , () => newdata.Remove(netuser.playerClient.userID.ToString()));
  639.                         newdata.Add(netuser.playerClient.userID.ToString(), cachedReason);
  640.                        
  641.                     }
  642.                     var datecheckadd = Convert.ToSingle(newdata["numberoftimeschecked"]);
  643.                     datecheckadd++;
  644.                 }
  645.                 rust.SendChatMessage(netuser, "AntiCheat", "[color green]----------------------------------------------------------------------");
  646.                 rust.SendChatMessage(netuser, "AntiCheat", "[color yellow]" + targetuser.displayName + " [color white] he needs a total of : [color orange]" + 1 + "/" + numberofvotes + " [color white]reports.");
  647.                 rust.SendChatMessage(netuser, "AntiCheat", "[color green]----------------------------------------------------------------------");
  648.                 rust.Notice(netuser, "Successfully reported player: " + targetuser.displayName + " Email any video proof to Getdrabbed@gmail.com");
  649.                 rust.SendChatMessage(netuser, "AntiCheat", "[color green]Successfully [color white]reported player: [color yellow]" + targetuser.displayName + ". [color white]Email any video proof to Getdrabbed@gmail.com");
  650.                 return;
  651.                 var tallyy2 = PlayerClient.All.Count;
  652.                 var newdatacount2 =  Convert.ToSingle(newdata["Reportspl"]);
  653.                 var enhanced2 = (tallyy2/newdatacount2 * 100);
  654.                 var percentageleftt = (50 - enhanced2);
  655.                
  656.                 if(percentageleftt <= 0)
  657.                 {
  658.                     targetuser.playerClient.rootControllable.rootCharacter.takeDamage.SetGodMode(true);
  659.                     PlayerHandler phandler = targetuser.playerClient.GetComponent<PlayerHandler>();
  660.                     if (phandler == null) { phandler = targetuser.playerClient.gameObject.AddComponent<PlayerHandler>(); }
  661.                     timer.Once(0.1f, () => phandler.StartCheck());
  662.                     rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " [color orange]is now being tested");
  663.                     rust.RunClientCommand(targetuser, "config.save");
  664.                     rust.RunClientCommand(targetuser, "input.bind Inventory 0 0");
  665.                     rust.RunClientCommand(targetuser, "input.bind Up F2 F2");
  666.                    
  667.                     rust.RunClientCommand(targetuser, "input.bind Down F2 F2");
  668.                     rust.RunClientCommand(targetuser, "input.bind Left " + "t" + " " + "t");
  669.                     rust.RunClientCommand(targetuser, "input.bind Up " + "t" + " " + "t");
  670.                     rust.RunClientCommand(targetuser, "input.bind Duck " + "t" + " " + "t");
  671.                     rust.SendChatMessage(netuser, "AntiCheat", "this player will be checked for hacks shortly");
  672.                     rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " will be checked shortley");
  673.                     haschecked.Add(targetuser.playerClient.userID.ToString(), targetuser.displayName);
  674.                     if(!newdata.ContainsKey("numberoftimeschecked"))
  675.                     {
  676.                         newdata.Add("numberoftimeschecked", 1);
  677.                         return;
  678.                     }
  679.                     if(!newdata2.ContainsKey(netuser.playerClient.userID.ToString()))
  680.                     {
  681.                         newdata2.Add(netuser.playerClient.userID.ToString(), cachedReason);
  682.                        
  683.                     }
  684.                     var datecheckadd = Convert.ToSingle(newdata["numberoftimeschecked"]);
  685.                     datecheckadd++;
  686.                     return;
  687.                 }
  688.                 rust.SendChatMessage(netuser, "AntiCheat", "you have voted to check " + targetuser.displayName + " and to check he needs a total of " + percentageleftt.ToString() + "% more votes");
  689.                 return;
  690.             }
  691.             if(newdata.ContainsKey(netuser.playerClient.userID.ToString()))
  692.             {
  693.                 rust.SendChatMessage(netuser, "AntiCheat", "You have already voted to check " + targetuser.playerClient.userName);
  694.                 return;
  695.             }
  696.             if(!newdata.ContainsKey(netuser.playerClient.userID.ToString()))
  697.             {
  698.                 newdata.Add(netuser.playerClient.userID.ToString(), cachedReason); 
  699.                 timer.Once((float)300 , () => newdata.Remove(netuser.playerClient.userID.ToString()));
  700.             }
  701.             var newdatacount =  Convert.ToSingle(newdata["Reportspl"]);
  702.             newdata.Remove("Reportspl");
  703.             var update = (newdatacount + 1f);
  704.             newdata.Add("Reportspl", update);
  705.             if(update >= numberofvotes)
  706.             {
  707.                 AntiCheatBroadcastplayerr(targetuser.displayName + " [color orange]is now being tested");
  708.                 rust.Notice(targetuser, targetuser.displayName + " You are now being tested for hacks do as you are told");
  709.                 PlayerHandler phandler = targetuser.playerClient.GetComponent<PlayerHandler>();
  710.                 if (phandler == null) { phandler = targetuser.playerClient.gameObject.AddComponent<PlayerHandler>(); }
  711.                     timer.Once(0.1f, () => phandler.StartCheck());
  712.                     rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " [color orange]is now being tested");
  713.                     rust.RunClientCommand(targetuser, "config.save");
  714.                     rust.RunClientCommand(targetuser, "input.bind Inventory 0 0");
  715.                     rust.RunClientCommand(targetuser, "input.bind Up F2 F2");
  716.                     rust.SendChatMessage(netuser, "AntiCheat", "this player will be checked for hacks shortly");
  717.                     rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " will be checked shortley");
  718.                     haschecked.Add(targetuser.playerClient.userID.ToString(), targetuser.displayName);
  719.             }
  720.             reportnum++;
  721.             rust.SendChatMessage(netuser, "AntiCheat", "[color green]----------------------------------------------------------------------");
  722.             rust.SendChatMessage(netuser, "AntiCheat", "[color yellow]" + targetuser.displayName + " [color white] he needs a total of : [color orange]" + update + "/" + numberofvotes + " [color white]reports.");
  723.             rust.SendChatMessage(netuser, "AntiCheat", "[color green]----------------------------------------------------------------------");
  724.             rust.Notice(netuser, "Successfully reported player: " + targetuser.displayName + " Email any video proof to Getdrabbed@gmail.com");
  725.             rust.SendChatMessage(netuser, "AntiCheat", "[color green]Successfully [color white]reported player: [color yellow]" + targetuser.displayName + ". [color white]Email any video proof to Getdrabbed@gmail.com");
  726.             return;
  727.  
  728.             var tally = update;
  729.             var tally2 = PlayerClient.All.Count;
  730.             var enhanced = (tally/tally2 * 100);
  731.             var percentageleft = (50 - enhanced);
  732.             if(percentageleft <= 0)
  733.             {
  734.                 PlayerHandler phandler = targetuser.playerClient.GetComponent<PlayerHandler>();
  735.                 if (phandler == null) { phandler = targetuser.playerClient.gameObject.AddComponent<PlayerHandler>(); }
  736.                 timer.Once(0.1f, () => phandler.StartCheck());
  737.                 rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " [color orange]is now being tested");
  738.                 rust.RunClientCommand(targetuser, "config.save");
  739.                 rust.RunClientCommand(targetuser, "input.bind Inventory 0 0");
  740.                 rust.RunClientCommand(targetuser, "input.bind Up F2 F2");
  741.                 rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " will be checked shortley");
  742.                 return;
  743.             }
  744.             if(newdata.ContainsKey(netuser.playerClient.userID.ToString()))
  745.             {
  746.                 rust.SendChatMessage(netuser, "AntiCheat", "you have already voted to check " + targetuser.displayName + " and to check he needs a total of " + percentageleft.ToString() + "% more votes");
  747.                 return;
  748.             }
  749.            
  750.             if(!newdata2.ContainsKey(netuser.playerClient.userID.ToString()))
  751.             {
  752.                 newdata2.Add(netuser.playerClient.userID.ToString(), cachedReason);
  753.                        
  754.             }
  755.             gg++;
  756.             newdata.Remove("Reportspl");
  757.             newdata.Add("Reportspl", update);
  758.             newdata.Add(netuser.playerClient.userID.ToString(), cachedReason);
  759.             if(enhanced <= numberofpercentagevtoesbeforecheck)
  760.             rust.SendChatMessage(netuser, "AntiCheat", "you have voted to check " + targetuser.displayName + "there is a total of " + enhanced.ToString() + "% who voted needs " + percentageleft.ToString() + "%");
  761.             if(enhanced >= numberofpercentagevtoesbeforecheck)
  762.             {
  763.                 PlayerHandler phandler = targetuser.playerClient.GetComponent<PlayerHandler>();
  764.                 if (phandler == null) { phandler = targetuser.playerClient.gameObject.AddComponent<PlayerHandler>(); }
  765.                 timer.Once(0.1f, () => phandler.StartCheck());
  766.                 rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " [color orange]is now being tested");
  767.                 rust.RunClientCommand(targetuser, "config.save");
  768.                 rust.RunClientCommand(targetuser, "input.bind Inventory 0 0");
  769.                 rust.RunClientCommand(targetuser, "input.bind Up F2 F2");
  770.                 rust.SendChatMessage(netuser, "AntiCheat", "this player will be checked for hacks shortly");
  771.                 return;
  772.             }
  773.             rust.SendChatMessage(netuser, "AntiCheat", "there is no players found with that name");
  774.             return;
  775.         }
  776.         [ChatCommand("aireports")]
  777.         void cmdChatviewreports(NetUser netuser, string command, string[] args)
  778.         {
  779.             if (!hasAccess(netuser)) { rust.SendChatMessage(netuser, "AntiCheat", "you are not allowed to use this command"); return; }
  780.             var totalnumberofbans = (numberofbansdizzy + numberofbansjacked + numberofbanssteven + numberofcheckevade + numberofbansnorecoil + numberofbansnofalldamage);
  781.             rust.SendChatMessage(netuser, "AntiCheat", "Welcome Back :) Today I have Banned " + numberofbansdizzy + " Dizzy/A3mon Users " + numberofbansjacked + " JackeD users " + numberofbanssteven + " Steven Hack Users ");
  782.             rust.SendChatMessage(netuser, "AntiCheat", "Welcome Back :) " + numberofbansnofalldamage + " Number of nofall damage users " + numberofbansnorecoil + " No Recoil Users " + numberofcheckevade + " number of Check evades");
  783.             rust.SendChatMessage(netuser, "AntiCheat", "Welcome Back :) " + numberofspeedjumpban + " Number of speed jump ban Total number of bans " + totalnumberofbans + " Reports " + reportnum);
  784.         }
  785.         [ChatCommand("aivr")]
  786.         void cmdChatGetdata(NetUser netuser, string command, string[] args)
  787.         {
  788.             if (!hasAccess(netuser)) { rust.SendChatMessage(netuser, "AntiCheat", "you are not allowed to use this command"); return; }
  789.             int count = 0;
  790.             int bl = 1;
  791.             if (args.Length > 0) int.TryParse(args[0], out bl);
  792.             var newcount = (bl + 20);
  793.             foreach (KeyValuePair<string, object> pair in Info)
  794.             {
  795.  
  796.                 count++;
  797.                 if(count < bl)
  798.                     continue;
  799.                 int count3 = count;
  800.                 if(count >= newcount)
  801.                     break;
  802.                 if(count >= newcount)
  803.                     return;
  804.                 friedchicken(netuser, pair.Key.ToString(), bl);
  805.             }
  806.         }
  807.         public void friedchicken(NetUser netuser, string x , int bl)
  808.         {
  809.             int count = 0;
  810.             int newcount = (bl + 20);
  811.             var serp = Getplayerdatastore(x);
  812.             foreach (KeyValuePair<string, object> pair in serp)
  813.             {
  814.                
  815.                 count++;
  816.                 int count3 = count;
  817.                 if(count >= newcount)
  818.                     break;
  819.                 if(count >= newcount)
  820.                     return;
  821.                 rust.SendChatMessage(netuser, "AdminCompanion", "Value " + pair.Value.ToString() + " Key " + pair.Key.ToString());
  822.             }
  823.         }
  824.         [ChatCommand("aibotendcheck")]
  825.         void cmdChatendcheck(NetUser netuser, string command, string[] args)
  826.         {
  827.             if (!hasAccess(netuser)) { rust.SendChatMessage(netuser, "AdminCompanion", "you are not allowed to use this command"); return; }
  828.             if (args.Length != 1)
  829.             {
  830.                 rust.SendChatMessage(netuser, "AdminCompanion", "wrong syntax: /aibotcheckpl 'playername < must be precise");
  831.                 return;
  832.             }
  833.             NetUser targetuser = rust.FindPlayer(args[0]);
  834.             if(targetuser == null)
  835.             {
  836.                 rust.SendChatMessage(netuser, "AdminCompanion", "there is no players found with that name");
  837.                 return;
  838.             }
  839.             PlayerHandler phandler = targetuser.playerClient.GetComponent<PlayerHandler>();
  840.             if (phandler != null)
  841.             {
  842.                 if(phandler.playerclient.rootControllable != null)
  843.                     phandler.playerclient.rootControllable.rootCharacter.takeDamage.SetGodMode(false);
  844.                 EndDetection(phandler);
  845.                 rust.SendChatMessage(netuser, "AntiCheat", "The test has been ended on " + targetuser.displayName);
  846.                 return;
  847.             }
  848.             rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " is not currently being tested");
  849.         }
  850.         [ChatCommand("aiflagcheck")]
  851.         void cmdChatgetflagcheck(NetUser netuser, string command, string[] args)
  852.         {
  853.             if (!hasAccess(netuser)) { rust.SendChatMessage(netuser, "AntiCheat", "you are not allowed to use this command"); return; }
  854.             PlayerHandlerflagcheck phandler = netuser.playerClient.GetComponent<PlayerHandlerflagcheck>();
  855.             if (phandler == null) { phandler = netuser.playerClient.gameObject.AddComponent<PlayerHandlerflagcheck>(); rust.SendChatMessage(netuser, "AntiCheat", "Your flags are now being checked"); phandler.StartCheck(); return;}
  856.             Endflagcheck(phandler);
  857.             rust.SendChatMessage(netuser, "AntiCheat", "Your flags are no longer being checked");
  858.             return;
  859.            
  860.         }
  861.         [ChatCommand("aibotcheckpl")]
  862.         void cmdChatProdwholooted(NetUser netuser, string command, string[] args)
  863.         {
  864.             if (!hasAccess(netuser)) { rust.SendChatMessage(netuser, "AntiCheat", "you are not allowed to use this command"); return; }
  865.             if (args.Length != 1)
  866.             {
  867.                 rust.SendChatMessage(netuser, "AntiCheat", "wrong syntax: /aibotcheckpl 'playername < must be precise");
  868.                 return;
  869.             }
  870.             NetUser targetuser = rust.FindPlayer(args[0]);
  871.             if(targetuser == null)
  872.             {
  873.                 rust.SendChatMessage(netuser, "AntiCheat", "there is no players found with that name");
  874.                 return;
  875.             }
  876.             AntiCheatBroadcastplayerr(targetuser.displayName + " is now being checked for hacks");
  877.             rust.Notice(targetuser, targetuser.displayName + " You are now biegn tested for hacks do as you are told");
  878.             targetuser.playerClient.rootControllable.rootCharacter.takeDamage.SetGodMode(true);
  879.             PlayerHandler phandler = targetuser.playerClient.GetComponent<PlayerHandler>();
  880.             if (phandler == null) { phandler = targetuser.playerClient.gameObject.AddComponent<PlayerHandler>(); }
  881.             timer.Once(0.1f, () => phandler.StartCheck());
  882.             rust.SendChatMessage(netuser, "AntiCheat", targetuser.displayName + " is now being checked for hacks");
  883.             rust.RunClientCommand(targetuser, "config.save");
  884.             rust.RunClientCommand(targetuser, "input.bind Inventory 0 0");
  885.             rust.RunClientCommand(targetuser, "input.bind Down F2 F2");
  886.             rust.RunClientCommand(targetuser, "input.bind Left " + "t" + " " + "t");
  887.             rust.RunClientCommand(targetuser, "input.bind Up " + "t" + " " + "t");
  888.             rust.RunClientCommand(targetuser, "input.bind Duck " + "t" + " " + "t");
  889.            
  890.            
  891.         }
  892.         public bool namehasbeenbannedalready(string name)
  893.         {
  894.             var bannedusers = bannedUsers.GetValue(null);
  895.             MethodInfo Enumerator = bannedusers.GetType().GetMethod("GetEnumerator");
  896.             var myEnum = Enumerator.Invoke(bannedusers, new object[0]);
  897.             MethodInfo MoveNext = myEnum.GetType().GetMethod("MoveNext");
  898.             MethodInfo GetCurrent = myEnum.GetType().GetMethod("get_Current");
  899.             string unbantarget = string.Empty;
  900.             string unbanname = string.Empty;
  901.             while ((bool)MoveNext.Invoke(myEnum, new object[0]))
  902.             {
  903.                 var bannedUser = GetCurrent.Invoke(myEnum, new object[0]);
  904.                 if (name == steamid.GetValue(bannedUser).ToString() || name == username.GetValue(bannedUser).ToString())
  905.                 {
  906.                     unbantarget = steamid.GetValue(bannedUser).ToString();
  907.                     unbanname = username.GetValue(bannedUser).ToString();
  908.                     return true;
  909.                 }
  910.             }
  911.             return false;
  912.         }
  913.         void forceenddettection(NetUser netuser)
  914.         {
  915.  
  916.         }
  917.         void OnPlayerConnected(NetUser netuser)
  918.         {
  919.             if(shouldsendstatisticstoadminonconnect)
  920.             {
  921.                 if (hasAccess(netuser))
  922.                 {
  923.                     var totalnumberofbans = (numberofbansdizzy + numberofbansjacked + numberofbanssteven + numberofcheckevade + numberofbansnorecoil + numberofbansnofalldamage);
  924.                     rust.SendChatMessage(netuser, "AntiCheat", "Welcome Back :) Today I have Banned " + numberofbansdizzy + " Dizzy/A3mon Users " + numberofbansjacked + " JackeD users " + numberofbanssteven + " Steven Hack Users ");
  925.                     rust.SendChatMessage(netuser, "AntiCheat", "Welcome Back :) " + numberofbansnofalldamage + " Number of nofall damage users " + numberofbansnorecoil + " No Recoil Users " + numberofcheckevade + " number of Check evades");
  926.                     rust.SendChatMessage(netuser, "AntiCheat", "Welcome Back :) " + numberofspeedjumpban + " Number of speed jump ban Total number of bans " + totalnumberofbans + " Reports " + reportnum);
  927.                     if(!shouldcheckplayerswithpermisions)
  928.                         return;
  929.                 }
  930.             }
  931.             if(shouldsendprobablybanevadetoadmin)
  932.             {
  933.                 if(shouldkicknoname)
  934.                 {
  935.                     if(netuser.displayName.ToString() == "" || netuser.displayName.ToString() == " ")
  936.                     {
  937.                         netuser.Kick(NetError.Facepunch_Kick_RCON, true);
  938.                         return;
  939.                     }
  940.                     if(netuser.displayName == "DerpTeamNoob" || netuser.displayName == "LumaEmu") {}
  941.                     else
  942.                     if(namehasbeenbannedalready(netuser.displayName.ToString()))
  943.                     {
  944.                         if(smartcheck){
  945.                         var hascheckeddd = GetPlayerdata("smartchecked(log.pl)");
  946.                         var hascheckedd = GetPlayerdata("smartchecked(pl)");
  947.                         if(!hascheckeddd.ContainsKey(netuser.playerClient.userID.ToString()))
  948.                         if(!hascheckedd.ContainsKey(netuser.playerClient.userID.ToString()))
  949.                         {
  950.                             hascheckedd.Add(netuser.playerClient.userID.ToString(), true);
  951.                             if(!hascheckeddd.ContainsKey(netuser.playerClient.userID.ToString()))
  952.                                 AdminCompanionpublicbroadcast("The Name " + netuser.displayName + "  has been banned already i will test him when he log's in");
  953.                         }
  954.                         }
  955.                         if(!smartcheck)
  956.                             AdminCompanionpublicbroadcast("The Name " + netuser.displayName + " has been banned already but is using a different account judge by your self");
  957.                     }
  958.                 }
  959.             }
  960.             if(!shouldcheckplayerwhenfirstconnect)
  961.                 return;
  962.             var firstpass = GetPlayerdata("firstpass");
  963.             if(!firstpass.ContainsKey(netuser.playerClient.userID.ToString()))
  964.                 firstpass.Add(netuser.playerClient.userID.ToString(), true);
  965.         }
  966.         void helpercheck(PlayerClient player)
  967.         {
  968.             Debug.Log(player.controllable.npcName);
  969.         }
  970.         void OnPlayerSpawn(PlayerClient player, bool useCamp, RustProto.Avatar avatar)
  971.         {
  972.             if(smartcheck)
  973.             {
  974.                 var hascheckedd = GetPlayerdata("smartchecked(pl)");
  975.                 var hascheckeddd = GetPlayerdata("smartchecked(log.pl)");
  976.                 if(!hascheckeddd.ContainsKey(player.userID.ToString()))
  977.                 if(hascheckedd.ContainsKey(player.userID.ToString()))
  978.                 {
  979.                    
  980.                     PlayerHandler phandler = player.GetComponent<PlayerHandler>();
  981.                     if (phandler == null) { phandler = player.gameObject.AddComponent<PlayerHandler>(); player.rootControllable.rootCharacter.takeDamage.SetGodMode(true); }
  982.                     timer.Once(0.1f, () => phandler.StartCheck());
  983.                     if(!hascheckeddd.ContainsKey(player.userID.ToString()))
  984.                         hascheckeddd.Add(player.userID.ToString(), true);
  985.                     return;
  986.                 }
  987.             }
  988.             if(!shouldcheckplayeroncewhenconnect)
  989.                 return;
  990.             var haschecked = GetPlayerdata("hasscheckedAuto(pl)");
  991.             if(!haschecked.ContainsKey(player.userID.ToString()))
  992.             if(shouldcheckplayeroncewhenconnect)
  993.             {
  994.                 PlayerHandler phandler = player.GetComponent<PlayerHandler>();
  995.                 if (phandler == null) { phandler = player.gameObject.AddComponent<PlayerHandler>(); }
  996.                 timer.Once(0.1f, () => phandler.StartCheck());
  997.                
  998.                 if(!haschecked.ContainsKey(player.userID.ToString()))
  999.                     haschecked.Add(player.userID.ToString(), true);
  1000.                 return;
  1001.             }
  1002.             var firstpass = GetPlayerdata("firstpass");
  1003.             if(firstpass.ContainsKey(player.userID.ToString()))
  1004.             if(!shouldcheckplayeroncewhenconnect)
  1005.                 if(firstpass.ContainsKey(player.userID.ToString()))
  1006.                 {
  1007.                     PlayerHandler phandler = player.GetComponent<PlayerHandler>();
  1008.                     if (phandler == null) { phandler = player.gameObject.AddComponent<PlayerHandler>(); }
  1009.                     timer.Once(0.1f, () => phandler.StartCheck());
  1010.                     firstpass.Remove(player.userID.ToString());
  1011.                     return;
  1012.                 }
  1013.             return;
  1014.        
  1015.            
  1016.            
  1017.            
  1018.  
  1019.         }
  1020.         void AdminCompanionpublicbroadcast(string message)
  1021.         {
  1022.             var hasacess = GetPlayerdata("Flags(pl)");
  1023.             foreach (PlayerClient player in PlayerClient.All)
  1024.             {
  1025.                 if (player.netUser.CanAdmin() || hasacess.ContainsKey(player.userID.ToString()))
  1026.                     ConsoleNetworker.SendClientCommand(player.netPlayer, "chat.add AntiCheat \"" + message + "\"");
  1027.             }
  1028.         }
  1029.        
  1030.         static void AntiCheatBroadcastplayer(string message)
  1031.         {
  1032.             foreach (PlayerClient player in PlayerClient.All)
  1033.             {
  1034.                 ConsoleNetworker.SendClientCommand(player.netPlayer, "chat.add AntiCheat \"" + message + "\"");
  1035.             }
  1036.         }      
  1037.         public void AntiCheatBroadcastplayerr(string message)
  1038.         {
  1039.             foreach (PlayerClient player in PlayerClient.All)
  1040.             {
  1041.                 ConsoleNetworker.SendClientCommand(player.netPlayer, "chat.add AntiCheat \"" + message + "\"");
  1042.             }
  1043.         }
  1044.         static void EndDetection(PlayerHandler player)
  1045.         {
  1046.             NetUser netuser = player.playerclient.netUser;
  1047.             if(player.hasloc2)
  1048.             TeleportToPos2(netuser, player.firstx1, player.firsty1, player.firstz1);
  1049.             returnsettings(player.playerclient.netUser);
  1050.             GameObject.Destroy(player);
  1051.         }
  1052.         void Endflagcheck(PlayerHandlerflagcheck player)
  1053.         {
  1054.             GameObject.Destroy(player);
  1055.         }
  1056.         static void Resettest(PlayerHandler player)
  1057.         {
  1058.            
  1059.             ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "input.bind Up F2 F2");
  1060.         }
  1061.         static void removeui(PlayerHandler player)
  1062.         {
  1063.             ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "gameui.hide");
  1064.         }
  1065.         static void Resettestt(PlayerClient player, string lastcheckstring)
  1066.         {
  1067.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Down " + lastcheckstring + " " + lastcheckstring);
  1068.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Left " + "None" + " " + "None");
  1069.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Right " + "None" + " " + "None");
  1070.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Up " + "None" + " " + "None");
  1071.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Duck " + "None" + " " + "None");
  1072.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Jump " + "None" + " " + "None");
  1073.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Fire " + "None" + " " + "None");
  1074.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Inventory " + "None" + " " + "None");
  1075.         }
  1076.         static void Resettestt2(PlayerClient player, string lastcheckstring)
  1077.         {
  1078.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Down " + lastcheckstring + " " + lastcheckstring);
  1079.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Left " + "None" + " " + "None");
  1080.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Right " + "None" + " " + "None");
  1081.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Up " + "None" + " " + "None");
  1082.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Duck " + "None" + " " + "None");
  1083.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Fire " + "None" + " " + "None");
  1084.             ConsoleNetworker.SendClientCommand(player.netPlayer, "input.bind Inventory " + "None" + " " + "None");
  1085.         }
  1086.         [ChatCommand("aihelp")]
  1087.         void cmdChatsendhelptext(NetUser netuser, string command, string[] args)
  1088.         {
  1089.             SendReply(netuser, "Refresh Language : Type /airefresh To Refresh Your selected language");
  1090.             SendReply(netuser, "Select your system : Type /system mac or pc To Select system");
  1091.             SendReply(netuser, "Report Hacker : Type /aireport Playername to report a player Total number of votes needed before check is " + numberofvotes.ToString());
  1092.             if (!hasAccess(netuser)) { return; }
  1093.             SendReply(netuser, "Force Check : Type /aibotcheckpl to force check a player (flag needed)");
  1094.             SendReply(netuser, "To View Reports : Type /aireports to force check a player (flag needed)");
  1095.             SendReply(netuser, "Flagcheck flags(used for configuration) : Type /aiflagcheck and /aiflagcheck again to disable it");
  1096.             SendReply(netuser, "Promote Player : Type /aipromote playername to add a player to Companion list (flag needed)");
  1097.             SendReply(netuser, "Demote player : Type /aidemote playername to Remove a player from the Companion list (flag needed)");
  1098.             SendReply(netuser, "Test Zone : Type /aisafezone To save /remove a testzone (flag needed)");
  1099.             SendReply(netuser, "Force end check : Type /aibotendcheck to force end check on a player (flag needed)");
  1100.             SendReply(netuser, "Remove Language : Type /aiforceremovelang To Remove A Language dictionary (flag needed)");
  1101.         }
  1102.         void SendHelpText(NetUser netuser)
  1103.         {
  1104.             SendReply(netuser, "AdminCompanion : Type /aihelp to get help about the AdminCompanion plugin");
  1105.         }
  1106.         public static void checkplayer(PlayerHandler player)
  1107.         {
  1108.            
  1109.             if(!shouldcheckhackmenu)
  1110.             {
  1111.                 AntiCheatBroadcastplayer(player.playerclient.userName + " Has been Cleared from this plugin");
  1112.                 undofixplayerhp(player);
  1113.                 returnsettings(player.playerclient.netUser);
  1114.                 player.playerclient.rootControllable.rootCharacter.takeDamage.SetGodMode(false);
  1115.                 EndDetection(player);
  1116.                 return;
  1117.             }
  1118.             var crouchjumpexploitdetection = player.playerclient.controllable.stateFlags.flags;
  1119.             player.h++;
  1120.             if(shouldbanforidle)
  1121.             if(player.h >= idletimetillban)
  1122.             {
  1123.                 if(shoulddoipban)
  1124.                     ipban(player, "AdminCompanion(Max Amount of Idle Time Reached)");
  1125.                 AntiCheatBroadcastplayer(player.playerclient.userName + " Has been Banned from the server for idle during test");
  1126.                 Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AdminCompanion(Max Amount of Idle Time Reached)");
  1127.                 return;
  1128.             }
  1129.            
  1130.             if(player.didteleport)
  1131.             {
  1132.                 Resettestt(player.playerclient, player.laststring2);
  1133.                 if(player.playertestdelaycount <= 1)
  1134.                 {
  1135.                    
  1136.                     player.playertestdelaycount++;
  1137.                     return;
  1138.                 }
  1139.                 player.didteleport = false;
  1140.                 return;
  1141.             }
  1142.             var check = player.playerclient.controllable.stateFlags.flags;
  1143.             if(!player.playerclient.controllable.stateFlags.grounded)
  1144.                 return;
  1145.             if(check == null)
  1146.                 return;
  1147.            
  1148.             NetUser netuser = player.playerclient.netUser;
  1149.             var pitch = player.playerclient.controllable.eyesPitch;
  1150.             var datastore2 = Getplayerdatastore("AdminCompanion(Lang.Log)");
  1151.             if(!player.playerhaslang2)
  1152.                 return;
  1153.            
  1154.  
  1155.             if(!player.hasresettest)
  1156.             {
  1157.                 Resettestt(player.playerclient, player.laststring2);
  1158.                 player.hasresettest = true;
  1159.                 return;
  1160.             }
  1161.             var language = Getplayerdatastore(player.language);
  1162.             var location1 = player.playerclient.lastKnownPosition;
  1163.             var distance3D = player.distance3D;
  1164.             var distance3d3 = Math.Floor(Vector3.Distance(player.playerclient.lastKnownPosition, player.lastPosition));
  1165.             if(!language.ContainsKey("F2testmsg"))
  1166.             {
  1167.                 return;
  1168.             }
  1169.                
  1170.             if(!language.ContainsKey("donotdcmessage"))
  1171.             {
  1172.                 return;
  1173.             }          
  1174.            
  1175.            
  1176.             var holdf2msg = language["F2testmsg"].ToString();
  1177.             int pFrom = holdf2msg.IndexOf("F2");
  1178.             var result2 = holdf2msg.Remove(pFrom, 2);
  1179.             var inserttest = result2.Insert(pFrom, "ins/insert");
  1180.             var stevencheck = result2.Insert(pFrom, "F5");
  1181.             var disconnectmsg = language["donotdcmessage"].ToString();
  1182.             var completedmsg = language["Completedmsg"].ToString();
  1183.             if(check == menuscreenflag)
  1184.             {
  1185.                 removeui(player);
  1186.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + " " + disconnectmsg + "\"");
  1187.                 player.wasinmenu = true;
  1188.                 return;
  1189.             }
  1190.             if(player.wasinmenu)
  1191.             {
  1192.                 player.wasinmenucount++;
  1193.                 if(player.wasinmenucount >= 3)
  1194.                 {
  1195.                     player.wasinmenu = false;
  1196.                     player.wasinmenucount = 0;
  1197.                 }
  1198.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "was in menu " + "\"");
  1199.                 Resettestt(player.playerclient, player.laststring2);
  1200.                 return;
  1201.             }
  1202.             if(!shouldcheckdizzy)
  1203.             if(!player.hasfinisheddizzy2)
  1204.             {
  1205.                 player.finisheddizzycheck = true;
  1206.                 player.laststring2 = "insert";
  1207.                 Resettestt(player.playerclient, player.laststring2);
  1208.                 player.hasfinisheddizzy2 = true;
  1209.             }
  1210.            
  1211.             if(!player.finisheddizzycheck)
  1212.             {
  1213.                 player.laststring2 = "F2";
  1214.                 if(check == menuscreenflag)
  1215.                 {
  1216.                     removeui(player);
  1217.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + " " + disconnectmsg + "\"");
  1218.                     player.wasinmenu = true;
  1219.                     return;
  1220.                 }
  1221.  
  1222.                 if(distance3D.ToString() == "0")
  1223.                 {
  1224.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + holdf2msg + "\"");
  1225.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "[color orange]If you dont move press FN(function) + F2" + "\"");
  1226.                     return;
  1227.                 }
  1228.                 if(player.playerclient.controllable.stateFlags.lostFocus)
  1229.                 {
  1230.                     if(shoulddoipban)
  1231.                         ipban(player, "AdminCompanion(Dizzy Hack)");
  1232.                     AntiCheatBroadcastplayer(player.playerclient.userName + " [color red]has been autodetected of a menu - A3mon/Dizzy Client Menu");
  1233.                     Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AdminCompanion(Dizzy Hack)");
  1234.                     numberofbansdizzy++;
  1235.                     return;
  1236.                 }
  1237.                 if(distance3D.ToString().Contains("-"))
  1238.                 {
  1239.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AdminCompanion \"" + holdf2msg + "\"");
  1240.                     return;
  1241.                 }
  1242.                 if(check.ToString() == "6272")
  1243.                 {
  1244.                     if(shoulddoipban)
  1245.                         ipban(player, "AdminCompanion(Dizzy Hack)");
  1246.                     AntiCheatBroadcastplayer(player.playerclient.userName + " Has been Banned from the server for using Dizzy/A3mon hack");
  1247.                     Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AdminCompanion(Dizzy Hack)");
  1248.                     numberofbansdizzy++;
  1249.                     return;
  1250.                 }
  1251.                
  1252.                 if(distance3D <= 1.77777)
  1253.                     return;
  1254.                 if(distance3D <= 2.77777)
  1255.                     return;
  1256.                 if(!player.playerclient.controllable.stateFlags.movement)
  1257.                     return;
  1258.                 var location2 = player.lastPosition;
  1259.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "at checkstate" + "\"");
  1260.                 player.laststring2 = "insert";
  1261.                 player.finisheddizzycheck = true;
  1262.                 player.hasresettest = false;
  1263.                 player.h = 0f;
  1264.                 player.count++;
  1265.                
  1266.                 return;
  1267.             }
  1268.             if(player.count >= 1)
  1269.             {
  1270.                 player.count = 0;
  1271.                 Resettestt(player.playerclient, player.laststring2);
  1272.                 return;
  1273.             }
  1274.             if(player.system == "mac");
  1275.             if(!player.hasfinishedjacked2)
  1276.             {
  1277.                 player.finishedjackedcheck = true;
  1278.                 player.laststring2 = "F5";
  1279.                 Resettestt(player.playerclient, player.laststring2);
  1280.                 player.hasfinishedjacked2 = true;
  1281.             }
  1282.            
  1283.             if(!shouldcheckjacked)
  1284.             if(!player.hasfinishedjacked2)
  1285.             {
  1286.                 player.finishedjackedcheck = true;
  1287.                 player.laststring2 = "F5";
  1288.                 Resettestt(player.playerclient, player.laststring2);
  1289.                 player.hasfinishedjacked2 = true;
  1290.             }
  1291.             if(!player.finishedjackedcheck)
  1292.             {
  1293.                 player.laststring2 = "insert";
  1294.                 Resettestt(player.playerclient, player.laststring2);
  1295.                 if(check == menuscreenflag)
  1296.                 {
  1297.                     removeui(player);
  1298.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + " " + disconnectmsg + "\"");
  1299.                     Resettestt(player.playerclient, player.laststring2);
  1300.                     player.wasinmenu = true;
  1301.                     return;
  1302.                 }
  1303.                 if(distance3D.ToString() == "0")
  1304.                 {
  1305.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + inserttest + "\"");
  1306.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "[color orange]If you dont move press FN(function) + insert" + "\"");
  1307.                     return;
  1308.                 }
  1309.                 if(player.playerclient.controllable.stateFlags.lostFocus)
  1310.                 {
  1311.                     if(shoulddoipban)
  1312.                         ipban(player, "AntiCheat(Jacked Hack Detected)");
  1313.                     AntiCheatBroadcastplayer(player.playerclient.userName + " [color red]has been autodetected of a menu - Rust Jacked Menu");
  1314.                     Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AntiCheat(Jacked Hack Detected)");
  1315.                     numberofbansjacked++;
  1316.                     return;
  1317.                 }
  1318.                 if(distance3D.ToString().Contains("-"))
  1319.                 {
  1320.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + inserttest + "\"");
  1321.                     return;
  1322.                 }
  1323.                 if(distance3D <= 1.77777)
  1324.                     return;
  1325.                 if(distance3D <= 2.77777)
  1326.                     return;
  1327.                 if(!player.playerclient.controllable.stateFlags.movement)
  1328.                     return;
  1329.                 player.h = 0f;
  1330.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "finished jacked check" + "\"");
  1331.                 player.finishedjackedcheck = true;
  1332.                 player.hasresettest = false;
  1333.                 player.laststring2 = "F5";
  1334.                 player.hasresettest = false;
  1335.                 player.count = 1;
  1336.                 return;
  1337.                
  1338.             }
  1339.             if(player.count == 1)
  1340.             {
  1341.                 player.count = 0;
  1342.                 Resettestt(player.playerclient, player.laststring2);
  1343.                 return;
  1344.             }
  1345.             if(!shouldchecksteven)
  1346.             {
  1347.                 player.finishedstevencheck = true;
  1348.             }
  1349.             if(!player.finishedstevencheck)
  1350.             {
  1351.                 player.laststring2 = "F5";
  1352.                 if(check == menuscreenflag)
  1353.                 {
  1354.                     removeui(player);
  1355.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + disconnectmsg + "\"");
  1356.                     Resettestt(player.playerclient, player.laststring2);
  1357.                     player.wasinmenu = true;
  1358.                     return;
  1359.                 }
  1360.                 if(distance3D.ToString() == "0")
  1361.                 {
  1362.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + stevencheck + "\"");
  1363.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "[color orange]If you dont move press FN(function) + F5" + "\"");
  1364.                     return;
  1365.                 }
  1366.                 if(distance3D.ToString().Contains("-"))
  1367.                 {
  1368.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + stevencheck + "\"");
  1369.                     return;
  1370.                 }
  1371.                
  1372.                 if(player.playerclient.controllable.stateFlags.lostFocus)
  1373.                 {
  1374.                     if(shoulddoipban)
  1375.                         ipban(player, "AntiCheat(Steven Hack Detected)");
  1376.                     AntiCheatBroadcastplayer(player.playerclient.userName + " [color red]has been autodetected of a menu - Steven Menu");
  1377.                     Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AntiCheat(Steven Hack Detected)");
  1378.                     numberofbanssteven++;
  1379.                     return;
  1380.                 }
  1381.                 if(distance3D <= 1.77777)
  1382.                     return;
  1383.                 if(distance3D <= 2.77777)
  1384.                     return;
  1385.                 if(!player.playerclient.controllable.stateFlags.movement)
  1386.                     return;
  1387.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "finished steven check" + "\"");
  1388.                 player.finishedstevencheck = true;
  1389.             }
  1390.             AntiCheatBroadcastplayer(player.playerclient.userName + " Has been Cleared from this plugin");
  1391.             ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "Thank you for your cooperation " + player.playerclient.userName + "\"");
  1392.             ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + completedmsg + " " + player.playerclient.userName + "\"");
  1393.             ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "finished dizzycheck" + "\"");
  1394.             ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "finished jacked check" + "\"");
  1395.             returnsettings(player.playerclient.netUser);
  1396.             undofixplayerhp(player);
  1397.             player.playerclient.rootControllable.rootCharacter.takeDamage.SetGodMode(false);
  1398.             EndDetection(player);
  1399.            
  1400.         }
  1401.         public static void clearalldata(PlayerHandler player)
  1402.         {
  1403.             DataStore[player.playerclient.userID.ToString()] = null;       
  1404.         }
  1405.         public static object returnsettings(NetUser player)
  1406.         {
  1407.             ConsoleNetworker.SendClientCommand(player.networkPlayer, "config.load");
  1408.             return true;
  1409.         }
  1410.         public static bool hasplayerlanguage(PlayerHandler player)
  1411.         {
  1412.             var data = Getplayerdatastore("AdminCompanion(Lang.Log)");
  1413.             if(data.ContainsKey(player.playerclient.userID.ToString()))
  1414.                 return true;
  1415.             return false;
  1416.         }
  1417.         public static void returnallsetting(PlayerHandler playerr)
  1418.         {
  1419.             if(falldamageenabled)
  1420.                 return;
  1421.             if(!falldamageenabled)
  1422.             {
  1423.                 ConsoleSystem.Run("falldamage.enabled false", false);
  1424.             }
  1425.             foreach (PlayerClient player in PlayerClient.All)
  1426.             {
  1427.                 if (player.userID != playerr.playerclient.userID)
  1428.                 {
  1429.                     if(player.rootControllable == null)
  1430.                         return;
  1431.                     FallDamage falldamage = player.rootControllable.GetComponent<FallDamage>();
  1432.                     falldamage.enabled = false;
  1433.                 }
  1434.             }
  1435.         }
  1436.         public static void dosettings(PlayerHandler playerr)
  1437.         {
  1438.             ConsoleSystem.Run("falldamage.enabled true", false);
  1439.             if(falldamageenabled)
  1440.                 return;
  1441.             foreach (PlayerClient player in PlayerClient.All)
  1442.             {
  1443.                 if (player.userID != playerr.playerclient.userID)
  1444.                 {
  1445.                     if(player.rootControllable == null)
  1446.                         return;
  1447.                     FallDamage falldamage = player.rootControllable.GetComponent<FallDamage>();
  1448.                     falldamage.enabled = false;
  1449.                 }
  1450.             }
  1451.         }
  1452.         public static void hassetfallimpact(PlayerHandler playerr)
  1453.         {
  1454.             foreach (PlayerClient player in PlayerClient.All)
  1455.             {
  1456.                 if (player.userID != playerr.playerclient.userID)
  1457.                 {
  1458.                     FallDamage falldamage = player.rootControllable.GetComponent<FallDamage>();
  1459.                     falldamage.enabled = false;
  1460.                 }
  1461.             }      
  1462.         }
  1463.         public static void setserversettings(PlayerHandler player)
  1464.         {
  1465.            
  1466.         }
  1467.         public static void Snappycheck(PlayerHandler player)
  1468.         {
  1469.            
  1470.         }
  1471.         public static void checkplayerjumpspeed(PlayerHandler player)
  1472.         {
  1473.             var crouchjumpexploitdetection = player.playerclient.controllable.stateFlags.flags;
  1474.            
  1475.             if(!shouldcheckjumpspeed)
  1476.             {
  1477.                 player.passedjumptest = true;
  1478.                 return;
  1479.             }
  1480.             if(!player.hasressetjsettings)
  1481.             {
  1482.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "config.load");
  1483.                 Resettestt2(player.playerclient, player.laststring2);
  1484.                 player.hasressetjsettings = true;
  1485.             }
  1486.            
  1487.             if(!player.autolanguage)
  1488.             if(!Issober2(player))
  1489.             {
  1490.                 Debug.Log("AdminCompanion : Something went Wrong Test ended on without finishing " + player.playerclient.userName.ToString());
  1491.                 EndDetection(player);
  1492.                 return;
  1493.             }
  1494.             if(player.crouchdelayactivated)
  1495.             {
  1496.                 player.crouchdelay++;
  1497.                 if(player.crouchdelay >= 3f)
  1498.                 {
  1499.                     player.crouchdelay = 0f;
  1500.                     player.crouchdelayactivated = false;
  1501.                 }
  1502.                 return;
  1503.             }
  1504.             var language = Getplayerdatastore(player.language);
  1505.             var jumptest = language["speedjumptestmsg"].ToString();
  1506.             if(crouchjumpexploitdetection == menuscreenflag)
  1507.             {
  1508.                 player.messagetally8++;
  1509.                 if(player.messagetally8 > 75f)
  1510.                 {
  1511.                     player.messagetally8 = 0f;
  1512.                     Resettestt2(player.playerclient, player.laststring2);
  1513.                     removeui(player);
  1514.                 }
  1515.                 return;
  1516.             }
  1517.            
  1518.             if(!language.ContainsKey("donotcrouchmsg"))
  1519.             {
  1520.                 return;
  1521.             }
  1522.             var crouchmsg = language["donotcrouchmsg"].ToString();
  1523.             if(crouchjumpexploitdetection == crouchdetetctionsecondflagcheck || crouchjumpexploitdetection == 6209)
  1524.             {
  1525.                 player.messagetally4++;
  1526.                 if(player.messagetally4 >= 15f)
  1527.                 {
  1528.                     player.messagetally4 = 0f;
  1529.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + " " + crouchmsg + "\"");
  1530.                 }
  1531.                 player.crouchdelayactivated = true;
  1532.                 return;
  1533.             }
  1534.            
  1535.             if(player.messagetally == 0f)
  1536.             {
  1537.                 player.shouldsendmessagetally = true;
  1538.             }
  1539.            
  1540.            
  1541.             if(!language.ContainsKey("speedjumptestmsg"))
  1542.             {
  1543.                 return;
  1544.             }
  1545.  
  1546.             if(!player.isinjumptest)
  1547.             {
  1548.  
  1549.                 if(player.didjump)
  1550.                 {
  1551.                     if(player.playerclient.controllable.stateFlags.grounded)
  1552.                     {
  1553.                         player.didjump =  false;
  1554.                     }
  1555.                     return;
  1556.                 }
  1557.                 player.messagetally5++;
  1558.                 if(player.messagetally5 >= 60f)
  1559.                 {
  1560.                     player.messagetally5 = 0f;
  1561.                     player.s++;
  1562.                     if(shouldbanforidle)
  1563.                     if(player.s >= idletimetillban)
  1564.                     {
  1565.                         if(shoulddoipban)
  1566.                         ipban(player, "AdminCompanion(Max amount of idle time reached)");
  1567.                         AntiCheatBroadcastplayer(player.playerclient.userName + " Has been Banned from the server for being idle during test");
  1568.                         Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AdminCompanion(Max amount of idle time reached)");
  1569.                         return;
  1570.                     }
  1571.                 }
  1572.                 if(player.playerclient.controllable.stateFlags.grounded)
  1573.                 {
  1574.                     player.messagetally++;
  1575.                     if(player.messagetally >= 60f)
  1576.                     {
  1577.                        
  1578.                         player.messagetally = 0f;
  1579.                         ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + " " + jumptest + "\"");
  1580.                     }
  1581.                     if(!player.didjump){
  1582.                     player.playerjumpspeed++;
  1583.                     }
  1584.                     return;
  1585.                 }
  1586.  
  1587.                 player.didjump =  true;
  1588.                 if(player.playerjumpspeed < 38)
  1589.                 {
  1590.                     if(shouldbepinglienient)
  1591.                     {
  1592.                     var ping = player.playerclient.netUser.networkPlayer.averagePing;
  1593.                     if(ping != null)
  1594.                     if(ping >= pinglimitbeforeignore)
  1595.                         return;
  1596.                     }
  1597.                     if(!player.fistspeedjumpdetection)
  1598.                     {
  1599.                         player.fistspeedjumpdetection = true;
  1600.                         return;
  1601.                     }
  1602.                     if(!player.hasfinishedthrdexcepion)
  1603.                     {
  1604.                         player.hasfinishedthrdexcepion = true;
  1605.                         player.timedjumpdettections -= 3;
  1606.                         return;
  1607.                     }
  1608.                     if(shoulddoipban)
  1609.                         ipban(player, "AntiCheat(Speed Jump)");
  1610.                     AntiCheatBroadcastplayer(player.playerclient.userName + " Has been Banned from the server for Speed Jumping");
  1611.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "speed jump dettected" + "\"");
  1612.                     Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AntiCheat(Speed Jump)");
  1613.                     numberofspeedjumpban++;
  1614.                     return;
  1615.                 }
  1616.  
  1617.                
  1618.                 if(player.playerjumpspeed > 63)
  1619.                 {
  1620.                     if(!player.firsttimedjumpdetection)
  1621.                     {
  1622.                         player.firsttimedjumpdetection = true;
  1623.                         return;
  1624.                     }
  1625.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "I will ban you for timing jumps " + "\"");
  1626.                     if(shouldbanforitmingjumps)
  1627.                     {
  1628.                         var ping = player.playerclient.netUser.networkPlayer.averagePing;
  1629.                         if(ping != null)
  1630.                             if(ping <= pinglimitbeforeignore)
  1631.                         player.timedjumpdettections++;
  1632.                         if(player.timedjumpdettections >= numberoftimedjumpdettectionsbeforeban)
  1633.                         {
  1634.                            
  1635.                             if(!player.firstjump)
  1636.                             {
  1637.                                 if(shoulddoipban)
  1638.                                     ipban(player, "AntiCheat(Timing Jumps " + player.playerjumpspeed.ToString() + ")");
  1639.                                 AntiCheatBroadcastplayer(player.playerclient.userName + " Has been Banned from the server for Timing Jumps");
  1640.                                 Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AdminCompanion(Timing Jumps " + player.playerjumpspeed.ToString() + ")");
  1641.                                 return;
  1642.                             }
  1643.                             if(!player.firstjump)
  1644.                             {
  1645.                                 player.firstjump = true;
  1646.                             }
  1647.                         }
  1648.                     }
  1649.                    
  1650.                 }
  1651.                 if(player.playerjumpspeed > 48 && player.playerjumpspeed <= 62)
  1652.                 {
  1653.                     if(!player.firstpass)
  1654.                     {
  1655.                         player.firstpass = true;
  1656.                         return;
  1657.                     }
  1658.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "We have determined that you are not using a ccmotor jump modifier" + "\"");
  1659.                     player.passedjumptest = true;
  1660.                 }
  1661.                 player.playerjumpspeed = 0;
  1662.             }
  1663.         }
  1664.         public static void undofixplayerhp(PlayerHandler source)
  1665.         {
  1666.             if (source == null || source.playerclient == null) return;
  1667.             if (source == null || source.playerclient.controllable == null) return;
  1668.             FallDamage falldamage = source.playerclient.rootControllable.GetComponent<FallDamage>();
  1669.             var testc = source.playerclient.rootControllable.GetComponent<HumanBodyTakeDamage>();
  1670.             PlayerHandler phandler = source.playerclient.GetComponent<PlayerHandler>();
  1671.             phandler.hasdoneheal = true;
  1672.             if(testc == null)
  1673.             {
  1674.             }
  1675.             testc.Bandage( 1000.0f );
  1676.             falldamage.ClearInjury();
  1677.            
  1678.            
  1679.         }
  1680.         public static bool Issober(PlayerHandler player)
  1681.         {
  1682.             var datastore = Getplayerdatastore(player.playerclient.userID.ToString());
  1683.             if(!datastore.ContainsKey("Language"))
  1684.                 return false;
  1685.             if(datastore["Language"] == null)
  1686.                 return false;
  1687.            
  1688.             if(!datastore.ContainsKey("Language"))
  1689.                 return true;
  1690.             return false;
  1691.         }
  1692.         public static bool Issober2(PlayerHandler player)
  1693.         {
  1694.             var datastore = Getplayerdatastore(player.playerclient.userID.ToString());
  1695.             var dataplus = datastore["Language"].ToString();
  1696.             var data3 = Getplayerdatastore(dataplus);
  1697.             if(!data3.ContainsKey("F2testmsg"))
  1698.                 return false;
  1699.             if(DataStore[dataplus] == null)
  1700.                 return false;
  1701.             return true;
  1702.         }
  1703.         public static void doenglishdic()
  1704.         {
  1705.             var defaultenglishlanguage = Getplayerdatastore("en");
  1706.             if(!defaultenglishlanguage.ContainsKey("speedjumptestmsg"))
  1707.             {
  1708.                 defaultenglishlanguage.Add("F2testmsg", "Please Hold F2");
  1709.                 defaultenglishlanguage.Add("speedjumptestmsg", "Jump fast please");
  1710.                 defaultenglishlanguage.Add("norecoiltestmsg", "Please take out the weapon we have placed in your inventory");
  1711.                 defaultenglishlanguage.Add("nospreadtestmsg", "take out your weapon and shoot that wall");
  1712.                 defaultenglishlanguage.Add("Completedmsg", "Thank you for your cooperation you have completed all test's ");
  1713.                 defaultenglishlanguage.Add("donotcrouchmsg", "Please do not crouch during this test");
  1714.                 defaultenglishlanguage.Add("donotdcmessage", "Please do not Disconnect during this Test");
  1715.                 defaultenglishlanguage.Add("Dorecoiltest", "Please press and Hold c");
  1716.             }
  1717.         }
  1718.         public static void GetLanguage(PlayerHandler player)
  1719.         {
  1720.             var datastore = Getplayerdatastore(player.playerclient.userID.ToString());
  1721.             var check = player.playerclient.controllable.stateFlags.flags;
  1722.             if(!player.isininventory)
  1723.             if(check != null)
  1724.             {
  1725.                 if(player.playerclient.controllable.stateFlags.lostFocus)
  1726.                 {
  1727.                     if(!player.hasreceild2)
  1728.                     {
  1729.                         ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "config.load");
  1730.                         player.hasreceild2 = true;
  1731.                     }
  1732.                     return;
  1733.                 }
  1734.                 if(!player.hasreceildcheck)
  1735.                 {
  1736.                     Resettestt2(player.playerclient, player.laststring2);
  1737.                     player.hasreceildcheck = true;
  1738.                 }
  1739.                 player.isininventory = true;
  1740.             }
  1741.             if(check == null)
  1742.                 return;
  1743.             if(check == menuscreenflag)
  1744.             {
  1745.                 player.messagetally7++;
  1746.                 if(player.messagetally7 > 75f)
  1747.                 {
  1748.                     Resettestt2(player.playerclient, player.laststring2);
  1749.                     player.messagetally7 = 0f;
  1750.                     removeui(player);
  1751.                 }
  1752.                 return;
  1753.             }
  1754.             if(shoulduseenglishdictionaryonly)
  1755.             {
  1756.                 doenglishdic();
  1757.                 player.autolanguage = true;
  1758.                 player.language = "en";
  1759.                 player.hasselectedlanguage = true;
  1760.                 player.forcefinish = true;
  1761.                 player.playerhaslang2 = true;
  1762.                 return;
  1763.             }
  1764.             if(!player.hasselectedlanguage)
  1765.             {
  1766.                 player.messagetally3++;
  1767.                 if(player.messagetally3 >= 60f)
  1768.                 {
  1769.                     player.messagetally3 = 0f;
  1770.                     Resettestt2(player.playerclient, player.laststring2);
  1771.                     player.inttimetally++;
  1772.                     if(player.inttimetally >= 30)
  1773.                     {
  1774.                         doenglishdic();
  1775.                         player.autolanguage = true;
  1776.                         player.language = "en";
  1777.                         player.hasselectedlanguage = true;
  1778.                         player.forcefinish = true;
  1779.                         player.playerhaslang2 = true;
  1780.                         return;
  1781.                     }
  1782.                 }
  1783.                 if(datastore.ContainsKey("Language"))
  1784.                 {
  1785.                     var langg = datastore["Language"].ToString();
  1786.                     var signature = Getplayerdatastore(langg);
  1787.                     if(!signature.ContainsKey("F2testmsg") || !signature.ContainsKey("speedjumptestmsg") || !signature.ContainsKey("nospreadtestmsg") || !signature.ContainsKey("Dorecoiltest") || !signature.ContainsKey("donotdcmessage") || !signature.ContainsKey("norecoiltestmsg"))
  1788.                     {
  1789.                         DataStore[langg] = null;
  1790.                         if(datastore.ContainsKey("Language"))
  1791.                             datastore.Remove("Language");
  1792.                         return;
  1793.                     }
  1794.                     if(signature ["F2testmsg"].ToString().Contains("INVALID"))
  1795.                     {
  1796.                         DataStore[langg] = null;
  1797.                         if(datastore.ContainsKey("Language"))
  1798.                             datastore.Remove("Language");
  1799.                         return;
  1800.                     }
  1801.                     player.language = langg;
  1802.                     player.hasselectedlanguage = true;
  1803.                     player.forcefinish = true;
  1804.                 }
  1805.                 player.messagetally2++;
  1806.                 if(player.messagetally2 >= 60f)
  1807.                 if(!datastore.ContainsKey("Language"))
  1808.                 {
  1809.                     var crouchjumpexploitdetection = player.playerclient.controllable.stateFlags.flags;
  1810.                     player.messagetally2 = 0f;
  1811.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "please type something in chat with your native language to continue " + player.playerclient.userName + "\"");
  1812.                     return;
  1813.                 }
  1814.                 if(!Issober(player))
  1815.                 {
  1816.                     if(player.messagetally2 >= 60f)
  1817.                     {
  1818.  
  1819.                         player.messagetally2 = 0f;
  1820.                         ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "please type something in chat with your native language to continue" + "\"");
  1821.                     }
  1822.                     return;
  1823.                 }
  1824.                 if(!datastore.ContainsKey("Language"))
  1825.                 {
  1826.                     player.messagetally++;
  1827.                     if(player.messagetally2 >= 60f)
  1828.                     {
  1829.                         player.messagetally2 = 0f;
  1830.                         ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AntiCheat \"" + "please type something in chat with your native language to continue" + "\"");
  1831.                         return;
  1832.                     }
  1833.                     return;
  1834.                 }
  1835.                 player.hasselectedlanguage = true;
  1836.                 return;
  1837.             }
  1838.             if(!datastore.ContainsKey("Language"))
  1839.             {
  1840.                 player.messagetally++;
  1841.                 if(player.messagetally2 >= 60f)
  1842.                 {
  1843.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AdminCompanion \"" + "Umm..... Soemthing whent wrong I will attemp to fix :)" + "\"");
  1844.                     player.messagetally2 = 0f;
  1845.                    
  1846.                 }
  1847.                 player.hasselectedlanguage = false;
  1848.                 return;
  1849.             }
  1850.             var lang = datastore["Language"].ToString();
  1851.             if(!player.forcefinish)
  1852.             {
  1853.                 player.messagetally2++;
  1854.                 if(player.messagetally2 >= 60f)
  1855.                 if(!datastore.ContainsKey("Language"))
  1856.                 {
  1857.                     player.hasselectedlanguage = false;
  1858.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AdminCompanion \"" + "Warning you should never see this ask an admin to end test if you see this again" + "\"");
  1859.                     player.messagetally2 = 0f;
  1860.                     return;
  1861.                 }
  1862.                 if(DataStore[lang] == null)
  1863.                 {
  1864.                     datastore.Remove("Language");
  1865.                     return;
  1866.                 }
  1867.                 var failsafe = Getplayerdatastore(lang);
  1868.                 if(!Issober2(player))
  1869.                 {
  1870.                     return;
  1871.                 }
  1872.                 if(!failsafe.ContainsKey("F2testmsg"))
  1873.                 {
  1874.                     DataStore[lang] = null;
  1875.                     datastore.Remove("Language");
  1876.                     return;
  1877.                 }
  1878.                 player.language = lang;
  1879.                 player.playerhaslang2 = true;
  1880.                 player.forcefinish = true;
  1881.                 return;
  1882.                
  1883.             }
  1884.             if(!Issober2(player))
  1885.             {
  1886.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AdminCompanion \"" + "Ummm........ Something whent wrong correcting all error's" + "\"");
  1887.                 datastore.Remove("Language");
  1888.                
  1889.                 player.forcefinish = false;
  1890.                 player.hasselectedlanguage = false;
  1891.                 Debug.Log("AdminCompanion : Some thing whent wrong you will have to redefine your language sorry for the inconvienience");
  1892.                 return;
  1893.             }
  1894.             player.language = datastore["Language"].ToString();
  1895.             player.playerhaslang2 = true;
  1896.             return;
  1897.             if(player.forcefinish)
  1898.             {
  1899.                 player.messagetally2++;
  1900.                 if(player.messagetally2 >= 60f)
  1901.                 if(shouldautoselectlagnuageifplayeridl)
  1902.                 {
  1903.                     player.idletimecount++;
  1904.                     if(player.idletimecount >= idletimetillautoseectlanguage)
  1905.                     {
  1906.                         player.language = "en";
  1907.                         player.playerhaslang2 = true;
  1908.                         return;
  1909.                     }
  1910.                 }
  1911.                 if(player.messagetally >= 60f)
  1912.                 {
  1913.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AdminCompanion \"" + "please type something in chat with your native language to continue" + "\"");
  1914.                     player.messagetally = 0f;
  1915.                 }
  1916.             }
  1917.             return;
  1918.             var datastore2 = Getplayerdatastore("AdminCompanion(Lang.Log)");
  1919.             if(datastore2.ContainsKey(player.playerclient.userID.ToString()))
  1920.             {
  1921.                 foreach (KeyValuePair<string, object> pair in datastore2)
  1922.                 if (pair.Value.ToString() == player.playerclient.userID.ToString() || pair.Key.ToString() == player.playerclient.userID.ToString() || pair.Value.ToString().ToLower() == player.playerclient.userID.ToString() || pair.Key.ToString().ToLower() == player.playerclient.userID.ToString() || pair.Value.ToString().ToLower().Contains(player.playerclient.userID.ToString()) || pair.Key.ToString().ToLower().Contains(player.playerclient.userID.ToString()))
  1923.                 {
  1924.                     var uid = pair.Value.ToString();
  1925.                     player.language = uid;
  1926.                     var datastore3 = Getplayerdatastore(uid);
  1927.                     if(!datastore3.ContainsKey("Completedmsg"))
  1928.                         return;
  1929.                     player.playerhaslang2 = true;
  1930.                 }
  1931.             }
  1932.             if(datastore2.ContainsKey(player.playerclient.userID.ToString()))
  1933.             {
  1934.                 foreach (KeyValuePair<string, object> pair in datastore2)
  1935.                 if (pair.Value.ToString() == player.playerclient.userID.ToString() || pair.Key.ToString() == player.playerclient.userID.ToString() || pair.Value.ToString().ToLower() == player.playerclient.userID.ToString() || pair.Key.ToString().ToLower() == player.playerclient.userID.ToString() || pair.Value.ToString().ToLower().Contains(player.playerclient.userID.ToString()) || pair.Key.ToString().ToLower().Contains(player.playerclient.userID.ToString()))
  1936.                 {
  1937.                     var uid = pair.Value.ToString();
  1938.                     player.language = uid;
  1939.                     player.playerhaslang2 = true;
  1940.                     return;
  1941.                 }
  1942.             }
  1943.             if(!player.hasselectedlanguage)
  1944.             {
  1945.                 player.messagetally2++;
  1946.                 if(player.messagetally2 >= 60f)
  1947.                 {
  1948.                     ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AdminCompanion \"" + "please type something in chat with your native language to continue" + "\"");
  1949.                     player.messagetally2 = 0f;
  1950.                 }
  1951.                 return;
  1952.             }
  1953.             if(!player.playerhaslang2)
  1954.             {
  1955.                 foreach (KeyValuePair<string, object> pair in datastore2)
  1956.                 if (pair.Value.ToString() == player.playerclient.userID.ToString() || pair.Key.ToString() == player.playerclient.userID.ToString() || pair.Value.ToString().ToLower() == player.playerclient.userID.ToString() || pair.Key.ToString().ToLower() == player.playerclient.userID.ToString() || pair.Value.ToString().ToLower().Contains(player.playerclient.userID.ToString()) || pair.Key.ToString().ToLower().Contains(player.playerclient.userID.ToString()))
  1957.                 {
  1958.                     var uid = pair.Value.ToString();
  1959.                     player.language = uid;
  1960.                     player.playerhaslang2 = true;
  1961.                     return;
  1962.                 }
  1963.             }
  1964.         }
  1965.         public class PlayerHandlerflagcheck : UnityEngine.MonoBehaviour
  1966.         {
  1967.            
  1968.            
  1969.             public PlayerClient playerclient;
  1970.             public string userid;
  1971.             public Character character;
  1972.             public float lastTick;
  1973.             public float currentTick;
  1974.            
  1975.        
  1976.             void Awake()
  1977.             {
  1978.                 lastTick = UnityEngine.Time.realtimeSinceStartup;
  1979.                 enabled = false;
  1980.             }
  1981.             public void StartCheck()
  1982.             {
  1983.                 this.playerclient = GetComponent<PlayerClient>();
  1984.                 this.userid = this.playerclient.userID.ToString();
  1985.                 if (playerclient.controllable == null) return;
  1986.                 this.character = playerclient.controllable.GetComponent<Character>();
  1987.                 enabled = true;
  1988.                
  1989.                 FixedUpdate();
  1990.             }
  1991.             void FixedUpdate()
  1992.             {
  1993.                 if (UnityEngine.Time.realtimeSinceStartup - lastTick >= 1)
  1994.                 {
  1995.                     currentTick = UnityEngine.Time.realtimeSinceStartup;
  1996.                     lastTick = currentTick;
  1997.                     var characterstate = this.playerclient.controllable.stateFlags.flags;
  1998.                     ConsoleNetworker.SendClientCommand(this.playerclient.netPlayer, "chat.add AdminCompanion \"" + "Your current character state is " + characterstate + "\"");
  1999.                 }
  2000.             }
  2001.         }
  2002.         public class PlayerHandler : UnityEngine.MonoBehaviour
  2003.         {
  2004.             public bool firstmessage;
  2005.             public string system = "None";
  2006.             public bool hasreceild2;
  2007.             public bool hasreceildcheck;
  2008.             public bool hasfinishedthrdexcepion;
  2009.             public IInventoryItem lastinventoryitem;
  2010.             public bool hasremoveditem;
  2011.             public bool hasceildcheck;
  2012.             public bool hasfinisheddizzy2;
  2013.             public bool hasfinishedsteven2;
  2014.             public bool hasfinishedjacked2;
  2015.             public bool nofallexception;
  2016.             public bool hasressetjsettings;
  2017.             public bool autolanguage;
  2018.             public bool isininventory;
  2019.             public string newstring;
  2020.             public string newstring2;
  2021.             public string newstring3;
  2022.             public string newstring4;
  2023.             public string newstring5;
  2024.             public string newstring6;
  2025.             public string newstring7;
  2026.             public string newstring8;
  2027.             public int intt = 30;
  2028.             public string normstring;
  2029.             public int inttimetally;
  2030.             public int numberoffakecalls;
  2031.             public int savedweaponnumber;
  2032.             public bool hasgotengivenitem;
  2033.             public bool detectionended;
  2034.             public bool hasrefreshedinventorysettings;
  2035.             public bool secoonddetect;
  2036.             public bool thrddetect;
  2037.             public float fallcount;
  2038.             public bool firstdetect;
  2039.             public float n;
  2040.             public bool fistspeedjumpdetection;
  2041.             public float s;
  2042.             public float h;
  2043.             public float nr;
  2044.             public Vector3 point;
  2045.             public bool hasdoneheal;
  2046.             public GameObject Load;
  2047.             public float firstx;
  2048.             public float firstx1;
  2049.             public float firsty1;
  2050.             public float firstz1;
  2051.             public bool didteleportback;
  2052.             public bool crouchdelayactivated;
  2053.             public bool isreturningsettings;
  2054.             public bool firsttimedjumpdetection;
  2055.             public float crouchdelay;
  2056.             public string whatsyourlanguage;
  2057.             public bool playerhasremovednulllang;
  2058.             public int playertestdelaycount;
  2059.             public float lasthealth;
  2060.             public float firsty;
  2061.             public int count3;
  2062.             public int timedjumpdettections = 0;
  2063.             public float idletimecount;
  2064.             public float firstz;
  2065.             public bool hasresettest;
  2066.             public bool didteleport;
  2067.             public bool forcefinish;
  2068.             public bool firstjump;
  2069.             public int secondselect = 0;
  2070.             public bool firstnofalldetection;
  2071.             public bool firsttime;
  2072.             public bool isfirstcheck;
  2073.             public bool firstpasseular;
  2074.             public bool hascompletednofallcheck;
  2075.             public bool passednorecoiltest;
  2076.             public bool firstgetclimpammo;
  2077.             public bool hasgivenammo;
  2078.             public string lastclipammo;
  2079.             public string lasteularangles;
  2080.             public InventoryItem lastdatablock;
  2081.             public bool datablocknull;
  2082.             public ItemDataBlock lastdatablock2;
  2083.             public ItemDataBlock lastdatablock3;
  2084.             public bool hasgivenweapon;
  2085.             public bool hasremoveddefaultitem;
  2086.             public bool didjump;
  2087.             public bool hasselecteddatablock;
  2088.             public bool hastakenoutweapon;
  2089.             public bool firstpass;
  2090.             public bool shouldsendmessagetally;
  2091.             public bool passedjumptest;
  2092.             public float lasty;
  2093.             public float messagetally = 0f;
  2094.             public float messagetally2 = 0f;
  2095.             public float messagetally3 = 0f;
  2096.             public float messagetally4 = 0f;
  2097.             public float messagetally5 = 0f;
  2098.             public float messagetally6 = 0f;
  2099.             public float messagetally7 = 0f;
  2100.             public float messagetally8 = 0f;
  2101.             public float lasty2;
  2102.             public float lastjump;
  2103.             public double playerjumpspeed = 0.0;
  2104.             public string laststring2 = "F2";
  2105.             public string language;
  2106.             public bool wasinmenu;
  2107.             public bool diddolastjump;
  2108.             public bool isinjumptest;
  2109.             public bool playerhaslang2;
  2110.             public bool hasselectedlanguage;
  2111.             public bool finishedspeedjumpptest;
  2112.             public float timeleft;
  2113.             public float lastTick;
  2114.             public float currentTick;
  2115.             public float deltaTime;
  2116.             public float component2distance;
  2117.             public Component componenthit2;
  2118.             public Vector3 lastPosition;
  2119.             public Vector3 headlocation2;
  2120.             public BulletWeaponDataBlock lastbulletitem;
  2121.             public float headlocation3;
  2122.             public float headlocationangle2;
  2123.             public float headlocationangle1;
  2124.             public float checkrotaionx;
  2125.             public float totaleularanglesplayerhandler;
  2126.             public Vector3 lastPosition2;
  2127.             public PlayerClient playerclient;
  2128.             public Character character;
  2129.             public Inventory inventory;
  2130.             public string userid;
  2131.             public float distance3D;
  2132.             public float distance3D2;
  2133.             public float distanceHeight;
  2134.             public bool finishedstevencheck;
  2135.             public bool finishedjackedcheck;
  2136.             public bool finisheddizzycheck;
  2137.             public bool firstcheckstate;
  2138.             public float firtz1;
  2139.             public float firty1;
  2140.             public int count;
  2141.             public int wasinmenucount;
  2142.             public float currentFloorHeight;
  2143.             public bool hasSearchedForFloor = false;
  2144.             public float lastSpeed = UnityEngine.Time.realtimeSinceStartup;
  2145.             public int speednum = 0;
  2146.             public bool hasteleportedtosafety;
  2147.             public bool hasloc2;
  2148.  
  2149.             public float lastWalkSpeed = UnityEngine.Time.realtimeSinceStartup;
  2150.             public int walkspeednum = 0;
  2151.             public bool lastSprint = false;
  2152.  
  2153.             public float lastJump = UnityEngine.Time.realtimeSinceStartup;
  2154.             public int jumpnum = 0;
  2155.             public int message9;
  2156.  
  2157.  
  2158.             public float lastFly = UnityEngine.Time.realtimeSinceStartup;
  2159.             public int flynum = 0;
  2160.  
  2161.             public int noRecoilDetections = 0;
  2162.             public int noRecoilKills = 0;
  2163.  
  2164.             public float lastWoodCount = 0;
  2165.  
  2166.             void Awake()
  2167.             {
  2168.                 lastTick = UnityEngine.Time.realtimeSinceStartup;
  2169.                 enabled = false;
  2170.             }
  2171.             public void StartCheck()
  2172.             {
  2173.                 this.playerclient = GetComponent<PlayerClient>();
  2174.                 this.userid = this.playerclient.userID.ToString();
  2175.                 if (playerclient.controllable == null) return;
  2176.                 this.character = playerclient.controllable.GetComponent<Character>();
  2177.                 this.lastPosition = this.playerclient.lastKnownPosition;
  2178.                 enabled = true;
  2179.                
  2180.                 FixedUpdate();
  2181.             }
  2182.             void FixedUpdate()
  2183.             {
  2184.                 if(this.system == "None")
  2185.                 {
  2186.                     Dosystem(this);
  2187.                     return;
  2188.                 }
  2189.                 if(!this.hasteleportedtosafety)
  2190.                 {
  2191.                     doteleporttosafety(this);
  2192.                     return;
  2193.                 }
  2194.                 if(!this.playerhaslang2)
  2195.                 {
  2196.                     GetLanguage(this);
  2197.                 }
  2198.                 if(!this.playerhaslang2)
  2199.                 {
  2200.                     return;
  2201.                 }
  2202.                 if(!this.passedjumptest)
  2203.                     checkplayerjumpspeed(this);
  2204.                 if(this.passedjumptest){
  2205.                 if (UnityEngine.Time.realtimeSinceStartup - lastTick >= 1)
  2206.                 {
  2207.                    
  2208.                     if(!this.hascompletednofallcheck)
  2209.                         checknofall(this);
  2210.                     if(this.hascompletednofallcheck)
  2211.                         if(!this.passednorecoiltest)
  2212.                             norecoilcheck(this);
  2213.                     if(this.passednorecoiltest)
  2214.                         checkplayer(this);
  2215.                     currentTick = UnityEngine.Time.realtimeSinceStartup;
  2216.                     deltaTime = currentTick - lastTick;
  2217.                     distance3D = Vector3.Distance(playerclient.lastKnownPosition, lastPosition) / deltaTime;
  2218.                     distanceHeight = (playerclient.lastKnownPosition.y - lastPosition.y) / deltaTime;
  2219.                     lastPosition = playerclient.lastKnownPosition;
  2220.                     lastTick = currentTick;
  2221.                     this.hasSearchedForFloor = false;
  2222.                 }}
  2223.             }
  2224.         }
  2225.         static void doteleporttosafety(PlayerHandler player)
  2226.         {
  2227.             NetUser netuser = player.playerclient.netUser;
  2228.             if(!player.hasloc2)
  2229.             {
  2230.                 player.firstx1 = player.playerclient.lastKnownPosition.x;
  2231.                 player.firsty1 = player.playerclient.lastKnownPosition.y;
  2232.                 player.firstz1 = player.playerclient.lastKnownPosition.z;
  2233.                 player.hasloc2 = true;
  2234.             }
  2235.             var loc = Getplayerdatastore("SafeZone");
  2236.             if(!loc.ContainsKey("x"))
  2237.             {
  2238.                 TeleportToPos2(netuser, 0.0f, 389.1f, 0.0f);
  2239.                 player.hasteleportedtosafety = true;
  2240.                 return;
  2241.             }
  2242.             var safex = Convert.ToSingle(loc["x"]);
  2243.             var safey = Convert.ToSingle(loc["y"]);
  2244.             var safez = Convert.ToSingle(loc["z"]);
  2245.             TeleportToPos2(netuser, safex, safey, safez);
  2246.             player.hasteleportedtosafety = true;
  2247.             return;
  2248.            
  2249.         }
  2250.         string GetMessage(string key, string steamId = null) => lang.GetMessage(key, this, steamId);
  2251.         static void Dosystem(PlayerHandler player)
  2252.         {
  2253.             if(!player.firstmessage)
  2254.             {
  2255.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add " + "AntiCheat  \"" + "use /system 'mac' or /system 'pc'" + "\"");
  2256.                 player.firstmessage = true;
  2257.                 return;
  2258.             }
  2259.             player.message9++;
  2260.             if(player.message9 >= 80)
  2261.             {
  2262.                 player.message9 = 0;
  2263.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add " + "AntiCheat  \"" + "use /system 'mac' or /system 'pc'" + "\"");
  2264.             }
  2265.         }
  2266.        
  2267.         static void TeleportToPos2(NetUser source, float x, float y, float z)
  2268.         {
  2269.             if (Physics.Raycast(new Vector3(x, -1000f, z), vectorup2, out cachedRaycasttt, Mathf.Infinity, terrainLayerr))
  2270.             {
  2271.                 if (cachedRaycasttt.point.y > y) y = cachedRaycasttt.point.y;
  2272.             }
  2273.             management2.TeleportPlayerToWorld(source.playerClient.netPlayer, new Vector3(x, y, z));
  2274.         }
  2275.         static bool PlayerHandlerHasGround(PlayerHandler player)
  2276.         {
  2277.         if (!player.hasSearchedForFloor)
  2278.          {
  2279.              if (Physics.Raycast(player.playerclient.lastKnownPosition + UnderPlayerAdjustement, Vector3Down, out cachedRaycasttt, distanceDown))
  2280.                  player.currentFloorHeight = cachedRaycasttt.distance;
  2281.              else
  2282.                  player.currentFloorHeight = 10f;
  2283.          }
  2284.          player.hasSearchedForFloor = true;
  2285.          if (player.currentFloorHeight < 4f) return true;
  2286.         return false;
  2287.         }
  2288.         static void checknofall2(PlayerHandler player)
  2289.         {
  2290.             player.lasthealth = player.playerclient.controllable.health;
  2291.  
  2292.             player.playerclient.rootControllable.rootCharacter.takeDamage.SetGodMode(true);
  2293.             var time = UnityEngine.Time.realtimeSinceStartup;
  2294.             player.didteleport = true;
  2295.             if(player.firsttime != true)
  2296.             {
  2297.                 var firstx = player.playerclient.lastKnownPosition.x;
  2298.                 var firsty = player.playerclient.lastKnownPosition.y;
  2299.                 var firstz = player.playerclient.lastKnownPosition.z;
  2300.                 player.firstx = firstx;
  2301.                 player.firsty = firsty;
  2302.                 player.firstz = firstz;
  2303.                 player.firsttime = true;
  2304.             }
  2305.             NetUser netuser = player.playerclient.netUser;
  2306.             TeleportToPos2(netuser, 0.0f, 60000f, 0.0f);
  2307.         }
  2308.         static bool IsOnSupport(PlayerHandler player)
  2309.         {
  2310.             foreach( Collider collider in Physics.OverlapSphere(player.playerclient.lastKnownPosition, 5f))
  2311.             {
  2312.                 if (collider.GetComponent<UnityEngine.MeshCollider>())
  2313.                     return true;
  2314.             }
  2315.             return false;
  2316.         }
  2317.         public static void checknofall(PlayerHandler player)
  2318.         {
  2319.            
  2320.             if(!shouldchecknofall)
  2321.             {
  2322.                
  2323.                 player.hascompletednofallcheck = true;
  2324.                 return;
  2325.             }
  2326.    
  2327.             NetUser netuser = player.playerclient.netUser;
  2328.             var enhancedcheck = player.lastPosition.y;
  2329.             var newcheckdistance = (enhancedcheck - player.playerclient.lastKnownPosition.y);
  2330.             var ulongcheck2 = (Math.Abs(newcheckdistance));
  2331.             var ulongcheck = (Math.Abs(player.distanceHeight));
  2332.             if(!player.isfirstcheck)
  2333.             {
  2334.                 player.playerclient.rootControllable.rootCharacter.takeDamage.SetGodMode(true);
  2335.                 if(shouldcheckmultinofall)
  2336.                 {
  2337.                     dosettings(player);
  2338.                 }
  2339.                
  2340.                 checknofall2(player);
  2341.                 player.isfirstcheck = true;
  2342.                 return;
  2343.             }
  2344.             if (PlayerHandlerHasGround(player) && player.didteleportback == false) return;
  2345.             if (IsOnSupport(player) && player.didteleportback == false) return;
  2346.             var distanceenhanced2 = (Math.Abs(newcheckdistance));
  2347.             if(distanceenhanced2 < 20)
  2348.             {
  2349.                 player.count3++;
  2350.             }
  2351.            
  2352.             var time = UnityEngine.Time.realtimeSinceStartup;
  2353.            
  2354.             var distanceenhanced = (Math.Abs(player.distanceHeight));
  2355.             if(!player.playerclient.controllable.stateFlags.grounded)
  2356.             if(ulongcheck < 20 && !!player.playerclient.controllable.stateFlags.grounded)
  2357.             {
  2358.                 if(!player.firstnofalldetection)
  2359.                 {
  2360.                     player.firstnofalldetection = true;
  2361.                     return;
  2362.                 }
  2363.                 if(!player.nofallexception)
  2364.                 {
  2365.                     player.nofallexception = true;
  2366.                     return;
  2367.                 }
  2368.                 if(shoulddoipban)
  2369.                     ipban(player, "AntiCheat(No Fall Damage)");
  2370.                 AntiCheatBroadcastplayer(player.playerclient.userName + " [color orange]was detected of using a [color red]MultiHack");
  2371.                 Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AntiCheat(No Fall Damage)");
  2372.                 numberofbansnofalldamage++;
  2373.                 return;
  2374.                 checknofall2(player);
  2375.                 player.count++;
  2376.                 return;
  2377.             }
  2378.            
  2379.             if(!player.didteleportback)
  2380.             {
  2381.                 TeleportToPos2(netuser, player.firstx, player.firsty, player.firstz);
  2382.                 player.didteleportback = true;
  2383.             }
  2384.             if(player.fallcount <= 3)
  2385.             {
  2386.                 player.fallcount++;
  2387.                 return;
  2388.             }
  2389.             player.playerclient.rootControllable.rootCharacter.takeDamage.SetGodMode(true);
  2390.             if(player.firsttime == true && ulongcheck <= 90 && player.didteleportback == true)
  2391.             {
  2392.                 player.count3 = 0;
  2393.  
  2394.                 if(shouldcheckmultinofall)
  2395.                 {
  2396.                     if(!player.playerclient.rootControllable.stateFlags.grounded)
  2397.                         return;
  2398.                     FallDamage falldamage = player.playerclient.rootControllable.GetComponent<FallDamage>();
  2399.                     if(player.playerclient.controllable.stateFlags.grounded)
  2400.                     if(falldamage.GetLegInjury() == 0)
  2401.                     if(player.lasthealth == player.playerclient.controllable.health)
  2402.                     {
  2403.                         if(!player.firstdetect)
  2404.                         {
  2405.                             player.firstnofalldetection = false;
  2406.                             player.didteleportback = false;
  2407.                             checknofall2(player);
  2408.                             player.firstdetect = true;
  2409.                             return;
  2410.                         }if(!player.secoonddetect)
  2411.                         {
  2412.                             player.firstnofalldetection = false;
  2413.                             player.didteleportback = false;
  2414.                             checknofall2(player);
  2415.                             player.secoonddetect = true;
  2416.                             return;
  2417.                         }
  2418.                         if(!player.thrddetect)
  2419.                         {
  2420.                             player.firstnofalldetection = false;
  2421.                             player.didteleportback = false;
  2422.                             checknofall2(player);
  2423.                             player.secoonddetect = true;
  2424.                             player.fallcount = 0;
  2425.                             player.thrddetect = true;
  2426.                             return;
  2427.                         }
  2428.                         if(shoulddoipban)
  2429.                             ipban(player, "AntiCheat(Nofall-multihack detection)");
  2430.                         AntiCheatBroadcastplayer(player.playerclient.userName + " Has been Banned from the server for using NoFall Damage");
  2431.                         Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AdminCompanion(Nofall-multihack detection)");
  2432.                         numberofbansnofalldamage++;
  2433.                         if(falldamageenabled)
  2434.                         {
  2435.                             returnallsetting(player);
  2436.                         }
  2437.                         return;
  2438.                     }
  2439.                     else
  2440.                     {
  2441.            
  2442.                         Resettestt(player.playerclient, player.laststring2);
  2443.                         player.hascompletednofallcheck = true;
  2444.                         undofixplayerhp(player);
  2445.                     }
  2446.                 }
  2447.                 Resettestt(player.playerclient, player.laststring2);
  2448.                 player.hascompletednofallcheck = true;
  2449.                 undofixplayerhp(player);
  2450.                 return;
  2451.             }
  2452.             var thisposition = player.playerclient.lastKnownPosition.y;
  2453.              foreach (PlayerClient playerr in PlayerClient.All)
  2454.              {
  2455.                 if(player != playerr)
  2456.                 {
  2457.                     var client = playerr.controllable;
  2458.                     player.playerclient.controllable.RelativeControlTo(client);
  2459.                    
  2460.                 }
  2461.              }
  2462.              return;
  2463.             /* var datatest = player.playerclient.instantiationTimeStamp;
  2464.              var character = player.playerclient.controllable.CreateCCMotor();
  2465.              Debug.Log(datatest);
  2466.              return;
  2467.              player.playerclient.controllable.ccmotor.minTimeBetweenJumps = 0.55f;
  2468.              var character3 = player.playerclient.controllable.ccmotor.minTimeBetweenJumps;
  2469.              Debug.Log(character3);
  2470.              return;
  2471.              Debug.Log(character);*/
  2472.         }
  2473.         void cleardatastore()
  2474.         {
  2475.             int count = 0;
  2476.             foreach (KeyValuePair<string, object> pair in Info)
  2477.             {
  2478.                 var currenttable = pair.Value as Dictionary<string, object>;
  2479.                 count++;
  2480.                 currenttable.Clear();
  2481.             }
  2482.             Debug.Log(count + " Data Objects Cleared !!!");
  2483.         }
  2484.         void OnServerInitialized()
  2485.         {
  2486.             LoadData();
  2487.             SaveData();
  2488.             cleardatastore();
  2489.             management2 = RustServerManagement.Get();
  2490.             InitializeTable();
  2491.         }
  2492.         public static InventoryItem GetCurrentEquippedItem(Character controller)
  2493.         {
  2494.             Inventory component = controller.GetComponent<Inventory>();
  2495.             if ((object) component != (object) null && component.activeItem != null && (object) component.activeItem.datablock != (object) null)
  2496.                 return (InventoryItem) component.activeItem;
  2497.             return (InventoryItem) null;
  2498.         }
  2499.         public static InventoryItem getfirstitem(Character controller)
  2500.         {
  2501.             Inventory component = controller.GetComponent<Inventory>();
  2502.             if ((object) component != (object) null && component.firstItem != null && (object) component.firstItem.datablock != (object) null)
  2503.                 return (InventoryItem) component.firstItem;
  2504.             return (InventoryItem) null;
  2505.         }
  2506.         public object GiveItem(Inventory inventory, string itemname, int amount, Inventory.Slot.Preference pref)
  2507.         {
  2508.            
  2509.             itemname = itemname.ToLower();
  2510.             if (!displaynameToDataBlock.ContainsKey(itemname)) return false;
  2511.             ItemDataBlock datablock = displaynameToDataBlock[itemname];
  2512.             inventory.AddItemAmount(displaynameToDataBlock[itemname], amount, pref);
  2513.             return true;
  2514.         }
  2515.         private void InitializeTable()
  2516.         {
  2517.             displaynameToDataBlock.Clear();
  2518.             foreach (ItemDataBlock itemdef in DatablockDictionary.All)
  2519.             {
  2520.                 displaynameToDataBlock.Add(itemdef.name.ToString().ToLower(), itemdef);
  2521.             }
  2522.         }
  2523.         public static void norecoilcheck(PlayerHandler player)
  2524.         {
  2525.            
  2526.             if(!shouldchecknorecoil)
  2527.             {
  2528.                 player.passednorecoiltest = true;
  2529.                 return;
  2530.             }
  2531.            
  2532.             player.nr++;
  2533.             if(shouldbanforidle)
  2534.             if(player.nr >= idletimetillban)
  2535.             {
  2536.                 if(shoulddoipban)
  2537.                     ipban(player, "AntiCheat(idle time reached)");
  2538.                 AntiCheatBroadcastplayer(player.playerclient.userName + " Has been Banned from the server for refusing test");
  2539.                 Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "Max amount of AntiCheat(idle time reached)");
  2540.                 return;
  2541.             }
  2542.             if(!player.hasrefreshedinventorysettings)
  2543.             {
  2544.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "config.load");
  2545.                 player.hasrefreshedinventorysettings = true;
  2546.                 return;
  2547.             }
  2548.             if(!player.hasceildcheck);
  2549.             {
  2550.                 Resettestt2(player.playerclient, player.laststring2);
  2551.                 player.hasceildcheck = true;
  2552.             }
  2553.             var check = player.playerclient.controllable.stateFlags.flags;
  2554.             if(check == null)
  2555.                 return;
  2556.             if(player.playerclient.controllable == null)
  2557.                 return;
  2558.             var eulerangles3 = new Angle2(89.9f, 9.2f);
  2559.             var eulerangles =  (Angle2)player.playerclient.controllable.eyesAngles;
  2560.             if(eulerangles == eulerangles3)
  2561.                 return;
  2562.             refreshrecoiltest(player);
  2563.             if(check == menuscreenflag)
  2564.             {
  2565.                 Resettestt2(player.playerclient, player.laststring2);
  2566.                 removeui(player);
  2567.                 return;
  2568.             }
  2569.             var language = Getplayerdatastore(player.language);
  2570.             if(!language.ContainsKey("Dorecoiltest"))
  2571.             {
  2572.                 return;
  2573.             }          
  2574.             if(!language.ContainsKey("norecoiltestmsg"))
  2575.             {
  2576.                 return;
  2577.             }
  2578.             var dorecoiltest = language["Dorecoiltest"].ToString();
  2579.             var norecoilcheckmsg = language["norecoiltestmsg"].ToString();
  2580.             Inventory inventory = player.playerclient.controllable.GetComponent<PlayerInventory>();
  2581.             var inv = player.playerclient.rootControllable.idMain.GetComponent<Inventory>();
  2582.             var firstitem = getfirstitem(player.playerclient.controllable.GetComponent<Character>());
  2583.             Inventory.Slot.Preference pref2 = Inventory.Slot.Preference.Define(Inventory.Slot.Kind.Belt, false, Inventory.Slot.KindFlags.Belt);
  2584.             IInventoryItem item2 = null;
  2585.             var ppt = inv.GetItem(30, out item2);
  2586.             //Facepunch.NetworkView networkView = inv.networkView;
  2587.             //NetworkCullInfo info;
  2588.             //NetworkCullInfo.Find((uLink.NetworkView) networkView, out info);
  2589.             //ItemRepresentation itemRep = NetCull.InstantiatePiggyBackWithArgs<ItemRepresentation>(networkView.owner, info, test3.itemRepresentation.datablock._itemRepPrefab, networkView.transform.position, networkView.transform.rotation, new object[2]);
  2590.             //Facepunch.NetworkView networkView = inventory.networkView;
  2591.             //NetworkCullInfo info;
  2592.             //NetworkCullInfo.Find((uLink.NetworkView) networkView, out info);
  2593.             // ItemRepresentation itemRep = NetCull.InstantiatePiggyBackWithArgs<ItemRepresentation>(networkView.owner, info, test3.itemRepresentation.datablock._itemRepPrefab, networkView.transform.position, networkView.transform.rotation, new object[2]);
  2594.             //  new uLink.NetworkViewID?(test3.itemRepresentation.networkView.viewID)
  2595.            
  2596.             //IHeldItem heldItem = inventory.activeItem as IHeldItem;
  2597.             //heldItem.inventory.SetActiveItemManually(0, itemRep, new uLink.NetworkViewID?(test3.itemRepresentation.networkView.viewID));
  2598.             //heldItem.OnActivate();
  2599.             if(!player.hasremoveddefaultitem)
  2600.             {
  2601.                 if(item2 != null)
  2602.                 {
  2603.                     player.datablocknull = true;
  2604.                     player.lastdatablock3 = item2.datablock;
  2605.                     player.lastinventoryitem = item2;
  2606.                     inventory.RemoveItem(30);
  2607.                     player.hasremoveddefaultitem  = true;
  2608.                     return;
  2609.                 }
  2610.                 player.hasremoveddefaultitem  = true;
  2611.             }
  2612.             if(!player.hasgivenweapon)
  2613.             {
  2614.                 inv.AddItemAmount(displaynameToDataBlock["m4"], 1, pref2);
  2615.                 player.hasgivenweapon = true;
  2616.                 return;
  2617.             }
  2618.             var getcahcedbuletitem = GetCurrentEquippedItem(player.playerclient.controllable.GetComponent<Character>());
  2619.             if(item2 != null)
  2620.             {
  2621.                 var test3 = item2 as BulletWeaponItem<BulletWeaponDataBlock>;
  2622.                 if(test3 != null)
  2623.                 if(!player.hastakenoutweapon)
  2624.                 {
  2625.                     if(player.secondselect <= 3)
  2626.                     {
  2627.                         player.secondselect++;
  2628.                         inv.SetActiveItemManually(30,  test3.itemRepresentation);
  2629.                         return;
  2630.                     }
  2631.                     inv.DeactivateItem();
  2632.                     player.hastakenoutweapon = true;
  2633.                     return;
  2634.                 }
  2635.             }
  2636.             InventoryItem item;
  2637.             if(!player.hasgotengivenitem)
  2638.             {
  2639.                 var p = inventory.FindItem("M4");
  2640.                 if(p == null)
  2641.                 {
  2642.                     return;
  2643.                 }
  2644.                 player.hasgotengivenitem  = true;
  2645.                 player.savedweaponnumber = p.slot;
  2646.                 player.lastdatablock2 = p.datablock;
  2647.                 return;
  2648.                 if(firstitem == null)
  2649.                     return;
  2650.                 if(firstitem != null)
  2651.                 {
  2652.                    
  2653.                     player.lastdatablock2 = firstitem.datablock;
  2654.                     player.hasgotengivenitem  = true;
  2655.                     return;
  2656.                 }
  2657.             }
  2658.             if(!player.hastakenoutweapon)
  2659.             {
  2660.                 player.hastakenoutweapon = true;
  2661.                 return;
  2662.                 return;
  2663.             }
  2664.             if(getcahcedbuletitem == null)
  2665.             {
  2666.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AdminCompanion \"" + norecoilcheckmsg + "\"");
  2667.                 return;
  2668.             }
  2669.             getcahcedbuletitem.FireClientSideItemEvent(InventoryItem.ItemEvent.Used);
  2670.             if(getcahcedbuletitem.slot != 30 || getcahcedbuletitem.datablock != displaynameToDataBlock["m4"])
  2671.             {
  2672.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AdminCompanion \"" + norecoilcheckmsg + "\"");
  2673.                 return;
  2674.             }
  2675.             var g = getcahcedbuletitem.slot;
  2676.             if(g == null)
  2677.             {
  2678.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AdminCompanion \"" + norecoilcheckmsg + "\"");
  2679.                 return;
  2680.             }
  2681.            
  2682.             var test4 = inventory._activeItem as BulletWeaponItem<BulletWeaponDataBlock>;
  2683.             if(!player.hasgivenammo)
  2684.             if(test4 != null)
  2685.             if(test4.clipAmmo <= 1)
  2686.             {
  2687.                
  2688.                 Resettestt(player.playerclient, player.laststring2);
  2689.                 player.hasgivenammo = true;
  2690.                 test4.clipAmmo = 1000;
  2691.                 return;
  2692.                 player.lastclipammo = test4.clipAmmo.ToString();
  2693.                 player.lasteularangles = eulerangles.ToString();
  2694.                 test4.clipAmmo = 1000;
  2695.                 return;
  2696.             }
  2697.             if(!player.firstpasseular)
  2698.             {
  2699.                 player.lasteularangles = eulerangles.ToString();
  2700.                 player.firstpasseular = true;
  2701.                 return;
  2702.             }
  2703.             if(!player.firstgetclimpammo)
  2704.             if(test4.clipAmmo.ToString() != player.lastclipammo)
  2705.             {
  2706.                 player.lastclipammo = test4.clipAmmo.ToString();
  2707.                 player.firstgetclimpammo = true;
  2708.                 return;
  2709.             }
  2710.             if(test4.clipAmmo.ToString() != player.lastclipammo)
  2711.             {
  2712.                 if(player.lasteularangles == eulerangles.ToString())
  2713.                 {
  2714.                     if(shoulddoipban)
  2715.                         ipban(player, "AdminCompanion(no recoil)");
  2716.                     AntiCheatBroadcastplayer(player.playerclient.userName + " Has been Banned from the server for using NoRecoil");
  2717.                     Interface.CallHook("cmdBan", player.playerclient.userID.ToString(), player.playerclient.userName, "AdminCompanion(no recoil)");
  2718.                     numberofbansnorecoil++;
  2719.                     return;
  2720.                 }
  2721.             }
  2722.            
  2723.             if(test4.clipAmmo.ToString() == player.lastclipammo)
  2724.             {
  2725.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "chat.add AdminCompanion \"" + dorecoiltest + "\"");
  2726.             }
  2727.             if(test4.clipAmmo.ToString() != player.lastclipammo)
  2728.             if(player.lasteularangles != eulerangles.ToString())
  2729.             {
  2730.                 inventory.RemoveItem(g);
  2731.                 if(player.datablocknull)
  2732.                 {
  2733.                     Inventory.Slot.Preference pref3 = Inventory.Slot.Preference.Define(Inventory.Slot.Kind.Belt, false, Inventory.Slot.KindFlags.Belt);
  2734.                     inv.AddItemAmount(player.lastdatablock3, 1,  pref3);
  2735.                     IInventoryItem item3 = null;
  2736.                     var ppt2 = inv.GetItem(30, out item3);
  2737.                     if(item3 is BulletWeaponItem<BulletWeaponDataBlock>)
  2738.                     {
  2739.                        
  2740.                         var finecheck1 = (item3 as BulletWeaponItem<BulletWeaponDataBlock>);
  2741.                         var finecheck2 = (player.lastinventoryitem as BulletWeaponItem<BulletWeaponDataBlock>);
  2742.                         var cd = ((IHeldItem) item3);
  2743.                         var cd2 = ((IHeldItem) player.lastinventoryitem);
  2744.                         cd.SetTotalModSlotCount(cd2.totalModSlots);
  2745.                         item3 = player.lastinventoryitem;
  2746.                         var count = cd2.itemMods.Length - 1;
  2747.                         int i = 0;
  2748.                         while(i < count)
  2749.                         {
  2750.                             var itemmod = cd2.itemMods[i];
  2751.                             cd.AddMod(itemmod);
  2752.                             i++;
  2753.                         }
  2754.                         finecheck1.SetCondition(finecheck2.condition);
  2755.                         finecheck1.clipAmmo = finecheck2.clipAmmo;
  2756.                         item3.AddUses(player.lastinventoryitem.uses);
  2757.                        
  2758.                     }
  2759.                 }
  2760.                 player.passednorecoiltest = true;
  2761.                 ConsoleNetworker.SendClientCommand(player.playerclient.netPlayer, "config.load");
  2762.                 Resettestt(player.playerclient, player.laststring2);
  2763.                 return;
  2764.             }
  2765.             player.firstgetclimpammo = false;
  2766.             player.lastclipammo = test4.clipAmmo.ToString();
  2767.             player.firstpasseular = false;
  2768.             return;
  2769.            
  2770.             ItemDataBlock datablock = displaynameToDataBlock["p250"];
  2771.             var activeitem = inventory._activeItem;
  2772.             Inventory.Slot.Preference pref = Inventory.Slot.Preference.Define(Inventory.Slot.Kind.Armor,false,Inventory.Slot.KindFlags.Belt);
  2773.             if(displaynameToDataBlock["m4"] == null)
  2774.             {
  2775.                 return;
  2776.             }
  2777.             inv.AddItemAmount(displaynameToDataBlock["mp5a4"], 2, pref);
  2778.             inventory.AddItemAmount(displaynameToDataBlock["arrow"], 5, pref);
  2779.             var test5 = displaynameToDataBlock["arrow"];
  2780.             var test2 = displaynameToDataBlock["arrow"];
  2781.             if (getcahcedbuletitem != null && getcahcedbuletitem is BulletWeaponItem<BulletWeaponDataBlock>)
  2782.             {
  2783.                
  2784.                 var test = getcahcedbuletitem as BulletWeaponItem<BulletWeaponDataBlock>;
  2785.                 if(test == null)
  2786.                     return;
  2787.                 inventory.SetActiveItemManually(1, test.itemRepresentation);
  2788.                 test.datablock.maxClipAmmo = 1000;
  2789.                
  2790.            
  2791.                 test.itemRepresentation.Action(3, uLink.RPCMode.Owner);
  2792.                 test.datablock.recoilPitchMin = 0.0f;
  2793.                 test.datablock.recoilPitchMax = 0.0f;
  2794.                 test.datablock.recoilYawMin = 0.0f;
  2795.                 test.datablock.recoilYawMax = 0.0f;
  2796.                 test.datablock.aimSway = 0.0f;
  2797.                 test.datablock.aimSwaySpeed = 0.0f;
  2798.                 test.itemRepresentation.Action(3, uLink.RPCMode.Server);
  2799.                 test.itemRepresentation.Action(1, uLink.RPCMode.Server);
  2800.                 if (test.clipAmmo <= 100)
  2801.                     test.itemRepresentation.Action(3, uLink.RPCMode.Server);
  2802.             }
  2803.             if(getcahcedbuletitem.isInLocalInventory)
  2804.             {
  2805.             }
  2806.         }
  2807.         public bool Getplayerthroughmessage(NetUser netuser, string message)
  2808.         {
  2809.             return true;
  2810.         }
  2811.         public bool checklogforplayer(NetUser netUser, string message)
  2812.         {
  2813.             var realtime = UnityEngine.Time.realtimeSinceStartup;
  2814.             SendReply(netUser, "at log players's");
  2815.             var displayNamesas = PlayerClient.All.Select(pc => pc.netUser.displayName).ToList();
  2816.             var displayNames = message.ToList();
  2817.             displayNamesas.Sort();
  2818.             StringBuilder sb = new StringBuilder(0 + 25);
  2819.             int totalPlayersAdded = 0;
  2820.             for (int i = 0; i < displayNames.Count; i++)
  2821.             {
  2822.                 if (totalPlayersAdded < 1 && (sb.Length + displayNamesas[i].Length) < 1)
  2823.                 {
  2824.                     sb.Append(displayNames[i]);
  2825.                     totalPlayersAdded += 1;
  2826.                 }
  2827.                 if (totalPlayersAdded == 1)
  2828.                 {
  2829.                     rust.SendChatMessage(netUser, "chatname", sb.ToString().TrimEnd(' ', ','));
  2830.                     sb.Length = 0;
  2831.                     totalPlayersAdded = 0;
  2832.                 }
  2833.                 else if ((sb.Length + displayNamesas[i].Length) >= 0)
  2834.                 {
  2835.                     rust.SendChatMessage(netUser, "chatname", sb.ToString().TrimEnd(' ', ','));
  2836.                     sb.Length = 0;
  2837.                     totalPlayersAdded = 1;
  2838.                     sb.Append(displayNamesas[i]);
  2839.                     sb.Append(", ");
  2840.                 }
  2841.                 else
  2842.                 {
  2843.                     sb.Append(", ");
  2844.                 }
  2845.             }
  2846.             if (sb.Length > 0)
  2847.             {
  2848.                 rust.SendChatMessage(netUser, sb.ToString().TrimEnd(' ', ','));
  2849.                 return true;
  2850.             }
  2851.             return true;
  2852.         }
  2853.         void OnPlayerDisconnected(uLink.NetworkPlayer netplayer)
  2854.         {
  2855.  
  2856.             PlayerClient player = ((NetUser)netplayer.GetLocalData()).playerClient;
  2857.             if (hasAccess(player.netUser))
  2858.                 return;
  2859.             PlayerHandler phandler = player.GetComponent<PlayerHandler>();
  2860.             if(phandler != null)
  2861.             {
  2862.             }
  2863.             var haschecked = Getplayerdatastore("AminCompanion(haschecked)");
  2864.             if(haschecked.ContainsKey(player.userID.ToString()))
  2865.             {
  2866.                 haschecked.Remove(player.userID.ToString());
  2867.             }
  2868.             if(shouldbanifplayerdcduringtest)
  2869.             {
  2870.                 if(phandler != null)
  2871.                 {
  2872.                     if(shouldbepinglienient)
  2873.                     {
  2874.                     var ping = player.netUser.networkPlayer.averagePing;
  2875.                     if(ping != null)
  2876.                     if(ping >= pinglimitbeforeignore)
  2877.                         return;
  2878.                     }
  2879.                    
  2880.                     numberofcheckevade++;
  2881.                     if(!BanList.Contains(player.userID))
  2882.                     AntiCheatBroadcastplayerr(player.userName + " Has been Banned for Check Evading");
  2883.                     if(!BanList.Contains(player.userID))
  2884.                     BanList.Add(player.userID, player.userName, "AdminCompanion(Disconnectduringtest)");
  2885.                    
  2886.                     return;
  2887.                 }
  2888.                
  2889.                
  2890.             }
  2891.  
  2892.         }
  2893.         void OnPlayerChat(NetUser netuser, string message)
  2894.         {
  2895.             if(message.Contains("love") && message.Contains("companion"))
  2896.                 SendReply(netuser, "I am just glad to help!");
  2897.             PlayerHandler phandler = netuser.playerClient.GetComponent<PlayerHandler>();
  2898.             if(shouldignore)
  2899.             if(phandler != null)
  2900.             if(!phandler.hasselectedlanguage)
  2901.             if(phandler.numberoffakecalls >= numberoffakecallslmit)
  2902.             {
  2903.                 SendReply(netuser, "will no longer take input from you you will have to use my english dictionary");
  2904.                 var data = Getplayerdatastore(netuser.playerClient.userID.ToString());
  2905.                 if(!data.ContainsKey("Language"))
  2906.                 data.Add("Language", "en");
  2907.                 phandler.forcefinish = true;
  2908.                 phandler.hasselectedlanguage = true;
  2909.                 return;
  2910.             }
  2911.             if(phandler != null)
  2912.             if(!phandler.hasselectedlanguage)
  2913.             {
  2914.                 phandler.detectionended = false;
  2915.                 GetcountryBytext(netuser, message.ToString());
  2916.                 return;
  2917.                 if(message.Contains("f2") || message.Contains("F5"))
  2918.                 if(message.Contains("test") && message.Contains("suck"))
  2919.                 SendReply(netuser, "ai admin is reading");
  2920.                 return;
  2921.             }
  2922.    
  2923.             if(message.Contains("hacker") || message.Contains("hacker".ToLower()) || message.Contains("hack".ToLower()))
  2924.             {
  2925.                 if(!hascalled.ContainsKey(netuser.playerClient.userID.ToString()))
  2926.                 {
  2927.                     var message23 = ("hello I am an Auto-Admin system please type /report playername to report him/her he will need a total of " + numberofvotes + " votes");
  2928.                     rust.Notice(netuser, message23, icon, duration);
  2929.                     hascalled.Add(netuser.playerClient.userID.ToString(), "1");
  2930.                     return;
  2931.                 }
  2932.  
  2933.                 var totalhascalled = Convert.ToSingle(hascalled[netuser.playerClient.userID.ToString()]);
  2934.                 var newtotal = totalhascalled + 1f;
  2935.                 if(newtotal > 3)
  2936.                     return;
  2937.                 hascalled.Remove(netuser.playerClient.userID.ToString());
  2938.                 hascalled.Add(netuser.playerClient.userID.ToString(), newtotal.ToString());
  2939.                 totalhascalled++;
  2940.                 if(totalhascalled <= 3f )
  2941.                 {
  2942.                     var message2 = ("hello I am an Auto-Admin system please type /report playername to report him/her he will need a total of " + numberofvotes + " votes");
  2943.                     rust.Notice(netuser, message2, icon, duration);
  2944.                 }
  2945.             }
  2946.            
  2947.             return;
  2948.             /*
  2949.             var namereplace = netuser.playerClient.userName;
  2950.             namereplace.Replace("check in name", namereplace);
  2951.             namereplace = "changed name";
  2952.             int index2 = message.IndexOf("c");
  2953.             namereplace.Remove(index2, 1);
  2954.            
  2955.             int index1 = message.IndexOf(" ");
  2956.             SendReply(netuser, index1.ToString());
  2957.             var result2 = message.Remove(index1, 1);
  2958.             SendReply(netuser, result2.ToString());
  2959.  
  2960.             int pFrom = message.IndexOf(" ");
  2961.             int pTo = message.LastIndexOf(" ");
  2962.  
  2963.             string result = message.Substring(pFrom, pTo - pFrom);
  2964.             SendReply(netuser, result.ToString());
  2965.            
  2966.            
  2967.             if(ischecking)
  2968.             {
  2969.                 foreach (PlayerClient player in PlayerClient.All)
  2970.                 {
  2971.                    
  2972.                     if(message.Contains(" "))
  2973.                         SendReply(netuser, "does contain space");
  2974.                     var message2 = message.ToList();
  2975.                     message2.Sort();
  2976.                    
  2977.                    
  2978.                     var test2 = message2[" ".Length];
  2979.                     SendReply(netuser, test2.ToString());
  2980.                     SendReply(netuser, "finished");
  2981.                     ischecking = false;
  2982.                     return;
  2983.                     checklogforplayer(netuser, message);
  2984.                     StringBuilder sb = new StringBuilder(0 + 25);
  2985.                     var testrad = message2[1];
  2986.                     SendReply(netuser, testrad.ToString());
  2987.                     return;
  2988.                     SendReply(netuser, message2.ToString());
  2989.                     var name = player.userName.ToString();
  2990.                     if(message.Contains(player.userName.ToString().ToLower()))
  2991.                         SendReply(netuser, "message22 contains");
  2992.                     SendReply(netuser, "message2 contains2");
  2993.                     return;
  2994.                    
  2995.  
  2996.                    
  2997.                    
  2998.                     if(message.ToString().ToLower().Contains("copperbot"))
  2999.                     {
  3000.                         SendReply(netuser, "message contains lower");
  3001.                     }
  3002.                     if(name.Contains(message))
  3003.                         SendReply(netuser, "name contains message");
  3004.                    
  3005.                     if(name.Contains(message.ToString().ToLower()))
  3006.                         SendReply(netuser, " this is the paired player");
  3007.                     if(message.ToString().Contains(name.ToLower()))
  3008.                         SendReply(netuser, "contians c1");
  3009.                     if(message.ToString().ToLower().Contains(name))
  3010.                         SendReply(netuser, "message contains c");
  3011.                     if(message.ToString().Contains(name) || message.ToString().ToLower().Contains(name) || message.Contains(name) || message.Contains(name.ToLower()))
  3012.                         SendReply(netuser, name.ToString() + " this is the paired player");
  3013.                 }
  3014.                 var msg2 = message;
  3015.                 var displayNames = PlayerClient.All.Select(pc => pc.netUser.displayName).ToList();
  3016.                 displayNames.Sort();
  3017.                 Debug.Log(displayNames);
  3018.                 var test7 = displayNames.ToString().ToLower();
  3019.                 if(message.Contains(test7))
  3020.                     SendReply(netuser, test7.ToString() + " this is the paired player");
  3021.                
  3022.                 var msg = message.Length;
  3023.                 rust.SendChatMessage(netuser, test7.Length.ToString());
  3024.                 SendReply(netuser, msg.ToString());
  3025.                 ischecking = false;
  3026.                 return;
  3027.                 NetUser targetuser = rust.FindPlayer(message);
  3028.                
  3029.                 var message1 = ("thank you this player has gotten 1 hack report i will check him if he has 10 " );
  3030.                 rust.Notice(netuser, message1, icon, duration);
  3031.             }
  3032.             if(message.Contains("hacker") || message.Contains("hacker".ToLower()) || message.Contains("hack".ToLower()))
  3033.             {
  3034.                 ischecking = true;
  3035.                 var numberofplayers = PlayerClient.All.Count;
  3036.                 var percentage = (100 /numberofplayers * numberofpercentagevtoesbeforecheck);
  3037.                 SendReply(netuser, percentage.ToString() + " this is the percentage player");
  3038.                 var message2 = ("hello i am an auto-Admin system please type /report playername to report him/her he will need a total of");
  3039.                 rust.Notice(netuser, message2, icon, duration);
  3040.             }*/
  3041.         }
  3042.        
  3043.         void IOnRecieveNetwork()
  3044.         {
  3045.             float now = Interface.Oxide.Now;
  3046.         }
  3047.         void dolanguage(NetUser netuser, string language)
  3048.         {
  3049.  
  3050.             var languagee = Getplayerdatastore(language);
  3051.             var data = Getplayerdatastore(netuser.playerClient.userID.ToString());
  3052.             PlayerHandler phandler = netuser.playerClient.GetComponent<PlayerHandler>();
  3053.            
  3054.             if(languagee.ContainsKey("F2testmsg") && languagee.ContainsKey("speedjumptestmsg") && languagee.ContainsKey("nospreadtestmsg") && languagee.ContainsKey("Dorecoiltest") && languagee.ContainsKey("donotdcmessage") && languagee.ContainsKey("norecoiltestmsg"))
  3055.             {
  3056.                 if(!data.ContainsKey("Language"))
  3057.                     data.Add("Language", language);
  3058.                 phandler.forcefinish = true;
  3059.                 phandler.hasselectedlanguage = true;
  3060.                 return;
  3061.             }
  3062.             var url1 = string.Format("http://mymemory.translated.net/api/get?q=thank%20you%20now%20press%20and%20hold%20F2%20on%20your%20keyboard%20please&langpair=en|" + language + "&de=" + Email);
  3063.             var url2 = string.Format("http://mymemory.translated.net/api/get?q=jump speed please&langpair=en|" + language + "&de=" + Email);
  3064.             var url3 = string.Format("http://mymemory.translated.net/api/get?q=do not move and take out the weapon i have placed in your inventory and shoot please&langpair=en|" + language + "&de=" + Email);
  3065.             var url4 = string.Format("http://mymemory.translated.net/api/get?q=do not move and take out your weapon and Press and Hold C on your keyboard&langpair=en|" + language + "&de=" + Email);
  3066.             var url5 = string.Format("http://mymemory.translated.net/api/get?q=please do not disconnect during this test &langpair=en|" + language + "&de=" + Email);
  3067.             var url6 = string.Format("http://mymemory.translated.net/api/get?q=Shoot the weapon by pressing c&langpair=en|" + language + "&de=" + Email);
  3068.             var url7 = string.Format("http://mymemory.translated.net/api/get?q=Thank you, you have finished all test completely&langpair=en|" + language + "&de=" + Email);
  3069.             var url8 = string.Format("http://mymemory.translated.net/api/get?q=Please do not crouch during this test&langpair=en|" + language + "&de=" + Email);
  3070.             var url9 = string.Format("https://translate.google.com.jm/?rlz=1C1PRFE_enJM668JM669&um=1&ie=UTF-8&hl=en&client=tw-ob#en/" + language + "/:thank%20you%20now%20press%20and%20hold%20F2%20on%20your%20keyboard%20please:");
  3071.  
  3072.             Interface.GetMod().GetLibrary<WebRequests>("WebRequests").EnqueueGet(url1, (code, response) =>
  3073.             {
  3074.                
  3075.                 var jsonresponse2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, jsonsettings);
  3076.                 var playervpnn2 = (jsonresponse2["responseData"]);
  3077.                 var jsonresponse = JsonConvert.DeserializeObject<Dictionary<string, object>>(playervpnn2.ToString(), jsonsettings);
  3078.                 var playervpn22 = (jsonresponse["translatedText"].ToString());
  3079.                 if(playervpn22.ToString().Contains("INVALID") || playervpn22.ToString().Contains("EXAMPLE") || !playervpn22.ToString().Contains("F2"))
  3080.                 {
  3081.                     if(shouldignore)
  3082.                     phandler.numberoffakecalls++;
  3083.                     return;
  3084.                 }
  3085.                 if(playervpn22.ToString() == "null")
  3086.                 {
  3087.                    
  3088.                     if(!data.ContainsKey("Language"))
  3089.                         data.Add("Language", "en");
  3090.                     phandler.forcefinish = true;
  3091.                     phandler.hasselectedlanguage = true;
  3092.                     return;
  3093.                 }
  3094.                 if(!languagee.ContainsKey("F2testmsg"))
  3095.                     languagee.Add("F2testmsg", playervpn22);
  3096.  
  3097.             }, this);
  3098.             Interface.GetMod().GetLibrary<WebRequests>("WebRequests").EnqueueGet(url2, (code, response) =>
  3099.             {
  3100.                 var jsonresponse2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, jsonsettings);
  3101.                 var playervpnn2 = (jsonresponse2["responseData"]);
  3102.                 var jsonresponse = JsonConvert.DeserializeObject<Dictionary<string, object>>(playervpnn2.ToString(), jsonsettings);
  3103.                 var playervpn22 = (jsonresponse["translatedText"].ToString());
  3104.                 if(playervpn22.ToString() == "null")
  3105.                 {
  3106.                    
  3107.                     if(!data.ContainsKey("Language"))
  3108.                         data.Add("Language", "en");
  3109.                     phandler.forcefinish = true;
  3110.                     phandler.hasselectedlanguage = true;
  3111.                     return;
  3112.                 }
  3113.                 if(!languagee.ContainsKey("speedjumptestmsg"))
  3114.                 languagee.Add("speedjumptestmsg", playervpn22);
  3115.             }, this);
  3116.             Interface.GetMod().GetLibrary<WebRequests>("WebRequests").EnqueueGet(url3, (code, response) =>
  3117.             {
  3118.                 var jsonresponse2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, jsonsettings);
  3119.                 var playervpnn2 = (jsonresponse2["responseData"]);
  3120.                 var jsonresponse = JsonConvert.DeserializeObject<Dictionary<string, object>>(playervpnn2.ToString(), jsonsettings);
  3121.                 var playervpn22 = (jsonresponse["translatedText"].ToString());
  3122.                 if(playervpn22.ToString() == "null")
  3123.                 {
  3124.                    
  3125.                     if(!data.ContainsKey("Language"))
  3126.                         data.Add("Language", "en");
  3127.                     phandler.forcefinish = true;
  3128.                     phandler.hasselectedlanguage = true;
  3129.                     return;
  3130.                 }
  3131.                 if(!languagee.ContainsKey("norecoiltestmsg"))
  3132.                     languagee.Add("norecoiltestmsg", playervpn22);
  3133.             }, this);
  3134.             Interface.GetMod().GetLibrary<WebRequests>("WebRequests").EnqueueGet(url4, (code, response) =>
  3135.             {
  3136.                 var jsonresponse2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, jsonsettings);
  3137.                 var playervpnn2 = (jsonresponse2["responseData"]);
  3138.                 var jsonresponse = JsonConvert.DeserializeObject<Dictionary<string, object>>(playervpnn2.ToString(), jsonsettings);
  3139.                 var playervpn22 = (jsonresponse["translatedText"].ToString());
  3140.                 if(playervpn22.ToString() == "null")
  3141.                 {
  3142.                    
  3143.                     if(!data.ContainsKey("Language"))
  3144.                         data.Add("Language", "en");
  3145.                     phandler.forcefinish = true;
  3146.                     phandler.hasselectedlanguage = true;
  3147.                     return;
  3148.                 }
  3149.                 if(!languagee.ContainsKey("nospreadtestmsg"))
  3150.                     languagee.Add("nospreadtestmsg", playervpn22);
  3151.             }, this);
  3152.             Interface.GetMod().GetLibrary<WebRequests>("WebRequests").EnqueueGet(url5, (code, response) =>
  3153.             {
  3154.                
  3155.                 var jsonresponse2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, jsonsettings);
  3156.                 var playervpnn2 = (jsonresponse2["responseData"]);
  3157.                 var jsonresponse = JsonConvert.DeserializeObject<Dictionary<string, object>>(playervpnn2.ToString(), jsonsettings);
  3158.                 var playervpn22 = (jsonresponse["translatedText"].ToString());
  3159.                 if(playervpn22.ToString() == "null")
  3160.                 {
  3161.                    
  3162.                     if(!data.ContainsKey("Language"))
  3163.                         data.Add("Language", "en");
  3164.                     phandler.forcefinish = true;
  3165.                     phandler.hasselectedlanguage = true;
  3166.                     return;
  3167.                 }
  3168.                 if(!languagee.ContainsKey("donotdcmessage"))
  3169.                     languagee.Add("donotdcmessage", playervpn22);
  3170.             }, this);
  3171.             Interface.GetMod().GetLibrary<WebRequests>("WebRequests").EnqueueGet(url6, (code, response) =>
  3172.             {
  3173.                
  3174.                 var jsonresponse2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, jsonsettings);
  3175.                 var playervpnn2 = (jsonresponse2["responseData"]);
  3176.                 var jsonresponse = JsonConvert.DeserializeObject<Dictionary<string, object>>(playervpnn2.ToString(), jsonsettings);
  3177.                 var playervpn22 = (jsonresponse["translatedText"].ToString());
  3178.                 if(playervpn22.ToString() == "null")
  3179.                 {
  3180.                    
  3181.                     if(!data.ContainsKey("Language"))
  3182.                         data.Add("Language", "en");
  3183.                     phandler.forcefinish = true;
  3184.                     phandler.hasselectedlanguage = true;
  3185.                     return;
  3186.                 }
  3187.                 if(!languagee.ContainsKey("Dorecoiltest"))
  3188.                     languagee.Add("Dorecoiltest", playervpn22);
  3189.             }, this);
  3190.             Interface.GetMod().GetLibrary<WebRequests>("WebRequests").EnqueueGet(url7, (code, response) =>
  3191.             {
  3192.                
  3193.                 var jsonresponse2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, jsonsettings);
  3194.                 var playervpnn2 = (jsonresponse2["responseData"]);
  3195.                 var jsonresponse = JsonConvert.DeserializeObject<Dictionary<string, object>>(playervpnn2.ToString(), jsonsettings);
  3196.                 var playervpn22 = (jsonresponse["translatedText"].ToString());
  3197.                 if(playervpn22.ToString() == "null")
  3198.                 {
  3199.                    
  3200.                     if(!data.ContainsKey("Language"))
  3201.                         data.Add("Language", "en");
  3202.                     phandler.forcefinish = true;
  3203.                     phandler.hasselectedlanguage = true;
  3204.                     return;
  3205.                 }
  3206.                 if(!languagee.ContainsKey("Completedmsg"))
  3207.                     languagee.Add("Completedmsg", playervpn22);
  3208.             }, this);
  3209.             Interface.GetMod().GetLibrary<WebRequests>("WebRequests").EnqueueGet(url8, (code, response) =>
  3210.             {
  3211.                
  3212.                 var jsonresponse2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, jsonsettings);
  3213.                 var playervpnn2 = (jsonresponse2["responseData"]);
  3214.                 var jsonresponse = JsonConvert.DeserializeObject<Dictionary<string, object>>(playervpnn2.ToString(), jsonsettings);
  3215.                 var playervpn22 = (jsonresponse["translatedText"].ToString());
  3216.                 if(playervpn22.ToString() == "null")
  3217.                 {
  3218.                    
  3219.                     if(!data.ContainsKey("Language"))
  3220.                         data.Add("Language", "en");
  3221.                     phandler.forcefinish = true;
  3222.                     phandler.hasselectedlanguage = true;
  3223.                     return;
  3224.                 }
  3225.                 if(!languagee.ContainsKey("donotcrouchmsg"))
  3226.                     languagee.Add("donotcrouchmsg", playervpn22);
  3227.                 if(!data.ContainsKey("Language"))
  3228.                 data.Add("Language", language);
  3229.                 phandler.forcefinish = true;
  3230.                 phandler.hasselectedlanguage = true;
  3231.                 if(!languagee.ContainsKey("F2testmsg"))
  3232.                     languagee.Add("F2testmsg", playervpn22);
  3233.             }, this);
  3234.             if(!data.ContainsKey(netuser.playerClient.userID.ToString()))
  3235.                 data.Add(netuser.playerClient.userID.ToString(), language);
  3236.             phandler.hasselectedlanguage = true;
  3237.            
  3238.            
  3239.         }
  3240.         void GetcountryBytext(NetUser netuser, string Message)
  3241.         {
  3242.             PlayerHandler phandler = netuser.playerClient.GetComponent<PlayerHandler>();
  3243.             var url = string.Format("http://ws.detectlanguage.com/0.2/detect?q[]=" + Message + "&key=deac07df56b667691b986848135f58c4");
  3244.             Interface.GetMod().GetLibrary<WebRequests>("WebRequests").EnqueueGet(url, (code, response) =>
  3245.             {
  3246.  
  3247.                 var testb = response.ToString();
  3248.                 int pFrom = testb.IndexOf("language");
  3249.                 int pTo = testb.LastIndexOf("isReliable");
  3250.                 string result = testb.Substring(pFrom, pTo - pFrom);
  3251.                 var index2 = result.IndexOf("language");
  3252.                 var result2 = result.Remove(index2, 10);
  3253.                 var index3 = result2.IndexOf(",");
  3254.                 var result3 = result2.Remove(index3, 2);
  3255.                 var index4 = result3.IndexOf('"');
  3256.                 var result4 = result3.Remove(index4, 1);
  3257.                 var index5 = result4.IndexOf('"');
  3258.                 var result5 = result4.Remove(index5, 1);
  3259.                 var data = Getplayerdatastore(netuser.playerClient.userID.ToString());
  3260.                 if(result5.ToString() == "en")
  3261.                 {
  3262.                     var defaultenglishlanguage = Getplayerdatastore("en");
  3263.                     if(!defaultenglishlanguage.ContainsKey("speedjumptestmsg"))
  3264.                     {
  3265.                         defaultenglishlanguage.Add("F2testmsg", "Please Hold F2");
  3266.                         defaultenglishlanguage.Add("speedjumptestmsg", "Jump fast please");
  3267.                         defaultenglishlanguage.Add("norecoiltestmsg", "Please take out the weapon we have placed in your inventory");
  3268.                         defaultenglishlanguage.Add("nospreadtestmsg", "take out your weapon and shoot that wall");
  3269.                         defaultenglishlanguage.Add("Completedmsg", "Thank you for your cooperation you have completed all test's ");
  3270.                         defaultenglishlanguage.Add("donotcrouchmsg", "Please do not crouch during this test");
  3271.                         defaultenglishlanguage.Add("donotdcmessage", "Please do not Disconnect during this test");
  3272.                         defaultenglishlanguage.Add("Dorecoiltest", "Please press and Hold c");
  3273.                     }
  3274.                     if(!data.ContainsKey("Language"))
  3275.                         data.Add("Language", "en");
  3276.                     phandler.hasselectedlanguage = true;
  3277.                     phandler.forcefinish = true;
  3278.                     return;
  3279.                 }
  3280.                
  3281.                 SendReply(netuser, result5);
  3282.                 if(data.ContainsKey("Language"))
  3283.                 {
  3284.                     phandler.hasselectedlanguage = true;
  3285.                     phandler.forcefinish = true;
  3286.                     return;
  3287.                 }
  3288.                 dolanguage(netuser, result5);
  3289.                 return;
  3290.                 var jsonresponse = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, jsonsettings);
  3291.                 var playervpn = (jsonresponse["confidence:"].ToString());
  3292.                 SendReply(netuser, playervpn);
  3293.             }, this);
  3294.         }
  3295.  
  3296.         public bool Getinterface(string playervpn)
  3297.         {
  3298.             var url1 = string.Format("http://mymemory.translated.net/api/get?q=thank%20you%20hold%20F5%20please&langpair=en|" + playervpn);
  3299.             Interface.GetMod().GetLibrary<WebRequests>("WebRequests").EnqueueGet(url1, (code, response) =>
  3300.             {
  3301.                 var data = GetPlayerdata("AIAdmin(Lang.Log)");
  3302.                 var jsonresponse = JsonConvert.DeserializeObject<Dictionary<string, object>>(response, jsonsettings);
  3303.                 var playervpn22 = (jsonresponse["responseStatus"].ToString());
  3304.                 if(playervpn22.Contains("/"))
  3305.                     return;
  3306.                 if(playervpn22 == "403")
  3307.                     return;
  3308.                 data.Add(playervpn, playervpn2);
  3309.                 var playervpn2 = (jsonresponse["translation"].ToString());
  3310.                 if(!data.ContainsKey(playervpn))
  3311.                 return;
  3312.             }, this);
  3313.             return true;
  3314.         }
  3315.     }
  3316.    
  3317. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top