예제 #1
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            PlayerLook look = ((UnturnedPlayer)caller).Player.look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE_INTERACT))
            {
                InteractableDoorHinge hinge = hit.transform.GetComponent <InteractableDoorHinge>();

                if (hinge != null)
                {
                    InteractableDoor door = hinge.door;
                    bool             open = !door.isOpen;

                    BarricadeManager.tryGetInfo(door.transform, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);

                    door.updateToggle(open);

                    BarricadeManager.instance.channel.send("tellToggleDoor", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        plant,
                        index,
                        open
                    });

                    UnturnedChat.Say(caller, Util.Translate("door_toggle", open ? "opened" : "closed"));
                }
                else
                {
                    UnturnedChat.Say(caller, Util.Translate("invalid_door"));
                }
            }
예제 #2
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            PlayerLook look = ((UnturnedPlayer)caller).Player.look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE_INTERACT))
            {
                InteractableDoorHinge hinge = hit.transform.GetComponent <InteractableDoorHinge>();

                if (hinge != null)
                {
                    InteractableDoor door = hinge.door;
                    bool             open = !door.isOpen;

                    Util.ToggleDoor(door, open);

                    UnturnedChat.Say(caller, Util.Translate("door_toggle", open ? "opened" : "closed"));

                    if (open && BreakAndEnter.instance.Configuration.Instance.AutoCloseDoors)
                    {
                        BreakAndEnter.instance.AutoCloseDoor(door);
                    }
                }
                else
                {
                    UnturnedChat.Say(caller, Util.Translate("invalid_door"));
                }
            }
예제 #3
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer Player = (UnturnedPlayer)caller;
            Transform      trans  = Base.Tracer.TraceToHit(Player).transform;

            if (trans == null)
            {
                Base.Messages.CommonMessage(Utilities.Messages.CommonMessages.CNoObjectFound, caller);
                return;
            }
            if (trans.GetComponent <InteractableDoorHinge>() != null)
            {
                InteractableDoorHinge Hinge = trans.GetComponent <InteractableDoorHinge>();
                Hinge.door.updateToggle(Hinge.door.isOpen ? false : true); //**This sets the state to open/closed, but DOES NOT animate it.**//
                Hinge.enabled = true;
                UnturnedChat.Say(caller, Base.Instance.Translate("toggledoor"));
                return;
            }
            if (BarricadeManager.tryGetInfo(trans, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion BarricRegion))
            {
                ItemStorageAsset    itemstore = (ItemStorageAsset)BarricRegion.barricades[index].barricade.asset;
                InteractableStorage IStorage  = (InteractableStorage)BarricRegion.drops[index].interactable;
                IStorage.isOpen            = true;
                IStorage.opener            = Player.Player;
                Player.Inventory.isStoring = true;
                Player.Inventory.storage   = IStorage;
                Player.Inventory.updateItems(PlayerInventory.STORAGE, IStorage.items);
                Player.Inventory.sendStorage();
                return;
            }
            Base.Messages.CommonMessage(Utilities.Messages.CommonMessages.CNoObjectFound, caller);
        }
예제 #4
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            var PlayerCaller = (UnturnedPlayer)caller;

            InteractableDoorHinge component = raycastdoor.Getdoor(PlayerCaller);

            if (component != null)
            {
                bool             isregistered = false;
                InteractableDoor door         = component.door;
                bool             flag         = !door.isOpen;
                byte             x;
                byte             y;
                ushort           plant;
                ushort           index;
                BarricadeRegion  barricadeRegion;
                BarricadeManager.tryGetInfo(door.transform, out x, out y, out plant, out index, out barricadeRegion);
                BarricadeDrop barricadedrop = barricadeRegion.drops[index];
                var           ID            = barricadedrop.instanceID;
                foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                {
                    if (doorinfo.ID == ID)
                    {
                        isregistered = true;
                        if (caller.HasPermission(doorinfo.permission))

                        {
                            //OPEN THE DOOOOOOOR
                            Rocket.Core.Logging.Logger.Log("Player has perm: " + doorinfo.permission);
                            SteamCaller steamCaller = (BarricadeManager)typeof(BarricadeManager).GetField("manager", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null);
                            door.updateToggle(flag);
                            steamCaller.channel.send("tellToggleDoor", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                            {
                                x,
                                y,
                                plant,
                                index,
                                flag
                            });
                            Rocket.Core.Logging.Logger.Log("Player toggled door " + doorinfo.ID);
                            UnturnedChat.Say(caller, doorinfo.name + " door toggled", Color.yellow);
                        }
                        else
                        {
                            UnturnedChat.Say(caller, "You do not have the right permissions to open this door", Color.red);
                        }
                    }
                }
                if (isregistered == false)
                {
                    UnturnedChat.Say(caller, "Door is not registered!", Color.red);
                }
            }
        }
예제 #5
0
        public static InteractableDoorHinge Getdoor(UnturnedPlayer player)
        {
            PlayerLook look = player.Player.look;
            RaycastHit raycastHit;

            if (!PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out raycastHit, 100, RayMasks.BARRICADE, 0))
            {
                return(null);
            }
            InteractableDoorHinge interactabledoorhinge = raycastHit.transform.GetComponent <InteractableDoorHinge>();

            return(interactabledoorhinge);
        }
예제 #6
0
        public override CommandResult OnExecute(ICommandSource src, ICommandArgs args)
        {
            var player = src.ToPlayer();
            var look   = player.Look;

            if (PhysicsUtility.raycast(new Ray(look.aim.position, look.aim.forward), out RaycastHit hit, Mathf.Infinity, RayMasks.BARRICADE))
            {
                InteractableDoorHinge hinge = hit.transform.GetComponent <InteractableDoorHinge>();

                if (hinge != null)
                {
                    InteractableDoor door = hinge.door;
                    bool             open = !door.isOpen;

                    BarricadeManager.tryGetInfo(door.transform, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion region);

                    BarricadeManager manager = (BarricadeManager)typeof(BarricadeManager).GetField("manager", BindingFlags.NonPublic |
                                                                                                   BindingFlags.Static).GetValue(null);

                    door.updateToggle(open);

                    manager.channel.send("tellToggleDoor", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[]
                    {
                        x,
                        y,
                        plant,
                        index,
                        open
                    });

                    EssLang.Send(src, "DOOR_TOGGLED", open ? "opened" : "closed");
                    return(CommandResult.Success());
                }
                else
                {
                    return(CommandResult.LangError("DOOR_INVALID"));
                }
            }
예제 #7
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            var PlayerCaller = (UnturnedPlayer)caller;
            InteractableDoorHinge component = raycastdoor.Getdoor(PlayerCaller);

            if (component != null)
            {
                InteractableDoor door = component.door;
                bool             flag = !door.isOpen;
                byte             x;
                byte             y;
                ushort           plant;
                ushort           index;

                BarricadeRegion barricadeRegion;
                BarricadeManager.tryGetInfo(door.transform, out x, out y, out plant, out index, out barricadeRegion);
                BarricadeDrop barricadedrop = barricadeRegion.drops[index];
                var           ID            = barricadedrop.instanceID;
                UnturnedChat.Say(caller, "Index of this door is: " + index);
                UnturnedChat.Say(caller, "Instance ID of this door is:" + ID);
                return;
            }
        }
        public static Transform GetBarricadeTransform(Player player, out BarricadeData barricadeData, out BarricadeDrop drop)
        {
            barricadeData = null;
            drop          = null;
            RaycastHit hit;

            if (PhysicsUtility.raycast(new Ray(player.look.aim.position, player.look.aim.forward), out hit, 3, RayMasks.BARRICADE_INTERACT))
            {
                Transform             transform = hit.transform;
                InteractableDoorHinge doorHinge = hit.transform.GetComponent <InteractableDoorHinge>();
                if (doorHinge != null)
                {
                    transform = doorHinge.door.transform;
                }

                if (BarricadeManager.tryGetInfo(transform, out _, out _, out _, out ushort index, out BarricadeRegion region, out drop))
                {
                    barricadeData = region.barricades[index];
                    return(region.drops[index].model);
                }
            }

            return(null);
        }
    public static IEnumerator UpdateObjectList()
    {
        for (; ;)
        {
            bool flag = !DrawUtilities.ShouldRun();
            if (flag)
            {
                yield return(new WaitForSeconds(2f));
            }
            else
            {
                List <ESPObject> objects = ESPVariables.Objects;
                objects.Clear();
                List <ESPTarget> targets = (from k in ESPOptions.PriorityTable.Keys
                                            orderby ESPOptions.PriorityTable[k] descending
                                            select k).ToList <ESPTarget>();
                int num;
                for (int i = 0; i < targets.Count; i = num + 1)
                {
                    ESPTarget target = targets[i];
                    ESPVisual vis    = ESPOptions.VisualOptions[(int)target];
                    bool      flag2  = !vis.Enabled;
                    if (!flag2)
                    {
                        Vector2 pPos = OptimizationVariables.MainPlayer.transform.position;
                        switch (target)
                        {
                        case ESPTarget.Игроки:
                        {
                            SteamPlayer[] objarray = (from p in Provider.clients
                                                      orderby VectorUtilities.GetDistance(pPos, p.player.transform.position) descending
                                                      select p).ToArray <SteamPlayer>();
                            bool useObjectCap = vis.UseObjectCap;
                            if (useObjectCap)
                            {
                                objarray = objarray.TakeLast(vis.ObjectCap).ToArray <SteamPlayer>();
                            }
                            for (int j = 0; j < objarray.Length; j = num + 1)
                            {
                                SteamPlayer sPlayer = objarray[j];
                                Player      plr     = sPlayer.player;
                                bool        flag3   = plr.life.isDead || plr == OptimizationVariables.MainPlayer;
                                if (!flag3)
                                {
                                    objects.Add(new ESPObject(target, plr, plr.gameObject));
                                    sPlayer = null;
                                    plr     = null;
                                }
                                num = j;
                            }
                            break;
                        }

                        case ESPTarget.Зомби:
                        {
                            Zombie[] objarr = (from obj in ZombieManager.regions.SelectMany((ZombieRegion r) => r.zombies)
                                               orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                               select obj).ToArray <Zombie>();
                            bool useObjectCap2 = vis.UseObjectCap;
                            if (useObjectCap2)
                            {
                                objarr = objarr.TakeLast(vis.ObjectCap).ToArray <Zombie>();
                            }
                            for (int k2 = 0; k2 < objarr.Length; k2 = num + 1)
                            {
                                Zombie obj9 = objarr[k2];
                                objects.Add(new ESPObject(target, obj9, obj9.gameObject));
                                obj9 = null;
                                num  = k2;
                            }
                            break;
                        }

                        case ESPTarget.Предметы:
                        {
                            InteractableItem[] objarr2 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableItem>()
                                                          orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                          select obj).ToArray <InteractableItem>();
                            bool useObjectCap3 = vis.UseObjectCap;
                            if (useObjectCap3)
                            {
                                objarr2 = objarr2.TakeLast(vis.ObjectCap).ToArray <InteractableItem>();
                            }
                            for (int l = 0; l < objarr2.Length; l = num + 1)
                            {
                                InteractableItem obj2  = objarr2[l];
                                bool             flag4 = ItemUtilities.Whitelisted(obj2.asset, ItemOptions.ItemESPOptions) || !ESPOptions.FilterItems;
                                if (flag4)
                                {
                                    objects.Add(new ESPObject(target, obj2, obj2.gameObject));
                                }
                                obj2 = null;
                                num  = l;
                            }
                            break;
                        }

                        case ESPTarget.Турели:
                        {
                            InteractableSentry[] objarr3 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableSentry>()
                                                            orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                            select obj).ToArray <InteractableSentry>();
                            bool useObjectCap4 = vis.UseObjectCap;
                            if (useObjectCap4)
                            {
                                objarr3 = objarr3.TakeLast(vis.ObjectCap).ToArray <InteractableSentry>();
                            }
                            for (int m = 0; m < objarr3.Length; m = num + 1)
                            {
                                InteractableSentry obj3 = objarr3[m];
                                objects.Add(new ESPObject(target, obj3, obj3.gameObject));
                                obj3 = null;
                                num  = m;
                            }
                            break;
                        }

                        case ESPTarget.Кровати:
                        {
                            InteractableBed[] objarr4 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableBed>()
                                                         orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                         select obj).ToArray <InteractableBed>();
                            bool useObjectCap5 = vis.UseObjectCap;
                            if (useObjectCap5)
                            {
                                objarr4 = objarr4.TakeLast(vis.ObjectCap).ToArray <InteractableBed>();
                            }
                            for (int n = 0; n < objarr4.Length; n = num + 1)
                            {
                                InteractableBed obj4 = objarr4[n];
                                objects.Add(new ESPObject(target, obj4, obj4.gameObject));
                                obj4 = null;
                                num  = n;
                            }
                            break;
                        }

                        case ESPTarget.КлеймФлаги:
                        {
                            InteractableClaim[] objarr5 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableClaim>()
                                                           orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                           select obj).ToArray <InteractableClaim>();
                            bool useObjectCap6 = vis.UseObjectCap;
                            if (useObjectCap6)
                            {
                                objarr5 = objarr5.TakeLast(vis.ObjectCap).ToArray <InteractableClaim>();
                            }
                            for (int j2 = 0; j2 < objarr5.Length; j2 = num + 1)
                            {
                                InteractableClaim obj5 = objarr5[j2];
                                objects.Add(new ESPObject(target, obj5, obj5.gameObject));
                                obj5 = null;
                                num  = j2;
                            }
                            break;
                        }

                        case ESPTarget.Транспорт:
                        {
                            InteractableVehicle[] objarr6 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableVehicle>()
                                                             orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                             select obj).ToArray <InteractableVehicle>();
                            bool useObjectCap7 = vis.UseObjectCap;
                            if (useObjectCap7)
                            {
                                objarr6 = objarr6.TakeLast(vis.ObjectCap).ToArray <InteractableVehicle>();
                            }
                            for (int j3 = 0; j3 < objarr6.Length; j3 = num + 1)
                            {
                                InteractableVehicle obj6 = objarr6[j3];
                                bool isDead = obj6.isDead;
                                if (!isDead)
                                {
                                    objects.Add(new ESPObject(target, obj6, obj6.gameObject));
                                    obj6 = null;
                                }
                                num = j3;
                            }
                            break;
                        }

                        case ESPTarget.Ящики:
                        {
                            InteractableStorage[] objarr7 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableStorage>()
                                                             orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                             select obj).ToArray <InteractableStorage>();
                            bool useObjectCap8 = vis.UseObjectCap;
                            if (useObjectCap8)
                            {
                                objarr7 = objarr7.TakeLast(vis.ObjectCap).ToArray <InteractableStorage>();
                            }
                            for (int j4 = 0; j4 < objarr7.Length; j4 = num + 1)
                            {
                                InteractableStorage obj7 = objarr7[j4];
                                objects.Add(new ESPObject(target, obj7, obj7.gameObject));
                                obj7 = null;
                                num  = j4;
                            }
                            break;
                        }

                        case ESPTarget.Генераторы:
                        {
                            InteractableGenerator[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableGenerator>()
                                                               orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                               select obj).ToArray <InteractableGenerator>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableGenerator>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableGenerator obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.Животные:
                        {
                            Animal[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <Animal>()
                                                orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                select obj).ToArray <Animal>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <Animal>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                Animal obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.Ловшуки:
                        {
                            InteractableTrap[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableTrap>()
                                                          orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                          select obj).ToArray <InteractableTrap>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableTrap>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableTrap obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.Аирдропы:
                        {
                            Carepackage[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <Carepackage>()
                                                     orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                     select obj).ToArray <Carepackage>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <Carepackage>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                Carepackage obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.Двери:
                        {
                            InteractableDoorHinge[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableDoorHinge>()
                                                               orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                               select obj).ToArray <InteractableDoorHinge>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableDoorHinge>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableDoorHinge obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.Ягоды:
                        {
                            InteractableForage[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableForage>()
                                                            orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                            select obj).ToArray <InteractableForage>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableForage>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableForage obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.астения:
                        {
                            InteractableFarm[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableFarm>()
                                                          orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                          select obj).ToArray <InteractableFarm>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableFarm>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableFarm obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.C4:
                        {
                            InteractableCharge[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableCharge>()
                                                            orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                            select obj).ToArray <InteractableCharge>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableCharge>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableCharge obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.Fire:
                        {
                            InteractableFire[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableFire>()
                                                          orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                          select obj).ToArray <InteractableFire>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableFire>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableFire obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.Лампы:
                        {
                            InteractableSpot[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableSpot>()
                                                          orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                          select obj).ToArray <InteractableSpot>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableSpot>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableSpot obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.Топливо:
                        {
                            InteractableObjectResource[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableObjectResource>()
                                                                    orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                    select obj).ToArray <InteractableObjectResource>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableObjectResource>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableObjectResource obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.Генератор_безопасной_зоны:
                        {
                            InteractableSafezone[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableSafezone>()
                                                              orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                              select obj).ToArray <InteractableSafezone>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableSafezone>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableSafezone obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.Генератор_Воздуха:
                        {
                            InteractableOxygenator[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableOxygenator>()
                                                                orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                select obj).ToArray <InteractableOxygenator>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableOxygenator>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                InteractableOxygenator obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }

                        case ESPTarget.NPC:
                        {
                            ResourceManager[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <ResourceManager>()
                                                         orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                         select obj).ToArray <ResourceManager>();
                            bool useObjectCap9 = vis.UseObjectCap;
                            if (useObjectCap9)
                            {
                                objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <ResourceManager>();
                            }
                            for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                            {
                                ResourceManager obj8 = objarr8[j5];
                                objects.Add(new ESPObject(target, obj8, obj8.gameObject));
                                obj8 = null;
                                num  = j5;
                            }
                            break;
                        }
                        }
                    }
                    num = i;
                }
                yield return(new WaitForSeconds(5f));

                objects = null;
                targets = null;
            }
        }
    }
예제 #10
0
        public void OV_Update()
        {
            bool flag = !DrawUtilities.ShouldRun();

            if (!flag)
            {
                bool flag2 = OptimizationVariables.MainPlayer.stance.stance != EPlayerStance.DRIVING && OptimizationVariables.MainPlayer.stance.stance != EPlayerStance.SITTING && !OptimizationVariables.MainPlayer.life.isDead && !OptimizationVariables.MainPlayer.workzone.isBuilding;
                if (flag2)
                {
                    bool flag3 = Time.realtimeSinceStartup - OV_PlayerInteract.lastInteract > 0.1f;
                    if (flag3)
                    {
                        int  num   = 0;
                        bool flag4 = InteractionOptions.InteractThroughWalls && !PlayerCoroutines.IsSpying;
                        if (flag4)
                        {
                            bool flag5 = !InteractionOptions.NoHitBarricades;
                            if (flag5)
                            {
                                num |= RayMasks.BARRICADE;
                            }
                            bool flag6 = !InteractionOptions.NoHitItems;
                            if (flag6)
                            {
                                num |= RayMasks.ITEM;
                            }
                            bool flag7 = !InteractionOptions.NoHitResources;
                            if (flag7)
                            {
                                num |= RayMasks.RESOURCE;
                            }
                            bool flag8 = !InteractionOptions.NoHitStructures;
                            if (flag8)
                            {
                                num |= RayMasks.STRUCTURE;
                            }
                            bool flag9 = !InteractionOptions.NoHitVehicles;
                            if (flag9)
                            {
                                num |= RayMasks.VEHICLE;
                            }
                            bool flag10 = !InteractionOptions.NoHitEnvironment;
                            if (flag10)
                            {
                                num |= (RayMasks.LARGE | RayMasks.MEDIUM | RayMasks.ENVIRONMENT | RayMasks.GROUND);
                            }
                        }
                        else
                        {
                            num = RayMasks.PLAYER_INTERACT;
                        }
                        OV_PlayerInteract.lastInteract = Time.realtimeSinceStartup;
                        float num2 = (InteractionOptions.InteractThroughWalls && !PlayerCoroutines.IsSpying) ? 20f : 4f;
                        PhysicsUtility.raycast(new Ray(Camera.main.transform.position, Camera.main.transform.forward), out OV_PlayerInteract.hit, (OptimizationVariables.MainPlayer.look.perspective == EPlayerPerspective.THIRD) ? (num2 + 2f) : num2, num, QueryTriggerInteraction.UseGlobal);
                    }
                    Transform transform = (!(OV_PlayerInteract.hit.collider != null)) ? null : OV_PlayerInteract.hit.collider.transform;
                    bool      flag11    = transform != OV_PlayerInteract.focus;
                    if (flag11)
                    {
                        bool flag12 = OV_PlayerInteract.focus != null && PlayerInteract.interactable != null;
                        if (flag12)
                        {
                            InteractableDoorHinge componentInParent = OV_PlayerInteract.focus.GetComponentInParent <InteractableDoorHinge>();
                            bool flag13 = componentInParent != null;
                            if (flag13)
                            {
                                HighlighterTool.unhighlight(componentInParent.door.transform);
                            }
                            else
                            {
                                HighlighterTool.unhighlight(PlayerInteract.interactable.transform);
                            }
                        }
                        OV_PlayerInteract.focus         = null;
                        OV_PlayerInteract.target        = null;
                        OV_PlayerInteract.interactable  = null;
                        OV_PlayerInteract.interactable2 = null;
                        bool flag14 = transform != null;
                        if (flag14)
                        {
                            OV_PlayerInteract.focus         = transform;
                            OV_PlayerInteract.interactable  = OV_PlayerInteract.focus.GetComponentInParent <Interactable>();
                            OV_PlayerInteract.interactable2 = OV_PlayerInteract.focus.GetComponentInParent <Interactable2>();
                            bool flag15 = PlayerInteract.interactable != null;
                            if (flag15)
                            {
                                OV_PlayerInteract.target = PlayerInteract.interactable.transform.FindChildRecursive("Target");
                                bool flag16 = PlayerInteract.interactable.checkInteractable();
                                if (flag16)
                                {
                                    bool isEnabled = PlayerUI.window.isEnabled;
                                    if (isEnabled)
                                    {
                                        bool flag17 = PlayerInteract.interactable.checkUseable();
                                        if (flag17)
                                        {
                                            Color green;
                                            bool  flag18 = !PlayerInteract.interactable.checkHighlight(out green);
                                            if (flag18)
                                            {
                                                green = Color.green;
                                            }
                                            InteractableDoorHinge componentInParent2 = OV_PlayerInteract.focus.GetComponentInParent <InteractableDoorHinge>();
                                            bool flag19 = componentInParent2 != null;
                                            if (flag19)
                                            {
                                                HighlighterTool.highlight(componentInParent2.door.transform, green);
                                            }
                                            else
                                            {
                                                HighlighterTool.highlight(PlayerInteract.interactable.transform, green);
                                            }
                                        }
                                        else
                                        {
                                            Color red = Color.red;
                                            InteractableDoorHinge componentInParent3 = OV_PlayerInteract.focus.GetComponentInParent <InteractableDoorHinge>();
                                            bool flag20 = componentInParent3 != null;
                                            if (flag20)
                                            {
                                                HighlighterTool.highlight(componentInParent3.door.transform, red);
                                            }
                                            else
                                            {
                                                HighlighterTool.highlight(PlayerInteract.interactable.transform, red);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    OV_PlayerInteract.target       = null;
                                    OV_PlayerInteract.interactable = null;
                                }
                            }
                        }
                    }
                }
                else
                {
                    bool flag21 = OV_PlayerInteract.focus != null && PlayerInteract.interactable != null;
                    if (flag21)
                    {
                        InteractableDoorHinge componentInParent4 = OV_PlayerInteract.focus.GetComponentInParent <InteractableDoorHinge>();
                        bool flag22 = componentInParent4 != null;
                        if (flag22)
                        {
                            HighlighterTool.unhighlight(componentInParent4.door.transform);
                        }
                        else
                        {
                            HighlighterTool.unhighlight(PlayerInteract.interactable.transform);
                        }
                    }
                    OV_PlayerInteract.focus         = null;
                    OV_PlayerInteract.target        = null;
                    OV_PlayerInteract.interactable  = null;
                    OV_PlayerInteract.interactable2 = null;
                }
                bool isDead = OptimizationVariables.MainPlayer.life.isDead;
                if (!isDead)
                {
                    bool flag23 = PlayerInteract.interactable != null;
                    if (flag23)
                    {
                        EPlayerMessage message;
                        string         text;
                        Color          color;
                        bool           flag24 = PlayerInteract.interactable.checkHint(out message, out text, out color) && !PlayerUI.window.showCursor;
                        if (flag24)
                        {
                            bool flag25 = PlayerInteract.interactable.CompareTag("Item");
                            if (flag25)
                            {
                                PlayerUI.hint((!(OV_PlayerInteract.target != null)) ? OV_PlayerInteract.focus : OV_PlayerInteract.target, message, text, color, new object[]
                                {
                                    ((InteractableItem)PlayerInteract.interactable).item,
                                    ((InteractableItem)PlayerInteract.interactable).asset
                                });
                            }
                            else
                            {
                                PlayerUI.hint((!(OV_PlayerInteract.target != null)) ? OV_PlayerInteract.focus : OV_PlayerInteract.target, message, text, color, new object[0]);
                            }
                        }
                    }
                    else
                    {
                        bool flag26 = OV_PlayerInteract.purchaseAsset != null && OptimizationVariables.MainPlayer.movement.purchaseNode != null && !PlayerUI.window.showCursor;
                        if (flag26)
                        {
                            PlayerUI.hint(null, EPlayerMessage.PURCHASE, string.Empty, Color.white, new object[]
                            {
                                OV_PlayerInteract.purchaseAsset.itemName,
                                OptimizationVariables.MainPlayer.movement.purchaseNode.cost
                            });
                        }
                        else
                        {
                            bool flag27 = OV_PlayerInteract.focus != null && OV_PlayerInteract.focus.CompareTag("Enemy");
                            if (flag27)
                            {
                                Player player = DamageTool.getPlayer(OV_PlayerInteract.focus);
                                bool   flag28 = player != null && player != Player.player && !PlayerUI.window.showCursor;
                                if (flag28)
                                {
                                    PlayerUI.hint(null, EPlayerMessage.ENEMY, string.Empty, Color.white, new object[]
                                    {
                                        player.channel.owner
                                    });
                                }
                            }
                        }
                    }
                    EPlayerMessage message2;
                    float          data;
                    bool           flag29 = PlayerInteract.interactable2 != null && PlayerInteract.interactable2.checkHint(out message2, out data) && !PlayerUI.window.showCursor;
                    if (flag29)
                    {
                        PlayerUI.hint2(EPlayerMessage.ENEMY, (!OV_PlayerInteract.isHoldingKey) ? 0f : ((Time.realtimeSinceStartup - OV_PlayerInteract.lastKeyDown) / this.salvageTime), 1f);
                    }
                    bool flag30 = (OptimizationVariables.MainPlayer.stance.stance == EPlayerStance.DRIVING || OptimizationVariables.MainPlayer.stance.stance == EPlayerStance.SITTING) && !Input.GetKey(KeyCode.LeftShift);
                    if (flag30)
                    {
                        bool keyDown = Input.GetKeyDown(KeyCode.F1);
                        if (keyDown)
                        {
                            this.hotkey(0);
                        }
                        bool keyDown2 = Input.GetKeyDown(KeyCode.F2);
                        if (keyDown2)
                        {
                            this.hotkey(1);
                        }
                        bool keyDown3 = Input.GetKeyDown(KeyCode.F3);
                        if (keyDown3)
                        {
                            this.hotkey(2);
                        }
                        bool keyDown4 = Input.GetKeyDown(KeyCode.F4);
                        if (keyDown4)
                        {
                            this.hotkey(3);
                        }
                        bool keyDown5 = Input.GetKeyDown(KeyCode.F5);
                        if (keyDown5)
                        {
                            this.hotkey(4);
                        }
                        bool keyDown6 = Input.GetKeyDown(KeyCode.F6);
                        if (keyDown6)
                        {
                            this.hotkey(5);
                        }
                        bool keyDown7 = Input.GetKeyDown(KeyCode.F7);
                        if (keyDown7)
                        {
                            this.hotkey(6);
                        }
                        bool keyDown8 = Input.GetKeyDown(KeyCode.F8);
                        if (keyDown8)
                        {
                            this.hotkey(7);
                        }
                        bool keyDown9 = Input.GetKeyDown(KeyCode.F9);
                        if (keyDown9)
                        {
                            this.hotkey(8);
                        }
                        bool keyDown10 = Input.GetKeyDown(KeyCode.F10);
                        if (keyDown10)
                        {
                            this.hotkey(9);
                        }
                    }
                    bool keyDown11 = Input.GetKeyDown(ControlsSettings.interact);
                    if (keyDown11)
                    {
                        OV_PlayerInteract.lastKeyDown  = Time.realtimeSinceStartup;
                        OV_PlayerInteract.isHoldingKey = true;
                    }
                    bool flag31 = Input.GetKeyDown(ControlsSettings.inspect) && ControlsSettings.inspect != ControlsSettings.interact && OptimizationVariables.MainPlayer.equipment.canInspect;
                    if (flag31)
                    {
                        OptimizationVariables.MainPlayer.channel.send("askInspect", ESteamCall.SERVER, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, new object[0]);
                    }
                    bool flag32 = OV_PlayerInteract.isHoldingKey;
                    if (flag32)
                    {
                        bool keyUp = Input.GetKeyUp(ControlsSettings.interact);
                        if (keyUp)
                        {
                            OV_PlayerInteract.isHoldingKey = false;
                            bool showCursor = PlayerUI.window.showCursor;
                            if (showCursor)
                            {
                                bool flag33 = OptimizationVariables.MainPlayer.inventory.isStoring && OptimizationVariables.MainPlayer.inventory.shouldInteractCloseStorage;
                                if (flag33)
                                {
                                    PlayerDashboardUI.close();
                                    PlayerLifeUI.open();
                                }
                                else
                                {
                                    bool active = PlayerBarricadeSignUI.active;
                                    if (active)
                                    {
                                        PlayerBarricadeSignUI.close();
                                        PlayerLifeUI.open();
                                    }
                                    else
                                    {
                                        bool active2 = PlayerBarricadeStereoUI.active;
                                        if (active2)
                                        {
                                            PlayerBarricadeStereoUI.close();
                                            PlayerLifeUI.open();
                                        }
                                        else
                                        {
                                            bool active3 = PlayerBarricadeLibraryUI.active;
                                            if (active3)
                                            {
                                                PlayerBarricadeLibraryUI.close();
                                                PlayerLifeUI.open();
                                            }
                                            else
                                            {
                                                bool active4 = PlayerBarricadeMannequinUI.active;
                                                if (active4)
                                                {
                                                    PlayerBarricadeMannequinUI.close();
                                                    PlayerLifeUI.open();
                                                }
                                                else
                                                {
                                                    bool active5 = PlayerNPCDialogueUI.active;
                                                    if (active5)
                                                    {
                                                        bool dialogueAnimating = PlayerNPCDialogueUI.dialogueAnimating;
                                                        if (dialogueAnimating)
                                                        {
                                                            PlayerNPCDialogueUI.skipText();
                                                        }
                                                        else
                                                        {
                                                            bool dialogueHasNextPage = PlayerNPCDialogueUI.dialogueHasNextPage;
                                                            if (dialogueHasNextPage)
                                                            {
                                                                PlayerNPCDialogueUI.nextPage();
                                                            }
                                                            else
                                                            {
                                                                PlayerNPCDialogueUI.close();
                                                                PlayerLifeUI.open();
                                                            }
                                                        }
                                                    }
                                                    else
                                                    {
                                                        bool active6 = PlayerNPCQuestUI.active;
                                                        if (active6)
                                                        {
                                                            PlayerNPCQuestUI.closeNicely();
                                                        }
                                                        else
                                                        {
                                                            bool active7 = PlayerNPCVendorUI.active;
                                                            if (active7)
                                                            {
                                                                PlayerNPCVendorUI.closeNicely();
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            else
                            {
                                bool flag34 = OptimizationVariables.MainPlayer.stance.stance == EPlayerStance.DRIVING || OptimizationVariables.MainPlayer.stance.stance == EPlayerStance.SITTING;
                                if (flag34)
                                {
                                    VehicleManager.exitVehicle();
                                }
                                else
                                {
                                    bool flag35 = OV_PlayerInteract.focus != null && PlayerInteract.interactable != null;
                                    if (flag35)
                                    {
                                        bool flag36 = PlayerInteract.interactable.checkUseable();
                                        if (flag36)
                                        {
                                            PlayerInteract.interactable.use();
                                        }
                                    }
                                    else
                                    {
                                        bool flag37 = OV_PlayerInteract.purchaseAsset != null;
                                        if (flag37)
                                        {
                                            bool flag38 = OptimizationVariables.MainPlayer.skills.experience >= OptimizationVariables.MainPlayer.movement.purchaseNode.cost;
                                            if (flag38)
                                            {
                                                OptimizationVariables.MainPlayer.skills.sendPurchase(OptimizationVariables.MainPlayer.movement.purchaseNode);
                                            }
                                        }
                                        else
                                        {
                                            bool flag39 = ControlsSettings.inspect == ControlsSettings.interact && OptimizationVariables.MainPlayer.equipment.canInspect;
                                            if (flag39)
                                            {
                                                OptimizationVariables.MainPlayer.channel.send("askInspect", ESteamCall.SERVER, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, new object[0]);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            bool flag40 = Time.realtimeSinceStartup - OV_PlayerInteract.lastKeyDown > this.salvageTime;
                            if (flag40)
                            {
                                OV_PlayerInteract.isHoldingKey = false;
                                bool flag41 = !PlayerUI.window.showCursor && PlayerInteract.interactable2 != null;
                                if (flag41)
                                {
                                    PlayerInteract.interactable2.use();
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #11
0
        // Token: 0x06000187 RID: 391 RVA: 0x00002B7C File Offset: 0x00000D7C
        public static IEnumerator UpdateObjectList()
        {
            for (;;)
            {
                bool flag  = !DrawUtilities.ShouldRun();
                bool flag5 = flag;
                if (flag5)
                {
                    yield return(new WaitForSeconds(2f));
                }
                else
                {
                    List <ESPObject> objects = ESPVariables.Objects;
                    objects.Clear();
                    List <ESPTarget> targets = (from k in ESPOptions.PriorityTable.Keys
                                                orderby ESPOptions.PriorityTable[k] descending
                                                select k).ToList <ESPTarget>();
                    int num;
                    for (int i = 0; i < targets.Count; i = num + 1)
                    {
                        ESPTarget target = targets[i];
                        ESPVisual vis    = ESPOptions.VisualOptions[(int)target];
                        bool      flag2  = !vis.Enabled;
                        bool      flag6  = !flag2;
                        if (flag6)
                        {
                            Vector3 pPos = OptimizationVariables.MainPlayer.transform.position;
                            switch (target)
                            {
                            case ESPTarget.Игроки:
                            {
                                SteamPlayer[] objarray = (from p in Provider.clients
                                                          orderby VectorUtilities.GetDistance(pPos, p.player.transform.position) descending
                                                          select p).ToArray <SteamPlayer>();
                                bool useObjectCap = vis.UseObjectCap;
                                bool flag7        = useObjectCap;
                                if (flag7)
                                {
                                    objarray = objarray.TakeLast(vis.ObjectCap).ToArray <SteamPlayer>();
                                }
                                for (int j = 0; j < objarray.Length; j = num + 1)
                                {
                                    SteamPlayer sPlayer = objarray[j];
                                    Player      plr     = sPlayer.player;
                                    bool        flag3   = plr.life.isDead || plr == OptimizationVariables.MainPlayer;
                                    bool        flag8   = !flag3;
                                    if (flag8)
                                    {
                                        objects.Add(new ESPObject(target, plr, plr.gameObject));
                                        sPlayer = null;
                                        plr     = null;
                                    }
                                    num     = j;
                                    sPlayer = null;
                                    plr     = null;
                                }
                                break;
                            }

                            case ESPTarget.Зомби:
                            {
                                Zombie[] objarr = (from obj in ZombieManager.regions.SelectMany((ZombieRegion r) => r.zombies)
                                                   orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                   select obj).ToArray <Zombie>();
                                bool useObjectCap2 = vis.UseObjectCap;
                                bool flag9         = useObjectCap2;
                                if (flag9)
                                {
                                    objarr = objarr.TakeLast(vis.ObjectCap).ToArray <Zombie>();
                                }
                                for (int k2 = 0; k2 < objarr.Length; k2 = num + 1)
                                {
                                    Zombie obj9 = objarr[k2];
                                    objects.Add(new ESPObject(target, obj9, obj9.gameObject));
                                    obj9 = null;
                                    num  = k2;
                                    obj9 = null;
                                }
                                break;
                            }

                            case ESPTarget.Предметы:
                            {
                                InteractableItem[] objarr2 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableItem>()
                                                              orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                              select obj).ToArray <InteractableItem>();
                                bool useObjectCap3 = vis.UseObjectCap;
                                bool flag10        = useObjectCap3;
                                if (flag10)
                                {
                                    objarr2 = objarr2.TakeLast(vis.ObjectCap).ToArray <InteractableItem>();
                                }
                                for (int l = 0; l < objarr2.Length; l = num + 1)
                                {
                                    InteractableItem obj10  = objarr2[l];
                                    bool             flag4  = ItemUtilities.Whitelisted(obj10.asset, ItemOptions.ItemESPOptions) || !ESPOptions.FilterItems;
                                    bool             flag11 = flag4;
                                    if (flag11)
                                    {
                                        objects.Add(new ESPObject(target, obj10, obj10.gameObject));
                                    }
                                    obj10 = null;
                                    num   = l;
                                    obj10 = null;
                                }
                                break;
                            }

                            case ESPTarget.Турели:
                            {
                                InteractableSentry[] objarr3 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableSentry>()
                                                                orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                select obj).ToArray <InteractableSentry>();
                                bool useObjectCap4 = vis.UseObjectCap;
                                bool flag12        = useObjectCap4;
                                if (flag12)
                                {
                                    objarr3 = objarr3.TakeLast(vis.ObjectCap).ToArray <InteractableSentry>();
                                }
                                for (int m = 0; m < objarr3.Length; m = num + 1)
                                {
                                    InteractableSentry obj11 = objarr3[m];
                                    objects.Add(new ESPObject(target, obj11, obj11.gameObject));
                                    obj11 = null;
                                    num   = m;
                                    obj11 = null;
                                }
                                break;
                            }

                            case ESPTarget.Кровати:
                            {
                                InteractableBed[] objarr4 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableBed>()
                                                             orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                             select obj).ToArray <InteractableBed>();
                                bool useObjectCap5 = vis.UseObjectCap;
                                bool flag13        = useObjectCap5;
                                if (flag13)
                                {
                                    objarr4 = objarr4.TakeLast(vis.ObjectCap).ToArray <InteractableBed>();
                                }
                                for (int n = 0; n < objarr4.Length; n = num + 1)
                                {
                                    InteractableBed obj12 = objarr4[n];
                                    objects.Add(new ESPObject(target, obj12, obj12.gameObject));
                                    obj12 = null;
                                    num   = n;
                                    obj12 = null;
                                }
                                break;
                            }

                            case ESPTarget.КлеймФлаги:
                            {
                                InteractableClaim[] objarr5 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableClaim>()
                                                               orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                               select obj).ToArray <InteractableClaim>();
                                bool useObjectCap6 = vis.UseObjectCap;
                                bool flag14        = useObjectCap6;
                                if (flag14)
                                {
                                    objarr5 = objarr5.TakeLast(vis.ObjectCap).ToArray <InteractableClaim>();
                                }
                                for (int j2 = 0; j2 < objarr5.Length; j2 = num + 1)
                                {
                                    InteractableClaim obj13 = objarr5[j2];
                                    objects.Add(new ESPObject(target, obj13, obj13.gameObject));
                                    obj13 = null;
                                    num   = j2;
                                    obj13 = null;
                                }
                                break;
                            }

                            case ESPTarget.Транспорт:
                            {
                                InteractableVehicle[] objarr6 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableVehicle>()
                                                                 orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                 select obj).ToArray <InteractableVehicle>();
                                bool useObjectCap7 = vis.UseObjectCap;
                                bool flag15        = useObjectCap7;
                                if (flag15)
                                {
                                    objarr6 = objarr6.TakeLast(vis.ObjectCap).ToArray <InteractableVehicle>();
                                }
                                for (int j3 = 0; j3 < objarr6.Length; j3 = num + 1)
                                {
                                    InteractableVehicle obj14 = objarr6[j3];
                                    bool isDead = obj14.isDead;
                                    bool flag16 = !isDead;
                                    if (flag16)
                                    {
                                        objects.Add(new ESPObject(target, obj14, obj14.gameObject));
                                        obj14 = null;
                                    }
                                    num   = j3;
                                    obj14 = null;
                                }
                                break;
                            }

                            case ESPTarget.Ящики:
                            {
                                InteractableStorage[] objarr7 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableStorage>()
                                                                 orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                 select obj).ToArray <InteractableStorage>();
                                bool useObjectCap8 = vis.UseObjectCap;
                                bool flag17        = useObjectCap8;
                                if (flag17)
                                {
                                    objarr7 = objarr7.TakeLast(vis.ObjectCap).ToArray <InteractableStorage>();
                                }
                                for (int j4 = 0; j4 < objarr7.Length; j4 = num + 1)
                                {
                                    InteractableStorage obj15 = objarr7[j4];
                                    objects.Add(new ESPObject(target, obj15, obj15.gameObject));
                                    obj15 = null;
                                    num   = j4;
                                    obj15 = null;
                                }
                                break;
                            }

                            case ESPTarget.Генераторы:
                            {
                                InteractableGenerator[] objarr8 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableGenerator>()
                                                                   orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                   select obj).ToArray <InteractableGenerator>();
                                bool useObjectCap9 = vis.UseObjectCap;
                                bool flag18        = useObjectCap9;
                                if (flag18)
                                {
                                    objarr8 = objarr8.TakeLast(vis.ObjectCap).ToArray <InteractableGenerator>();
                                }
                                for (int j5 = 0; j5 < objarr8.Length; j5 = num + 1)
                                {
                                    InteractableGenerator obj16 = objarr8[j5];
                                    objects.Add(new ESPObject(target, obj16, obj16.gameObject));
                                    obj16 = null;
                                    num   = j5;
                                    obj16 = null;
                                }
                                break;
                            }

                            case ESPTarget.Животные:
                            {
                                Animal[] objarr9 = (from obj in UnityEngine.Object.FindObjectsOfType <Animal>()
                                                    orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                    select obj).ToArray <Animal>();
                                bool useObjectCap10 = vis.UseObjectCap;
                                bool flag19         = useObjectCap10;
                                if (flag19)
                                {
                                    objarr9 = objarr9.TakeLast(vis.ObjectCap).ToArray <Animal>();
                                }
                                for (int j6 = 0; j6 < objarr9.Length; j6 = num + 1)
                                {
                                    Animal obj17 = objarr9[j6];
                                    objects.Add(new ESPObject(target, obj17, obj17.gameObject));
                                    obj17 = null;
                                    num   = j6;
                                    obj17 = null;
                                }
                                break;
                            }

                            case ESPTarget.Ловшуки:
                            {
                                InteractableTrap[] objarr10 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableTrap>()
                                                               orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                               select obj).ToArray <InteractableTrap>();
                                bool useObjectCap11 = vis.UseObjectCap;
                                bool flag20         = useObjectCap11;
                                if (flag20)
                                {
                                    objarr10 = objarr10.TakeLast(vis.ObjectCap).ToArray <InteractableTrap>();
                                }
                                for (int j7 = 0; j7 < objarr10.Length; j7 = num + 1)
                                {
                                    InteractableTrap obj18 = objarr10[j7];
                                    objects.Add(new ESPObject(target, obj18, obj18.gameObject));
                                    obj18 = null;
                                    num   = j7;
                                    obj18 = null;
                                }
                                break;
                            }

                            case ESPTarget.Аирдропы:
                            {
                                Carepackage[] objarr11 = (from obj in UnityEngine.Object.FindObjectsOfType <Carepackage>()
                                                          orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                          select obj).ToArray <Carepackage>();
                                bool useObjectCap12 = vis.UseObjectCap;
                                bool flag21         = useObjectCap12;
                                if (flag21)
                                {
                                    objarr11 = objarr11.TakeLast(vis.ObjectCap).ToArray <Carepackage>();
                                }
                                for (int j8 = 0; j8 < objarr11.Length; j8 = num + 1)
                                {
                                    Carepackage obj19 = objarr11[j8];
                                    objects.Add(new ESPObject(target, obj19, obj19.gameObject));
                                    obj19 = null;
                                    num   = j8;
                                    obj19 = null;
                                }
                                break;
                            }

                            case ESPTarget.Двери:
                            {
                                InteractableDoorHinge[] objarr12 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableDoorHinge>()
                                                                    orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                    select obj).ToArray <InteractableDoorHinge>();
                                bool useObjectCap13 = vis.UseObjectCap;
                                bool flag22         = useObjectCap13;
                                if (flag22)
                                {
                                    objarr12 = objarr12.TakeLast(vis.ObjectCap).ToArray <InteractableDoorHinge>();
                                }
                                for (int j9 = 0; j9 < objarr12.Length; j9 = num + 1)
                                {
                                    InteractableDoorHinge obj20 = objarr12[j9];
                                    objects.Add(new ESPObject(target, obj20, obj20.gameObject));
                                    obj20 = null;
                                    num   = j9;
                                    obj20 = null;
                                }
                                break;
                            }

                            case ESPTarget.Ягоды:
                            {
                                InteractableForage[] objarr13 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableForage>()
                                                                 orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                 select obj).ToArray <InteractableForage>();
                                bool useObjectCap14 = vis.UseObjectCap;
                                bool flag23         = useObjectCap14;
                                if (flag23)
                                {
                                    objarr13 = objarr13.TakeLast(vis.ObjectCap).ToArray <InteractableForage>();
                                }
                                for (int j10 = 0; j10 < objarr13.Length; j10 = num + 1)
                                {
                                    InteractableForage obj21 = objarr13[j10];
                                    objects.Add(new ESPObject(target, obj21, obj21.gameObject));
                                    obj21 = null;
                                    num   = j10;
                                    obj21 = null;
                                }
                                break;
                            }

                            case ESPTarget.астения:
                            {
                                InteractableFarm[] objarr14 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableFarm>()
                                                               orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                               select obj).ToArray <InteractableFarm>();
                                bool useObjectCap15 = vis.UseObjectCap;
                                bool flag24         = useObjectCap15;
                                if (flag24)
                                {
                                    objarr14 = objarr14.TakeLast(vis.ObjectCap).ToArray <InteractableFarm>();
                                }
                                for (int j11 = 0; j11 < objarr14.Length; j11 = num + 1)
                                {
                                    InteractableFarm obj22 = objarr14[j11];
                                    objects.Add(new ESPObject(target, obj22, obj22.gameObject));
                                    obj22 = null;
                                    num   = j11;
                                    obj22 = null;
                                }
                                break;
                            }

                            case ESPTarget.C4:
                            {
                                InteractableCharge[] objarr15 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableCharge>()
                                                                 orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                 select obj).ToArray <InteractableCharge>();
                                bool useObjectCap16 = vis.UseObjectCap;
                                bool flag25         = useObjectCap16;
                                if (flag25)
                                {
                                    objarr15 = objarr15.TakeLast(vis.ObjectCap).ToArray <InteractableCharge>();
                                }
                                for (int j12 = 0; j12 < objarr15.Length; j12 = num + 1)
                                {
                                    InteractableCharge obj23 = objarr15[j12];
                                    objects.Add(new ESPObject(target, obj23, obj23.gameObject));
                                    obj23 = null;
                                    num   = j12;
                                    obj23 = null;
                                }
                                break;
                            }

                            case ESPTarget.Fire:
                            {
                                InteractableFire[] objarr16 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableFire>()
                                                               orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                               select obj).ToArray <InteractableFire>();
                                bool useObjectCap17 = vis.UseObjectCap;
                                bool flag26         = useObjectCap17;
                                if (flag26)
                                {
                                    objarr16 = objarr16.TakeLast(vis.ObjectCap).ToArray <InteractableFire>();
                                }
                                for (int j13 = 0; j13 < objarr16.Length; j13 = num + 1)
                                {
                                    InteractableFire obj24 = objarr16[j13];
                                    objects.Add(new ESPObject(target, obj24, obj24.gameObject));
                                    obj24 = null;
                                    num   = j13;
                                    obj24 = null;
                                }
                                break;
                            }

                            case ESPTarget.Лампы:
                            {
                                InteractableSpot[] objarr17 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableSpot>()
                                                               orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                               select obj).ToArray <InteractableSpot>();
                                bool useObjectCap18 = vis.UseObjectCap;
                                bool flag27         = useObjectCap18;
                                if (flag27)
                                {
                                    objarr17 = objarr17.TakeLast(vis.ObjectCap).ToArray <InteractableSpot>();
                                }
                                for (int j14 = 0; j14 < objarr17.Length; j14 = num + 1)
                                {
                                    InteractableSpot obj25 = objarr17[j14];
                                    objects.Add(new ESPObject(target, obj25, obj25.gameObject));
                                    obj25 = null;
                                    num   = j14;
                                    obj25 = null;
                                }
                                break;
                            }

                            case ESPTarget.Топливо:
                            {
                                InteractableObjectResource[] objarr18 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableObjectResource>()
                                                                         orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                         select obj).ToArray <InteractableObjectResource>();
                                bool useObjectCap19 = vis.UseObjectCap;
                                bool flag28         = useObjectCap19;
                                if (flag28)
                                {
                                    objarr18 = objarr18.TakeLast(vis.ObjectCap).ToArray <InteractableObjectResource>();
                                }
                                for (int j15 = 0; j15 < objarr18.Length; j15 = num + 1)
                                {
                                    InteractableObjectResource obj26 = objarr18[j15];
                                    objects.Add(new ESPObject(target, obj26, obj26.gameObject));
                                    obj26 = null;
                                    num   = j15;
                                    obj26 = null;
                                }
                                break;
                            }

                            case ESPTarget.Генератор_безопасной_зоны:
                            {
                                InteractableSafezone[] objarr19 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableSafezone>()
                                                                   orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                   select obj).ToArray <InteractableSafezone>();
                                bool useObjectCap20 = vis.UseObjectCap;
                                bool flag29         = useObjectCap20;
                                if (flag29)
                                {
                                    objarr19 = objarr19.TakeLast(vis.ObjectCap).ToArray <InteractableSafezone>();
                                }
                                for (int j16 = 0; j16 < objarr19.Length; j16 = num + 1)
                                {
                                    InteractableSafezone obj27 = objarr19[j16];
                                    objects.Add(new ESPObject(target, obj27, obj27.gameObject));
                                    obj27 = null;
                                    num   = j16;
                                    obj27 = null;
                                }
                                break;
                            }

                            case ESPTarget.Генератор_Воздуха:
                            {
                                InteractableOxygenator[] objarr20 = (from obj in UnityEngine.Object.FindObjectsOfType <InteractableOxygenator>()
                                                                     orderby VectorUtilities.GetDistance(pPos, obj.transform.position) descending
                                                                     select obj).ToArray <InteractableOxygenator>();
                                bool useObjectCap21 = vis.UseObjectCap;
                                bool flag30         = useObjectCap21;
                                if (flag30)
                                {
                                    objarr20 = objarr20.TakeLast(vis.ObjectCap).ToArray <InteractableOxygenator>();
                                }
                                for (int j17 = 0; j17 < objarr20.Length; j17 = num + 1)
                                {
                                    InteractableOxygenator obj28 = objarr20[j17];
                                    objects.Add(new ESPObject(target, obj28, obj28.gameObject));
                                    obj28 = null;
                                    num   = j17;
                                    obj28 = null;
                                }
                                break;
                            }
                            }
                        }
                        num = i;
                        vis = null;
                    }
                    yield return(new WaitForSeconds(5f));

                    objects = null;
                    targets = null;
                    objects = null;
                    targets = null;
                }
            }
            yield break;
        }
예제 #12
0
 public void punch(EPlayerPunch mode)
 {
     if (Player.player.channel.isOwner)
     {
         Player.player.playSound((AudioClip)Resources.Load("Sounds/General/Punch"));
         Ray         ray         = new Ray(Player.player.look.aim.position, Player.player.look.aim.forward);
         RaycastInfo raycastInfo = DamageTool.raycast(ray, MP_Player.farPunch ? 12f : 1.75f, RayMasks.DAMAGE_CLIENT); //1.75 default
         if (raycastInfo.player != null && DAMAGE_PLAYER_MULTIPLIER.damage > 1f && (Player.player.channel.owner.playerID.group == CSteamID.Nil || raycastInfo.player.channel.owner.playerID.group != Player.player.channel.owner.playerID.group) && Provider.isPvP)
         {
             PlayerUI.hitmark(0, raycastInfo.point, false, (raycastInfo.limb != ELimb.SKULL) ? EPlayerHit.ENTITIY : EPlayerHit.CRITICAL);
         }
         else if ((raycastInfo.zombie != null && DAMAGE_ZOMBIE_MULTIPLIER.damage > 1f) || (raycastInfo.animal != null && DAMAGE_ANIMAL_MULTIPLIER.damage > 1f))
         {
             PlayerUI.hitmark(0, raycastInfo.point, false, (raycastInfo.limb != ELimb.SKULL) ? EPlayerHit.ENTITIY : EPlayerHit.CRITICAL);
         }
         else if (raycastInfo.transform != null && raycastInfo.transform.CompareTag("Barricade") && DAMAGE_BARRICADE > 1f)
         {
             InteractableDoorHinge component = raycastInfo.transform.GetComponent <InteractableDoorHinge>();
             if (component != null)
             {
                 raycastInfo.transform = component.transform.parent.parent;
             }
             ushort id;
             if (ushort.TryParse(raycastInfo.transform.name, out id))
             {
                 ItemBarricadeAsset itemBarricadeAsset = (ItemBarricadeAsset)Assets.find(EAssetType.ITEM, id);
                 if (itemBarricadeAsset != null && itemBarricadeAsset.isVulnerable)
                 {
                     PlayerUI.hitmark(0, raycastInfo.point, false, EPlayerHit.BUILD);
                 }
             }
         }
         else if (raycastInfo.transform != null && raycastInfo.transform.CompareTag("Structure") && DAMAGE_STRUCTURE > 1f)
         {
             ushort id2;
             if (ushort.TryParse(raycastInfo.transform.name, out id2))
             {
                 ItemStructureAsset itemStructureAsset = (ItemStructureAsset)Assets.find(EAssetType.ITEM, id2);
                 if (itemStructureAsset != null && itemStructureAsset.isVulnerable)
                 {
                     PlayerUI.hitmark(0, raycastInfo.point, false, EPlayerHit.BUILD);
                 }
             }
         }
         else if (raycastInfo.vehicle != null && !raycastInfo.vehicle.isDead && DAMAGE_VEHICLE > 1f)
         {
             if (raycastInfo.vehicle.asset != null && raycastInfo.vehicle.asset.isVulnerable)
             {
                 PlayerUI.hitmark(0, raycastInfo.point, false, EPlayerHit.BUILD);
             }
         }
         else if (raycastInfo.transform != null && raycastInfo.transform.CompareTag("Resource") && DAMAGE_RESOURCE > 1f)
         {
             byte   x;
             byte   y;
             ushort index;
             if (ResourceManager.tryGetRegion(raycastInfo.transform, out x, out y, out index))
             {
                 ResourceSpawnpoint resourceSpawnpoint = ResourceManager.getResourceSpawnpoint(x, y, index);
                 if (resourceSpawnpoint != null && !resourceSpawnpoint.isDead)
                 {
                     PlayerUI.hitmark(0, raycastInfo.point, false, EPlayerHit.BUILD);
                 }
             }
         }
         else if (raycastInfo.transform != null && DAMAGE_OBJECT > 1f)
         {
             InteractableObjectRubble component2 = raycastInfo.transform.GetComponent <InteractableObjectRubble>();
             if (component2 != null)
             {
                 raycastInfo.section = component2.getSection(raycastInfo.collider.transform);
                 if (!component2.isSectionDead(raycastInfo.section))
                 {
                     PlayerUI.hitmark(0, raycastInfo.point, false, EPlayerHit.BUILD);
                 }
             }
         }
         Player.player.input.sendRaycast(raycastInfo);
     }
     if (mode == EPlayerPunch.LEFT)
     {
         Player.player.animator.play("Punch_Left", false);
         if (Provider.isServer)
         {
             Player.player.animator.sendGesture(EPlayerGesture.PUNCH_LEFT, false);
         }
     }
     else if (mode == EPlayerPunch.RIGHT)
     {
         Player.player.animator.play("Punch_Right", false);
         if (Provider.isServer)
         {
             Player.player.animator.sendGesture(EPlayerGesture.PUNCH_RIGHT, false);
         }
     }
     if (Provider.isServer)
     {
         if (!Player.player.input.hasInputs())
         {
             return;
         }
         InputInfo input = Player.player.input.getInput(true);
         if (input == null)
         {
             return;
         }
         if ((input.point - Player.player.look.aim.position).sqrMagnitude > 36f)
         {
             return;
         }
         DamageTool.impact(input.point, input.normal, input.material, input.type != ERaycastInfoType.NONE && input.type != ERaycastInfoType.OBJECT);
         EPlayerKill ePlayerKill = EPlayerKill.NONE;
         uint        num         = 0u;
         float       num2        = 1f;
         num2 *= 1f + Player.player.channel.owner.player.skills.mastery(0, 0) * 0.5f;
         if (input.type == ERaycastInfoType.PLAYER)
         {
             typeof(PlayerEquipment).GetField("lastPunching", BindingFlags.Instance | BindingFlags.Public).SetValue(null, Time.realtimeSinceStartup);
             if (input.player != null && (Player.player.channel.owner.playerID.group == CSteamID.Nil || input.player.channel.owner.playerID.group != Player.player.channel.owner.playerID.group) && Provider.isPvP)
             {
                 DamageTool.damage(input.player, EDeathCause.PUNCH, input.limb, Player.player.channel.owner.playerID.steamID, input.direction, DAMAGE_PLAYER_MULTIPLIER, num2, true, out ePlayerKill);
             }
         }
         else if (input.type == ERaycastInfoType.ZOMBIE)
         {
             if (input.zombie != null)
             {
                 DamageTool.damage(input.zombie, input.limb, input.direction, DAMAGE_ZOMBIE_MULTIPLIER, num2, true, out ePlayerKill, out num);
                 if (Player.player.movement.nav != 255)
                 {
                     input.zombie.alert(base.transform.position, true);
                 }
             }
         }
         else if (input.type == ERaycastInfoType.ANIMAL)
         {
             typeof(PlayerEquipment).GetField("lastPunching", BindingFlags.Instance | BindingFlags.Public).SetValue(null, Time.realtimeSinceStartup);
             if (input.animal != null)
             {
                 DamageTool.damage(input.animal, input.limb, input.direction, DAMAGE_ANIMAL_MULTIPLIER, num2, out ePlayerKill, out num);
                 input.animal.alertPoint(base.transform.position, true);
             }
         }
         else if (input.type == ERaycastInfoType.VEHICLE)
         {
             typeof(PlayerEquipment).GetField("lastPunching", BindingFlags.Instance | BindingFlags.Public).SetValue(null, Time.realtimeSinceStartup);
             if (input.vehicle != null && input.vehicle.asset != null && input.vehicle.asset.isVulnerable)
             {
                 DamageTool.damage(input.vehicle, false, DAMAGE_VEHICLE, num2, true, out ePlayerKill);
             }
         }
         else if (input.type == ERaycastInfoType.BARRICADE)
         {
             typeof(PlayerEquipment).GetField("lastPunching", BindingFlags.Instance | BindingFlags.Public).SetValue(null, Time.realtimeSinceStartup);
             ushort id3;
             if (input.transform != null && input.transform.CompareTag("Barricade") && ushort.TryParse(input.transform.name, out id3))
             {
                 ItemBarricadeAsset itemBarricadeAsset2 = (ItemBarricadeAsset)Assets.find(EAssetType.ITEM, id3);
                 if (itemBarricadeAsset2 != null && itemBarricadeAsset2.isVulnerable)
                 {
                     DamageTool.damage(input.transform, false, DAMAGE_BARRICADE, num2, out ePlayerKill);
                 }
             }
         }
         else if (input.type == ERaycastInfoType.STRUCTURE)
         {
             typeof(PlayerEquipment).GetField("lastPunching", BindingFlags.Instance | BindingFlags.Public).SetValue(null, Time.realtimeSinceStartup);
             ushort id4;
             if (input.transform != null && input.transform.CompareTag("Structure") && ushort.TryParse(input.transform.name, out id4))
             {
                 ItemStructureAsset itemStructureAsset2 = (ItemStructureAsset)Assets.find(EAssetType.ITEM, id4);
                 if (itemStructureAsset2 != null && itemStructureAsset2.isVulnerable)
                 {
                     DamageTool.damage(input.transform, false, input.direction, DAMAGE_STRUCTURE, num2, out ePlayerKill);
                 }
             }
         }
         else if (input.type == ERaycastInfoType.RESOURCE)
         {
             typeof(PlayerEquipment).GetField("lastPunching", BindingFlags.Instance | BindingFlags.Public).SetValue(null, Time.realtimeSinceStartup);
             byte   x2;
             byte   y2;
             ushort index2;
             if (input.transform != null && input.transform.CompareTag("Resource") && ResourceManager.tryGetRegion(input.transform, out x2, out y2, out index2))
             {
                 ResourceSpawnpoint resourceSpawnpoint2 = ResourceManager.getResourceSpawnpoint(x2, y2, index2);
                 if (resourceSpawnpoint2 != null && !resourceSpawnpoint2.isDead)
                 {
                     DamageTool.damage(input.transform, input.direction, DAMAGE_RESOURCE, num2, 1f, out ePlayerKill, out num);
                 }
             }
         }
         else if (input.type == ERaycastInfoType.OBJECT && input.transform != null && input.section < 255)
         {
             InteractableObjectRubble component3 = input.transform.GetComponent <InteractableObjectRubble>();
             if (component3 != null && !component3.isSectionDead(input.section))
             {
                 DamageTool.damage(input.transform, input.direction, input.section, DAMAGE_OBJECT, num2, out ePlayerKill, out num);
             }
         }
         if (Level.info.type == ELevelType.HORDE)
         {
             if (input.zombie != null)
             {
                 if (input.limb == ELimb.SKULL)
                 {
                     Player.player.skills.askPay(10u);
                 }
                 else
                 {
                     Player.player.skills.askPay(5u);
                 }
             }
             if (ePlayerKill == EPlayerKill.ZOMBIE)
             {
                 if (input.limb == ELimb.SKULL)
                 {
                     Player.player.skills.askPay(50u);
                 }
                 else
                 {
                     Player.player.skills.askPay(25u);
                 }
             }
         }
         else
         {
             if (ePlayerKill == EPlayerKill.PLAYER)
             {
                 Player.player.sendStat(EPlayerStat.KILLS_PLAYERS);
                 if (Level.info.type == ELevelType.ARENA)
                 {
                     Player.player.skills.askPay(100u);
                 }
             }
             else if (ePlayerKill == EPlayerKill.ZOMBIE)
             {
                 Player.player.sendStat(EPlayerStat.KILLS_ZOMBIES_NORMAL);
             }
             else if (ePlayerKill == EPlayerKill.MEGA)
             {
                 Player.player.sendStat(EPlayerStat.KILLS_ZOMBIES_MEGA);
             }
             else if (ePlayerKill == EPlayerKill.ANIMAL)
             {
                 Player.player.sendStat(EPlayerStat.KILLS_ANIMALS);
             }
             else if (ePlayerKill == EPlayerKill.RESOURCE)
             {
                 Player.player.sendStat(EPlayerStat.FOUND_RESOURCES);
             }
             if (num > 0u)
             {
                 Player.player.skills.askPay(num);
             }
         }
     }
 }
예제 #13
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            var uPlayer = caller as UnturnedPlayer;

            if (command.Length != 1)
            {
                ChatManager.serverSendMessage(Syntax, Color.red, null, uPlayer.SteamPlayer(), EChatMode.GLOBAL, Main.Instance.Configuration.Instance.LogoImage, true);
            }
            else
            {
                if (command[0] == "add")
                {
                    if (PhysicsUtility.raycast(new Ray(uPlayer.Player.look.aim.position, uPlayer.Player.look.aim.forward), out RaycastHit ahit, Mathf.Infinity, RayMasks.BARRICADE_INTERACT))
                    {
                        InteractableDoorHinge         door  = ahit.transform.GetComponent <InteractableDoorHinge>();
                        Interactable2SalvageBarricade barri = ahit.transform.GetComponent <Interactable2SalvageBarricade>();
                        if (door != null)
                        {
                            BarricadeManager.tryGetInfo(door.door.transform, out byte x, out byte y, out ushort index, out ushort bindex, out BarricadeRegion barricadeR);

                            var Bindex      = barricadeR.barricades[bindex];
                            var Bx          = Bindex.point.x;
                            var By          = Bindex.point.y;
                            var Bz          = Bindex.point.z;
                            var n_blacklist = new DoorBlackList
                            {
                                x = Bx,
                                y = By,
                                z = Bz
                            };
                            Main.Instance.AddPlayer(n_blacklist);
                            ChatManager.serverSendMessage("You have successfully added this door/storage to the blacklist!", Color.red, null, uPlayer.SteamPlayer(), EChatMode.GLOBAL, Main.Instance.Configuration.Instance.LogoImage, true);
                        }
                        else if (barri != null)
                        {
                            BarricadeManager.tryGetInfo(ahit.transform, out byte x, out byte y, out ushort index, out ushort bindex, out BarricadeRegion barricadeR);

                            var Bindex      = barricadeR.barricades[bindex];
                            var Bx          = Bindex.point.x;
                            var By          = Bindex.point.y;
                            var Bz          = Bindex.point.z;
                            var n_blacklist = new DoorBlackList
                            {
                                x = Bx,
                                y = By,
                                z = Bz
                            };
                            Main.Instance.AddPlayer(n_blacklist);
                            ChatManager.serverSendMessage("You have successfully added this door/storage to the blacklist!", Color.red, null, uPlayer.SteamPlayer(), EChatMode.GLOBAL, Main.Instance.Configuration.Instance.LogoImage, true);
                        }
                    }
                    else if (command[0] == "remove")
                    {
                        if (PhysicsUtility.raycast(new Ray(uPlayer.Player.look.aim.position, uPlayer.Player.look.aim.forward), out RaycastHit rhit, Mathf.Infinity, RayMasks.BARRICADE_INTERACT))
                        {
                            var rdoor  = rhit.transform.GetComponent <InteractableDoorHinge>();
                            var rbarri = rhit.transform.GetComponent <Interactable2SalvageBarricade>();
                            if (rdoor != null)
                            {
                                BarricadeManager.tryGetInfo(rdoor.transform, out byte x, out byte y, out ushort index, out ushort bindex, out BarricadeRegion barricadeR);

                                var Bindex      = barricadeR.barricades[bindex];
                                var Bx          = Bindex.point.x;
                                var By          = Bindex.point.y;
                                var Bz          = Bindex.point.z;
                                var n_blacklist = new DoorBlackList
                                {
                                    x = Bx,
                                    y = By,
                                    z = Bz
                                };
                                Main.Instance.RemovePlayer(n_blacklist);
                                ChatManager.serverSendMessage("You have successfully removed this door/storage from the blacklist!", Color.red, null, uPlayer.SteamPlayer(), EChatMode.GLOBAL, Main.Instance.Configuration.Instance.LogoImage, true);
                            }
                            else if (rbarri != null)
                            {
                                BarricadeManager.tryGetInfo(rhit.transform, out byte x, out byte y, out ushort index, out ushort bindex, out BarricadeRegion barricadeR);

                                var Bindex      = barricadeR.barricades[bindex];
                                var Bx          = Bindex.point.x;
                                var By          = Bindex.point.y;
                                var Bz          = Bindex.point.z;
                                var n_blacklist = new DoorBlackList
                                {
                                    x = Bx,
                                    y = By,
                                    z = Bz
                                };
                                Main.Instance.RemovePlayer(n_blacklist);
                                ChatManager.serverSendMessage("You have successfully removed this door/storage from the blacklist!", Color.red, null, uPlayer.SteamPlayer(), EChatMode.GLOBAL, Main.Instance.Configuration.Instance.LogoImage, true);
                            }
                        }
                        else
                        {
                            ChatManager.serverSendMessage("Please look at a barricade to remove it to the blacklist for picklocking!", Color.red, null, uPlayer.SteamPlayer(), EChatMode.GLOBAL, Main.Instance.Configuration.Instance.LogoImage, true);
                        }
                    }
                }
예제 #14
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            var PlayerCaller = (UnturnedPlayer)caller;

            // actually get the door you are looking at
            if (args.Length != 2)
            {
                UnturnedChat.Say(caller, "Invalid arguments", Color.red);
                return;
            }
            InteractableDoorHinge component = raycastdoor.Getdoor(PlayerCaller);

            if (component != null)
            {
                var name              = args[0];
                var permissionname    = args[1];
                InteractableDoor door = component.door;
                byte             x;
                byte             y;
                ushort           plant;
                ushort           index;

                BarricadeRegion barricadeRegion;
                BarricadeManager.tryGetInfo(door.transform, out x, out y, out plant, out index, out barricadeRegion);
                var permission             = "Registereddoor." + permissionname;
                Registereddoortype tempvar = new Registereddoortype();
                tempvar.name         = name;
                tempvar.permission   = permission;
                tempvar.steamid      = PlayerCaller.CSteamID.ToString();
                tempvar.doorposition = door.transform.position;
                BarricadeDrop barricadedrop = barricadeRegion.drops[index];
                var           ID            = barricadedrop.instanceID;
                tempvar.ID = ID;
                if (miscstuff.Instance.Configuration.Instance.listofregistereddoors.Count > 0)
                {
                    foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                    {
                        if (doorinfo.name == tempvar.name)
                        {
                            UnturnedChat.Say(caller, "A door already exists with that name!", Color.red);
                            return;
                        }
                        else if (doorinfo.ID == ID)
                        {
                            UnturnedChat.Say(caller, "This door " + doorinfo.name + " is already registered!", Color.red);
                            return;
                        }
                    }
                }


                miscstuff.Instance.Configuration.Instance.listofregistereddoors.Add(tempvar);
                UnturnedChat.Say(caller, "Door Registered!", Color.blue);
                miscstuff.Instance.Configuration.Save();
            }
            else
            {
                UnturnedChat.Say(caller, "Not looking at a door!");
                return;
            }
        }
예제 #15
0
        // Token: 0x06000118 RID: 280 RVA: 0x0000B6FC File Offset: 0x000098FC
        public static EPlayerHit CalcHitMarker(ItemGunAsset PAsset, ref RaycastInfo ri)
        {
            EPlayerHit eplayerHit = EPlayerHit.NONE;
            bool       flag       = ri == null || PAsset == null;
            bool       flag2      = flag;
            EPlayerHit result;

            if (flag2)
            {
                result = eplayerHit;
            }
            else
            {
                bool flag3 = ri.animal || ri.player || ri.zombie;
                bool flag4 = flag3;
                if (flag4)
                {
                    eplayerHit = EPlayerHit.ENTITIY;
                    bool flag5 = ri.limb == ELimb.SKULL;
                    bool flag6 = flag5;
                    if (flag6)
                    {
                        eplayerHit = EPlayerHit.CRITICAL;
                    }
                }
                else
                {
                    bool flag7 = ri.transform;
                    bool flag8 = flag7;
                    if (flag8)
                    {
                        bool flag9  = ri.transform.CompareTag("Barricade") && PAsset.barricadeDamage > 1f;
                        bool flag10 = flag9;
                        if (flag10)
                        {
                            InteractableDoorHinge component = ri.transform.GetComponent <InteractableDoorHinge>();
                            bool flag11 = component != null;
                            bool flag12 = flag11;
                            if (flag12)
                            {
                                ri.transform = component.transform.parent.parent;
                            }
                            ushort id;
                            bool   flag13 = !ushort.TryParse(ri.transform.name, out id);
                            bool   flag14 = flag13;
                            if (flag14)
                            {
                                return(eplayerHit);
                            }
                            ItemBarricadeAsset itemBarricadeAsset = (ItemBarricadeAsset)Assets.find(EAssetType.ITEM, id);
                            bool flag15 = itemBarricadeAsset == null || (!itemBarricadeAsset.isVulnerable && !PAsset.isInvulnerable);
                            bool flag16 = flag15;
                            if (flag16)
                            {
                                return(eplayerHit);
                            }
                            bool flag17 = eplayerHit == EPlayerHit.NONE;
                            bool flag18 = flag17;
                            if (flag18)
                            {
                                eplayerHit = EPlayerHit.BUILD;
                            }
                        }
                        else
                        {
                            bool flag19 = ri.transform.CompareTag("Structure") && PAsset.structureDamage > 1f;
                            bool flag20 = flag19;
                            if (flag20)
                            {
                                ushort id2;
                                bool   flag21 = !ushort.TryParse(ri.transform.name, out id2);
                                bool   flag22 = flag21;
                                if (flag22)
                                {
                                    return(eplayerHit);
                                }
                                ItemStructureAsset itemStructureAsset = (ItemStructureAsset)Assets.find(EAssetType.ITEM, id2);
                                bool flag23 = itemStructureAsset == null || (!itemStructureAsset.isVulnerable && !PAsset.isInvulnerable);
                                bool flag24 = flag23;
                                if (flag24)
                                {
                                    return(eplayerHit);
                                }
                                bool flag25 = eplayerHit == EPlayerHit.NONE;
                                bool flag26 = flag25;
                                if (flag26)
                                {
                                    eplayerHit = EPlayerHit.BUILD;
                                }
                            }
                            else
                            {
                                bool flag27 = ri.transform.CompareTag("Resource") && PAsset.resourceDamage > 1f;
                                bool flag28 = flag27;
                                if (flag28)
                                {
                                    byte   x;
                                    byte   y;
                                    ushort index;
                                    bool   flag29 = !ResourceManager.tryGetRegion(ri.transform, out x, out y, out index);
                                    bool   flag30 = flag29;
                                    if (flag30)
                                    {
                                        return(eplayerHit);
                                    }
                                    ResourceSpawnpoint resourceSpawnpoint = ResourceManager.getResourceSpawnpoint(x, y, index);
                                    bool flag31 = resourceSpawnpoint == null || resourceSpawnpoint.isDead || resourceSpawnpoint.asset.bladeID != PAsset.bladeID;
                                    bool flag32 = flag31;
                                    if (flag32)
                                    {
                                        return(eplayerHit);
                                    }
                                    bool flag33 = eplayerHit == EPlayerHit.NONE;
                                    bool flag34 = flag33;
                                    if (flag34)
                                    {
                                        eplayerHit = EPlayerHit.BUILD;
                                    }
                                }
                                else
                                {
                                    bool flag35 = PAsset.objectDamage > 1f;
                                    bool flag36 = flag35;
                                    if (flag36)
                                    {
                                        InteractableObjectRubble component2 = ri.transform.GetComponent <InteractableObjectRubble>();
                                        bool flag37 = component2 == null;
                                        bool flag38 = flag37;
                                        if (flag38)
                                        {
                                            return(eplayerHit);
                                        }
                                        ri.section = component2.getSection(ri.collider.transform);
                                        bool flag39 = component2.isSectionDead(ri.section) || (!component2.asset.rubbleIsVulnerable && !PAsset.isInvulnerable);
                                        bool flag40 = flag39;
                                        if (flag40)
                                        {
                                            return(eplayerHit);
                                        }
                                        bool flag41 = eplayerHit == EPlayerHit.NONE;
                                        bool flag42 = flag41;
                                        if (flag42)
                                        {
                                            eplayerHit = EPlayerHit.BUILD;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        bool flag43 = ri.vehicle && !ri.vehicle.isDead && PAsset.vehicleDamage > 1f;
                        bool flag44 = flag43;
                        if (flag44)
                        {
                            bool flag45 = ri.vehicle.asset != null && (ri.vehicle.asset.isVulnerable || PAsset.isInvulnerable);
                            bool flag46 = flag45;
                            if (flag46)
                            {
                                bool flag47 = eplayerHit == EPlayerHit.NONE;
                                bool flag48 = flag47;
                                if (flag48)
                                {
                                    eplayerHit = EPlayerHit.BUILD;
                                }
                            }
                        }
                    }
                }
                result = eplayerHit;
            }
            return(result);
        }
예제 #16
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            if (args.Length > 2 || args.Length < 1)
            {
                UnturnedChat.Say(caller, "invalid arguments", Color.red);
                return;
            }
            else if (args.Length == 2)
            {
                var  doorname     = args[0];
                var  newperm      = args[1];
                bool isregistered = false;
                foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                {
                    if (doorinfo.name == doorname)
                    {
                        isregistered        = true;
                        doorinfo.permission = "Registereddoor." + newperm;
                        miscstuff.Instance.Configuration.Save();
                        UnturnedChat.Say(caller, "Door perm changed successfully to " + newperm);
                        return;
                    }
                }
                if (isregistered == false)
                {
                    UnturnedChat.Say(caller, "door does not exist with that name", Color.red);
                    return;
                }
            }
            else if (args.Length == 1)
            {
                var  newperm      = args[0];
                bool isregistered = false;
                var  PlayerCaller = (UnturnedPlayer)caller;

                InteractableDoorHinge component = raycastdoor.Getdoor(PlayerCaller);

                if (component != null)
                {
                    InteractableDoor door = component.door;
                    bool             flag = !door.isOpen;
                    byte             x;
                    byte             y;
                    ushort           plant;
                    ushort           index;
                    BarricadeRegion  barricadeRegion;
                    BarricadeManager.tryGetInfo(door.transform, out x, out y, out plant, out index,
                                                out barricadeRegion);
                    BarricadeDrop barricadedrop = barricadeRegion.drops[index];
                    var           ID            = barricadedrop.instanceID;
                    foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                    {
                        if (doorinfo.ID == ID)
                        {
                            isregistered        = true;
                            doorinfo.permission = "Registereddoor." + newperm;
                            UnturnedChat.Say(caller, "Door perm changed successfully to " + newperm);
                            miscstuff.Instance.Configuration.Save();
                        }
                    }

                    if (isregistered == false)
                    {
                        UnturnedChat.Say(caller, "door is not registered", Color.red);
                    }
                }
                else
                {
                    UnturnedChat.Say(caller, "Not looking at a valid door!", Color.red);
                }
            }
        }
예제 #17
0
        public void OV_Update()
        {
            if (!DrawUtilities.ShouldRun())
            {
                return;
            }
            if (Player.player.stance.stance != EPlayerStance.DRIVING)
            {
                if (Player.player.stance.stance != EPlayerStance.SITTING)
                {
                    if (!Player.player.life.isDead && !Player.player.workzone.isBuilding)
                    {
                        if (Time.realtimeSinceStartup - OV_PlayerInteract.lastInteract > 0.1f)
                        {
                            int num = 0;
                            if (InteractionOptions.InteractThroughWalls && !PlayerCoroutines.IsSpying)
                            {
                                if (!InteractionOptions.NoHitBarricades)
                                {
                                    num |= RayMasks.BARRICADE;
                                }
                                if (!InteractionOptions.NoHitItems)
                                {
                                    num |= RayMasks.ITEM;
                                }
                                if (!InteractionOptions.NoHitResources)
                                {
                                    num |= RayMasks.RESOURCE;
                                }
                                if (!InteractionOptions.NoHitStructures)
                                {
                                    num |= RayMasks.STRUCTURE;
                                }
                                if (!InteractionOptions.NoHitVehicles)
                                {
                                    num |= RayMasks.VEHICLE;
                                }
                                if (!InteractionOptions.NoHitEnvironment)
                                {
                                    num |= (RayMasks.LARGE | RayMasks.MEDIUM | RayMasks.ENVIRONMENT | RayMasks.GROUND);
                                }
                            }
                            else
                            {
                                num = RayMasks.PLAYER_INTERACT;
                            }
                            OV_PlayerInteract.lastInteract = Time.realtimeSinceStartup;
                            float num2 = (!InteractionOptions.InteractThroughWalls || PlayerCoroutines.IsSpying) ? 4f : 20f;
                            PhysicsUtility.raycast(new Ray(OptimizationVariables.MainCam.transform.position, OptimizationVariables.MainCam.transform.forward), out OV_PlayerInteract.hit, (Player.player.look.perspective == EPlayerPerspective.THIRD) ? (num2 + 2f) : num2, num, QueryTriggerInteraction.UseGlobal);
                        }
                        Transform transform = (!(OV_PlayerInteract.hit.collider != null)) ? null : OV_PlayerInteract.hit.collider.transform;
                        if (!(transform != OV_PlayerInteract.focus))
                        {
                            goto IL_39E;
                        }
                        if (OV_PlayerInteract.focus != null && PlayerInteract.interactable != null)
                        {
                            InteractableDoorHinge componentInParent = OV_PlayerInteract.focus.GetComponentInParent <InteractableDoorHinge>();
                            if (componentInParent != null)
                            {
                                HighlighterTool.unhighlight(componentInParent.door.transform);
                            }
                            else
                            {
                                HighlighterTool.unhighlight(PlayerInteract.interactable.transform);
                            }
                        }
                        OV_PlayerInteract.focus         = null;
                        OV_PlayerInteract.target        = null;
                        OV_PlayerInteract.interactable  = null;
                        OV_PlayerInteract.interactable2 = null;
                        if (!(transform != null))
                        {
                            goto IL_39E;
                        }
                        OV_PlayerInteract.focus         = transform;
                        OV_PlayerInteract.interactable  = OV_PlayerInteract.focus.GetComponentInParent <Interactable>();
                        OV_PlayerInteract.interactable2 = OV_PlayerInteract.focus.GetComponentInParent <Interactable2>();
                        if (!(PlayerInteract.interactable != null))
                        {
                            goto IL_39E;
                        }
                        OV_PlayerInteract.target = PlayerInteract.interactable.transform.FindChildRecursive("Target");
                        if (!PlayerInteract.interactable.checkInteractable())
                        {
                            OV_PlayerInteract.target       = null;
                            OV_PlayerInteract.interactable = null;
                            goto IL_39E;
                        }
                        if (!PlayerUI.window.isEnabled)
                        {
                            goto IL_39E;
                        }
                        if (!PlayerInteract.interactable.checkUseable())
                        {
                            Color color = Color.red;
                            InteractableDoorHinge componentInParent2 = OV_PlayerInteract.focus.GetComponentInParent <InteractableDoorHinge>();
                            if (componentInParent2 != null)
                            {
                                HighlighterTool.highlight(componentInParent2.door.transform, color);
                                goto IL_39E;
                            }
                            HighlighterTool.highlight(PlayerInteract.interactable.transform, color);
                            goto IL_39E;
                        }
                        else
                        {
                            Color color;
                            if (!PlayerInteract.interactable.checkHighlight(out color))
                            {
                                color = Color.green;
                            }
                            InteractableDoorHinge componentInParent3 = OV_PlayerInteract.focus.GetComponentInParent <InteractableDoorHinge>();
                            if (componentInParent3 != null)
                            {
                                HighlighterTool.highlight(componentInParent3.door.transform, color);
                                goto IL_39E;
                            }
                            HighlighterTool.highlight(PlayerInteract.interactable.transform, color);
                            goto IL_39E;
                        }
                    }
                }
            }
            if (OV_PlayerInteract.focus != null && PlayerInteract.interactable != null)
            {
                InteractableDoorHinge componentInParent4 = OV_PlayerInteract.focus.GetComponentInParent <InteractableDoorHinge>();
                if (componentInParent4 != null)
                {
                    HighlighterTool.unhighlight(componentInParent4.door.transform);
                }
                else
                {
                    HighlighterTool.unhighlight(PlayerInteract.interactable.transform);
                }
            }
            OV_PlayerInteract.focus         = null;
            OV_PlayerInteract.target        = null;
            OV_PlayerInteract.interactable  = null;
            OV_PlayerInteract.interactable2 = null;
IL_39E:
            if (!Player.player.life.isDead)
            {
                EPlayerMessage message;
                string         text;
                Color          color2;
                if (!(PlayerInteract.interactable != null))
                {
                    if (OV_PlayerInteract.purchaseAsset != null && Player.player.movement.purchaseNode != null && !PlayerUI.window.showCursor)
                    {
                        PlayerUI.hint(null, EPlayerMessage.PURCHASE, string.Empty, Color.white, new object[]
                        {
                            OV_PlayerInteract.purchaseAsset.itemName,
                            Player.player.movement.purchaseNode.cost
                        });
                    }
                    else if (OV_PlayerInteract.focus != null && OV_PlayerInteract.focus.CompareTag("Enemy"))
                    {
                        Player player = DamageTool.getPlayer(OV_PlayerInteract.focus);
                        if (player != null && player != Player.player && !PlayerUI.window.showCursor)
                        {
                            PlayerUI.hint(null, EPlayerMessage.ENEMY, string.Empty, Color.white, new object[]
                            {
                                player.channel.owner
                            });
                        }
                    }
                }
                else if (PlayerInteract.interactable.checkHint(out message, out text, out color2) && !PlayerUI.window.showCursor)
                {
                    if (!PlayerInteract.interactable.CompareTag("Item"))
                    {
                        PlayerUI.hint((!(OV_PlayerInteract.target != null)) ? OV_PlayerInteract.focus : OV_PlayerInteract.target, message, text, color2, Array.Empty <object>());
                    }
                    else
                    {
                        PlayerUI.hint((!(OV_PlayerInteract.target != null)) ? OV_PlayerInteract.focus : OV_PlayerInteract.target, message, text, color2, new object[]
                        {
                            ((InteractableItem)PlayerInteract.interactable).item,
                            ((InteractableItem)PlayerInteract.interactable).asset
                        });
                    }
                }
                EPlayerMessage message2;
                float          data;
                if (PlayerInteract.interactable2 != null && PlayerInteract.interactable2.checkHint(out message2, out data) && !PlayerUI.window.showCursor)
                {
                    PlayerUI.hint2(message2, (!OV_PlayerInteract.isHoldingKey) ? 0f : ((Time.realtimeSinceStartup - OV_PlayerInteract.lastKeyDown) / this.salvageTime), data);
                }
                if ((Player.player.stance.stance == EPlayerStance.DRIVING || Player.player.stance.stance == EPlayerStance.SITTING) && !Input.GetKey(KeyCode.LeftShift))
                {
                    if (Input.GetKeyDown(KeyCode.F1))
                    {
                        this.hotkey(0);
                    }
                    if (Input.GetKeyDown(KeyCode.F2))
                    {
                        this.hotkey(1);
                    }
                    if (Input.GetKeyDown(KeyCode.F3))
                    {
                        this.hotkey(2);
                    }
                    if (Input.GetKeyDown(KeyCode.F4))
                    {
                        this.hotkey(3);
                    }
                    if (Input.GetKeyDown(KeyCode.F5))
                    {
                        this.hotkey(4);
                    }
                    if (Input.GetKeyDown(KeyCode.F6))
                    {
                        this.hotkey(5);
                    }
                    if (Input.GetKeyDown(KeyCode.F7))
                    {
                        this.hotkey(6);
                    }
                    if (Input.GetKeyDown(KeyCode.F8))
                    {
                        this.hotkey(7);
                    }
                    if (Input.GetKeyDown(KeyCode.F9))
                    {
                        this.hotkey(8);
                    }
                    if (Input.GetKeyDown(KeyCode.F10))
                    {
                        this.hotkey(9);
                    }
                }
                if (Input.GetKeyDown(ControlsSettings.interact))
                {
                    OV_PlayerInteract.lastKeyDown  = Time.realtimeSinceStartup;
                    OV_PlayerInteract.isHoldingKey = true;
                }
                if (Input.GetKeyDown(ControlsSettings.inspect))
                {
                    if (ControlsSettings.inspect != ControlsSettings.interact)
                    {
                        if (Player.player.equipment.canInspect)
                        {
                            Player.player.channel.send("askInspect", ESteamCall.SERVER, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, Array.Empty <object>());
                        }
                    }
                }
                if (OV_PlayerInteract.isHoldingKey)
                {
                    if (!Input.GetKeyUp(ControlsSettings.interact))
                    {
                        if (Time.realtimeSinceStartup - OV_PlayerInteract.lastKeyDown > this.salvageTime)
                        {
                            OV_PlayerInteract.isHoldingKey = false;
                            if (!PlayerUI.window.showCursor && PlayerInteract.interactable2 != null)
                            {
                                PlayerInteract.interactable2.use();
                            }
                        }
                    }
                    else
                    {
                        OV_PlayerInteract.isHoldingKey = false;
                        if (!PlayerUI.window.showCursor)
                        {
                            if (Player.player.stance.stance != EPlayerStance.DRIVING)
                            {
                                if (Player.player.stance.stance != EPlayerStance.SITTING)
                                {
                                    if (OV_PlayerInteract.focus != null && PlayerInteract.interactable != null)
                                    {
                                        if (PlayerInteract.interactable.checkUseable())
                                        {
                                            PlayerInteract.interactable.use();
                                            return;
                                        }
                                        return;
                                    }
                                    else if (OV_PlayerInteract.purchaseAsset == null)
                                    {
                                        if (ControlsSettings.inspect != ControlsSettings.interact)
                                        {
                                            return;
                                        }
                                        if (Player.player.equipment.canInspect)
                                        {
                                            Player.player.channel.send("askInspect", ESteamCall.SERVER, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, Array.Empty <object>());
                                            return;
                                        }
                                        return;
                                    }
                                    else
                                    {
                                        if (Player.player.skills.experience >= Player.player.movement.purchaseNode.cost)
                                        {
                                            Player.player.skills.sendPurchase(Player.player.movement.purchaseNode);
                                            return;
                                        }
                                        return;
                                    }
                                }
                            }
                            VehicleManager.exitVehicle();
                            return;
                        }
                        if (Player.player.inventory.isStoring && Player.player.inventory.shouldInteractCloseStorage)
                        {
                            PlayerDashboardUI.close();
                            PlayerLifeUI.open();
                            return;
                        }
                        if (PlayerBarricadeSignUI.active)
                        {
                            PlayerBarricadeSignUI.close();
                            PlayerLifeUI.open();
                            return;
                        }
                        if (PlayerBarricadeStereoUI.active)
                        {
                            PlayerBarricadeStereoUI.close();
                            PlayerLifeUI.open();
                            return;
                        }
                        if (PlayerBarricadeLibraryUI.active)
                        {
                            PlayerBarricadeLibraryUI.close();
                            PlayerLifeUI.open();
                            return;
                        }
                        if (PlayerBarricadeMannequinUI.active)
                        {
                            PlayerBarricadeMannequinUI.close();
                            PlayerLifeUI.open();
                            return;
                        }
                        if (PlayerNPCDialogueUI.active)
                        {
                            if (PlayerNPCDialogueUI.dialogueAnimating)
                            {
                                PlayerNPCDialogueUI.skipText();
                                return;
                            }
                            if (PlayerNPCDialogueUI.dialogueHasNextPage)
                            {
                                PlayerNPCDialogueUI.nextPage();
                                return;
                            }
                            PlayerNPCDialogueUI.close();
                            PlayerLifeUI.open();
                            return;
                        }
                        else
                        {
                            if (PlayerNPCQuestUI.active)
                            {
                                PlayerNPCQuestUI.closeNicely();
                                return;
                            }
                            if (PlayerNPCVendorUI.active)
                            {
                                PlayerNPCVendorUI.closeNicely();
                                return;
                            }
                        }
                    }
                }
                return;
            }
        }
예제 #18
0
    public static EPlayerHit CalcHitMarker(ItemGunAsset PAsset, ref RaycastInfo ri)
    {
        EPlayerHit eplayerHit = EPlayerHit.NONE;
        bool       flag       = ri == null || PAsset == null;
        EPlayerHit result;

        if (flag)
        {
            result = eplayerHit;
        }
        else
        {
            bool flag2 = ri.animal || ri.player || ri.zombie;
            if (flag2)
            {
                eplayerHit = EPlayerHit.ENTITIY;
                bool flag3 = ri.limb == ELimb.SKULL;
                if (flag3)
                {
                    eplayerHit = EPlayerHit.CRITICAL;
                }
            }
            else
            {
                bool flag4 = ri.transform;
                if (flag4)
                {
                    bool flag5 = ri.transform.CompareTag("Barricade") && PAsset.barricadeDamage > 1f;
                    if (flag5)
                    {
                        InteractableDoorHinge component = ri.transform.GetComponent <InteractableDoorHinge>();
                        bool flag6 = component != null;
                        if (flag6)
                        {
                            ri.transform = component.transform.parent.parent;
                        }
                        bool flag7 = !ushort.TryParse(ri.transform.name, out ushort id);
                        if (flag7)
                        {
                            return(eplayerHit);
                        }
                        ItemBarricadeAsset itemBarricadeAsset = (ItemBarricadeAsset)Assets.find(EAssetType.ITEM, id);
                        bool flag8 = itemBarricadeAsset == null || (!itemBarricadeAsset.isVulnerable && !PAsset.isInvulnerable);
                        if (flag8)
                        {
                            return(eplayerHit);
                        }
                        bool flag9 = eplayerHit == EPlayerHit.NONE;
                        if (flag9)
                        {
                            eplayerHit = EPlayerHit.BUILD;
                        }
                    }
                    else
                    {
                        bool flag10 = ri.transform.CompareTag("Structure") && PAsset.structureDamage > 1f;
                        if (flag10)
                        {
                            bool flag11 = !ushort.TryParse(ri.transform.name, out ushort id2);
                            if (flag11)
                            {
                                return(eplayerHit);
                            }
                            ItemStructureAsset itemStructureAsset = (ItemStructureAsset)Assets.find(EAssetType.ITEM, id2);
                            bool flag12 = itemStructureAsset == null || (!itemStructureAsset.isVulnerable && !PAsset.isInvulnerable);
                            if (flag12)
                            {
                                return(eplayerHit);
                            }
                            bool flag13 = eplayerHit == EPlayerHit.NONE;
                            if (flag13)
                            {
                                eplayerHit = EPlayerHit.BUILD;
                            }
                        }
                        else
                        {
                            bool flag14 = ri.transform.CompareTag("Resource") && PAsset.resourceDamage > 1f;
                            if (flag14)
                            {
                                bool flag15 = !ResourceManager.tryGetRegion(ri.transform, out byte x, out byte y, out ushort index);
                                if (flag15)
                                {
                                    return(eplayerHit);
                                }
                                ResourceSpawnpoint resourceSpawnpoint = ResourceManager.getResourceSpawnpoint(x, y, index);
                                bool flag16 = resourceSpawnpoint == null || resourceSpawnpoint.isDead || !PAsset.hasBladeID(resourceSpawnpoint.asset.bladeID);
                                if (flag16)
                                {
                                    return(eplayerHit);
                                }
                                bool flag17 = eplayerHit == EPlayerHit.NONE;
                                if (flag17)
                                {
                                    eplayerHit = EPlayerHit.BUILD;
                                }
                            }
                            else
                            {
                                bool flag18 = PAsset.objectDamage > 1f;
                                if (flag18)
                                {
                                    InteractableObjectRubble component2 = ri.transform.GetComponent <InteractableObjectRubble>();
                                    bool flag19 = component2 == null;
                                    if (flag19)
                                    {
                                        return(eplayerHit);
                                    }
                                    ri.section = component2.getSection(ri.collider.transform);
                                    bool flag20 = component2.isSectionDead(ri.section) || (!component2.asset.rubbleIsVulnerable && !PAsset.isInvulnerable);
                                    if (flag20)
                                    {
                                        return(eplayerHit);
                                    }
                                    bool flag21 = eplayerHit == EPlayerHit.NONE;
                                    if (flag21)
                                    {
                                        eplayerHit = EPlayerHit.BUILD;
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    bool flag22 = ri.vehicle && !ri.vehicle.isDead && PAsset.vehicleDamage > 1f;
                    if (flag22)
                    {
                        bool flag23 = ri.vehicle.asset != null && (ri.vehicle.asset.isVulnerable || PAsset.isInvulnerable);
                        if (flag23)
                        {
                            bool flag24 = eplayerHit == EPlayerHit.NONE;
                            if (flag24)
                            {
                                eplayerHit = EPlayerHit.BUILD;
                            }
                        }
                    }
                }
            }
            result = eplayerHit;
        }
        return(result);
    }
        public static EPlayerHit CalcHitMarker(ItemGunAsset PAsset, ref RaycastInfo ri)
        {
            EPlayerHit eplayerhit = EPlayerHit.NONE;

            if (ri == null || PAsset == null)
            {
                return(eplayerhit);
            }

            if (ri.animal || ri.player || ri.zombie)
            {
                eplayerhit = EPlayerHit.ENTITIY;
                if (ri.limb == ELimb.SKULL)
                {
                    eplayerhit = EPlayerHit.CRITICAL;
                }
            }
            else if (ri.transform)
            {
                if (ri.transform.CompareTag("Barricade") && PAsset.barricadeDamage > 1f)
                {
                    InteractableDoorHinge component = ri.transform.GetComponent <InteractableDoorHinge>();
                    if (component != null)
                    {
                        ri.transform = component.transform.parent.parent;
                    }

                    if (!ushort.TryParse(ri.transform.name, out ushort id))
                    {
                        return(eplayerhit);
                    }

                    ItemBarricadeAsset itemBarricadeAsset = (ItemBarricadeAsset)Assets.find(EAssetType.ITEM, id);

                    if (itemBarricadeAsset == null || !itemBarricadeAsset.isVulnerable && !PAsset.isInvulnerable)
                    {
                        return(eplayerhit);
                    }

                    if (eplayerhit == EPlayerHit.NONE)
                    {
                        eplayerhit = EPlayerHit.BUILD;
                    }
                }
                else if (ri.transform.CompareTag("Structure") && PAsset.structureDamage > 1f)
                {
                    if (!ushort.TryParse(ri.transform.name, out ushort id2))
                    {
                        return(eplayerhit);
                    }

                    ItemStructureAsset itemStructureAsset = (ItemStructureAsset)Assets.find(EAssetType.ITEM, id2);

                    if (itemStructureAsset == null || !itemStructureAsset.isVulnerable && !PAsset.isInvulnerable)
                    {
                        return(eplayerhit);
                    }

                    if (eplayerhit == EPlayerHit.NONE)
                    {
                        eplayerhit = EPlayerHit.BUILD;
                    }
                }
                else if (ri.transform.CompareTag("Resource") && PAsset.resourceDamage > 1f)
                {
                    if (!ResourceManager.tryGetRegion(ri.transform, out byte x, out byte y, out ushort index))
                    {
                        return(eplayerhit);
                    }

                    ResourceSpawnpoint resourceSpawnpoint = ResourceManager.getResourceSpawnpoint(x, y, index);

                    if (resourceSpawnpoint == null || resourceSpawnpoint.isDead ||
                        resourceSpawnpoint.asset.bladeID != PAsset.bladeID)
                    {
                        return(eplayerhit);
                    }

                    if (eplayerhit == EPlayerHit.NONE)
                    {
                        eplayerhit = EPlayerHit.BUILD;
                    }
                }
                else if (PAsset.objectDamage > 1f)
                {
                    InteractableObjectRubble component2 = ri.transform.GetComponent <InteractableObjectRubble>();

                    if (component2 == null)
                    {
                        return(eplayerhit);
                    }

                    ri.section = component2.getSection(ri.collider.transform);

                    if (component2.isSectionDead(ri.section) ||
                        !component2.asset.rubbleIsVulnerable && !PAsset.isInvulnerable)
                    {
                        return(eplayerhit);
                    }

                    if (eplayerhit == EPlayerHit.NONE)
                    {
                        eplayerhit = EPlayerHit.BUILD;
                    }
                }
            }
            else if (ri.vehicle && !ri.vehicle.isDead && PAsset.vehicleDamage > 1f)
            {
                if (ri.vehicle.asset != null && (ri.vehicle.asset.isVulnerable || PAsset.isInvulnerable))
                {
                    if (eplayerhit == EPlayerHit.NONE)
                    {
                        eplayerhit = EPlayerHit.BUILD;
                    }
                }
            }

            return(eplayerhit);
        }
        public void Execute(IRocketPlayer caller, string[] args)
        {
            if (args.Length > 1)
            {
                UnturnedChat.Say(caller, "invalid arguments", Color.red);
                return;
            }
            else if (args.Length == 1)
            {
                bool isregistered = false;
                foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                {
                    if (doorinfo.name == args[0])
                    {
                        isregistered = true;
                        miscstuff.Instance.Configuration.Instance.listofregistereddoors.Remove(doorinfo);
                        UnturnedChat.Say(caller, "Door" + doorinfo.name + " Unregistered!");
                        miscstuff.Instance.Configuration.Save();
                    }
                }
                if (isregistered == false)
                {
                    UnturnedChat.Say(caller, "Registered Door does not exist with that name", Color.red);
                }
            }
            else if (args.Length == 0)
            {
                var PlayerCaller = (UnturnedPlayer)caller;
                InteractableDoorHinge component = raycastdoor.Getdoor(PlayerCaller);
                if (component != null)
                {
                    InteractableDoor door = component.door;
                    bool             flag = !door.isOpen;
                    byte             x;
                    byte             y;
                    ushort           plant;
                    ushort           index;
                    BarricadeRegion  barricadeRegion;
                    BarricadeManager.tryGetInfo(door.transform, out x, out y, out plant, out index, out barricadeRegion);
                    BarricadeDrop barricadedrop = barricadeRegion.drops[index];
                    var           ID            = barricadedrop.instanceID;



                    bool isregistered = false;
                    foreach (Registereddoortype doorinfo in miscstuff.Instance.Configuration.Instance.listofregistereddoors)
                    {
                        if (doorinfo.ID == ID)
                        {
                            isregistered = true;
                            miscstuff.Instance.Configuration.Instance.listofregistereddoors.Remove(doorinfo);
                            UnturnedChat.Say(caller, "Door" + doorinfo.name + " Unregistered!");
                            miscstuff.Instance.Configuration.Save();
                        }
                    }

                    if (isregistered == false)
                    {
                        UnturnedChat.Say(caller, "That door is not registered!", Color.red);
                    }
                }

                else
                {
                    UnturnedChat.Say(caller, "You are not looking at a valid object", Color.red);
                }
            }
        }