public void OV_ballistics() { Useable useable = OptimizationVariables.MainPlayer.equipment.useable; bool isServer = Provider.isServer; if (isServer) { OverrideUtilities.CallOriginal(useable, new object[0]); } else { bool flag = Time.realtimeSinceStartup - PlayerLifeUI.hitmarkers[0].lastHit > PlayerUI.HIT_TIME; if (flag) { PlayerLifeUI.hitmarkers[0].image.isVisible = false; //PlayerLifeUI.hitmarkers[0].hitCriticalImage.isVisible = false; //PlayerLifeUI.hitmarkers[0].hitEntitiyImage.isVisible = false; } ItemGunAsset itemGunAsset = (ItemGunAsset)OptimizationVariables.MainPlayer.equipment.asset; PlayerLook look = OptimizationVariables.MainPlayer.look; bool flag2 = itemGunAsset.projectile != null; if (!flag2) { List <BulletInfo> list = (List <BulletInfo>)OV_UseableGun.BulletsField.GetValue(useable); bool flag3 = list.Count == 0; if (!flag3) { RaycastInfo raycastInfo = null; bool enabled = RaycastOptions.Enabled; if (enabled) { RaycastUtilities.GenerateRaycast(out raycastInfo); } bool ballistics = Provider.modeConfigData.Gameplay.Ballistics; if (ballistics) { bool flag4 = raycastInfo == null; if (flag4) { bool noAimbotDrop = AimbotOptions.NoAimbotDrop; if (noAimbotDrop) { bool flag5 = AimbotCoroutines.IsAiming && AimbotCoroutines.LockedObject != null; if (flag5) { Vector3 aimPosition = AimbotCoroutines.GetAimPosition(AimbotCoroutines.LockedObject.transform, "Skull"); Ray aimRay = OV_UseableGun.GetAimRay(look.aim.position, aimPosition); float maxDistance = (float)VectorUtilities.GetDistance(look.aim.position, aimPosition); bool flag6 = !Physics.Raycast(aimRay, out RaycastHit raycastHit, maxDistance, RayMasks.DAMAGE_SERVER); if (flag6) { raycastInfo = RaycastUtilities.GenerateOriginalRaycast(aimRay, itemGunAsset.range, RayMasks.ENEMY); } } } bool flag7 = WeaponOptions.NoDrop && raycastInfo == null; if (flag7) { for (int i = 0; i < list.Count; i++) { BulletInfo bulletInfo = list[i]; Ray ray = new Ray(bulletInfo.pos, bulletInfo.dir); RaycastInfo info = DamageTool.raycast(ray, itemGunAsset.ballisticTravel, RayMasks.DAMAGE_CLIENT); bool flag8 = OV_UseableGun.IsRaycastInvalid(info); if (flag8) { bulletInfo.pos += bulletInfo.dir * itemGunAsset.ballisticTravel; } else { EPlayerHit newHit = OV_UseableGun.CalcHitMarker(itemGunAsset, ref info); PlayerUI.hitmark(0, Vector3.zero, false, newHit); OptimizationVariables.MainPlayer.input.sendRaycast(info, ERaycastInfoUsage.Gun); bulletInfo.steps = 254; } } for (int j = list.Count - 1; j >= 0; j--) { BulletInfo bulletInfo2 = list[j]; BulletInfo bulletInfo3 = bulletInfo2; bulletInfo3.steps += 1; bool flag9 = bulletInfo2.steps >= itemGunAsset.ballisticSteps; if (flag9) { list.RemoveAt(j); } } return; } bool flag10 = raycastInfo == null; if (flag10) { OverrideUtilities.CallOriginal(useable, new object[0]); return; } } for (int k = 0; k < list.Count; k++) { BulletInfo bulletInfo4 = list[k]; double distance = VectorUtilities.GetDistance(OptimizationVariables.MainPlayer.transform.position, raycastInfo.point); bool flag11 = bulletInfo4.steps * itemGunAsset.ballisticTravel < distance; if (!flag11) { EPlayerHit newHit2 = OV_UseableGun.CalcHitMarker(itemGunAsset, ref raycastInfo); PlayerUI.hitmark(0, Vector3.zero, false, newHit2); OptimizationVariables.MainPlayer.input.sendRaycast(raycastInfo, ERaycastInfoUsage.Gun); bulletInfo4.steps = 254; } } for (int l = list.Count - 1; l >= 0; l--) { BulletInfo bulletInfo5 = list[l]; BulletInfo bulletInfo6 = bulletInfo5; bulletInfo6.steps += 1; bool flag12 = bulletInfo5.steps >= itemGunAsset.ballisticSteps; if (flag12) { list.RemoveAt(l); } } } else { bool flag13 = raycastInfo != null; if (flag13) { for (int m = 0; m < list.Count; m++) { EPlayerHit newHit3 = OV_UseableGun.CalcHitMarker(itemGunAsset, ref raycastInfo); PlayerUI.hitmark(0, Vector3.zero, false, newHit3); OptimizationVariables.MainPlayer.input.sendRaycast(raycastInfo, ERaycastInfoUsage.Gun); } list.Clear(); } else { OverrideUtilities.CallOriginal(useable, new object[0]); } } } } } }
public static IEnumerator CheckTrigger() { for (; ;) { yield return(new WaitForSeconds(0.1f)); bool flag = !TriggerbotOptions.Enabled || !DrawUtilities.ShouldRun() || OptimizationVariables.MainPlayer.stance.stance == EPlayerStance.SPRINT || OptimizationVariables.MainPlayer.stance.stance == EPlayerStance.CLIMB || OptimizationVariables.MainPlayer.stance.stance == EPlayerStance.DRIVING; if (flag) { TriggerbotOptions.IsFiring = false; } else { PlayerLook look = OptimizationVariables.MainPlayer.look; Useable u = OptimizationVariables.MainPlayer.equipment.useable; Useable useable = u; Useable useable2 = useable; if (useable2 == null) { TriggerbotOptions.IsFiring = false; } else { UseableGun useableGun; UseableGun gun; UseableMelee useableMelee; if ((useableGun = (useable2 as UseableGun)) != null) { gun = useableGun; ItemGunAsset PAsset = (ItemGunAsset)OptimizationVariables.MainPlayer.equipment.asset; RaycastInfo ri = RaycastUtilities.GenerateOriginalRaycast(new Ray(look.aim.position, look.aim.forward), PAsset.range, RayMasks.DAMAGE_CLIENT); if (AimbotCoroutines.LockedObject != null && AimbotCoroutines.IsAiming) { Ray r = OV_UseableGun.GetAimRay(look.aim.position, AimbotCoroutines.GetAimPosition(AimbotCoroutines.LockedObject.transform, "Skull")); ri = RaycastUtilities.GenerateOriginalRaycast(new Ray(r.origin, r.direction), PAsset.range, RayMasks.DAMAGE_CLIENT); r = default(Ray); } bool Valid = ri.player == null; if (RaycastOptions.Enabled) { Valid = RaycastUtilities.GenerateRaycast(out ri); } if (Valid) { TriggerbotOptions.IsFiring = false; continue; } EFiremode fire = (EFiremode)TriggerbotComponent.CurrentFiremode.GetValue(gun); bool flag4 = fire == EFiremode.AUTO; if (flag4) { TriggerbotOptions.IsFiring = true; continue; } TriggerbotOptions.IsFiring = !TriggerbotOptions.IsFiring; } else if ((useableMelee = (useable2 as UseableMelee)) != null) { ItemMeleeAsset MAsset = (ItemMeleeAsset)OptimizationVariables.MainPlayer.equipment.asset; RaycastInfo ri2 = RaycastUtilities.GenerateOriginalRaycast(new Ray(look.aim.position, look.aim.forward), MAsset.range, RayMasks.DAMAGE_CLIENT); bool flag5 = AimbotCoroutines.LockedObject != null && AimbotCoroutines.IsAiming; if (flag5) { Ray r2 = OV_UseableGun.GetAimRay(look.aim.position, AimbotCoroutines.GetAimPosition(AimbotCoroutines.LockedObject.transform, "Skull")); ri2 = RaycastUtilities.GenerateOriginalRaycast(new Ray(r2.origin, r2.direction), MAsset.range, RayMasks.DAMAGE_CLIENT); r2 = default(Ray); } bool Valid2 = ri2.player != null; bool enabled2 = RaycastOptions.Enabled; if (enabled2) { Valid2 = RaycastUtilities.GenerateRaycast(out ri2); } bool flag6 = !Valid2; if (flag6) { TriggerbotOptions.IsFiring = false; continue; } bool isRepeated = MAsset.isRepeated; if (isRepeated) { TriggerbotOptions.IsFiring = true; continue; } TriggerbotOptions.IsFiring = !TriggerbotOptions.IsFiring; } useable2 = null; useableGun = null; gun = null; look = null; u = null; } } } yield break; }
public static IEnumerator CheckTrigger() { while (true) { yield return(new WaitForSeconds(0.1f)); if (!TriggerbotOptions.Enabled || !DrawUtilities.ShouldRun() || OptimizationVariables.MainPlayer.stance.stance == EPlayerStance.SPRINT || OptimizationVariables.MainPlayer.stance.stance == EPlayerStance.CLIMB || OptimizationVariables.MainPlayer.stance.stance == EPlayerStance.DRIVING) { TriggerbotOptions.IsFiring = false; continue; } PlayerLook look = OptimizationVariables.MainPlayer.look; Useable u = OptimizationVariables.MainPlayer.equipment.useable; switch (u) { case null: TriggerbotOptions.IsFiring = false; continue; case UseableGun gun: { ItemGunAsset PAsset = (ItemGunAsset)OptimizationVariables.MainPlayer.equipment.asset; RaycastInfo ri = RaycastUtilities.GenerateOriginalRaycast(new Ray(look.aim.position, look.aim.forward), PAsset.range, RayMasks.DAMAGE_CLIENT); if (AimbotCoroutines.LockedObject != null && AimbotCoroutines.IsAiming) { Ray r = OV_UseableGun.GetAimRay(look.aim.position, AimbotCoroutines.GetAimPosition(AimbotCoroutines.LockedObject.transform, "Skull")); ri = RaycastUtilities.GenerateOriginalRaycast(new Ray(r.origin, r.direction), PAsset.range, RayMasks.DAMAGE_CLIENT); } bool Valid = ri.player != null; if (RaycastOptions.Enabled) { Valid = RaycastUtilities.GenerateRaycast(out ri); } if (!Valid) { TriggerbotOptions.IsFiring = false; continue; } EFiremode fire = (EFiremode)CurrentFiremode.GetValue(gun); if (fire == EFiremode.AUTO) { TriggerbotOptions.IsFiring = true; continue; } TriggerbotOptions.IsFiring = !TriggerbotOptions.IsFiring; break; } case UseableMelee _: { ItemMeleeAsset MAsset = (ItemMeleeAsset)OptimizationVariables.MainPlayer.equipment.asset; RaycastInfo ri = RaycastUtilities.GenerateOriginalRaycast(new Ray(look.aim.position, look.aim.forward), MAsset.range, RayMasks.DAMAGE_CLIENT); if (AimbotCoroutines.LockedObject != null && AimbotCoroutines.IsAiming) { Ray r = OV_UseableGun.GetAimRay(look.aim.position, AimbotCoroutines.GetAimPosition(AimbotCoroutines.LockedObject.transform, "Skull")); ri = RaycastUtilities.GenerateOriginalRaycast(new Ray(r.origin, r.direction), MAsset.range, RayMasks.DAMAGE_CLIENT); } bool Valid = ri.player != null; if (RaycastOptions.Enabled) { Valid = RaycastUtilities.GenerateRaycast(out ri); } if (!Valid) { TriggerbotOptions.IsFiring = false; continue; } if (MAsset.isRepeated) { TriggerbotOptions.IsFiring = true; continue; } TriggerbotOptions.IsFiring = !TriggerbotOptions.IsFiring; break; } } } }