Exemplo n.º 1
0
        private void PrintActiveItems()
        {
            var avatars = Game.Instance?.Simulation?.Avatars;

            if (avatars == null || avatars.Count <= 0)
            {
                Logger.Debug("Unable to find any avatars!");
                return;
            }

            var items = new List <ItemData>();

            InventoryExt.GetItems(avatars[0], items, true);

            foreach (var item in items)
            {
                Logger.Debug($"{item.guid} - {item.Hint} - {item.name}");
            }

            foreach (var slot in Player.Inventory.EquipmentSlots)
            {
                var data = (ItemData)slot?.equipment?.Entity?.Data;
                if (data == null)
                {
                    Logger.Debug($"{slot.slot} - empty");
                }
                else
                {
                    Logger.Debug($"{slot.slot} - {data.guid} - {data.Hint} - {data.name}");
                }
            }
        }
Exemplo n.º 2
0
        private static void PatchGoldAmount(PlayerChapter chapter)
        {
            var          patcher    = _instance._patcher;
            InventoryExt extension1 = chapter.Owner.GetExtension <InventoryExt>();

            var goldText = patcher.GetField <LocalizedText>(chapter, "m_goldText");

            int resource1        = extension1.GetResource(GameData.Instance.GoldResource);
            int goldRetainAmount = Game.Instance.ResourceManager.GetGoldRetainAmount(resource1);

            goldText.Text = resource1 < 0 || Game.Instance.Mode != Game.GameMode.Story ?
                            "{" + resource1.ToString() + "}" :
                            string.Format("{0} {{{1}}}", resource1, goldRetainAmount);
        }
        public static void SpawnRelic(this Mod mod)
        {
            try
            {
                var items = new List <ItemData>();
                InventoryExt.GetItems(Game.Instance.Simulation.Avatars[0], items, true);

                var entities = Game.Instance
                               .Simulation
                               .Entities
                               .Entities
                               .Select(t => t.GetExtension <ItemExt>())
                               .Where(t => t != null)
                               .Select(t => t.Data?.guid);

                var relics = mod.GameInstance
                             .Data
                             .RelicCollection
                             .Cast <ItemData>()
                             .Where(t => t.IsDiscovered && t.IsUnlocked &&
                                    !items.Any(a => a.guid == t.guid) &&
                                    !entities.Any(a => a == t.guid))
                             .ToArray();

                if (relics == null || relics.Length <= 0)
                {
                    mod.Logger.Warn("No relics exist to spawn!");
                    return;
                }

                var relic = relics[_rnd.Next(0, relics.Length)];

                mod.GameInstance.SpawnRelic(relic);

                mod.Logger.Debug("Spawned random relic");
            }
            catch (Exception ex)
            {
                mod.Logger.Error("Error occurred while spawning relic: " + ex);
            }
        }
Exemplo n.º 4
0
        public void ThreadDisassemble()
        {
            while (isRunning && itemsLeft > 0)
            {
                // Make sure we're on the right action bar
                if (ActionBar.CurrentActionBar != disassembleSpell.GetActionBarAction.Bar)
                {
                    ActionBar.ChangeActionBar(disassembleSpell.GetActionBarAction.Bar);
                    Thread.Sleep(1000);
                }

                disassembleSpell.GetActionBarAction.Push();
                Thread.Sleep(500);
                bool success = InventoryExt.UseItemByIdExt(disassembleItem.ItemId);
                if (success)
                {
                    itemsLeft--;
                }
                else
                {
                    isRunning = false;
                    Log("Unable to disassemble, maybe someone closed the bag");
                }

                txtItems.Text = itemsLeft.ToString();
                Log(disassembleItem.ToString() + ": " + itemsLeft.ToString() + " left");

                while (ObjectManager.Me.IsCasting && isRunning)
                {
                    Thread.Sleep(100);
                }

                UIFrame.Update();
                UIFrame.Frame frame = UIFrame.GetFrameByName("LootFrame");
                while (!frame.IsVisible && isRunning)
                {
                    //Log("Waiting for loot window to open");
                    Thread.Sleep(100);
                    UIFrame.Update();
                    frame = UIFrame.GetFrameByName("LootFrame");
                }

                while (frame.IsVisible && isRunning)
                {
                    //Log("Waiting for loot window to close");
                    Thread.Sleep(100);
                    UIFrame.Update();
                    frame = UIFrame.GetFrameByName("LootFrame");
                }

                Thread.Sleep(100);
            }


            Log("All done!");

            btnStart.Text = "Start";
            isRunning     = false;
            thread        = null;


            RefreshActions();
        }
Exemplo n.º 5
0
        public void ThreadSort()
        {
            Inventory.CloseAllBags();
            if (!Keybindings.IsValidKeyForAction("OPENALLBAGS"))
            {
                Log("Keybinding \"OPENALLBAGS\" is unbound, please bind it.");
                thread    = null;
                isRunning = false;
                return;
            }

            Keybindings.UseBinding("OPENALLBAGS");

            Log("Sorting items in to stacks...");
            bool runBagCheck = true;

            do
            {
                runBagCheck = false;

                List <BagItem> bagItems = new List <BagItem>();

                for (int i = 1; i <= 16; i++)
                {
                    WowItem bagItem = Inventory.GetBackpackItemBySlot(i);
                    if (bagItem.Name.Equals(disassembleItem.Name))
                    {
                        bagItems.Add(new BagItem(bagItem, 0, i));
                    }
                }
                for (int i = 1; i <= Inventory.Bag1.MaxSlot; i++)
                {
                    WowItem bagItem = Inventory.Bag1.GetItemBySlot(i);
                    if (bagItem.Name.Equals(disassembleItem.Name))
                    {
                        bagItems.Add(new BagItem(bagItem, 1, i));
                    }
                }
                for (int i = 1; i <= Inventory.Bag2.MaxSlot; i++)
                {
                    WowItem bagItem = Inventory.Bag2.GetItemBySlot(i);
                    if (bagItem.Name.Equals(disassembleItem.Name))
                    {
                        bagItems.Add(new BagItem(bagItem, 2, i));
                    }
                }
                for (int i = 1; i <= Inventory.Bag3.MaxSlot; i++)
                {
                    WowItem bagItem = Inventory.Bag3.GetItemBySlot(i);
                    if (bagItem.Name.Equals(disassembleItem.Name))
                    {
                        bagItems.Add(new BagItem(bagItem, 3, i));
                    }
                }
                for (int i = 1; i <= Inventory.Bag4.MaxSlot; i++)
                {
                    WowItem bagItem = Inventory.Bag4.GetItemBySlot(i);
                    if (bagItem.Name.Equals(disassembleItem.Name))
                    {
                        bagItems.Add(new BagItem(bagItem, 4, i));
                    }
                }

                foreach (BagItem bagItem in bagItems)
                {
                    if (bagItem.wowItem.StackCount % 5 > 0 && bagItems.Count > 1)
                    {
                        BagItem lastBagItem = bagItems[bagItems.Count - 1];

                        LogDebug("Merging " + lastBagItem.wowItem.StackCount);
                        LogDebug(" with " + bagItem.wowItem.StackCount);

                        InventoryExt.LeftClickItemInBag(lastBagItem.bag, lastBagItem.slot);
                        Thread.Sleep(500);
                        InventoryExt.LeftClickItemInBag(bagItem.bag, bagItem.slot);
                        Thread.Sleep(1000);
                        runBagCheck = true;
                        break;
                    }
                }
            } while(runBagCheck && isRunning);

            LogDebug("Done!");
            Log("Done!");


            thread = null;
            if (isRunning)
            {
                Thread.Sleep(3000);
                thread = new Thread(new ThreadStart(ThreadDisassemble));
                thread.Start();
            }
        }