public void ClientHealthChange(float amount, GameObject attacker) { float health = base.health; base.AdjustClientSideHealth(amount); float num2 = amount; float num3 = Mathf.Abs((float)(num2 - health)); bool flag = amount < health; float healthFraction = base.healthFraction; if (base.localControlled && (num3 >= 1f)) { base.GetComponent <LocalDamageDisplay>().SetNewHealthPercent(healthFraction, attacker); } if ((((attacker != null) && flag) && (num3 >= 1f)) && ((hudDamagePrefab != null) || Bundling.Load <HUDDirectionalDamage>("content/hud/DirectionalDamage", out hudDamagePrefab))) { Vector3 vector; Character character; if (IDBase.GetMain <Character>(attacker, out character)) { vector = base.eyesOrigin - character.eyesOrigin; } else { vector = base.origin - attacker.transform.position; } HUDDirectionalDamage.CreateIndicator(vector, (double)amount, NetCull.time, 1.6000000238418579, hudDamagePrefab); } RPOS.HealthUpdate(amount); }
// Token: 0x060003B3 RID: 947 RVA: 0x00011884 File Offset: 0x0000FA84 public void ClientHealthChange(float amount, GameObject attacker) { float health = base.health; base.AdjustClientSideHealth(amount); float num = Mathf.Abs(amount - health); bool flag = amount < health; float healthFraction = base.healthFraction; if (base.localControlled && num >= 1f) { base.GetComponent <global::LocalDamageDisplay>().SetNewHealthPercent(healthFraction, attacker); } if (attacker && flag && num >= 1f && (global::ClientVitalsSync.hudDamagePrefab || Facepunch.Bundling.Load <global::HUDDirectionalDamage>("content/hud/DirectionalDamage", out global::ClientVitalsSync.hudDamagePrefab))) { global::Character character; Vector3 worldDamageDirection; if (IDBase.GetMain <global::Character>(attacker, ref character)) { worldDamageDirection = base.eyesOrigin - character.eyesOrigin; } else { worldDamageDirection = base.origin - attacker.transform.position; } global::HUDDirectionalDamage.CreateIndicator(worldDamageDirection, (double)amount, global::NetCull.time, 1.6000000238418579, global::ClientVitalsSync.hudDamagePrefab); } global::RPOS.HealthUpdate(amount); }
// Token: 0x06000426 RID: 1062 RVA: 0x00014C84 File Offset: 0x00012E84 private static bool GetCharacterStuff(ref global::ConsoleSystem.Arg args, out global::Character character, out global::CameraMount camera, out global::ItemRepresentation itemRep, out global::ArmorModelRenderer armor) { character = null; itemRep = null; armor = null; camera = global::CameraMount.current; if (!camera) { args.ReplyWith("Theres no active camera mount."); return(false); } character = (IDBase.GetMain(camera) as global::Character); if (!character) { args.ReplyWith("theres no character for the current mounted camera"); return(false); } armor = character.GetLocal <global::ArmorModelRenderer>(); global::InventoryHolder local = character.GetLocal <global::InventoryHolder>(); if (local) { itemRep = local.itemRepresentation; } return(true); }
// Token: 0x0600063E RID: 1598 RVA: 0x00046938 File Offset: 0x00044B38 public static GameObject GetLineObject(Vector3 start, Vector3 end, out Vector3 point, int layerMask = -1) { point = Vector3.zero; RaycastHit raycastHit; bool flag2; MeshBatchInstance meshBatchInstance; bool flag = !Facepunch.MeshBatch.MeshBatchPhysics.Linecast(start, end, out raycastHit, layerMask, out flag2, out meshBatchInstance); GameObject result; if (flag) { result = null; } else { IDMain idmain = flag2 ? meshBatchInstance.idMain : IDBase.GetMain(raycastHit.collider); point = raycastHit.point; bool flag3 = !(idmain != null); if (flag3) { result = raycastHit.collider.gameObject; } else { result = idmain.gameObject; } } return(result); }
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); }
// Token: 0x06000269 RID: 617 RVA: 0x0000CEF8 File Offset: 0x0000B0F8 public void TryReportHit(GameObject hitGameObject) { if (this._myItemInstance != null && !this.reported) { this.reported = true; IDMain main = IDBase.GetMain(hitGameObject); this._myItemInstance.ArrowReportHit(main, this); } }
public static EventTimer TimeEvent_TeleportTo(NetUser Sender, NetUser Target, string Command, double time) { Class38 class2 = new Class38 { netUser_0 = Sender, netUser_1 = Target, string_0 = Command }; if (Core.CommandTeleportOutdoorsOnly) { foreach (Collider collider in Physics.OverlapSphere(class2.netUser_1.playerClient.controllable.character.transform.position, 1f, 0x10360401)) { IDMain main = IDBase.GetMain(collider); if (main != null) { StructureMaster component = main.GetComponent <StructureMaster>(); if (((component != null) && (component.ownerID != class2.netUser_0.userID)) && (component.ownerID != class2.netUser_1.userID)) { UserData bySteamID = Users.GetBySteamID(component.ownerID); if ((bySteamID == null) || (!bySteamID.HasShared(class2.netUser_0.userID) && !bySteamID.HasShared(class2.netUser_1.userID))) { Broadcast.Notice(class2.netUser_0, "☢", Config.GetMessage("Command.Teleport.NoTeleport", class2.netUser_0, class2.netUser_1.displayName), 5f); Broadcast.Notice(class2.netUser_1, "☢", Config.GetMessage("Command.Teleport.NotHere", class2.netUser_1, class2.netUser_0.displayName), 5f); return(null); } } } } } Broadcast.Message(class2.netUser_0, Config.GetMessage("Command.Teleport.IsConfirm", class2.netUser_0, null).Replace("%USERNAME%", class2.netUser_1.displayName), null, 0f); Broadcast.Message(class2.netUser_1, Config.GetMessage("Command.Teleport.Confirmed", class2.netUser_1, null).Replace("%USERNAME%", class2.netUser_0.displayName), null, 0f); if (!Character.FindByUser(class2.netUser_1.userID, out class2.character_0)) { return(null); } if (time <= 0.0) { Teleport_PlayerTo(null, class2.netUser_0, class2.netUser_1, class2.string_0, class2.character_0.transform.position); return(null); } EventTimer timer = new EventTimer { Interval = time * 1000.0, AutoReset = false }; timer.Elapsed += new ElapsedEventHandler(class2.method_0); timer.Sender = class2.netUser_0; timer.Target = class2.netUser_1; timer.Command = class2.string_0; Broadcast.Notice(class2.netUser_0, "☢", Config.GetMessage("Command.Teleport.Timewait", class2.netUser_0, null).Replace("%TIME%", timer.TimeLeft.ToString()), 5f); Broadcast.Notice(class2.netUser_1, "☢", Config.GetMessage("Command.Teleport.Timewait", class2.netUser_1, null).Replace("%TIME%", timer.TimeLeft.ToString()), 5f); timer.Start(); return(timer); }
public GameObject GetLineObject(Vector3 start, Vector3 end, out Vector3 point, int layerMask = -1) { RaycastHit hit; bool flag; MeshBatchInstance instance; point = Vector3.zero; if (!Facepunch.MeshBatch.MeshBatchPhysics.Linecast(start, end, out hit, layerMask, out flag, out instance)) { return(null); } IDMain main = flag ? instance.idMain : IDBase.GetMain(hit.collider); point = hit.point; return((main != null) ? main.gameObject : hit.collider.gameObject); }
public GameObject GetLookObject(Ray ray, out Vector3 point, float distance = 300f, int layerMask = -1) { RaycastHit hit; bool flag; MeshBatchInstance instance; point = Vector3.zero; if (!Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray, out hit, distance, layerMask, out flag, out instance)) { return(null); } IDMain main = flag ? instance.idMain : IDBase.GetMain(hit.collider); point = hit.point; return((main != null) ? main.gameObject : hit.collider.gameObject); }
public static Hardpoint GetHardpointFromRay(Ray ray, Hardpoint.hardpoint_type type) { RaycastHit raycastHit; bool flag; MeshBatchInstance meshBatchInstance; if (Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray, out raycastHit, 10f, out flag, out meshBatchInstance)) { IDMain dMain = (!flag ? IDBase.GetMain(raycastHit.collider) : meshBatchInstance.idMain); if (dMain) { HardpointMaster component = dMain.GetComponent <HardpointMaster>(); if (component) { return(component.GetHardpointNear(raycastHit.point, type)); } } } return(null); }
// Token: 0x06003BDE RID: 15326 RVA: 0x000D5B3C File Offset: 0x000D3D3C public static global::Hardpoint GetHardpointFromRay(Ray ray, global::Hardpoint.hardpoint_type type) { RaycastHit raycastHit; bool flag; MeshBatchInstance meshBatchInstance; if (Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray, ref raycastHit, 10f, ref flag, ref meshBatchInstance)) { IDMain idmain = (!flag) ? IDBase.GetMain(raycastHit.collider) : meshBatchInstance.idMain; if (idmain) { global::HardpointMaster component = idmain.GetComponent <global::HardpointMaster>(); if (component) { return(component.GetHardpointNear(raycastHit.point, type)); } } } return(null); }
public void GrabCarrier() { RaycastHit raycastHit; bool flag; MeshBatchInstance meshBatchInstance; Ray ray = new Ray(base.transform.position + (Vector3.up * 0.01f), Vector3.down); if (Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray, out raycastHit, 5f, out flag, out meshBatchInstance)) { IDMain dMain = (!flag ? IDBase.GetMain(raycastHit.collider) : meshBatchInstance.idMain); if (dMain) { TransCarrier local = dMain.GetLocal <TransCarrier>(); if (local) { local.AddObject(this); } } } }
// Token: 0x0600367F RID: 13951 RVA: 0x000C5808 File Offset: 0x000C3A08 public bool CheckBlockers(Vector3 pos) { if (this._structureToPlace.type == global::StructureComponent.StructureComponentType.Foundation) { Collider[] array = Physics.OverlapSphere(pos, 12f, 271975425); foreach (Collider collider in array) { IDMain main = IDBase.GetMain(collider.gameObject); if (main) { float num = global::TransformHelpers.Dist2D(main.transform.position, pos); if (main.GetComponent <global::SpikeWall>() && num < 5f) { return(false); } } } } return(global::NoPlacementZone.ValidPos(pos)); }
public void GrabCarrier() { RaycastHit hit; bool flag; MeshBatchInstance instance; Ray ray = new Ray(base.transform.position + ((Vector3)(Vector3.up * 0.01f)), Vector3.down); if (Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray, out hit, 5f, out flag, out instance)) { IDMain main = !flag?IDBase.GetMain(hit.collider) : instance.idMain; if (main != null) { TransCarrier local = main.GetLocal <TransCarrier>(); if (local != null) { local.AddObject(this); } } } }
public static Hardpoint GetHardpointFromRay(Ray ray, hardpoint_type type) { RaycastHit hit; bool flag; MeshBatchInstance instance; if (Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray, out hit, 10f, out flag, out instance)) { IDMain main = !flag?IDBase.GetMain(hit.collider) : instance.idMain; if (main != null) { HardpointMaster component = main.GetComponent <HardpointMaster>(); if (component != null) { return(component.GetHardpointNear(hit.point, type)); } } } return(null); }
// Token: 0x06003C1A RID: 15386 RVA: 0x000D6C94 File Offset: 0x000D4E94 public void GrabCarrier() { Ray ray; ray..ctor(base.transform.position + Vector3.up * 0.01f, Vector3.down); RaycastHit raycastHit; bool flag; MeshBatchInstance meshBatchInstance; if (Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray, ref raycastHit, 5f, ref flag, ref meshBatchInstance)) { IDMain idmain = (!flag) ? IDBase.GetMain(raycastHit.collider) : meshBatchInstance.idMain; if (idmain) { global::TransCarrier local = idmain.GetLocal <global::TransCarrier>(); if (local) { local.AddObject(this); } } } }
public void ClientHealthChange(float amount, GameObject attacker) { Vector3 vector3; Character character; float single = base.health; base.AdjustClientSideHealth(amount); float single1 = Mathf.Abs(amount - single); bool flag = amount < single; float single2 = base.healthFraction; if (base.localControlled && single1 >= 1f) { base.GetComponent <LocalDamageDisplay>().SetNewHealthPercent(single2, attacker); } if (attacker && flag && single1 >= 1f && (ClientVitalsSync.hudDamagePrefab || Bundling.Load <HUDDirectionalDamage>("content/hud/DirectionalDamage", out ClientVitalsSync.hudDamagePrefab))) { vector3 = (!IDBase.GetMain <Character>(attacker, out character) ? base.origin - attacker.transform.position : base.eyesOrigin - character.eyesOrigin); HUDDirectionalDamage.CreateIndicator(vector3, (double)amount, NetCull.time, 1.60000002384186, ClientVitalsSync.hudDamagePrefab); } RPOS.HealthUpdate(amount); }
public bool CheckBlockers(Vector3 pos) { if (this._structureToPlace.type == StructureComponent.StructureComponentType.Foundation) { foreach (Collider collider in Physics.OverlapSphere(pos, 12f, 0x10360401)) { IDMain main = IDBase.GetMain(collider.gameObject); if (main != null) { float num2 = TransformHelpers.Dist2D(main.transform.position, pos); if ((main.GetComponent <SpikeWall>() != null) && (num2 < 5f)) { return(false); } } } } if (!NoPlacementZone.ValidPos(pos)) { return(false); } return(true); }
public bool CheckBlockers(Vector3 pos) { if (this._structureToPlace.type == StructureComponent.StructureComponentType.Foundation) { Collider[] colliderArray = Physics.OverlapSphere(pos, 12f, 271975425); for (int i = 0; i < (int)colliderArray.Length; i++) { IDMain main = IDBase.GetMain(colliderArray[i].gameObject); if (main) { float single = TransformHelpers.Dist2D(main.transform.position, pos); if (main.GetComponent <SpikeWall>() && single < 5f) { return(false); } } } } if (!NoPlacementZone.ValidPos(pos)) { return(false); } return(true); }
public void CheckPlacementResults(Ray ray, out Vector3 pos, out Quaternion rot, out TransCarrier carrier, out DeployableItemDataBlock.DeployPlaceResults results) { results = new DeployableItemDataBlock.DeployPlaceResults(); RaycastHit raycastHit; Vector3 vector3; Vector3 vector31; bool flag; MeshBatchInstance meshBatchInstance; Ray ray1; float single; RaycastHit raycastHit1; bool flag1; MeshBatchInstance meshBatchInstance1; Quaternion quaternion; bool flag2; float single1 = this.placeRange; IDMain dMain = null; bool flag3 = false; bool flag4 = false; bool flag5 = false; DeployableObject deployableObject = null; bool flag6 = false; bool flag7 = false; bool flag8 = this.minCastRadius >= 1.401298E-45f; bool flag9 = (!flag8 ? Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray, out raycastHit, single1, -472317957, out flag, out meshBatchInstance) : Facepunch.MeshBatch.MeshBatchPhysics.SphereCast(ray, this.minCastRadius, out raycastHit, single1, -472317957, out flag, out meshBatchInstance)); Vector3 point = ray.GetPoint(single1); if (!flag9) { Vector3 vector32 = point; vector32.y = vector32.y + 0.5f; flag6 = Facepunch.MeshBatch.MeshBatchPhysics.Raycast(vector32, Vector3.down, out raycastHit, 5f, -472317957, out flag, out meshBatchInstance); } if (flag9 || flag6) { dMain = (!flag ? IDBase.GetMain(raycastHit.collider) : meshBatchInstance.idMain); flag5 = (dMain is StructureComponent ? true : dMain is StructureMaster); vector3 = raycastHit.point; vector31 = raycastHit.normal; if (flag5) { flag2 = false; } else { DeployableObject deployableObject1 = dMain as DeployableObject; deployableObject = deployableObject1; flag2 = deployableObject1; } flag3 = flag2; if (this.carrierSphereCastMode == DeployableItemDataBlock.CarrierSphereCastMode.Allowed || !flag9 || !flag8 || DeployableItemDataBlock.NonVariantSphereCast(ray, vector3)) { carrier = ((!dMain ? raycastHit.collider.gameObject : dMain.gameObject)).GetComponent <TransCarrier>(); } else { if (this.carrierSphereCastMode != DeployableItemDataBlock.CarrierSphereCastMode.AdjustedRay) { single = single1 + this.minCastRadius; ray1 = ray; } else { Vector3 vector33 = ray.origin; Vector3 vector34 = raycastHit.point - vector33; single = vector34.magnitude + this.minCastRadius * 2f; ray1 = new Ray(vector33, vector34); Debug.DrawLine(ray.origin, ray.GetPoint(single), Color.cyan); } bool flag10 = Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray1, out raycastHit1, single, -472317957, out flag1, out meshBatchInstance1); bool flag11 = flag10; if (!flag10) { Vector3 vector35 = vector3; vector35.y = vector35.y + 0.5f; flag11 = Facepunch.MeshBatch.MeshBatchPhysics.Raycast(vector35, Vector3.down, out raycastHit1, 5f, -472317957, out flag1, out meshBatchInstance1); } if (!flag11) { carrier = null; } else { IDMain dMain1 = (!flag1 ? IDBase.GetMain(raycastHit1.collider) : meshBatchInstance1.idMain); carrier = (!dMain1 ? raycastHit1.collider.GetComponent <TransCarrier>() : dMain1.GetLocal <TransCarrier>()); } } flag4 = (raycastHit.collider is TerrainCollider ? true : raycastHit.collider.gameObject.layer == 10); flag7 = true; } else { vector3 = point; vector31 = Vector3.up; carrier = null; } bool flag12 = false; Hardpoint hardpointFromRay = null; if (this.hardpointType != Hardpoint.hardpoint_type.None) { hardpointFromRay = Hardpoint.GetHardpointFromRay(ray, this.hardpointType); if (hardpointFromRay) { flag12 = true; vector3 = hardpointFromRay.transform.position; vector31 = hardpointFromRay.transform.up; carrier = hardpointFromRay.GetMaster().GetTransCarrier(); flag7 = true; } } bool flag13 = false; if (this.spacingRadius > 0f) { Collider[] colliderArray = Physics.OverlapSphere(vector3, this.spacingRadius); int num = 0; while (num < (int)colliderArray.Length) { Collider collider = colliderArray[num]; GameObject gameObject = collider.gameObject; IDBase component = collider.gameObject.GetComponent <IDBase>(); if (component != null) { gameObject = component.idMain.gameObject; } if (!gameObject.CompareTag(this.ObjectToPlace.gameObject.tag) || Vector3.Distance(vector3, gameObject.transform.position) >= this.spacingRadius) { num++; } else { flag13 = true; break; } } } bool flag14 = false; if (flag3 && !this.forcePlaceable && deployableObject.cantPlaceOn) { flag14 = true; } pos = vector3; if (this.orientationMode == DeployableOrientationMode.Default) { if (!this.uprightOnly) { this.orientationMode = DeployableOrientationMode.NormalUp; } else { this.orientationMode = DeployableOrientationMode.Upright; } } switch (this.orientationMode) { case DeployableOrientationMode.NormalUp: { quaternion = TransformHelpers.LookRotationForcedUp(ray.direction, vector31); break; } case DeployableOrientationMode.Upright: { quaternion = TransformHelpers.LookRotationForcedUp(ray.direction, Vector3.up); break; } case DeployableOrientationMode.NormalForward: { Vector3 vector36 = Vector3.Cross(ray.direction, Vector3.up); quaternion = TransformHelpers.LookRotationForcedUp(vector36, vector31); break; } case DeployableOrientationMode.HardpointPosRot: { quaternion = (!flag12 ? TransformHelpers.LookRotationForcedUp(ray.direction, Vector3.up) : hardpointFromRay.transform.rotation); break; } default: { throw new NotImplementedException(); } } rot = quaternion * this.ObjectToPlace.transform.localRotation; bool flag15 = false; if (this.checkPlacementZones) { flag15 = NoPlacementZone.ValidPos(pos); } float single2 = Vector3.Angle(vector31, Vector3.up); results.falseFromDeployable = (this.CanStackOnDeployables || !flag3 ? flag14 : true); results.falseFromTerrian = (!this.TerrainOnly ? false : !flag4); results.falseFromClose = (this.spacingRadius <= 0f ? false : flag13); results.falseFromHardpoint = (!this.requireHardpoint ? false : !flag12); results.falseFromAngle = (this.requireHardpoint ? false : single2 >= this.ObjectToPlace.maxSlope); results.falseFromPlacementZone = (!this.checkPlacementZones ? false : !flag15); results.falseFromHittingNothing = !flag7; results.falseFromStructure = (!this.StructureOnly ? false : !flag5); results.falseFromFitRequirements = (this.fitRequirements == null ? false : !this.fitRequirements.Test(pos, (!this.fitTestForcedUp ? rot : TransformHelpers.LookRotationForcedUp(rot, Vector3.up)), this.ObjectToPlace.transform.localScale)); }
// Token: 0x060033CD RID: 13261 RVA: 0x000C2024 File Offset: 0x000C0224 public void CheckPlacementResults(Ray ray, out Vector3 pos, out Quaternion rot, out global::TransCarrier carrier, out global::DeployableItemDataBlock.DeployPlaceResults results) { float num = this.placeRange; bool flag = false; bool flag2 = false; bool flag3 = false; global::DeployableObject deployableObject = null; bool flag4 = false; bool flag5 = false; bool flag6 = this.minCastRadius >= float.Epsilon; RaycastHit raycastHit; bool flag8; MeshBatchInstance meshBatchInstance; bool flag7 = (!flag6) ? Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray, ref raycastHit, num, -472317957, ref flag8, ref meshBatchInstance) : Facepunch.MeshBatch.MeshBatchPhysics.SphereCast(ray, this.minCastRadius, ref raycastHit, num, -472317957, ref flag8, ref meshBatchInstance); Vector3 point = ray.GetPoint(num); if (!flag7) { Vector3 vector = point; vector.y += 0.5f; flag4 = Facepunch.MeshBatch.MeshBatchPhysics.Raycast(vector, Vector3.down, ref raycastHit, 5f, -472317957, ref flag8, ref meshBatchInstance); } Vector3 vector2; Vector3 vector3; if (flag7 || flag4) { IDMain idmain = (!flag8) ? IDBase.GetMain(raycastHit.collider) : meshBatchInstance.idMain; flag3 = (idmain is global::StructureComponent || idmain is global::StructureMaster); vector2 = raycastHit.point; vector3 = raycastHit.normal; flag = (!flag3 && (deployableObject = (idmain as global::DeployableObject))); if (this.carrierSphereCastMode != global::DeployableItemDataBlock.CarrierSphereCastMode.Allowed && flag7 && flag6 && !global::DeployableItemDataBlock.NonVariantSphereCast(ray, vector2)) { float num2; Ray ray2; if (this.carrierSphereCastMode == global::DeployableItemDataBlock.CarrierSphereCastMode.AdjustedRay) { Vector3 origin = ray.origin; Vector3 point2 = raycastHit.point; Vector3 vector4 = point2 - origin; num2 = vector4.magnitude + this.minCastRadius * 2f; ray2..ctor(origin, vector4); Debug.DrawLine(ray.origin, ray.GetPoint(num2), Color.cyan); } else { num2 = num + this.minCastRadius; ray2 = ray; } RaycastHit raycastHit2; bool flag10; MeshBatchInstance meshBatchInstance2; bool flag9; if (!(flag9 = Facepunch.MeshBatch.MeshBatchPhysics.Raycast(ray2, ref raycastHit2, num2, -472317957, ref flag10, ref meshBatchInstance2))) { Vector3 vector5 = vector2; vector5.y += 0.5f; flag9 = Facepunch.MeshBatch.MeshBatchPhysics.Raycast(vector5, Vector3.down, ref raycastHit2, 5f, -472317957, ref flag10, ref meshBatchInstance2); } if (flag9) { IDMain idmain2 = (!flag10) ? IDBase.GetMain(raycastHit2.collider) : meshBatchInstance2.idMain; carrier = ((!idmain2) ? raycastHit2.collider.GetComponent <global::TransCarrier>() : idmain2.GetLocal <global::TransCarrier>()); } else { carrier = null; } } else { carrier = ((!idmain) ? raycastHit.collider.gameObject : idmain.gameObject).GetComponent <global::TransCarrier>(); } flag2 = (raycastHit.collider is TerrainCollider || raycastHit.collider.gameObject.layer == 10); flag5 = true; } else { vector2 = point; vector3 = Vector3.up; carrier = null; } bool flag11 = false; global::Hardpoint hardpoint = null; if (this.hardpointType != global::Hardpoint.hardpoint_type.None) { hardpoint = global::Hardpoint.GetHardpointFromRay(ray, this.hardpointType); if (hardpoint) { flag11 = true; vector2 = hardpoint.transform.position; vector3 = hardpoint.transform.up; carrier = hardpoint.GetMaster().GetTransCarrier(); flag5 = true; } } bool flag12 = false; if (this.spacingRadius > 0f) { Collider[] array = Physics.OverlapSphere(vector2, this.spacingRadius); foreach (Collider collider in array) { GameObject gameObject = collider.gameObject; IDBase component = collider.gameObject.GetComponent <IDBase>(); if (component != null) { gameObject = component.idMain.gameObject; } if (gameObject.CompareTag(this.ObjectToPlace.gameObject.tag) && Vector3.Distance(vector2, gameObject.transform.position) < this.spacingRadius) { flag12 = true; break; } } } bool flag13 = false; if (flag && !this.forcePlaceable && deployableObject.cantPlaceOn) { flag13 = true; } pos = vector2; if (this.orientationMode == global::DeployableOrientationMode.Default) { if (this.uprightOnly) { this.orientationMode = global::DeployableOrientationMode.Upright; } else { this.orientationMode = global::DeployableOrientationMode.NormalUp; } } Quaternion quaternion; switch (this.orientationMode) { case global::DeployableOrientationMode.NormalUp: quaternion = global::TransformHelpers.LookRotationForcedUp(ray.direction, vector3); break; case global::DeployableOrientationMode.Upright: quaternion = global::TransformHelpers.LookRotationForcedUp(ray.direction, Vector3.up); break; case global::DeployableOrientationMode.NormalForward: { Vector3 forward = Vector3.Cross(ray.direction, Vector3.up); quaternion = global::TransformHelpers.LookRotationForcedUp(forward, vector3); break; } case global::DeployableOrientationMode.HardpointPosRot: if (flag11) { quaternion = hardpoint.transform.rotation; } else { quaternion = global::TransformHelpers.LookRotationForcedUp(ray.direction, Vector3.up); } break; default: throw new NotImplementedException(); } rot = quaternion * this.ObjectToPlace.transform.localRotation; bool flag14 = false; if (this.checkPlacementZones) { flag14 = global::NoPlacementZone.ValidPos(pos); } float num3 = Vector3.Angle(vector3, Vector3.up); results.falseFromDeployable = ((!this.CanStackOnDeployables && flag) || flag13); results.falseFromTerrian = (this.TerrainOnly && !flag2); results.falseFromClose = (this.spacingRadius > 0f && flag12); results.falseFromHardpoint = (this.requireHardpoint && !flag11); results.falseFromAngle = (!this.requireHardpoint && num3 >= this.ObjectToPlace.maxSlope); results.falseFromPlacementZone = (this.checkPlacementZones && !flag14); results.falseFromHittingNothing = !flag5; results.falseFromStructure = (this.StructureOnly && !flag3); results.falseFromFitRequirements = (this.fitRequirements != null && !this.fitRequirements.Test(pos, (!this.fitTestForcedUp) ? rot : global::TransformHelpers.LookRotationForcedUp(rot, Vector3.up), this.ObjectToPlace.transform.localScale)); }
public static bool Test_WeaponShot(Character Killer, GameObject hitObj, IBulletWeaponItem weapon, ItemRepresentation rep, Transform transform, Vector3 endPos, bool isHeadshot) { if ((Killer == null) || (transform == null)) { return(true); } if (((transform == null) || (Killer == null)) || (Killer.netUser == null)) { return(true); } if ((float.IsNaN(endPos.x) || float.IsNaN(endPos.y)) || float.IsNaN(endPos.z)) { return(true); } Character component = hitObj.GetComponent <Character>(); NetUser key = ((Killer == null) || (Killer.controllable == null)) ? null : Killer.netUser; NetUser user2 = ((component == null) || (component.controllable == null)) ? null : component.netUser; Vector3 origin = Helper.GetEyesRay(Killer).origin; float num = Vector3.Distance(origin, endPos); float bulletRange = ((BulletWeaponDataBlock)rep.datablock).bulletRange; if (component == null) { if (num > bulletRange) { return(true); } foreach (Collider collider in Physics.OverlapSphere(Killer.eyesRay.origin, 0.2f)) { IDBase base2 = collider.gameObject.GetComponent <IDBase>(); if ((base2 != null) && (base2.idMain is StructureMaster)) { return(true); } } IDMain idMain = IDBase.GetMain(hitObj).idMain; if ((idMain.GetComponent <StructureComponent>() == null) && (idMain.GetComponent <SleepingAvatar>() == null)) { Ray lookRay = Helper.GetLookRay(Killer); Vector3 position = hitObj.transform.position; position.y += 0.1f; if (Physics.RaycastAll(lookRay, Vector3.Distance(lookRay.origin, position), -1).Length > 1) { return(true); } } return(false); } if ((CheckAimbot && !key.admin) && !component.dead) { string newValue = Helper.NiceName((user2 != null) ? user2.displayName : component.name); if (!WeaponShotEyes.ContainsKey(key)) { PlayerShotEyes eyes = new PlayerShotEyes { origin = Killer.eyesRay.origin, angles = Killer.eyesAngles, count = 0 }; WeaponShotEyes.Add(key, eyes); } Vector3 vector5 = transform.position - endPos; if (vector5.magnitude > 3f) { PunishDetails = Config.GetMessageTruth("Truth.Punish.Reason.Aimbot.JackedSilent", key, "", 0, new DateTime()); PunishDetails = PunishDetails.Replace("%KILLER.NAME%", key.displayName); PunishDetails = PunishDetails.Replace("%VICTIM.NAME%", newValue); PunishDetails = PunishDetails.Replace("%KILLER.POS%", Killer.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%VICTIM.POS%", component.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%DISTANCE%", Math.Abs(num).ToString("N1")); PunishDetails = PunishDetails.Replace("%WEAPON%", weapon.datablock.name); Punish(key, Users.GetBySteamID(key.userID), HackMethod.AimedHack, true); return(true); } if (num < 1f) { return(false); } if (ShotThroughObjectBlock) { Vector3 vector3; GameObject obj2 = Helper.GetLineObject(origin, endPos, out vector3, 0x183e1411); if ((obj2 != null) && ((obj2.GetComponent <StructureComponent>() != null) || (obj2.GetComponent <BasicDoor>() != null))) { PunishDetails = Config.GetMessageTruth("Truth.Punish.Reason.Aimbot.ShootBlocked", key, "", 0, new DateTime()); PunishDetails = PunishDetails.Replace("%KILLER.NAME%", key.displayName); PunishDetails = PunishDetails.Replace("%VICTIM.NAME%", newValue); PunishDetails = PunishDetails.Replace("%KILLER.POS%", Killer.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%VICTIM.POS%", component.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%OBJECT%", Helper.NiceName(obj2.name)); PunishDetails = PunishDetails.Replace("%OBJECT.NAME%", Helper.NiceName(obj2.name)); PunishDetails = PunishDetails.Replace("%OBJECT.POS%", obj2.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%POINT%", vector3.AsString()); PunishDetails = PunishDetails.Replace("%DISTANCE%", Math.Abs(num).ToString("N1")); PunishDetails = PunishDetails.Replace("%WEAPON.RANGE%", bulletRange.ToString("N1")); PunishDetails = PunishDetails.Replace("%WEAPON%", weapon.datablock.name); if (!Killer.stateFlags.movement) { if (ShotThroughObjectPunish) { Punish(key, Users.GetBySteamID(key.userID), HackMethod.AimedHack, false); } else { Helper.LogError(string.Concat(new object[] { "Blocked [", key.displayName, ":", key.userID, "]: ", PunishDetails }), true); } return(true); } Vector3 pos = key.truthDetector.prevSnap.pos; pos.x = origin.x; pos.z = origin.z; if (Helper.GetLineObject(pos, endPos, out vector3, 0x183e1411) == obj2) { Helper.LogError(string.Concat(new object[] { "Blocked [", key.displayName, ":", key.userID, "]: ", PunishDetails }), true); return(true); } } } uint num4 = ((uint)Environment.TickCount) - key.truthDetector.prevHitTime; if (num4 == Environment.TickCount) { num4 = 0; } key.truthDetector.prevHitTime = (uint)Environment.TickCount; if ((num4 > 100) && (num4 < Environment.TickCount)) { float minShotRateByRange = MinShotRateByRange; float num6 = ((float)num4) / num; Config.Get("SERVER", "Truth.MinShotRateByRange." + weapon.datablock.name, ref minShotRateByRange, true); if (num6 < minShotRateByRange) { PunishDetails = Config.GetMessageTruth("Truth.Punish.Reason.Aimbot.HighFireRate", key, "", 0, new DateTime()); PunishDetails = PunishDetails.Replace("%KILLER.NAME%", key.displayName); PunishDetails = PunishDetails.Replace("%VICTIM.NAME%", newValue); PunishDetails = PunishDetails.Replace("%KILLER.POS%", Killer.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%VICTIM.POS%", component.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%DISTANCE%", Math.Abs(num).ToString("N1")); PunishDetails = PunishDetails.Replace("%WEAPON.RANGE%", bulletRange.ToString("N1")); PunishDetails = PunishDetails.Replace("%WEAPON%", weapon.datablock.name); PunishDetails = PunishDetails.Replace("%SHOTRATE%", num6.ToString("N2")); PunishDetails = PunishDetails.Replace("%MINRATE%", minShotRateByRange.ToString("N2")); Punish(key, Users.GetBySteamID(key.userID), HackMethod.AimedHack, false); return(true); } } if (CheckShotRange && (Math.Abs(num) > bulletRange)) { PunishDetails = Config.GetMessageTruth("Truth.Punish.Reason.Aimbot.OverWeaponRange", key, "", 0, new DateTime()); PunishDetails = PunishDetails.Replace("%KILLER.NAME%", key.displayName); PunishDetails = PunishDetails.Replace("%VICTIM.NAME%", newValue); PunishDetails = PunishDetails.Replace("%KILLER.POS%", Killer.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%VICTIM.POS%", component.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%DISTANCE%", Math.Abs(num).ToString("N1")); PunishDetails = PunishDetails.Replace("%WEAPON.RANGE%", bulletRange.ToString("N1")); PunishDetails = PunishDetails.Replace("%WEAPON%", weapon.datablock.name); if (user2 != null) { bool punishBan = (ShotAboveMaxDistance > 0f) && ((num - bulletRange) >= ShotAboveMaxDistance); Punish(key, Users.GetBySteamID(key.userID), HackMethod.AimedHack, punishBan); } else { Broadcast.MessageAll(ViolationColor, PunishDetails, null); Helper.LogError(string.Concat(new object[] { "Noticed [", key.displayName, ":", key.userID, "]: ", PunishDetails }), true); } return(true); } float num7 = HeadshotAimTime * num; if (num4 > num7) { key.truthDetector.headshotHold = 0; } if (isHeadshot) { key.truthDetector.headshotHold += (int)num; } if (key.truthDetector.headshotHold >= HeadshotThreshold) { PunishDetails = Config.GetMessageTruth("Truth.Punish.Reason.Aimbot.ThresholdHeadshots", key, "", 0, new DateTime()); PunishDetails = PunishDetails.Replace("%KILLER.NAME%", key.displayName); PunishDetails = PunishDetails.Replace("%VICTIM.NAME%", newValue); PunishDetails = PunishDetails.Replace("%KILLER.POS%", Killer.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%VICTIM.POS%", component.transform.position.AsString()); PunishDetails = PunishDetails.Replace("%DISTANCE%", Math.Abs(num).ToString("N1")); PunishDetails = PunishDetails.Replace("%WEAPON.RANGE%", bulletRange.ToString("N1")); PunishDetails = PunishDetails.Replace("%WEAPON%", weapon.datablock.name); Punish(key, Users.GetBySteamID(key.userID), HackMethod.AimedHack, false); return(true); } } return(false); }
public void CheckPlacementResults(Ray ray, out Vector3 pos, out Quaternion rot, out TransCarrier carrier, out DeployPlaceResults results) { RaycastHit hit; Vector3 position; Vector3 normal; bool flag6; MeshBatchInstance instance; Quaternion rotation; float placeRange = this.placeRange; IDMain main = null; bool flag = false; bool flag2 = false; bool flag3 = false; DeployableObject obj2 = null; bool flag4 = false; bool flag5 = false; bool flag7 = this.minCastRadius >= float.Epsilon; bool flag8 = !flag7?MeshBatchPhysics.Raycast(ray, out hit, placeRange, -472317957, out flag6, out instance) : MeshBatchPhysics.SphereCast(ray, this.minCastRadius, out hit, placeRange, -472317957, out flag6, out instance); Vector3 point = ray.GetPoint(placeRange); if (!flag8) { Vector3 origin = point; origin.y += 0.5f; flag4 = MeshBatchPhysics.Raycast(origin, Vector3.down, out hit, 5f, -472317957, out flag6, out instance); } if (flag8 || flag4) { main = !flag6?IDBase.GetMain(hit.collider) : instance.idMain; flag3 = (main is StructureComponent) || (main is StructureMaster); position = hit.point; normal = hit.normal; flag = !flag3 && ((bool)(obj2 = main as DeployableObject)); if (((this.carrierSphereCastMode != CarrierSphereCastMode.Allowed) && flag8) && (flag7 && !NonVariantSphereCast(ray, position))) { Ray ray2; float num2; RaycastHit hit2; bool flag9; MeshBatchInstance instance2; bool flag10; if (this.carrierSphereCastMode == CarrierSphereCastMode.AdjustedRay) { Vector3 vector5 = ray.origin; Vector3 direction = hit.point - vector5; num2 = direction.magnitude + (this.minCastRadius * 2f); ray2 = new Ray(vector5, direction); Debug.DrawLine(ray.origin, ray.GetPoint(num2), Color.cyan); } else { num2 = placeRange + this.minCastRadius; ray2 = ray; } if (!(flag10 = MeshBatchPhysics.Raycast(ray2, out hit2, num2, -472317957, out flag9, out instance2))) { Vector3 vector8 = position; vector8.y += 0.5f; flag10 = MeshBatchPhysics.Raycast(vector8, Vector3.down, out hit2, 5f, -472317957, out flag9, out instance2); } if (flag10) { IDMain main2 = !flag9?IDBase.GetMain(hit2.collider) : instance2.idMain; carrier = (main2 == null) ? hit2.collider.GetComponent <TransCarrier>() : main2.GetLocal <TransCarrier>(); } else { carrier = null; } } else { carrier = ((main == null) ? hit.collider.gameObject : main.gameObject).GetComponent <TransCarrier>(); } flag2 = (hit.collider is TerrainCollider) || (hit.collider.gameObject.layer == 10); flag5 = true; } else { position = point; normal = Vector3.up; carrier = null; } bool flag11 = false; Hardpoint hardpointFromRay = null; if (this.hardpointType != Hardpoint.hardpoint_type.None) { hardpointFromRay = Hardpoint.GetHardpointFromRay(ray, this.hardpointType); if (hardpointFromRay != null) { flag11 = true; position = hardpointFromRay.transform.position; normal = hardpointFromRay.transform.up; carrier = hardpointFromRay.GetMaster().GetTransCarrier(); flag5 = true; } } bool flag12 = false; if (this.spacingRadius > 0f) { foreach (Collider collider in Physics.OverlapSphere(position, this.spacingRadius)) { GameObject gameObject = collider.gameObject; IDBase component = collider.gameObject.GetComponent <IDBase>(); if (component != null) { gameObject = component.idMain.gameObject; } if (gameObject.CompareTag(this.ObjectToPlace.gameObject.tag) && (Vector3.Distance(position, gameObject.transform.position) < this.spacingRadius)) { flag12 = true; break; } } } bool flag13 = false; if ((flag && !this.forcePlaceable) && obj2.cantPlaceOn) { flag13 = true; } pos = position; if (this.orientationMode == DeployableOrientationMode.Default) { if (this.uprightOnly) { this.orientationMode = DeployableOrientationMode.Upright; } else { this.orientationMode = DeployableOrientationMode.NormalUp; } } switch (this.orientationMode) { case DeployableOrientationMode.NormalUp: rotation = TransformHelpers.LookRotationForcedUp(ray.direction, normal); break; case DeployableOrientationMode.Upright: rotation = TransformHelpers.LookRotationForcedUp(ray.direction, Vector3.up); break; case DeployableOrientationMode.NormalForward: rotation = TransformHelpers.LookRotationForcedUp(Vector3.Cross(ray.direction, Vector3.up), normal); break; case DeployableOrientationMode.HardpointPosRot: if (!flag11) { rotation = TransformHelpers.LookRotationForcedUp(ray.direction, Vector3.up); break; } rotation = hardpointFromRay.transform.rotation; break; default: throw new NotImplementedException(); } rot = rotation * this.ObjectToPlace.transform.localRotation; bool flag14 = false; if (this.checkPlacementZones) { flag14 = NoPlacementZone.ValidPos(pos); } float num4 = Vector3.Angle(normal, Vector3.up); results.falseFromDeployable = (!this.CanStackOnDeployables && flag) || flag13; results.falseFromTerrian = this.TerrainOnly && !flag2; results.falseFromClose = (this.spacingRadius > 0f) && flag12; results.falseFromHardpoint = this.requireHardpoint && !flag11; results.falseFromAngle = !this.requireHardpoint && (num4 >= this.ObjectToPlace.maxSlope); results.falseFromPlacementZone = this.checkPlacementZones && !flag14; results.falseFromHittingNothing = !flag5; results.falseFromStructure = this.StructureOnly && !flag3; results.falseFromFitRequirements = (this.fitRequirements != null) && !this.fitRequirements.Test(pos, !this.fitTestForcedUp ? rot : TransformHelpers.LookRotationForcedUp(rot, Vector3.up), this.ObjectToPlace.transform.localScale); }
public static EventTimer TimeEvent_TeleportTo(NetUser Sender, NetUser Target, string Command, double time) { Events.Class38 @class = new Events.Class38(); @class.netUser_0 = Sender; @class.netUser_1 = Target; @class.string_0 = Command; EventTimer result; if (Core.CommandTeleportOutdoorsOnly) { Vector3 position = @class.netUser_1.playerClient.controllable.character.transform.position; Collider[] array = Physics.OverlapSphere(position, 1f, 271975425); for (int i = 0; i < array.Length; i++) { Collider component = array[i]; IDMain main = IDBase.GetMain(component); if (!(main == null)) { StructureMaster component2 = main.GetComponent <StructureMaster>(); if (!(component2 == null) && component2.ownerID != @class.netUser_0.userID && component2.ownerID != @class.netUser_1.userID) { UserData bySteamID = Users.GetBySteamID(component2.ownerID); if (bySteamID == null || (!bySteamID.HasShared(@class.netUser_0.userID) && !bySteamID.HasShared(@class.netUser_1.userID))) { Broadcast.Notice(@class.netUser_0, "☢", Config.GetMessage("Command.Teleport.NoTeleport", @class.netUser_0, @class.netUser_1.displayName), 5f); Broadcast.Notice(@class.netUser_1, "☢", Config.GetMessage("Command.Teleport.NotHere", @class.netUser_1, @class.netUser_0.displayName), 5f); result = null; return(result); } } } } } Broadcast.Message(@class.netUser_0, Config.GetMessage("Command.Teleport.IsConfirm", @class.netUser_0, null).Replace("%USERNAME%", @class.netUser_1.displayName), null, 0f); Broadcast.Message(@class.netUser_1, Config.GetMessage("Command.Teleport.Confirmed", @class.netUser_1, null).Replace("%USERNAME%", @class.netUser_0.displayName), null, 0f); if (!Character.FindByUser(@class.netUser_1.userID, out @class.character_0)) { result = null; } else if (time <= 0.0) { Events.Teleport_PlayerTo(null, @class.netUser_0, @class.netUser_1, @class.string_0, @class.character_0.transform.position); result = null; } else { EventTimer eventTimer = new EventTimer { Interval = time * 1000.0, AutoReset = false }; eventTimer.Elapsed += new ElapsedEventHandler(@class.method_0); eventTimer.Sender = @class.netUser_0; eventTimer.Target = @class.netUser_1; eventTimer.Command = @class.string_0; Broadcast.Notice(@class.netUser_0, "☢", Config.GetMessage("Command.Teleport.Timewait", @class.netUser_0, null).Replace("%TIME%", eventTimer.TimeLeft.ToString()), 5f); Broadcast.Notice(@class.netUser_1, "☢", Config.GetMessage("Command.Teleport.Timewait", @class.netUser_1, null).Replace("%TIME%", eventTimer.TimeLeft.ToString()), 5f); eventTimer.Start(); result = eventTimer; } return(result); }
public override void Execute(ref ConsoleSystem.Arg Arguments, ref string[] ChatArguments) { var player = Fougerite.Server.Cache[Arguments.argUser.userID]; var pl = Fougerite.Server.Cache[Arguments.argUser.userID]; if (RustPP.Components.AuthComponent.AuthComponent.UserIsLogged(player)) { RustPP.Data.Entities.User usuario = Data.Globals.usersOnline.FindLast(x => x.Name == pl.Name); var position = player.PlayerClient.controllable.character.transform.position; var direction = player.PlayerClient.controllable.character.eyesRay.direction; position.y += player.PlayerClient.controllable.character.stateFlags.crouch ? 0.85f : 1.65f; if (Facepunch.MeshBatch.MeshBatchPhysics.Raycast(new Ray(position, direction), out var raycastHit, 10, -1, out var flag, out var meshBatchInstance)) { var idmain = flag ? meshBatchInstance.idMain : IDBase.GetMain(raycastHit.collider); if (idmain != null) { if (idmain.gameObject.GetComponent <StructureComponent>()) { var id = idmain.gameObject.GetComponent <StructureComponent>()._master.ownerID; if (Fougerite.Server.Cache.ContainsKey(id)) { var user = Fougerite.Server.Cache[id]; player.Message("[color yellow]<!>[/color] Este " + idmain.gameObject.name + " pertenece a " + user.Name); if (usuario.AdminLevel > 1) { player.Message("Ubicación: " + idmain.gameObject.transform.position); player.Message("Vida: " + idmain.gameObject.GetComponent <TakeDamage>().health + "/" + idmain.gameObject.GetComponent <TakeDamage>().maxHealth); } } else { string Name = Data.Globals.GetUserNameBySteamid(id.ToString()); player.Message("[color yellow]<!>[/color] Este " + idmain.gameObject.name + " pertenece a " + Name); if (usuario.AdminLevel > 1) { player.Message("Ubicación: " + idmain.gameObject.transform.position); player.Message("Vida: " + idmain.gameObject.GetComponent <TakeDamage>().health + "/" + idmain.gameObject.GetComponent <TakeDamage>().maxHealth); } } } if (idmain.gameObject.GetComponent <DeployableObject>()) { var id = idmain.gameObject.GetComponent <DeployableObject>().ownerID; if (Fougerite.Server.Cache.ContainsKey(id)) { var user = Fougerite.Server.Cache[id]; player.Message("[color yellow]<!>[/color] Este " + idmain.gameObject.name + " pertenece a " + user.Name); if (usuario.AdminLevel > 1) { player.Message("Ubicación: " + idmain.gameObject.transform.position); player.Message("Vida: " + idmain.gameObject.GetComponent <TakeDamage>().health + "/" + idmain.gameObject.GetComponent <TakeDamage>().maxHealth); } } else { string Name = Data.Globals.GetUserNameBySteamid(id.ToString()); player.Message("[color yellow]<!>[/color] Este " + idmain.gameObject.name + " pertenece a " + Name); if (usuario.AdminLevel > 1) { player.Message("Ubicación: " + idmain.gameObject.transform.position); player.Message("Vida: " + idmain.gameObject.GetComponent <TakeDamage>().health + "/" + idmain.gameObject.GetComponent <TakeDamage>().maxHealth); } } } } } } else { pl.SendClientMessage("[color red]<Error>[/color] Primero debes estar conectado (Utiliza [color orange] /login[/color])"); } }
public static bool DamageOverride(TakeDamage take, ref DamageEvent damage, ref TakeDamage.Quantity quantity) { if (damage.attacker.idMain != damage.victim.idMain) { if (!Core.OverrideDamage || float.IsInfinity(damage.amount)) { return(true); } if ((damage.victim.id.GetComponent <Character>() == null) && (damage.attacker.client != null)) { ulong ownerID = (damage.victim.client != null) ? damage.victim.client.userID : ((ulong)0L); if (damage.victim.idMain is DeployableObject) { ownerID = (damage.victim.idMain as DeployableObject).ownerID; } if (damage.victim.idMain is StructureComponent) { ownerID = (damage.victim.idMain as StructureComponent)._master.ownerID; } ulong num2 = (damage.attacker.client != null) ? damage.attacker.client.userID : ((ulong)0L); if (damage.attacker.idMain is DeployableObject) { num2 = (damage.attacker.idMain as DeployableObject).ownerID; } if (damage.attacker.idMain is StructureComponent) { num2 = (damage.attacker.idMain as StructureComponent)._master.ownerID; } if (((ownerID == num2) || Users.SharedGet(ownerID, num2)) && (Core.OwnershipDestroy || Core.DestoryOwnership.ContainsKey(damage.attacker.client.userID))) { Config.Get("OVERRIDE.DAMAGE", damage.attacker.idMain.name.Replace("(Clone)", "") + ".DAMAGE", ref damage.amount, true); return(true); } } bool result = true; if ((damage.attacker.client != null) && (damage.attacker.idMain is Character)) { WeaponImpact extraData = damage.extraData as WeaponImpact; string str = (extraData != null) ? extraData.dataBlock.name : "Hunting Bow"; string str2 = str.Replace(" ", "") + ".DAMAGE"; string key = str2 + "." + damage.victim.idMain.name.Replace("(Clone)", ""); string str4 = str2 + ".HEADSHOT"; if (Config.Get("OVERRIDE.DAMAGE", key, ref result, true) && !result) { return(false); } float[] numArray = (extraData != null) ? new float[] { extraData.dataBlock.damageMin, extraData.dataBlock.damageMax } : new float[] { 75f, 75f }; Config.Get("OVERRIDE.DAMAGE", (damage.bodyPart == BodyPart.Head) ? str4 : str2, ref numArray, true); damage.amount = UnityEngine.Random.Range(Math.Min(numArray[0], numArray[1]), Math.Max(numArray[0], numArray[1])); if ((extraData != null) && (damage.extraData is BulletWeaponDataBlock)) { damage.amount *= (damage.extraData as BulletWeaponDataBlock).IsSilenced(extraData.itemRep) ? 0.8f : 1f; } if ((extraData != null) && (damage.extraData is BulletWeaponImpact)) { quantity = new DamageTypeList(0f, damage.amount, 0f, 0f, 0f, 0f); } else { quantity = new DamageTypeList(0f, 0f, damage.amount, 0f, 0f, 0f); } damage.amount = 0f; if (quantity.Unit == TakeDamage.Unit.List) { ApplyDamageTypeList(take, ref damage, quantity.DamageTypeList); } Helper.Log(string.Concat(new object[] { "Damage: ", damage.attacker.idMain, "[", damage.attacker.networkViewID, "] from ", str, " hit ", damage.victim.idMain, "[", damage.victim.networkViewID, "] on ", damage.amount, "(", numArray[0], "-", numArray[1], ") pts." }), false); } else if (!(damage.attacker.idMain is Character)) { float baseReturnDmg = 0f; float explosionRadius = 0f; if (damage.attacker.id is TimedGrenade) { baseReturnDmg = (damage.attacker.id as TimedGrenade).damage; explosionRadius = (damage.attacker.id as TimedGrenade).explosionRadius; } if (damage.attacker.id is TimedExplosive) { baseReturnDmg = (damage.attacker.id as TimedExplosive).damage; explosionRadius = (damage.attacker.id as TimedExplosive).explosionRadius; } if (damage.attacker.id is SpikeWall) { baseReturnDmg = (damage.attacker.id as SpikeWall).baseReturnDmg; explosionRadius = 0f; } if (baseReturnDmg > 0f) { string str5 = damage.attacker.idMain.name.Replace("(Clone)", "") + ".DAMAGE"; string str6 = str5 + "." + damage.victim.idMain.name.Replace("(Clone)", ""); if (Config.Get("OVERRIDE.DAMAGE", str6, ref result, true) && !result) { return(false); } Config.Get("OVERRIDE.DAMAGE", str5, ref baseReturnDmg, true); if (explosionRadius > 0f) { RaycastHit hit; bool flag2; MeshBatchInstance instance; Vector3 center = damage.victim.idMain.collider.bounds.center; Vector3 a = damage.attacker.idMain.collider.bounds.center; Vector3 direction = center - a; float distance = Vector3.Distance(a, center); if (Facepunch.MeshBatch.MeshBatchPhysics.Raycast(a, direction, out hit, distance, 0x10360401, out flag2, out instance)) { IDMain main = flag2 ? instance.idMain : IDBase.GetMain(hit.collider); GameObject obj2 = (main != null) ? main.gameObject : hit.collider.gameObject; if (obj2 != damage.victim.idMain.gameObject) { damage.amount = (1f - Mathf.Clamp01(distance / explosionRadius)) * baseReturnDmg; if (flag2) { damage.amount *= 0.1f; } } } } if (damage.attacker.id is SpikeWall) { quantity = new DamageTypeList(0f, 0f, damage.amount, 0f, 0f, 0f); } else { quantity = new DamageTypeList(0f, 0f, 0f, damage.amount, 0f, 0f); } damage.amount = 0f; if (quantity.Unit == TakeDamage.Unit.List) { ApplyDamageTypeList(take, ref damage, quantity.DamageTypeList); } } Helper.Log(string.Concat(new object[] { "Damage: ", damage.attacker.idMain, "[", damage.attacker.networkViewID, "] owned ", damage.attacker.client, " hit ", damage.victim.idMain, "[", damage.victim.networkViewID, "] on ", damage.amount, "(", baseReturnDmg, ") pts." }), false); } } return(true); }