Esempio n. 1
0
        public static void Prefix(byte amount, Vector3 newRagdoll, EDeathCause newCause, ELimb newLimb, CSteamID newKiller, ref EPlayerKill kill, bool trackKill, ERagdollEffect newRagdollEffect, bool canCauseBleeding, PlayerLife __instance)
        {
            Player ply = __instance.channel.owner.player;
            if (ply is null) return;

            if (amount >= ply.life.health)
            {
                Transform deathboxTransform = BarricadeManager.dropBarricade(new Barricade(1283),ply.transform, ply.transform.position, 0f, 0f, 0f, (ulong) ply.channel.owner.playerID.steamID, 0UL);
                byte x;
                byte y;
                ushort plant;
                ushort index;
                BarricadeRegion region;

                if (!BarricadeManager.tryGetInfo(deathboxTransform, out x, out y, out plant, out index, out region)) return;

                InteractableStorage storage = deathboxTransform.GetComponent<InteractableStorage>();
                storage.items.resize(10, 10);

                for (byte page = 0; page < 6; page++)
                {
                    for (byte i = 0; i < ply.inventory.items[page].getItemCount(); i++)
                    {
                        ItemJar item = ply.inventory.items[page].getItem(i);
                        storage.items.tryAddItem(item.item);
                    }
                }
                TTTPlayer.ClearInventoryUnsafe(__instance.channel.owner); // Clears clothing to prevent players aqquiring detective vest ect.
            }
        }
Esempio n. 2
0
        private void OnPlayerDeath(UnturnedPlayer player, EDeathCause cause, ELimb limb, CSteamID murderer)
        {
            List <ItemJar> droppedInventory = new List <ItemJar>();

            UnityEngine.Vector3 deathlocation = player.Position + new UnityEngine.Vector3(0, (float)0.60, 0);

            moveInventoryItems(player, droppedInventory);
            if (Instance.Configuration.Instance.StoreClothes)
            {
                removeClothing(player, droppedInventory);
            }

            // use the specified unturned storage asset
            Barricade deathBag = new Barricade(Instance.Configuration.Instance.DeathBagId);

            UnityEngine.Transform barricadeTransform = new UnityEngine.GameObject().transform;
            barricadeTransform.localPosition = deathlocation;

            // create the physical bag to be dropped into the scene
            InteractableStorage deathBagStorage = BarricadeManager.dropBarricade(deathBag, barricadeTransform, deathlocation, 0, 0, 0, 0, 0).GetComponent <InteractableStorage>();

            foreach (ItemJar itemjar in droppedInventory)
            {
                // add the inventory into the bag
                deathBagStorage.items.tryAddItem(itemjar.item);
            }

            TaskDispatcher.QueueOnMainThread(() =>
            {
                DamageTool.damage(deathBagStorage.transform, false, 100000, 1, out EPlayerKill kill);
            }, (float)Instance.Configuration.Instance.Delay);
        }
    public void CmdSwitchPickupMode()
    {
        // Switch the pickup mode of the storage in the active hand
        InteractableStorage storage = null;

        foreach (var itemSlot in itemStorage.GetNamedItemSlots(NamedSlot.rightHand))
        {
            if (itemSlot.ItemObject != null && itemSlot.ItemObject.TryGetComponent <InteractableStorage>(out storage))
            {
                break;
            }
        }

        if (storage == null)
        {
            foreach (var itemSlot in itemStorage.GetNamedItemSlots(NamedSlot.leftHand))
            {
                if (itemSlot.ItemObject != null && itemSlot.ItemObject.TryGetComponent <InteractableStorage>(out storage))
                {
                    break;
                }
            }
        }

        if (storage != null)
        {
            storage.ServerSwitchPickupMode(gameObject);
        }
    }
Esempio n. 4
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);
        }
Esempio n. 5
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))
            {
                InteractableStorage storage = hit.transform.GetComponent <InteractableStorage>();

                if (storage != null)
                {
                    storage.isOpen                  = true;
                    storage.opener                  = player.UnturnedPlayer;
                    player.Inventory.isStoring      = true;
                    player.Inventory.isStorageTrunk = false;
                    player.Inventory.storage        = storage;
                    player.Inventory.updateItems(PlayerInventory.STORAGE, storage.items);
                    player.Inventory.sendStorage();

                    EssLang.Send(src, "STORAGE_OPEN");
                    return(CommandResult.Success());
                }
                else
                {
                    return(CommandResult.LangError("STORAGE_INVALID"));
                }
            }
Esempio n. 6
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;
            }
            InteractableVehicle vehicle = trans.gameObject.GetComponent <InteractableVehicle>();

            if (vehicle != null)
            {
                return;
            }
            if (trans.GetComponent <InteractableDoorHinge>() != null)
            {
                return;
            }
            if (BarricadeManager.tryGetInfo(trans, out byte x, out byte y, out ushort plant, out ushort index, out BarricadeRegion BarricRegion))
            {
                UnturnedChat.Say(caller, Base.Instance.Translate("unlocked"));
                ItemStorageAsset    itemstore = (ItemStorageAsset)BarricRegion.barricades[index].barricade.asset;
                InteractableStorage IStorage  = (InteractableStorage)BarricRegion.drops[index].interactable;
                IStorage.isOpen  = false;
                IStorage.enabled = true;
                IStorage.opener  = null;
                IStorage.use();
            }
        }
Esempio n. 7
0
        public void Execute(IRocketPlayer caller, string[] args)
        {
            Player     player = ((UnturnedPlayer)caller).Player;
            PlayerLook look   = player.look;

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

                if (storage != null)
                {
                    storage.isOpen                  = true;
                    storage.opener                  = player;
                    player.inventory.isStoring      = true;
                    player.inventory.isStorageTrunk = false;
                    player.inventory.storage        = storage;
                    player.inventory.updateItems(PlayerInventory.STORAGE, storage.items);
                    player.inventory.sendStorage();

                    UnturnedChat.Say(caller, Util.Translate("storage_open"));
                }
                else
                {
                    UnturnedChat.Say(caller, Util.Translate("invalid_storage"));
                }
            }
 private void SaveState(InteractableStorage storage, byte[] state, int size)
 {
     if (storage.transform == Container.transform)
     {
         ItemCount = Container.items.getItemCount();
         State     = new byte[size];
         Array.Copy(state, State, size);
     }
 }
Esempio n. 9
0
    /// <summary>
    /// Informs the recipient that they can now show/hide the UI popup for observing a particular
    /// storage or any children.
    /// </summary>
    /// <param name="recipient"></param>
    /// <param name="storage"></param>
    /// <param name="observed">true indicates they should show the popup, false indicates it should be hidden</param>
    public static void Send(GameObject recipient, InteractableStorage storage, bool observed)
    {
        var msg = new ObserveInteractableStorageMessage()
        {
            Storage  = storage.gameObject.NetId(),
            Observed = observed
        };

        msg.SendTo(recipient);
    }
Esempio n. 10
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            Rocket.Unturned.Player.UnturnedPlayer player = (Rocket.Unturned.Player.UnturnedPlayer)caller;
            if (player == null)
            {
                return;
            }
            foreach (VaultStorage vaults in Uber_VaultS.vaultList)
            {
                if (vaults.SteamID == player.CSteamID)
                {
                    byte            x, y;
                    ushort          plant, index;
                    BarricadeRegion regionBarricade;
                    if (BarricadeManager.tryGetInfo(vaults.Locker, out x, out y, out plant, out index, out regionBarricade))
                    {
                        InteractableStorage IStorage = (InteractableStorage)regionBarricade.drops[index].interactable;
                        IStorage.isOpen = true;
                        IStorage.opener = player.Player;
                        //IStorage.name = "U" + player.CSteamID.ToString();

                        if (vaults.alreadyOpened == false)
                        {
                            IStorage.items.resize((byte)vaults.SizeX, (byte)vaults.SizeY);
                            IStorage.items.clear();
                            if (vaults.ItemList.getItemCount() > 0)
                            {
                                for (byte i = 0; i < vaults.ItemList.getItemCount(); i++)
                                {
                                    ItemJar currentItemJar = vaults.ItemList.getItem(i);
                                    Item    CurrentItem    = currentItemJar.item;
                                    IStorage.items.addItem(vaults.ItemList.getItem(i).x, vaults.ItemList.getItem(i).y, vaults.ItemList.getItem(i).rot, vaults.ItemList.getItem(i).item);
                                }
                            }
                            vaults.alreadyOpened = true;
                        }

                        player.Inventory.isStoring = true;
                        player.Inventory.storage   = IStorage;
                        player.Inventory.updateItems(PlayerInventory.STORAGE, IStorage.items);
                        player.Inventory.sendStorage();
                    }
                }
            }
        }
Esempio n. 11
0
        private void OnCollisionEnter(Collision collision)
        {
            if (isExploded)
            {
                return;
            }

            if (collision.collider.isTrigger)
            {
                return;
            }

            isExploded = true;

            Transform t = BarricadeManager.dropBarricade(new Barricade(1374), null, base.transform.position, 0f, 0f, 0f, 0UL, 0UL);

            if (t == null)
            {
                return;
            }

            InteractableStorage component = transform.GetComponent <InteractableStorage>();

            component.despawnWhenDestroyed = true;
            if (component.items != null)
            {
                foreach (AirdropItem ai in AirdropManager.GetAirdropItems(type))
                {
                    for (int i = 0; i < ai.amount; i++)
                    {
                        component.items.tryAddItem(new Item((ushort)ai.id, EItemOrigin.ADMIN, (byte)ai.durability), false);
                    }
                }

                component.items.onStateUpdated();
            }

            EffectManager.sendEffectReliable((ushort)AirdropPlugin.Conf.AirdropEffectId, EffectManager.INSANE, transform.position);
        }
    private ObserveStorageRelationship(InteractableStorage observedStorage, RegisterPlayer observer,
                                       float maxRange, Action <ObserveStorageRelationship> onObservationEnded) :
        base(observedStorage.GetComponent <RegisterTile>(), observer, maxRange, (rship) => onObservationEnded.Invoke(rship as ObserveStorageRelationship))
    {
        this.ObservedStorage = observedStorage;
        this.ObserverPlayer  = observer;
        //check if the observed storage is in a player's inventory, and if so, populate the fields / event hooks
        var rootStorage = observedStorage.ItemStorage.GetRootStorage();

        this.observedPlayerMove = rootStorage.GetComponent <PlayerMove>();
        if (observedPlayerMove != null)
        {
            this.observedRegisterPlayer = rootStorage.GetComponent <RegisterPlayer>();

            this.observedPlayerHealth = rootStorage.GetComponent <PlayerHealthV2>();

            //add listeners for non-range-based ways in which the relationship can end
            observedPlayerMove.OnCuffChangeServer.AddListener(OnCuffChangeServer);
            observedRegisterPlayer.OnSlipChangeServer.AddListener(OnSlipChangeServer);
            observedPlayerHealth.OnConsciousStateChangeServer.AddListener(OnConsciousStateChangeServer);
        }
    }
        private void OnOpenStorageRequested(CSteamID steamId, InteractableStorage storage, ref bool shouldAllow)
        {
            var drop = BarricadeManager.FindBarricadeByRootTransform(storage.transform);

            if (drop == null)
            {
                return;
            }

            var buildable = new UnturnedBarricadeBuildable(drop);

            var nativePlayer = PlayerTool.getPlayer(steamId);
            var player       = GetUnturnedPlayer(nativePlayer);

            var @event = new UnturnedStorageOpeningEvent(buildable, player)
            {
                IsCancelled = !shouldAllow
            };

            Emit(@event);

            shouldAllow = [email protected];
        }
Esempio n. 14
0
 public GOUpdate(InteractableStorage storage)
 {
     this.instance   = storage;
     this.gameObject = storage.gameObject;
     this.type       = EGOUpdate.STORAGE;
 }
Esempio n. 15
0
 private void Awake()
 {
     script = GetComponent <PlayerScript>();
     interactableStorage = GetComponent <InteractableStorage>();
 }
Esempio n. 16
0
    /// <summary>
    /// Checks if the indicated item can fit in this slot.
    /// </summary>
    /// <param name="toStore"></param>
    /// <param name="ignoreOccupied">if true, does not check if an item is already in the slot</param>
    /// <param name="examineRecipient">if not null, when validation fails, will output an appropriate examine message to this recipient</param>
    /// <returns></returns>
    public bool CanFit(Pickupable toStore, bool ignoreOccupied = false, GameObject examineRecipient = null)
    {
        if (toStore == null)
        {
            return(false);
        }
        if (IsEnabled == false)
        {
            return(false);
        }

        ItemStorage       storageToCheck  = itemStorage;
        StorageIdentifier storeIdentifier = toStore.GetComponent <StorageIdentifier>();

        //Check if there is a deny entry for this toStore item
        if (storageToCheck != null && storeIdentifier != null)
        {
            InteractableStorage interactiveStorage = storageToCheck.GetComponent <InteractableStorage>();
            if (interactiveStorage != null)
            {
                if (interactiveStorage.denyStorageOfStorageItems.HasFlag(storeIdentifier.StorageItemName))
                {
                    Logger.LogTrace($"Cannot fit {toStore} in slot {ToString()}, item was blacklisted.", Category.Inventory);
                    if (examineRecipient)
                    {
                        Chat.AddExamineMsg(examineRecipient, $"{toStore.gameObject.ExpensiveName()} can't be placed there!");
                    }

                    return(false);
                }
            }
        }

        //go through this slot's ancestors and make sure none of them ARE toStore,
        //as that would create a loop in the inventory hierarchy
        int count = 0;

        while (storageToCheck != null)
        {
            if (storageToCheck.gameObject == toStore.gameObject)
            {
                Logger.LogTraceFormat(
                    "Cannot fit {0} in slot {1}, this would create an inventory hierarchy loop (putting the" +
                    " storage inside itself)", Category.Inventory, toStore, ToString());
                if (examineRecipient)
                {
                    Chat.AddExamineMsg(examineRecipient, $"{toStore.gameObject.ExpensiveName()} can't go inside itself!");
                }
                return(false);
            }
            //get parent item storage if it exists
            var pickupable = storageToCheck.GetComponent <Pickupable>();
            if (pickupable != null && pickupable.ItemSlot != null)
            {
                storageToCheck = pickupable.ItemSlot.ItemStorage;
            }
            else
            {
                storageToCheck = null;
            }

            count++;
            if (count > 5)
            {
                Logger.LogTraceFormat(
                    "Something went wrong when adding {0} in slot {1}, aborting!", Category.Inventory, toStore, ToString());
                return(false);
            }
        }

        //if the slot already has an item, it's allowed to stack only if the item to add can stack with
        //the existing item.
        if (!ignoreOccupied && item != null)
        {
            var thisStackable  = item.GetComponent <Stackable>();
            var otherStackable = toStore.GetComponent <Stackable>();
            var stackResult    = thisStackable != null && otherStackable != null &&
                                 thisStackable.CanAccommodate(otherStackable);
            if (!stackResult)
            {
                Logger.LogTraceFormat(
                    "Cannot stack {0} in slot {1}", Category.Inventory, toStore, ToString());
            }
            else
            {
                Logger.LogTraceFormat(
                    "Can stack {0} in slot {1}", Category.Inventory, toStore, ToString());
            }
            return(stackResult);
        }



        //no item in slot and no inventory loop created,
        //check if this storage can fit this according to its specific capacity logic
        var canFit = itemStorage.ItemStorageCapacity.CanFit(toStore, this.slotIdentifier);

        if (canFit)
        {
            return(true);
        }
        if (examineRecipient)
        {
            //if this is going in a player's inventory, use a more appropriate message.
            var targetPlayerScript = ItemStorage.GetComponent <PlayerScript>();
            if (targetPlayerScript != null)
            {
                //going into a top-level inventory slot of a player
                Chat.AddExamineMsg(examineRecipient, $"{toStore.gameObject.ExpensiveName()} can't go in that slot.");
            }
            else
            {
                //going into something else
                Chat.AddExamineMsg(examineRecipient, $"{toStore.gameObject.ExpensiveName()} doesn't fit in the {ItemStorage.gameObject.ExpensiveName()}.");
            }
        }

        return(false);
    }
Esempio n. 17
0
        public IEnumerator updateStuff()
        {
            while (true)
            {
                float  aim_distanceAway = float.MaxValue;
                object aim_nextTarget   = null;
                MP_ESP.draw.Clear();

                lock (collections)
                {
                    for (int i = 0; i < collections.Count; i++)
                    {
                        if (collections[i] == null || collections[i].gameObject == null || collections[i].instance == null)
                        {
                            continue;
                        }

                        GOUpdate updateObject = collections[i];

                        #region Players
                        if (updateObject.type == EGOUpdate.PLAYER)
                        {
                            if (!((SteamPlayer)updateObject.instance).player.life.isDead && ((SteamPlayer)updateObject.instance).player != Player.player)
                            {
                                int distance = (int)Tools.getDistance(updateObject.gameObject.transform.position);

                                #region Aimbot & SilentAim
                                if ((MP_Aimbot.aimbot || MP_Aimbot.silentAim) && MP_Aimbot.aim_players && !MP_Players.isFriend((SteamPlayer)updateObject.instance))
                                {
                                    if (aim_distanceAway > distance && (distance <= MP_Aimbot.distance || MP_Aimbot.ignoreDistance))
                                    {
                                        aim_distanceAway = distance;
                                        aim_nextTarget   = updateObject.instance;
                                    }
                                }
                                #endregion

                                #region ESP
                                if (MP_ESP.ESP_Enabled && MP_ESP.ESP_Players_Enabled && (((SteamPlayer)updateObject.instance).player != Player.player))
                                {
                                    if (distance <= MP_ESP.ESP_Distance || MP_ESP.ESP_IgnoreDistance)
                                    {
                                        bool isFriend = MP_Players.isFriend((SteamPlayer)updateObject.instance);

                                        updateObject.screenPosition = MainCamera.instance.WorldToScreenPoint(updateObject.gameObject.transform.position);
                                        updateObject.text           = "";
                                        updateObject.color          = (isFriend ? MP_ESP.ESP_Friends_Color.selectedColor : MP_ESP.ESP_Players_Color.selectedColor);

                                        if (updateObject.screenPosition.z > 0)
                                        {
                                            updateObject.screenPosition.y = (Screen.height - (updateObject.screenPosition.y + 1f)) - 12f;
                                            SteamPlayer p = (SteamPlayer)updateObject.instance;

                                            if (MP_ESP.ESP_Players_ShowNames)
                                            {
                                                updateObject.text += p.playerID.characterName + "\n";
                                            }
                                            if (MP_ESP.ESP_Players_ShowDistances)
                                            {
                                                updateObject.text += "Distance: " + distance + "\n";
                                            }
                                            if (MP_ESP.ESP_Players_ShowWeapons)
                                            {
                                                updateObject.text += "Weapon: " + (p.player.equipment.asset == null ? "None" : p.player.equipment.asset.itemName) + "\n";
                                            }
                                            if (MP_ESP.ESP_Players_ShowIsAdmin)
                                            {
                                                updateObject.text += "Is Admin: " + (p.isAdmin ? "Yes" : "No") + "\n";
                                            }
                                            if (MP_ESP.ESP_Box)
                                            {
                                                updateObject.box = Tools.BoundsToScreenRect(new Bounds(p.player.transform.position + new Vector3(0, 1.1f, 0), p.player.transform.localScale + new Vector3(0, .95f, 0)));
                                            }

                                            MP_ESP.draw.Add(new ESPDraw(updateObject.text, updateObject.gameObject, EESPItem.PLAYER, updateObject.screenPosition, updateObject.box, updateObject.color, distance));
                                        }
                                    }
                                }
                                #endregion

                                #region Chams
                                Renderer[] renderers = ((SteamPlayer)updateObject.instance).player.gameObject.GetComponentsInChildren <Renderer>();

                                for (int a = 0; a < renderers.Length; a++)
                                {
                                    for (int b = 0; b < renderers[a].materials.Length; b++)
                                    {
                                        if (Variables.isSpying || !MP_ESP.ESP_Enabled || !MP_ESP.ESP_Chams || !MP_ESP.ESP_Players_Enabled || (distance > MP_ESP.ESP_Distance && !MP_ESP.ESP_IgnoreDistance))
                                        {
                                            if (renderers[a].materials[b].shader == esp)
                                            {
                                                renderers[a].materials[b].shader = normal;
                                            }
                                        }
                                        else
                                        {
                                            if (renderers[a].materials[b].shader != esp)
                                            {
                                                renderers[a].materials[b].shader = esp;
                                            }
                                        }
                                    }
                                }
                                #endregion
                            }
                        }
                        #endregion

                        #region Zombies
                        if (updateObject.type == EGOUpdate.ZOMBIE && !((Zombie)updateObject.instance).isDead)
                        {
                            int distance = (int)Tools.getDistance(updateObject.gameObject.transform.position);

                            #region Aimbot & SilentAim
                            if ((MP_Aimbot.aimbot || MP_Aimbot.silentAim) && MP_Aimbot.aim_zombies)
                            {
                                if (aim_distanceAway > distance && (distance <= MP_Aimbot.distance || MP_Aimbot.ignoreDistance))
                                {
                                    aim_distanceAway = distance;
                                    aim_nextTarget   = updateObject.instance;
                                }
                            }
                            #endregion

                            #region ESP
                            if (MP_ESP.ESP_Enabled && MP_ESP.ESP_Zombies_Enabled && (distance <= MP_ESP.ESP_Distance || MP_ESP.ESP_IgnoreDistance))
                            {
                                updateObject.screenPosition = MainCamera.instance.WorldToScreenPoint(updateObject.gameObject.transform.position);
                                updateObject.text           = "";
                                updateObject.color          = MP_ESP.ESP_Zombies_Color.selectedColor;

                                if (updateObject.screenPosition.z > 0)
                                {
                                    Collider collider = null;

                                    if (MP_ESP.ESP_Box)
                                    {
                                        collider = updateObject.gameObject.GetComponent <Collider>();
                                    }
                                    updateObject.screenPosition.x -= 64f;
                                    updateObject.screenPosition.y  = (Screen.height - (updateObject.screenPosition.y + 1f)) - 12f;

                                    if (MP_ESP.ESP_Zombies_ShowNames)
                                    {
                                        updateObject.text += Tools.getZombieName((Zombie)updateObject.instance) + "\n";
                                    }
                                    if (MP_ESP.ESP_Zombies_ShowDistances)
                                    {
                                        updateObject.text += "Distance: " + distance + "\n";
                                    }
                                    if (MP_ESP.ESP_Box && collider != null)
                                    {
                                        updateObject.box = Tools.BoundsToScreenRect(collider.bounds);
                                    }

                                    MP_ESP.draw.Add(new ESPDraw(updateObject.text, updateObject.gameObject, EESPItem.ZOMBIE, updateObject.screenPosition, updateObject.box, updateObject.color, distance));
                                }
                            }
                            #endregion
                        }
                        #endregion

                        #region Animals
                        if (updateObject.type == EGOUpdate.ANIMAL && !((Animal)updateObject.instance).isDead && MP_ESP.ESP_Enabled && MP_ESP.ESP_Animals_Enabled)
                        {
                            Animal animal   = (Animal)updateObject.instance;
                            int    distance = (int)Tools.getDistance(updateObject.gameObject.transform.position);

                            #region ESP
                            if (distance <= MP_ESP.ESP_Distance || MP_ESP.ESP_IgnoreDistance)
                            {
                                updateObject.screenPosition = MainCamera.instance.WorldToScreenPoint(updateObject.gameObject.transform.position);
                                updateObject.text           = "";
                                updateObject.color          = MP_ESP.ESP_Animals_Color.selectedColor;

                                if (updateObject.screenPosition.z > 0)
                                {
                                    Collider collider = null;

                                    if (MP_ESP.ESP_Box)
                                    {
                                        collider = updateObject.gameObject.GetComponent <Collider>();
                                    }
                                    updateObject.screenPosition.x -= 64f;
                                    updateObject.screenPosition.y  = (Screen.height - (updateObject.screenPosition.y + 1f)) - 12f;

                                    if (MP_ESP.ESP_Animals_ShowNames)
                                    {
                                        updateObject.text += animal.asset.animalName + "\n";
                                    }
                                    if (MP_ESP.ESP_Animals_ShowDistances)
                                    {
                                        updateObject.text += "Distance: " + distance + "\n";
                                    }
                                    if (MP_ESP.ESP_Box && collider != null)
                                    {
                                        updateObject.box = Tools.BoundsToScreenRect(collider.bounds);
                                    }

                                    MP_ESP.draw.Add(new ESPDraw(updateObject.text, updateObject.gameObject, EESPItem.ANIMAL, updateObject.screenPosition, updateObject.box, updateObject.color, distance));
                                }
                            }
                            #endregion
                        }
                        #endregion

                        #region Items
                        if (updateObject.type == EGOUpdate.ITEM)
                        {
                            InteractableItem item = (InteractableItem)updateObject.instance;
                            bool             on   = false;
                            if (MP_ESP.ESP_Items_Types.filter.TryGetValue(item.asset.type, out on))
                            {
                                if (on)
                                {
                                    int distance = (int)Tools.getDistance(updateObject.gameObject.transform.position);

                                    #region ESP
                                    if (MP_ESP.ESP_Enabled && MP_ESP.ESP_Items_Enabled && (distance <= MP_ESP.ESP_Distance || MP_ESP.ESP_IgnoreDistance))
                                    {
                                        updateObject.screenPosition = MainCamera.instance.WorldToScreenPoint(updateObject.gameObject.transform.position);
                                        updateObject.text           = "";
                                        updateObject.color          = MP_ESP.ESP_Items_Color.selectedColor;

                                        if (updateObject.screenPosition.z > 0)
                                        {
                                            Collider collider = null;

                                            if (MP_ESP.ESP_Box)
                                            {
                                                collider = updateObject.gameObject.GetComponent <Collider>();
                                            }
                                            updateObject.screenPosition.x -= 64f;
                                            updateObject.screenPosition.y  = (Screen.height - (updateObject.screenPosition.y + 1f)) - 12f;

                                            if (MP_ESP.ESP_Items_ShowNames)
                                            {
                                                updateObject.text += item.asset.itemName + "\n";
                                            }
                                            if (MP_ESP.ESP_Items_ShowDistances)
                                            {
                                                updateObject.text += "Distance: " + distance + "\n";
                                            }
                                            if (MP_ESP.ESP_Box && collider != null)
                                            {
                                                updateObject.box = Tools.BoundsToScreenRect(collider.bounds);
                                            }

                                            MP_ESP.draw.Add(new ESPDraw(updateObject.text, updateObject.gameObject, EESPItem.ITEM, updateObject.screenPosition, updateObject.box, updateObject.color, distance));
                                        }
                                    }
                                    #endregion
                                }
                            }
                        }
                        #endregion

                        #region Vehicles
                        if (updateObject.type == EGOUpdate.VEHICLE && MP_ESP.ESP_Enabled && MP_ESP.ESP_Vehicles_Enabled)
                        {
                            InteractableVehicle vehicle = (InteractableVehicle)updateObject.instance;
                            int distance = (int)Tools.getDistance(updateObject.gameObject.transform.position);

                            #region ESP
                            if (distance <= MP_ESP.ESP_Distance || MP_ESP.ESP_IgnoreDistance)
                            {
                                updateObject.screenPosition = MainCamera.instance.WorldToScreenPoint(updateObject.gameObject.transform.position);
                                updateObject.text           = "";
                                updateObject.color          = MP_ESP.ESP_Vehicles_Color.selectedColor;

                                if (updateObject.screenPosition.z > 0)
                                {
                                    Collider collider = null;

                                    if (MP_ESP.ESP_Box)
                                    {
                                        collider = updateObject.gameObject.GetComponent <Collider>();
                                    }
                                    updateObject.screenPosition.x -= 64f;
                                    updateObject.screenPosition.y  = (Screen.height - (updateObject.screenPosition.y + 1f)) - 12f;

                                    if (MP_ESP.ESP_Items_ShowNames)
                                    {
                                        updateObject.text += vehicle.asset.vehicleName + "\n";
                                    }
                                    if (MP_ESP.ESP_Vehicles_ShowFuel)
                                    {
                                        updateObject.text += "Fuel: " + vehicle.fuel + "\n";
                                    }
                                    if (MP_ESP.ESP_Vehicles_ShowLocked)
                                    {
                                        updateObject.text += "Locked: " + (vehicle.isLocked ? "Yes" : "No") + "\n";
                                    }
                                    if (MP_ESP.ESP_Vehicles_ShowDistances)
                                    {
                                        updateObject.text += "Distance: " + distance + "\n";
                                    }
                                    if (MP_ESP.ESP_Box && collider != null)
                                    {
                                        updateObject.box = Tools.BoundsToScreenRect(collider.bounds);
                                    }

                                    MP_ESP.draw.Add(new ESPDraw(updateObject.text, updateObject.gameObject, EESPItem.VEHICLE, updateObject.screenPosition, updateObject.box, updateObject.color, distance));
                                }
                            }
                            #endregion
                        }
                        #endregion

                        #region Storages
                        if (updateObject.type == EGOUpdate.STORAGE && MP_ESP.ESP_Enabled && MP_ESP.ESP_Storages_Enabled)
                        {
                            InteractableStorage storage = (InteractableStorage)updateObject.instance;
                            int distance = (int)Tools.getDistance(updateObject.gameObject.transform.position);

                            #region ESP
                            if (distance <= MP_ESP.ESP_Distance || MP_ESP.ESP_IgnoreDistance)
                            {
                                updateObject.screenPosition = MainCamera.instance.WorldToScreenPoint(updateObject.gameObject.transform.position);
                                updateObject.text           = "";
                                updateObject.color          = MP_ESP.ESP_Storages_Color.selectedColor;

                                if (updateObject.screenPosition.z > 0)
                                {
                                    Collider collider = null;

                                    if (MP_ESP.ESP_Box)
                                    {
                                        collider = updateObject.gameObject.GetComponent <Collider>();
                                    }
                                    updateObject.screenPosition.x -= 64f;
                                    updateObject.screenPosition.y  = (Screen.height - (updateObject.screenPosition.y + 1f)) - 12f;

                                    if (MP_ESP.ESP_Items_ShowNames)
                                    {
                                        updateObject.text += "Storage\n";
                                    }
                                    if (MP_ESP.ESP_Storages_ShowLocked)
                                    {
                                        updateObject.text += "Locked: " + (storage.checkUseable() ? "Yes" : "No") + "\n";
                                    }
                                    if (MP_ESP.ESP_Storages_ShowDistances)
                                    {
                                        updateObject.text += "Distance: " + distance + "\n";
                                    }
                                    if (MP_ESP.ESP_Box && collider != null)
                                    {
                                        updateObject.box = Tools.BoundsToScreenRect(collider.bounds);
                                    }

                                    MP_ESP.draw.Add(new ESPDraw(updateObject.text, updateObject.gameObject, EESPItem.STORAGE, updateObject.screenPosition, updateObject.box, updateObject.color, distance));
                                }
                            }
                            #endregion
                        }
                        #endregion

                        #region Sentries
                        if (updateObject.type == EGOUpdate.SENTRY && MP_ESP.ESP_Enabled && MP_ESP.ESP_Sentrys_Enabled)
                        {
                            InteractableSentry sentry = (InteractableSentry)updateObject.instance;
                            int distance = (int)Tools.getDistance(updateObject.gameObject.transform.position);

                            #region ESP
                            if (distance <= MP_ESP.ESP_Distance || MP_ESP.ESP_IgnoreDistance)
                            {
                                updateObject.screenPosition = MainCamera.instance.WorldToScreenPoint(updateObject.gameObject.transform.position);
                                updateObject.text           = "";
                                updateObject.color          = MP_ESP.ESP_Sentrys_Color.selectedColor;

                                if (updateObject.screenPosition.z > 0)
                                {
                                    Collider collider = null;

                                    if (MP_ESP.ESP_Box)
                                    {
                                        collider = updateObject.gameObject.GetComponent <Collider>();
                                    }
                                    updateObject.screenPosition.x -= 64f;
                                    updateObject.screenPosition.y  = (Screen.height - (updateObject.screenPosition.y + 1f)) - 12f;

                                    if (MP_ESP.ESP_Sentrys_ShowNames)
                                    {
                                        updateObject.text += "Sentry\n";
                                    }
                                    if (MP_ESP.ESP_Sentrys_ShowDistances)
                                    {
                                        updateObject.text += "Distance: " + distance + "\n";
                                    }
                                    if (MP_ESP.ESP_Box && collider != null)
                                    {
                                        updateObject.box = Tools.BoundsToScreenRect(collider.bounds);
                                    }

                                    MP_ESP.draw.Add(new ESPDraw(updateObject.text, updateObject.gameObject, EESPItem.SENTRY, updateObject.screenPosition, updateObject.box, updateObject.color, distance));
                                }
                            }
                            #endregion
                        }
                        #endregion
                    }
                }

                if (MP_Aimbot.aimbot || MP_Aimbot.silentAim)
                {
                    MP_Aimbot.attackNext = aim_nextTarget;
                }
                yield return(wfs);
            }
        }
 /// <summary>
 /// Defines a relationship in which the onObservationEnded action is invoked when
 /// the storage is no longer allowed to be observed by the observer.
 /// </summary>
 /// <param name="observedStorage">interactable storage being observed</param>
 /// <param name="observer">player who is trying to observe the storage</param>
 /// <param name="maxRange">max range allowed for continued observation</param>
 /// <param name="onObservationEnded">invoked when relationship is ended</param>
 public static ObserveStorageRelationship Observe(InteractableStorage observedStorage, RegisterPlayer observer,
                                                  float maxRange, Action <ObserveStorageRelationship> onObservationEnded)
 {
     return(new ObserveStorageRelationship(observedStorage, observer, maxRange, onObservationEnded));
 }
Esempio n. 19
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;
        }
        public static void RunUtilityTool(UnturnedPlayer Player, RaycastResult Raycast)
        {
            if (Raycast.ParentHasComponent <InteractableCharge>())
            {
                Raycast.TryGetEntity <InteractableCharge>().detonate(Player.CSteamID);
            }

            if (Raycast.ParentHasComponent <InteractableFire>())
            {
                var f = Raycast.TryGetEntity <InteractableFire>();
                BarricadeManager.ServerSetFireLit(f, !f.isLit);
            }


            if (Raycast.ParentHasComponent <InteractableGenerator>())
            {
                var f = Raycast.TryGetEntity <InteractableGenerator>();
                BarricadeManager.ServerSetGeneratorPowered(f, !f.isPowered);
            }

            if (Raycast.ParentHasComponent <InteractableOven>())
            {
                var f = Raycast.TryGetEntity <InteractableOven>();
                BarricadeManager.ServerSetOvenLit(f, !f.isLit);
            }


            if (Raycast.ParentHasComponent <InteractableOxygenator>())
            {
                var f = Raycast.TryGetEntity <InteractableOxygenator>();
                BarricadeManager.ServerSetOxygenatorPowered(f, !f.isPowered);
            }



            if (Raycast.ParentHasComponent <InteractableSafezone>())
            {
                var f = Raycast.TryGetEntity <InteractableSafezone>();
                BarricadeManager.ServerSetSafezonePowered(f, !f.isPowered);
            }


            if (Raycast.ParentHasComponent <InteractableSpot>())
            {
                var f = Raycast.TryGetEntity <InteractableSpot>();
                BarricadeManager.ServerSetSpotPowered(f, !f.isPowered);
            }

            if (Raycast.ParentHasComponent <InteractableVehicle>())
            {
                var f = Raycast.TryGetEntity <InteractableVehicle>();
                VehicleManager.ServerForcePassengerIntoVehicle(Player.Player, f);
            }

            if (Raycast.ParentHasComponent <InteractableBed>())
            {
                var f = Raycast.TryGetEntity <InteractableBed>();
                if (f.owner.m_SteamID != 0)
                {
                    UnturnedChat.Say(Player, "PointTool_Utility_Bed_ShowOwner".Translate($"{AdminToolsPlugin.Instance.GetPlayerName(f.owner.m_SteamID, "Unknown Player")} ({f.owner})"));
                }
                else
                {
                    UnturnedChat.Say(Player, "PointTool_Utility_Bed_NotClaimed".Translate());;
                }
            }
            if (Raycast.ParentHasComponent <InteractableDoor>())
            {
                var f = Raycast.TryGetEntity <InteractableDoor>();
                SendOpenDoor(Raycast.BarricadePlant, Raycast.BarricadeX, Raycast.BarricadeY, Raycast.BarricadeIndex, f, Raycast.BarricadeRegion);
            }
            if (Raycast.ParentHasComponent <InteractableStorage>())
            {
                InteractableStorage Storage = Raycast.TryGetEntity <InteractableStorage>();
                Player.Player.inventory.updateItems(7, Storage.items);
                Player.Player.inventory.sendStorage();
            }
        }
    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;
            }
        }
    }
Esempio n. 22
0
        protected override async UniTask OnExecuteAsync()
        {
            if (Context.Parameters.Length > 1)
            {
                throw new CommandWrongUsageException(Context);
            }

            if (Context.Parameters.Length == 1)
            {
                string searchTerm    = Context.Parameters[0];
                IUser  potentialUser =
                    await m_UserManager.FindUserAsync(KnownActorTypes.Player, searchTerm, UserSearchMode.FindByNameOrId);

                if (potentialUser == null)
                {
                    throw new UserFriendlyException(m_StringLocalizer["general:invalid_player",
                                                                      new { Player = searchTerm }]);
                }

                await Context.Actor.PrintMessageAsync(m_StringLocalizer["investigate:success",
                                                                        new { Player = searchTerm, ID = potentialUser.Id }]);

                return;
            }

            if (!(Context.Actor is UnturnedUser uPlayer))
            {
                throw new CommandWrongUsageException(Context);
            }

            PlayerLook  look    = uPlayer.Player.Player.look;
            RaycastInfo raycast = DamageTool.raycast(new Ray(look.aim.position, look.aim.forward), 256f,
                                                     RayMasks.DAMAGE_SERVER);

            Transform raycastTransform = raycast.transform;

            if (raycastTransform == null)
            {
                throw new UserFriendlyException(m_StringLocalizer["investigate:no_object"]);
            }

            CSteamID ownerSteamID = CSteamID.Nil;

            if (raycast.vehicle != null)
            {
                ownerSteamID = raycast.vehicle.lockedOwner;
            }

            InteractableBed bed = raycastTransform.GetComponentInChildren <InteractableBed>();

            if (bed != null)
            {
                ownerSteamID = bed.owner;
            }

            InteractableDoor door = raycastTransform.GetComponentInChildren <InteractableDoor>();

            if (door != null)
            {
                ownerSteamID = door.owner;
            }

            InteractableStorage storage = raycastTransform.GetComponentInChildren <InteractableStorage>();

            if (storage != null)
            {
                ownerSteamID = storage.owner;
            }

            await uPlayer.PrintMessageAsync(GetObjectOwner(ownerSteamID));
        }
Esempio n. 23
0
        public static IEnumerator UpdateObjectList()
        {
            while (true)
            {
                if (!DrawUtilities.ShouldRun())
                {
                    yield return(new WaitForSeconds(2));

                    continue;
                }
                List <ESPObject> objects = ESPVariables.Objects;
                objects.Clear();

                List <ESPTarget> targets =
                    ESPOptions.PriorityTable.Keys.OrderByDescending(k => ESPOptions.PriorityTable[k]).ToList();

                for (int i = 0; i < targets.Count; i++)
                {
                    ESPTarget target = targets[i];
                    ESPVisual vis    = ESPOptions.VisualOptions[(int)target];

                    if (!vis.Enabled)
                    {
                        continue;
                    }

                    Vector3 pPos = OptimizationVariables.MainPlayer.transform.position;

                    switch (target)
                    {
                    case ESPTarget.Players:
                    {
                        SteamPlayer[] objarray = Provider.clients
                                                 .OrderByDescending(p => VectorUtilities.GetDistance(pPos, p.player.transform.position)).ToArray();

                        if (vis.UseObjectCap)
                        {
                            objarray = objarray.TakeLast(vis.ObjectCap).ToArray();
                        }

                        for (int j = 0; j < objarray.Length; j++)
                        {
                            SteamPlayer sPlayer = objarray[j];
                            Player      plr     = sPlayer.player;

                            if (plr.life.isDead || plr == OptimizationVariables.MainPlayer)
                            {
                                continue;
                            }

                            objects.Add(new ESPObject(target, plr, plr.gameObject));
                        }
                        break;
                    }

                    case ESPTarget.Zombies:
                    {
                        Zombie[] objarr = ZombieManager.regions.SelectMany(r => r.zombies)
                                          .OrderByDescending(obj => VectorUtilities.GetDistance(pPos, obj.transform.position)).ToArray();

                        if (vis.UseObjectCap)
                        {
                            objarr = objarr.TakeLast(vis.ObjectCap).ToArray();
                        }

                        for (int j = 0; j < objarr.Length; j++)
                        {
                            Zombie obj = objarr[j];
                            objects.Add(new ESPObject(target, obj, obj.gameObject));
                        }

                        break;
                    }

                    case ESPTarget.Items:
                    {
                        InteractableItem[] objarr = Object.FindObjectsOfType <InteractableItem>()
                                                    .OrderByDescending(obj => VectorUtilities.GetDistance(pPos, obj.transform.position)).ToArray();

                        if (vis.UseObjectCap)
                        {
                            objarr = objarr.TakeLast(vis.ObjectCap).ToArray();
                        }

                        for (int j = 0; j < objarr.Length; j++)
                        {
                            InteractableItem obj = objarr[j];

                            if (ItemUtilities.Whitelisted(obj.asset, ItemOptions.ItemESPOptions) || !ESPOptions.FilterItems)
                            {
                                objects.Add(new ESPObject(target, obj, obj.gameObject));
                            }
                        }
                        break;
                    }

                    case ESPTarget.Sentries:
                    {
                        InteractableSentry[] objarr = Object.FindObjectsOfType <InteractableSentry>()
                                                      .OrderByDescending(obj => VectorUtilities.GetDistance(pPos, obj.transform.position)).ToArray();

                        if (vis.UseObjectCap)
                        {
                            objarr = objarr.TakeLast(vis.ObjectCap).ToArray();
                        }

                        for (int j = 0; j < objarr.Length; j++)
                        {
                            InteractableSentry obj = objarr[j];
                            objects.Add(new ESPObject(target, obj, obj.gameObject));
                        }
                        break;
                    }

                    case ESPTarget.Beds:
                    {
                        InteractableBed[] objarr = Object.FindObjectsOfType <InteractableBed>()
                                                   .OrderByDescending(obj => VectorUtilities.GetDistance(pPos, obj.transform.position)).ToArray();

                        if (vis.UseObjectCap)
                        {
                            objarr = objarr.TakeLast(vis.ObjectCap).ToArray();
                        }

                        for (int j = 0; j < objarr.Length; j++)
                        {
                            InteractableBed obj = objarr[j];
                            objects.Add(new ESPObject(target, obj, obj.gameObject));
                        }
                        break;
                    }

                    case ESPTarget.ClaimFlags:
                    {
                        InteractableClaim[] objarr = Object.FindObjectsOfType <InteractableClaim>()
                                                     .OrderByDescending(obj => VectorUtilities.GetDistance(pPos, obj.transform.position)).ToArray();

                        if (vis.UseObjectCap)
                        {
                            objarr = objarr.TakeLast(vis.ObjectCap).ToArray();
                        }

                        for (int j = 0; j < objarr.Length; j++)
                        {
                            InteractableClaim obj = objarr[j];
                            objects.Add(new ESPObject(target, obj, obj.gameObject));
                        }
                        break;
                    }

                    case ESPTarget.Vehicles:
                    {
                        InteractableVehicle[] objarr = Object.FindObjectsOfType <InteractableVehicle>()
                                                       .OrderByDescending(obj => VectorUtilities.GetDistance(pPos, obj.transform.position)).ToArray();

                        if (vis.UseObjectCap)
                        {
                            objarr = objarr.TakeLast(vis.ObjectCap).ToArray();
                        }

                        for (int j = 0; j < objarr.Length; j++)
                        {
                            InteractableVehicle obj = objarr[j];

                            if (obj.isDead)
                            {
                                continue;
                            }

                            objects.Add(new ESPObject(target, obj, obj.gameObject));
                        }
                        break;
                    }

                    case ESPTarget.Storage:
                    {
                        InteractableStorage[] objarr = Object.FindObjectsOfType <InteractableStorage>()
                                                       .OrderByDescending(obj => VectorUtilities.GetDistance(pPos, obj.transform.position)).ToArray();

                        if (vis.UseObjectCap)
                        {
                            objarr = objarr.TakeLast(vis.ObjectCap).ToArray();
                        }

                        for (int j = 0; j < objarr.Length; j++)
                        {
                            InteractableStorage obj = objarr[j];
                            objects.Add(new ESPObject(target, obj, obj.gameObject));
                        }
                        break;
                    }

                    case ESPTarget.Generators:
                    {
                        InteractableGenerator[] objarr = Object.FindObjectsOfType <InteractableGenerator>()
                                                         .OrderByDescending(obj => VectorUtilities.GetDistance(pPos, obj.transform.position)).ToArray();

                        if (vis.UseObjectCap)
                        {
                            objarr = objarr.TakeLast(vis.ObjectCap).ToArray();
                        }

                        for (int j = 0; j < objarr.Length; j++)
                        {
                            InteractableGenerator obj = objarr[j];
                            objects.Add(new ESPObject(target, obj, obj.gameObject));
                        }
                        break;
                    }
                    }
                }
                yield return(new WaitForSeconds(5));
            }
        }
Esempio n. 24
0
 public void Update()
 {
     if (lastCheck == null || (DateTime.Now - lastCheck).TotalMilliseconds >= 1500)
     {
         //enabled = (bool)ctrl_Connector.hack_Settings.getSetting("enable_smartUI").value;
         lastCheck = DateTime.Now;
     }
     if (enabled)
     {
         displayInfo.Clear();
         if (PlayerInteract.interactable != null)
         {
             if (PlayerInteract.interactable is InteractableStorage)
             {
                 InteractableStorage storage = (InteractableStorage)PlayerInteract.interactable;
                 displayInfo.Add("Type: Storage");
                 //if (storage.owner != CSteamID.Nil)
                 //{
                 //displayInfo.Add("Owner: " + tool_ToolZ.getSteamPlayer(storage.owner.m_SteamID).playerID.playerName);
                 //}
                 displayInfo.Add("Locked: " + (getLocked(storage) ? "Yes" : "No"));
                 displayInfo.Add("HasItems: " + (storage.items.getItemCount() > 0 ? "Yes" : "No"));
                 //hasCrack = getLocked(storage);
                 int disp = getDisplay();
                 info_window.width = disp;
                 info_window.x     = Screen.width - disp - 10;
                 inte = PlayerInteract.interactable;
             }
             else if (PlayerInteract.interactable is InteractableDoor)
             {
                 InteractableDoor door = (InteractableDoor)PlayerInteract.interactable;
                 displayInfo.Add("Type: Door");
                 //if (door.owner != CSteamID.Nil)
                 //{
                 //displayInfo.Add("Owner: " + tool_ToolZ.getSteamPlayer(door.owner.m_SteamID).playerID.playerName);
                 //}
                 displayInfo.Add("Locked: " + (getLocked(door) ? "Yes" : "No"));
                 //hasCrack = getLocked(door);
                 int disp = getDisplay();
                 info_window.width = disp;
                 info_window.x     = Screen.width - disp - 10;
                 inte = PlayerInteract.interactable;
             }
         }
         else
         {
             hasCrack = false;
             RaycastHit hit;
             if (tool_ToolZ.getLookingAt(out hit))
             {
                 if (DamageTool.getPlayer(hit.transform) && DamageTool.getPlayer(hit.transform) != tool_ToolZ.getLocalPlayer())
                 {
                     Player p = DamageTool.getPlayer(hit.transform);
                     displayInfo.Add("Type: Player");
                     displayInfo.Add("Name: " + p.name);
                     displayInfo.Add("Health: " + p.life.health);
                     displayInfo.Add("Food: " + p.life.food);
                     displayInfo.Add("Water: " + p.life.water);
                     displayInfo.Add("Stamina: " + p.life.stamina);
                     displayInfo.Add("Distance: " + Math.Round(tool_ToolZ.getDistance(p.transform.position), 0));
                     if (tool_ToolZ.getLocalPlayer().equipment.asset != null && tool_ToolZ.getLocalPlayer().equipment.asset is ItemWeaponAsset)
                     {
                         displayInfo.Add("Will hit: " + (tool_ToolZ.getDistance(p.transform.position) <= ((ItemWeaponAsset)tool_ToolZ.getLocalPlayer().equipment.asset).range ? "Yes" : "No"));
                     }
                     int disp = getDisplay();
                     info_window.width = disp;
                     info_window.x     = Screen.width - disp - 10;
                 }
                 else if (DamageTool.getZombie(hit.transform))
                 {
                     Zombie t = DamageTool.getZombie(hit.transform);
                     displayInfo.Add("Type: Zombie");
                     displayInfo.Add("Health: " + getHealth(t));
                     displayInfo.Add("Distance: " + Math.Round(tool_ToolZ.getDistance(t.transform.position), 0));
                     if (tool_ToolZ.getLocalPlayer().equipment.asset != null && tool_ToolZ.getLocalPlayer().equipment.asset is ItemWeaponAsset)
                     {
                         displayInfo.Add("Will hit: " + (tool_ToolZ.getDistance(t.transform.position) <= ((ItemWeaponAsset)tool_ToolZ.getLocalPlayer().equipment.asset).range ? "Yes" : "No"));
                     }
                     int disp = getDisplay();
                     info_window.width = disp;
                     info_window.x     = Screen.width - disp - 10;
                 }
                 else if (DamageTool.getAnimal(hit.transform))
                 {
                     Animal t = DamageTool.getAnimal(hit.transform);
                     displayInfo.Add("Type: Animal");
                     displayInfo.Add("Health: " + getHealth(t));
                     displayInfo.Add("Distance: " + Math.Round(tool_ToolZ.getDistance(t.transform.position), 0));
                     if (tool_ToolZ.getLocalPlayer().equipment.asset != null && tool_ToolZ.getLocalPlayer().equipment.asset is ItemWeaponAsset)
                     {
                         displayInfo.Add("Will hit: " + (tool_ToolZ.getDistance(t.transform.position) <= ((ItemWeaponAsset)tool_ToolZ.getLocalPlayer().equipment.asset).range ? "Yes" : "No"));
                     }
                     int disp = getDisplay();
                     info_window.width = disp;
                     info_window.x     = Screen.width - disp - 10;
                 }
             }
         }
     }
 }