public static List <Vector3> PlotTrajectory(UseableGun gun, out RaycastHit hit, int maxSteps = 255) { hit = default(RaycastHit); Transform transform = (OptimizationVariables.MainPlayer.look.perspective == EPlayerPerspective.FIRST) ? OptimizationVariables.MainPlayer.look.aim : OptimizationVariables.MainCam.transform; Vector3 vector = transform.position; Vector3 forward = transform.forward; ItemGunAsset equippedGunAsset = gun.equippedGunAsset; float num = equippedGunAsset.ballisticDrop; Attachments attachments = (Attachments)TrajectoryComponent.thirdAttachments.GetValue(gun); List <Vector3> list = new List <Vector3> { vector }; bool flag = ((attachments != null) ? attachments.barrelAsset : null) != null; if (flag) { num *= attachments.barrelAsset.ballisticDrop; } for (int i = 1; i < maxSteps; i++) { vector += forward * equippedGunAsset.ballisticTravel; forward.y -= num; forward.Normalize(); bool flag2 = Physics.Linecast(list[i - 1], vector, out hit, RayMasks.DAMAGE_CLIENT); if (flag2) { list.Add(hit.point); break; } list.Add(vector); } return(list); }
// Token: 0x060001BF RID: 447 RVA: 0x0000F9F4 File Offset: 0x0000DBF4 public static void DisableAllVisuals() { SpyManager.InvokePre(); bool flag = DrawUtilities.ShouldRun(); bool flag2 = flag; if (flag2) { ItemGunAsset itemGunAsset; bool flag3 = (itemGunAsset = (OptimizationVariables.MainPlayer.equipment.asset as ItemGunAsset)) != null; bool flag4 = flag3; if (flag4) { UseableGun useableGun = OptimizationVariables.MainPlayer.equipment.useable as UseableGun; PlayerUI.updateCrosshair(useableGun.isAiming ? WeaponComponent.AssetBackups[itemGunAsset.id][5] : WeaponComponent.AssetBackups[itemGunAsset.id][6]); } } bool flag5 = LevelLighting.seaLevel == 0f; if (flag5) { LevelLighting.seaLevel = MiscOptions.Altitude; } SpyManager.DestroyComponents(); }
// Token: 0x060001F0 RID: 496 RVA: 0x00012D1C File Offset: 0x00010F1C public static void DisableAllVisuals() { try { SpyManager.InvokePre(); SpyManager.DestroyComponents(); } catch { } if (LevelLighting.seaLevel == 0f) { LevelLighting.seaLevel = MiscOptions.Altitude; } try { UseableGun useableGun = Player.player.equipment.useable as UseableGun; if (useableGun != null) { WeaponComponent.UpdateCrosshair.Invoke(useableGun, null); } foreach (ItemGunAsset itemGunAsset in WeaponComponent.AssetBackups.Keys) { if (itemGunAsset != null) { WeaponComponent.DisableHacks(itemGunAsset); } } WeaponComponent.AssetBackups.Clear(); } catch { } }
private static void OnBulletHit(UseableGun useableGun, BulletInfo bulletInfo, InputInfo hit, ref bool shouldAllow) { if (hit.player) { Accuracies[useableGun.player.channel.owner].ShotsHit++; } }
public void Update() { if (tool_ToolZ.getLocalPlayer().equipment.asset is ItemGunAsset) { ItemGunAsset gun = (ItemGunAsset)tool_ToolZ.getLocalPlayer().equipment.asset; if (nospread) { if (!isBackupAsset(gun)) { backups_Asset.Add(new GunAssetInfo(gun)); } gun.GetType().GetField("_spreadAim", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, 0f); gun.GetType().GetField("_spreadHip", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, 0f); } if (norecoil) { if (!isBackupAsset(gun)) { backups_Asset.Add(new GunAssetInfo(gun)); } gun.GetType().GetField("_recoilMax_x", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, 0f); gun.GetType().GetField("_recoilMax_y", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, 0f); gun.GetType().GetField("_recoilMin_x", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, 0f); gun.GetType().GetField("_recoilMin_y", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, 0f); } if (!nospread) { if (isBackupAsset(gun)) { GunAssetInfo back = getGunAsset(gun); gun.GetType().GetField("_recoilMax_x", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, back.recoilMax_x); gun.GetType().GetField("_recoilMax_y", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, back.recoilMax_y); gun.GetType().GetField("_recoilMin_x", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, back.recoilMin_x); gun.GetType().GetField("_recoilMin_y", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, back.recoilMin_y); } } if (!norecoil) { if (isBackupAsset(gun)) { GunAssetInfo back = getGunAsset(gun); gun.GetType().GetField("_spreadAim", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, back.spreadAim); gun.GetType().GetField("_spreadHip", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, back.spreadHip); } } } if (tool_ToolZ.getLocalPlayer().equipment.useable is UseableGun) { UseableGun gun = (UseableGun)tool_ToolZ.getLocalPlayer().equipment.useable; if (rapidfire) { gun.GetType().GetField("firemode", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(gun, EFiremode.AUTO); } } }
public static bool PlayerShoot(Player player, UseableGun gun) { PlayerShootEventArgs evt = new PlayerShootEventArgs(); evt.Player = new PlayerTag(player.channel.owner); // TODO: make GunTag/WeaponTag/EquipmentTag/WhateverTag to store this more accurately? evt.Gun = new ItemAssetTag(player.equipment.asset); UnturnedFreneticEvents.OnPlayerShoot.Fire(evt); return(evt.Cancelled); }
// Token: 0x0600027C RID: 636 RVA: 0x00016F60 File Offset: 0x00015160 public static float FOVRadius(float fov) { float fieldOfView = OptimizationVariables.MainCam.fieldOfView; if (GraphicsSettings.scopeQuality != EGraphicQuality.OFF) { UseableGun useableGun = Player.player.equipment.useable as UseableGun; if (useableGun && useableGun.isAiming && Player.player.look.scopeCamera.enabled) { fieldOfView = Player.player.look.scopeCamera.fieldOfView; } } return((float)(Math.Tan((double)fov * 0.017453292519943295 / 2.0) / Math.Tan((double)fieldOfView * 0.017453292519943295 / 2.0) * (double)Screen.height)); }
public static void DisableAllVisuals() { SpyManager.InvokePre(); if (DrawUtilities.ShouldRun()) { if (OptimizationVariables.MainPlayer.equipment.asset is ItemGunAsset pAsset) { UseableGun PGun = OptimizationVariables.MainPlayer.equipment.useable as UseableGun; PlayerUI.updateCrosshair(PGun.isAiming ? WeaponComponent.AssetBackups[pAsset.id][5] : WeaponComponent.AssetBackups[pAsset.id][6]); } } SpyManager.DestroyComponents(); }
private static async Task HitAccuracy(UseableGun useableGun, BulletInfo bulletInfo) { var steamPlayer = useableGun.player.channel.owner; if (!Accuracies.ContainsKey(steamPlayer)) { return; } Accuracies[steamPlayer].ShotsFired++; var comparison = Accuracies[steamPlayer].ShotsFired; await Task.Delay(Main.Config.CombatExpiration); if (comparison == Accuracies[steamPlayer].ShotsFired) { Accuracies[steamPlayer] = new Accuracy(0, 0); } }
private static EFiremode GetFiremode(UseableGun gun) => (EFiremode)firemodeField.GetValue(gun);
// Token: 0x0600007A RID: 122 RVA: 0x000086D0 File Offset: 0x000068D0 public static void Tab() { Prefab.MenuArea(new Rect(0f, 0f, 611f, 406f), <Module> .smethod_4 <string>(3463225730u), delegate { AttachTab.sightID = Prefab.TextField(AttachTab.sightID, "Прицел:", 100f, 100f); GUILayout.Space(2f); AttachTab.tacticalID = Prefab.TextField(AttachTab.tacticalID, "Тактич:", 100f, 100f); GUILayout.Space(2f); AttachTab.gripID = Prefab.TextField(AttachTab.gripID, "Приклад:", 100f, 100f); GUILayout.Space(2f); AttachTab.barrelID = Prefab.TextField(AttachTab.barrelID, "Ствол:", 100f, 100f); GUILayout.Space(2f); AttachTab.magazineID = Prefab.TextField(AttachTab.magazineID, "Магазин:", 100f, 100f); GUILayout.Space(5f); if (Prefab.Button("Прочитать", 200f, 25f) && Player.player.equipment.useable != null) { Attachments attachments = (Attachments)AttachTab.attachments1.GetValue(Player.player.equipment.useable); if (attachments != null) { AttachTab.sightID = attachments.sightID.ToString(); AttachTab.tacticalID = attachments.tacticalID.ToString(); AttachTab.gripID = attachments.gripID.ToString(); AttachTab.barrelID = attachments.barrelID.ToString(); AttachTab.magazineID = attachments.magazineID.ToString(); } } GUILayout.Space(5f); if (Prefab.Button("Применить", 200f, 25f)) { UseableGun obj = (UseableGun)Player.player.equipment.useable; if (Player.player.equipment.useable != null) { Attachments attachments2 = (Attachments)AttachTab.attachments1.GetValue(obj); Attachments attachments3 = (Attachments)AttachTab.attachments3.GetValue(obj); ushort value; ushort.TryParse(AttachTab.sightID, out value); ushort value2; ushort.TryParse(AttachTab.tacticalID, out value2); ushort value3; ushort.TryParse(AttachTab.gripID, out value3); ushort value4; ushort.TryParse(AttachTab.barrelID, out value4); ushort value5; ushort.TryParse(AttachTab.magazineID, out value5); if (attachments2 != null) { byte[] array = new byte[18]; byte[] array2 = new byte[2]; array2 = BitConverter.GetBytes(value); array[0] = array2[0]; array[1] = array2[1]; array2 = BitConverter.GetBytes(value2); array[2] = array2[0]; array[3] = array2[1]; array2 = BitConverter.GetBytes(value3); array[4] = array2[0]; array[5] = array2[1]; array2 = BitConverter.GetBytes(value4); array[6] = array2[0]; array[7] = array2[1]; array2 = BitConverter.GetBytes(value5); array[8] = array2[0]; array[9] = array2[1]; attachments2.updateAttachments(array, true); attachments3.updateAttachments(array, false); AttachTab.upattachments.Invoke(obj, null); } } } Prefab.MenuArea(new Rect(230f, 15f, 230f, 130f), "StatTrack", delegate { GUILayout.Space(5f); AttachTab.id = Prefab.TextField(AttachTab.id, "ID оружия:", 100f, 100f); GUILayout.Space(2f); AttachTab.count = Prefab.TextField(AttachTab.count, "Убийства:", 100f, 100f); GUILayout.Space(5f); if (Prefab.Button("Выбрать текущее оружие", 200f, 25f) && Player.player) { ItemAsset asset = Player.player.equipment.asset; if (asset != null) { EStatTrackerType estatTrackerType; int num; Player.player.equipment.getUseableStatTrackerValue(out estatTrackerType, out num); AttachTab.id = asset.id.ToString(); AttachTab.count = num.ToString(); } } GUILayout.Space(5f); ushort itemID; int newValue; if (Prefab.Button("Применить", 200f, 25f) && ushort.TryParse(AttachTab.id, out itemID) && int.TryParse(AttachTab.count, out newValue)) { SkinsUtilities.incrementStatTrackerValue(itemID, newValue); } }); }); }
static void trace(Vector3 pos, Vector3 dir, ref ParticleSystem tracerEmitter, ref UseableGun instancem, ref Attachments thirdAttach) { if ((tracerEmitter != null) && (((thirdAttach.barrelModel == null) || !thirdAttach.barrelAsset.isBraked) || (instancem.player.equipment.state[0x10] <= 0))) { tracerEmitter.transform.position = pos; tracerEmitter.transform.rotation = Quaternion.LookRotation(dir); tracerEmitter.Emit(1); tracerEmitter.startColor = Color.magenta; } }
public static void SetIsShooting(UseableGun gun, bool value) => isShootingField.SetValue(gun, value);
public static bool Prefix(UseableGun __instance, ref List <BulletInfo> ___bullets, ref int ___hitmarkerIndex, ref ParticleSystem ___tracerEmitter, ref Attachments ___thirdAttachments) { if (Global.AllOff || Hooks.askScreenshot.NeedingSpy) { ___tracerEmitter.startColor = Color.gray; return(true); } if (!Global.AimEnabled || (Global.AimSettings.RageBot && RageBot.FocusTarget != null && !Global.AimSettings.RBypassOne)) { return(true); } if ((__instance.equippedGunAsset.projectile == null) && (___bullets != null)) { if (__instance.channel.isOwner) { RaycastInfo info2 = null; float dst = 0f; if (Global.AimSettings.RageBot) { if (RageBot.FocusTarget != null) { Vector3 AimAt = Aimbot.GetHitbox(RageBot.FocusTarget.player.transform, "Skull"); if (AimAt == Vector3.zero || RageBot.FocusTarget.player.stance.prone) { AimAt = RageBot.FocusTarget.player.transform.position + new Vector3(0, 0.005f, 0); } Ray prx = new Ray(Player.player.look.aim.position, (AimAt - Player.player.look.aim.position).normalized); dst = Vector3.Distance(AimAt, Player.player.look.aim.position); info2 = DamageTool.raycast(prx, dst, RayMasks.ENEMY, Player.player); } } for (int i = 0; i < ___bullets.Count; i++) { BulletInfo info = ___bullets[i]; if (Global.AimSettings.RageBot && RageBot.FocusTarget != null && info2 != null && info2.player == RageBot.FocusTarget.player) { if (!((info.steps * __instance.equippedGunAsset.ballisticTravel) < dst)) { Player.player.input.sendRaycast(info2); Player.player.input.sendRaycast(info2); info.steps = 254; goto prx; } } byte pellets = info.magazineAsset.pellets; if (__instance.channel.isOwner) { EPlayerHit nONE = EPlayerHit.NONE; if (pellets > 1) { ___hitmarkerIndex = info.pellet; } else if (OptionsSettings.hitmarker) { ___hitmarkerIndex++; if (___hitmarkerIndex >= PlayerLifeUI.hitmarkers.Length) { ___hitmarkerIndex = 0; } } else { ___hitmarkerIndex = 0; } Ray ray = new Ray(info.pos, info.dir); if (info2 == null) { info2 = DamageTool.raycast(ray, !Provider.modeConfigData.Gameplay.Ballistics ? __instance.equippedGunAsset.range : __instance.equippedGunAsset.ballisticTravel, RayMasks.DAMAGE_CLIENT, __instance.player); } if (((info2.player != null) && (__instance.equippedGunAsset.playerDamageMultiplier.damage > 1f)) && (!__instance.player.quests.isMemberOfSameGroupAs(info2.player) && Provider.isPvP)) { if (nONE != EPlayerHit.CRITICAL) { nONE = (info2.limb != ELimb.SKULL) ? EPlayerHit.ENTITIY : EPlayerHit.CRITICAL; } PlayerUI.hitmark(___hitmarkerIndex, info2.point, pellets > 1, (info2.limb != ELimb.SKULL) ? EPlayerHit.ENTITIY : EPlayerHit.CRITICAL); } else if (((info2.zombie != null) && (__instance.equippedGunAsset.zombieDamageMultiplier.damage > 1f)) || ((info2.animal != null) && (__instance.equippedGunAsset.animalDamageMultiplier.damage > 1f))) { if (nONE != EPlayerHit.CRITICAL) { nONE = (info2.limb != ELimb.SKULL) ? EPlayerHit.ENTITIY : EPlayerHit.CRITICAL; } PlayerUI.hitmark(___hitmarkerIndex, info2.point, pellets > 1, (info2.limb != ELimb.SKULL) ? EPlayerHit.ENTITIY : EPlayerHit.CRITICAL); } else if (((info2.transform != null) && info2.transform.CompareTag("Barricade")) && (__instance.equippedGunAsset.barricadeDamage > 1f)) { ushort num3; if (ushort.TryParse(info2.transform.name, NumberStyles.Any, CultureInfo.InvariantCulture, out num3)) { ItemBarricadeAsset asset = (ItemBarricadeAsset)Assets.find(EAssetType.ITEM, num3); if ((asset != null) && (asset.isVulnerable || ((ItemWeaponAsset)__instance.player.equipment.asset).isInvulnerable)) { if (nONE == EPlayerHit.NONE) { nONE = EPlayerHit.BUILD; } PlayerUI.hitmark(___hitmarkerIndex, info2.point, pellets > 1, EPlayerHit.BUILD); } } } else if (((info2.transform != null) && info2.transform.CompareTag("Structure")) && (__instance.equippedGunAsset.structureDamage > 1f)) { ushort num4; if (ushort.TryParse(info2.transform.name, NumberStyles.Any, CultureInfo.InvariantCulture, out num4)) { ItemStructureAsset asset2 = (ItemStructureAsset)Assets.find(EAssetType.ITEM, num4); if ((asset2 != null) && (asset2.isVulnerable || ((ItemWeaponAsset)__instance.player.equipment.asset).isInvulnerable)) { if (nONE == EPlayerHit.NONE) { nONE = EPlayerHit.BUILD; } PlayerUI.hitmark(___hitmarkerIndex, info2.point, pellets > 1, EPlayerHit.BUILD); } } } else if (((info2.vehicle != null) && !info2.vehicle.isDead) && (__instance.equippedGunAsset.vehicleDamage > 1f)) { if (((info2.vehicle.asset != null) && info2.vehicle.canBeDamaged) && (info2.vehicle.asset.isVulnerable || ((ItemWeaponAsset)__instance.player.equipment.asset).isInvulnerable)) { if (nONE == EPlayerHit.NONE) { nONE = EPlayerHit.BUILD; } PlayerUI.hitmark(___hitmarkerIndex, info2.point, pellets > 1, EPlayerHit.BUILD); } } else if (((info2.transform != null) && info2.transform.CompareTag("Resource")) && (__instance.equippedGunAsset.resourceDamage > 1f)) { byte num5; byte num6; ushort num7; if (ResourceManager.tryGetRegion(info2.transform, out num5, out num6, out num7)) { ResourceSpawnpoint spawnpoint = ResourceManager.getResourceSpawnpoint(num5, num6, num7); if (((spawnpoint != null) && !spawnpoint.isDead) && (spawnpoint.asset.bladeID == ((ItemWeaponAsset)__instance.player.equipment.asset).bladeID)) { if (nONE == EPlayerHit.NONE) { nONE = EPlayerHit.BUILD; } PlayerUI.hitmark(___hitmarkerIndex, info2.point, pellets > 1, EPlayerHit.BUILD); } } } else if ((info2.transform != null) && (__instance.equippedGunAsset.objectDamage > 1f)) { InteractableObjectRubble componentInParent = info2.transform.GetComponentInParent <InteractableObjectRubble>(); if (componentInParent != null) { info2.transform = componentInParent.transform; info2.section = componentInParent.getSection(info2.collider.transform); if (!componentInParent.isSectionDead(info2.section) && (componentInParent.asset.rubbleIsVulnerable || ((ItemWeaponAsset)__instance.player.equipment.asset).isInvulnerable)) { if (nONE == EPlayerHit.NONE) { nONE = EPlayerHit.BUILD; } PlayerUI.hitmark(___hitmarkerIndex, info2.point, pellets > 1, EPlayerHit.BUILD); } } } if (Provider.modeConfigData.Gameplay.Ballistics) { if ((info.steps > 0) || (__instance.equippedGunAsset.ballisticSteps <= 1)) { if (__instance.equippedGunAsset.ballisticTravel < 32f) { trace(info.pos + ((Vector3)(info.dir * 32f)), info.dir, ref ___tracerEmitter, ref __instance, ref ___thirdAttachments); } else { trace(info.pos + ((Vector3)(info.dir * UnityEngine.Random.Range(32f, __instance.equippedGunAsset.ballisticTravel))), info.dir, ref ___tracerEmitter, ref __instance, ref ___thirdAttachments); } } } else if (__instance.equippedGunAsset.range < 32f) { trace(ray.origin + ((Vector3)(ray.direction * 32f)), ray.direction, ref ___tracerEmitter, ref __instance, ref ___thirdAttachments); } else { trace(ray.origin + ((Vector3)(ray.direction * UnityEngine.Random.Range(32f, Mathf.Min(64f, __instance.equippedGunAsset.range)))), ray.direction, ref ___tracerEmitter, ref __instance, ref ___thirdAttachments); } float ballisticDrop = __instance.equippedGunAsset.ballisticDrop; if (info.barrelAsset != null) { ballisticDrop *= info.barrelAsset.ballisticDrop; } info.pos += (Vector3)(info.dir * __instance.equippedGunAsset.ballisticTravel); if (!Global.AimSettings.RageBot) { if (!Global.AimSettings.NoDrop) { info.dir.y -= ballisticDrop; } } info.dir.Normalize(); if (Global.AimSettings.RageBot && RageBot.FocusTarget != null) { goto prx; } if (!__instance.player.input.isRaycastInvalid(info2)) { if (nONE != EPlayerHit.NONE) { int num9; if (Provider.provider.statisticsService.userStatisticsService.getStatistic("Accuracy_Hit", out num9)) { Provider.provider.statisticsService.userStatisticsService.setStatistic("Accuracy_Hit", (int)(num9 + 1)); } if ((nONE == EPlayerHit.CRITICAL) && Provider.provider.statisticsService.userStatisticsService.getStatistic("Headshots", out num9)) { Provider.provider.statisticsService.userStatisticsService.setStatistic("Headshots", (int)(num9 + 1)); } } __instance.player.input.sendRaycast(info2); info.steps = 0xfe; } } } } prx: if (__instance.player.equipment.asset != null) { if (Provider.modeConfigData.Gameplay.Ballistics) { for (int k = ___bullets.Count - 1; k >= 0; k--) { BulletInfo info5 = ___bullets[k]; info5.steps = (byte)(info5.steps + 1); if (info5.steps >= __instance.equippedGunAsset.ballisticSteps) { ___bullets.RemoveAt(k); } } } else { ___bullets.Clear(); } } } return(false); }
private float getZoom(UseableGun gun) { return((float)gun.GetType().GetField("zoom", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(gun)); }
public static bool PlayerShoot(Player player, UseableGun gun) { PlayerShootEventArgs evt = new PlayerShootEventArgs(); evt.Player = new PlayerTag(player.channel.owner); // TODO: make GunTag/WeaponTag/EquipmentTag/WhateverTag to store this more accurately? evt.Gun = new ItemAssetTag(player.equipment.asset); UnturnedFreneticEvents.OnPlayerShoot.Fire(evt); return evt.Cancelled; }
// Token: 0x060001F3 RID: 499 RVA: 0x00012908 File Offset: 0x00010B08 public void OnGUI() { Player mainPlayer = OptimizationVariables.MainPlayer; bool flag = mainPlayer == null; object obj; if (flag) { obj = null; } else { PlayerEquipment equipment = mainPlayer.equipment; obj = ((equipment != null) ? equipment.useable : null); } UseableGun useableGun = obj as UseableGun; bool flag2 = useableGun == null || TrajectoryComponent.spying || !WeaponOptions.EnableBulletDropPrediction || !Provider.modeConfigData.Gameplay.Ballistics; bool flag3 = flag2; if (flag3) { bool flag4 = TrajectoryComponent.Highlighted != null; bool flag5 = flag4; if (flag5) { TrajectoryComponent.RemoveHighlight(TrajectoryComponent.Highlighted); TrajectoryComponent.Highlighted = null; } } else { RaycastHit raycastHit; List <Vector3> list = TrajectoryComponent.PlotTrajectory(useableGun, out raycastHit, 255); bool flag6 = Vector3.Distance(list.Last <Vector3>(), OptimizationVariables.MainPlayer.look.aim.position) > useableGun.equippedGunAsset.range; ColorVariable color = ColorUtilities.getColor("_TrajectoryPredictionInRange"); ColorVariable color2 = ColorUtilities.getColor("_TrajectoryPredictionOutOfRange"); bool flag7 = WeaponOptions.HighlightBulletDropPredictionTarget && raycastHit.collider != null; bool flag8 = flag7; if (flag8) { Transform transform = raycastHit.transform; GameObject gameObject = null; bool flag9 = DamageTool.getPlayer(transform) != null; bool flag10 = flag9; if (flag10) { gameObject = DamageTool.getPlayer(transform).gameObject; } else { bool flag11 = DamageTool.getZombie(transform) != null; bool flag12 = flag11; if (flag12) { gameObject = DamageTool.getZombie(transform).gameObject; } else { bool flag13 = DamageTool.getAnimal(transform) != null; bool flag14 = flag13; if (flag14) { gameObject = DamageTool.getAnimal(transform).gameObject; } else { bool flag15 = DamageTool.getVehicle(transform) != null; bool flag16 = flag15; if (flag16) { gameObject = DamageTool.getVehicle(transform).gameObject; } } } } bool flag17 = gameObject != null; bool flag18 = flag17; if (flag18) { Highlighter highlighter = gameObject.GetComponent <Highlighter>() ?? gameObject.AddComponent <Highlighter>(); bool flag19 = !highlighter.enabled; bool flag20 = flag19; if (flag20) { highlighter.occluder = true; highlighter.overlay = true; highlighter.ConstantOnImmediate(flag6 ? color2 : color); } bool flag21 = TrajectoryComponent.Highlighted != null && highlighter != TrajectoryComponent.Highlighted; bool flag22 = flag21; if (flag22) { TrajectoryComponent.RemoveHighlight(TrajectoryComponent.Highlighted); } TrajectoryComponent.Highlighted = highlighter; } else { bool flag23 = TrajectoryComponent.Highlighted != null; bool flag24 = flag23; if (flag24) { TrajectoryComponent.RemoveHighlight(TrajectoryComponent.Highlighted); TrajectoryComponent.Highlighted = null; } } } else { bool flag25 = !WeaponOptions.HighlightBulletDropPredictionTarget && TrajectoryComponent.Highlighted != null; bool flag26 = flag25; if (flag26) { TrajectoryComponent.RemoveHighlight(TrajectoryComponent.Highlighted); TrajectoryComponent.Highlighted = null; } } ESPComponent.GLMat.SetPass(0); GL.PushMatrix(); GL.LoadProjectionMatrix(OptimizationVariables.MainCam.projectionMatrix); GL.modelview = OptimizationVariables.MainCam.worldToCameraMatrix; GL.Begin(2); GL.Color(flag6 ? color2 : color); foreach (Vector3 v in list) { GL.Vertex(v); } GL.End(); GL.PopMatrix(); } }
private static void OnBulletSpawned(UseableGun useableGun, BulletInfo bulletInfo) => HitAccuracy(useableGun, bulletInfo);