private static bool smethod_0(TruthDetector truthDetector_0, Vector3 vector3_0, ref Vector3 vector3_1) { RaycastHit hit; bool flag; MeshBatchInstance instance; Vector3 vector = vector3_1 - vector3_0; if (vector.magnitude == 0f) { return(false); } Ray ray = new Ray(vector3_0 + new Vector3(0f, 0.75f, 0f), vector.normalized); if (!Facepunch.MeshBatch.MeshBatchPhysics.SphereCast(ray, 0.1f, out hit, vector.magnitude, 0x20180403, out flag, out instance)) { return(false); } IDMain main = flag ? instance.idMain : IDBase.GetMain(hit.collider); GameObject obj2 = (main != null) ? main.gameObject : hit.collider.gameObject; string newValue = obj2.name.Trim(); DeployableObject obj3 = obj2.GetComponent <DeployableObject>(); StructureComponent component = obj2.GetComponent <StructureComponent>(); if (newValue == "") { newValue = "Mesh Texture"; } else if (obj3 != null) { newValue = Helper.NiceName(obj3.name); if (truthDetector_0.netUser.userID == obj3.ownerID) { return(false); } if (Users.SharedGet(obj3.ownerID, truthDetector_0.netUser.userID)) { return(false); } } else if (component != null) { newValue = Helper.NiceName(component.name); if (truthDetector_0.netUser.userID == component._master.ownerID) { return(false); } if (Users.SharedGet(component._master.ownerID, truthDetector_0.netUser.userID)) { return(false); } } PunishDetails = Config.GetMessageTruth("Truth.Punish.Reason.WallHack", truthDetector_0.netUser, "", 0, new DateTime()); PunishDetails = PunishDetails.Replace("%OBJECT.NAME%", newValue); PunishDetails = PunishDetails.Replace("%OBJECT.POS%", hit.point.AsString()); HackDetected = HackMethod.WallHack; vector3_1 = MoveBack(truthDetector_0, vector3_0, vector3_1); return(true); }
public static TruthDetector.ActionTaken TruthDetector_NoteMoved(TruthDetector truthDetector, ref Vector3 pos, Angle2 ang, double time) { object[] array = new object[] { truthDetector, pos, ang, time }; TruthDetector.ActionTaken result = (TruthDetector.ActionTaken)Method.Invoke("RustExtended.RustHook.TruthDetector_NoteMoved", array).AsObject; pos = (Vector3)array[1]; return(result); }
public static Vector3 MoveBack(TruthDetector detector, Vector3 oldpos, Vector3 newpos) { Vector3 pos = oldpos; if (!smethod_3(pos, newpos) && (detector.snapshots.length > 0)) { do { pos = detector.snapshots.array[detector.snapshots.end].pos; }while (!smethod_3(pos, newpos) && detector.Rollback()); detector.prevSnap = detector.snapshots.array[detector.snapshots.end]; } return(pos); }
public void TrueCheck() { Assert.IsTrue(TruthDetector.IsTrue(true)); }
public void FalseCheck() { Assert.IsFalse(TruthDetector.IsTrue(false)); }
public static void Main(string[] argsArray) { Console.WriteLine(TruthDetector.IsTrue(true)); }
private static bool smethod_2(TruthDetector truthDetector_0, Vector3 vector3_0, ref Vector3 vector3_1, double double_0) { if (double_0 > 0.0) { double num = ((double)(vector3_1.y - vector3_0.y)) / double_0; UserData bySteamID = Users.GetBySteamID(truthDetector_0.netUser.userID); Character idMain = truthDetector_0.netUser.playerClient.controllable.idMain; if (!FallHeight.ContainsKey(truthDetector_0.netUser)) { FallHeight.Add(truthDetector_0.netUser, 0.0); } if (!AirMovement.ContainsKey(truthDetector_0.netUser)) { AirMovement.Add(truthDetector_0.netUser, 0.0); } if (idMain.stateFlags.airborne) { AirMovement[truthDetector_0.netUser] = 0.0; } if ((CheckJumphack && (num > 0.0)) && ((idMain != null) && idMain.stateFlags.airborne)) { truthDetector_0.jumpHeight += num; if ((truthDetector_0.jumpHeight <= MaxJumpingHeight) && (num <= (MaxJumpingHeight * 2f))) { if (((server.log > 2) && Users.HasFlag(truthDetector_0.netUser.userID, UserFlags.admin)) && (truthDetector_0.jumpHeight > 1.0)) { Broadcast.Message(truthDetector_0.netUser, "JumpHeight: " + truthDetector_0.jumpHeight.ToString("0.0") + " of maximum " + MaxJumpingHeight.ToString("0.0"), "DEBUG", 0f); } } else { if ((server.log > 1) && Users.HasFlag(truthDetector_0.netUser.userID, UserFlags.admin)) { Broadcast.Message(truthDetector_0.netUser, "[COLOR#D02F2F]JumpHeight: " + truthDetector_0.jumpHeight.ToString("0.0") + " of maximum " + MaxJumpingHeight.ToString("0.0"), "DEBUG", 0f); } PunishDetails = Config.GetMessageTruth("Truth.Punish.Reason.JumpHack", truthDetector_0.netUser, "", 0, new DateTime()); PunishDetails = PunishDetails.Replace("%JUMP.HEIGHT%", truthDetector_0.jumpHeight.ToString("0.00")); PunishDetails = PunishDetails.Replace("%JUMP.MAXHEIGHT%", MaxJumpingHeight.ToString("0.00")); HackDetected = HackMethod.JumpHack; vector3_1 = MoveBack(truthDetector_0, vector3_0, vector3_1); } return(HackDetected == HackMethod.JumpHack); } if ((CheckFallhack && (num < 0.0)) && ((idMain != null) && idMain.stateFlags.airborne)) { Dictionary <NetUser, double> dictionary; NetUser user; (dictionary = FallHeight)[user = truthDetector_0.netUser] = dictionary[user] + (num = -num); if (((FallHeight[truthDetector_0.netUser] >= MinFallingHeight) && (bySteamID != null)) && (bySteamID.FallCheck != FallCheckState.damaged)) { bySteamID.FallCheck = FallCheckState.check; if (((server.log > 2) && Users.HasFlag(truthDetector_0.netUser.userID, UserFlags.admin)) && (FallHeight[truthDetector_0.netUser] > 1.0)) { Broadcast.Message(truthDetector_0.netUser, "[COLOR#D02F2F]FallHeight: " + FallHeight[truthDetector_0.netUser].ToString("0.00") + " of minimum " + MinFallingHeight.ToString("0.0"), "DEBUG", 0f); } } else if (((server.log > 2) && Users.HasFlag(truthDetector_0.netUser.userID, UserFlags.admin)) && (FallHeight[truthDetector_0.netUser] > 1.0)) { Broadcast.Message(truthDetector_0.netUser, "FallHeight: " + FallHeight[truthDetector_0.netUser].ToString("0.00") + " of minimum " + MinFallingHeight.ToString("0.0"), "DEBUG", 0f); } } else if (!idMain.stateFlags.airborne) { if (CheckFallhack && (FallHeight[truthDetector_0.netUser] >= MinFallingHeight)) { if ((bySteamID != null) && (bySteamID.FallCheck == FallCheckState.check)) { PunishDetails = Config.GetMessageTruth("Truth.Punish.Reason.FallHack", truthDetector_0.netUser, "", 0, new DateTime()); PunishDetails = PunishDetails.Replace("%FALL.HEIGHT%", FallHeight[truthDetector_0.netUser].ToString("0.00")); PunishDetails = PunishDetails.Replace("%FALL.MINHEIGHT%", MinFallingHeight.ToString("0.00")); HackDetected = HackMethod.FallHack; } } else if (Facepunch.MeshBatch.MeshBatchPhysics.OverlapSphere(vector3_1, 0.5f, 0x20180403).Length == 0) { Dictionary <NetUser, double> dictionary2; NetUser user2; (dictionary2 = AirMovement)[user2 = truthDetector_0.netUser] = dictionary2[user2] + 1.0; if (AirMovement[truthDetector_0.netUser] > NetCull.sendRate) { PunishDetails = Config.GetMessageTruth("Truth.Punish.Reason.MoveHack", truthDetector_0.netUser, "", 0, new DateTime()); AirMovement[truthDetector_0.netUser] = 0.0; HackDetected = HackMethod.MoveHack; } } bySteamID.FallCheck = FallCheckState.none; FallHeight[truthDetector_0.netUser] = truthDetector_0.jumpHeight = 0.0; if (HackDetected != HackMethod.FallHack) { return(HackDetected == HackMethod.MoveHack); } return(true); } } return(false); }
private static bool smethod_1(TruthDetector truthDetector_0, Vector3 vector3_0, Vector3 vector3_1, double double_0) { Predicate <EventTimer> match = null; Predicate <EventTimer> predicate2 = null; Predicate <EventTimer> predicate3 = null; Class48 class2 = new Class48 { truthDetector_0 = truthDetector_0 }; if (double_0 > 0.0) { Vector2 vector = new Vector2(vector3_1.x - vector3_0.x, vector3_1.z - vector3_0.z); double magnitude = vector.magnitude; double num2 = magnitude / double_0; if (num2 == 0.0) { return(false); } if (match == null) { match = new Predicate <EventTimer>(class2.method_0); } EventTimer timer = Events.Timer.Find(match); if (timer != null) { timer.Dispose(); Broadcast.Notice(class2.truthDetector_0.netUser.networkPlayer, "☢", Config.GetMessageCommand("Command.Home.Interrupt", "", class2.truthDetector_0.netUser), 5f); } if (predicate2 == null) { predicate2 = new Predicate <EventTimer>(class2.method_1); } EventTimer timer2 = Events.Timer.Find(predicate2); if (timer2 != null) { timer2.Dispose(); Broadcast.Notice(class2.truthDetector_0.netUser.networkPlayer, "☢", Config.GetMessageCommand("Command.Clan.Warp.Interrupt", "", class2.truthDetector_0.netUser), 5f); } if (predicate3 == null) { predicate3 = new Predicate <EventTimer>(class2.method_2); } EventTimer timer3 = Events.Timer.Find(predicate3); if (timer3 != null) { if (timer3.Sender != null) { Broadcast.Notice(timer3.Sender, "☢", Config.GetMessageCommand("Command.Teleport.Interrupt", "", timer3.Sender), 5f); } if (timer3.Target != null) { Broadcast.Notice(timer3.Target, "☢", Config.GetMessageCommand("Command.Teleport.Interrupt", "", timer3.Target), 5f); } timer3.Dispose(); } if (num2 > MaxMovementSpeed) { if ((server.log > 1) && Users.HasFlag(class2.truthDetector_0.netUser.userID, UserFlags.admin)) { Broadcast.Message(class2.truthDetector_0.netUser, "[COLOR#D02F2F]MovementSpeed: " + num2.ToString("0.0") + " of maximum " + MaxMovementSpeed.ToString("0.0"), "DEBUG", 0f); } PunishDetails = Config.GetMessageTruth("Truth.Punish.Reason.SpeedHack", class2.truthDetector_0.netUser, "", 0, new DateTime()); PunishDetails = PunishDetails.Replace("%SPEED.MOVEMENT%", num2.ToString("0.00")); PunishDetails = PunishDetails.Replace("%SPEED.MAXIMUM%", MaxMovementSpeed.ToString("0.00")); HackDetected = HackMethod.SpeedHack; vector3_1 = MoveBack(class2.truthDetector_0, vector3_0, vector3_1); return(true); } if (((server.log > 2) && Users.HasFlag(class2.truthDetector_0.netUser.userID, UserFlags.admin)) && (num2 > 1.0)) { Broadcast.Message(class2.truthDetector_0.netUser, "MovementSpeed: " + num2.ToString("0.0") + " of maximum " + MaxMovementSpeed.ToString("0.0"), "DEBUG", 0f); } } return(false); }
public static TruthDetector.ActionTaken NoteMoved(TruthDetector detector, ref Vector3 pos, Angle2 ang, double time) { UserData userData = null; HackDetected = HackMethod.None; actionTaken_0 = TruthDetector.ActionTaken.None; try { uint notedTime = detector.notedTime; detector.notedTime = (uint)Environment.TickCount; if (notedTime > 0) { notedTime = ((uint)Environment.TickCount) - notedTime; } userData = Users.GetBySteamID(detector.netUser.userID); if (detector.prevSnap.time > 0.0) { double num2 = time - detector.prevSnap.time; if (detector.ignoreSeconds > 0.0) { if (time > detector.prevSnap.time) { detector.ignoreSeconds -= num2; } } else if (!detector.netUser.admin && !Exclude.Contains(detector.netUser.userID)) { if (CheckWallhack && smethod_0(detector, detector.prevSnap.pos, ref pos)) { actionTaken_0 = TruthDetector.ActionTaken.Moved; } else if (CheckSpeedhack && smethod_1(detector, detector.prevSnap.pos, pos, num2)) { actionTaken_0 = TruthDetector.ActionTaken.Moved; } else if (smethod_2(detector, detector.prevSnap.pos, ref pos, num2)) { actionTaken_0 = TruthDetector.ActionTaken.Moved; } } } if (actionTaken_0 == TruthDetector.ActionTaken.None) { detector.prevSnap.pos = pos; detector.prevSnap.time = time; detector.Record(); if (detector.violation > 0) { detector.violation--; } if (((userData != null) && (userData.Violations > 0)) && (userData.ViolationDate.Ticks > 0L)) { DateTime time2 = userData.ViolationDate.AddMinutes((double)ViolationTimelife); if (time2 < DateTime.Now) { userData.ViolationDate = time2; userData.Violations--; } } } else if ((truth.punish && (notedTime > 0)) && (notedTime > detector.netUser.networkPlayer.averagePing)) { actionTaken_0 = Punish(detector.netUser, userData, HackDetected, false); PunishReason = ""; PunishDetails = ""; } } catch (Exception exception) { Helper.LogError(exception.ToString(), true); } return(actionTaken_0); }