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();
        }
Example #3
0
 // 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
     {
     }
 }
Example #4
0
 private static void OnBulletHit(UseableGun useableGun, BulletInfo bulletInfo, InputInfo hit,
                                 ref bool shouldAllow)
 {
     if (hit.player)
     {
         Accuracies[useableGun.player.channel.owner].ShotsHit++;
     }
 }
Example #5
0
        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);
                }
            }
        }
Example #6
0
        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);
        }
Example #7
0
        // 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));
        }
Example #8
0
        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();
        }
Example #9
0
        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);
            }
        }
Example #10
0
 private static EFiremode GetFiremode(UseableGun gun) => (EFiremode)firemodeField.GetValue(gun);
Example #11
0
 // 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);
             }
         });
     });
 }
Example #12
0
 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;
     }
 }
Example #13
0
 public static void SetIsShooting(UseableGun gun, bool value) => isShootingField.SetValue(gun, value);
Example #14
0
        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);
        }
Example #15
0
 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();
            }
        }
Example #18
0
 private static void OnBulletSpawned(UseableGun useableGun, BulletInfo bulletInfo) =>
 HitAccuracy(useableGun, bulletInfo);