Beispiel #1
0
        public uint GetItemSockets(uint pItem, uint dwItemId)
        {
            var val = uint.MaxValue;

            if (socketsPerItem.ContainsKey(dwItemId))
            {
                val = socketsPerItem[dwItemId];
            }
            else
            {
                if (!hasPendingTask)
                {
                    hasPendingTask = true;
                    Task.Factory.StartNew(() =>
                    {
                        using (var suspender = new GameSuspender(this))
                        {
                            try
                            {
                                socketsPerItem[dwItemId] = GetUnitStat(pItem, StatType.Sockets);
                            }
                            catch { }
                        }

                        hasPendingTask = false;
                    });
                }
            }

            return(val);
        }
Beispiel #2
0
        private void CheckInGame(bool first = false)
        {
            var pPlayer = GetPlayerUnit();
            var check   = pPlayer != 0;

            try
            {
                if (check)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        RefreshUnitPosition();
                    }
                }

                if (check == InGame && !first)
                {
                    return;
                }

                if (check)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        PlayerName = GetPlayerName();
                    }
                }
                else
                {
                    PlayerName = "";
                }

                InGame = check;

                if (InGame)
                {
                    EnteredGame();
                }
                else
                {
                    ExitedGame();
                }

                try
                {
                    overlay.Invoke((MethodInvoker) delegate
                    {
                        overlay.InGameStateChanged(InGame);
                    });
                }
                catch { }
            }
            catch { }
        }
Beispiel #3
0
        public void Test()
        {
            /*var val = llGetUnitStat(GetPlayerUnit(), StatType.MaxHealth);
             * val >>= 8;
             * this.PrintGameString(val.ToString());*/

            using (var suspender = new GameSuspender(this))
            {
                for (var i = 0; i < (int)UIVars.Max; ++i)
                {
                    Console.WriteLine("{0} - {1}", (UIVars)i, GetUIVar((UIVars)i));
                }
            }

            MessageBox.Show(Debugger.Read <uint>(new IntPtr(0x6FBA9910)).ToString());
        }
Beispiel #4
0
        public void ChickenTask()
        {
            using (var suspender = new GameSuspender(this))
            {
                if (!Settings.Chicken.ChickenToTown.IsEnabled())
                {
                    ExitGame();
                    return;
                }

                backToTown = true;

                if (!OpenPortal())
                {
                    backToTown = false;
                    ExitGame();
                    return;
                }
            }

            var now = DateTime.Now;

            while (now.MSecToNow() < 2000)
            {
                if (IsInTown())
                {
                    break;
                }
                Thread.Sleep(300);
            }

            if (!IsInTown())
            {
                using (var suspender = new GameSuspender(this))
                {
                    ExitGame();
                }
                return;
            }

            chickening = false;
        }
Beispiel #5
0
        protected void TeleBack()
        {
            var idx   = teleHistory.Count - 1;
            var point = teleHistory[idx];

            teleHistory.RemoveAt(idx);

            if (!game.InGame)
            {
                teleHistory.Clear();
                throw new Exception("Out of game");
            }

            if (point.IsEmpty)
            {
                return;
            }

            using (var suspender = new GameSuspender(game))
            {
                if (!game.GameReady())
                {
                    throw new Exception("Out of game");
                }

                game.RefreshUnitPosition();

                if (Math.Sqrt(Math.Pow(point.X - game.CurrentX, 2) + Math.Pow(point.Y - game.CurrentY, 2)) >= telePickupRadius)
                {
                    return;
                }

                if (game.IsDead())
                {
                    Disable(PickitDisableReason.Died);
                    throw new Exception("Player is dead");
                }

                game.TeleportTo((ushort)point.X, (ushort)point.Y);
            }
        }
Beispiel #6
0
        public uint GetItemPrice(uint pItem, uint dwItemId)
        {
            var val = uint.MaxValue;

            if (pricePerItem.ContainsKey(dwItemId))
            {
                val = pricePerItem[dwItemId];
            }
            else
            {
                if (!hasPendingTask)
                {
                    hasPendingTask = true;
                    Task.Factory.StartNew(() =>
                    {
                        using (var suspender = new GameSuspender(this))
                        {
                            try
                            {
                                var item           = pd.Read <UnitAny>(pItem);
                                var pUnit          = GetPlayerUnit();
                                var diff           = GetDifficulty();
                                var pItemPriceList = pd.Read <uint>(D2Client.pItemPriceList);

                                var price = pd.Call <uint>(D2Common.GetItemPrice,
                                                           MagicConvention.StdCall,
                                                           pUnit, pItem, diff, pItemPriceList, 0x9A, 1);

                                pricePerItem[item.dwUnitId] = price;
                            }
                            catch { }
                        }

                        hasPendingTask = false;
                    });
                }
            }

            return(val);
        }
Beispiel #7
0
        protected bool TelePick(ushort x, ushort y)
        {
            using (var suspender = new GameSuspender(game))
            {
                if (!game.InGame || !game.GameReady())
                {
                    throw new Exception("Out of game");
                }

                if (game.IsDead())
                {
                    Disable(PickitDisableReason.Died);
                    throw new Exception("Player is dead");
                }

                if (game.IsInTown())
                {
                    return(false);
                }

                game.RefreshUnitPosition();

                if (Math.Sqrt(Math.Pow((double)game.CurrentX - x, 2) + Math.Pow((double)game.CurrentY - y, 2)) >= telePickupRadius)
                {
                    return(false);
                }

                if (!game.TeleportTo(x, y))
                {
                    return(false);
                }

                teleHistory.Add(new Point(game.CurrentX, game.CurrentY));
            }

            return(true);
        }
Beispiel #8
0
        protected bool Pick(ItemActionInfo item, bool pick, bool telekinesis)
        {
            if (!game.InGame)
            {
                throw new Exception("Out of game");
            }

            using (var suspender = new GameSuspender(game))
            {
                if (!game.GameReady())
                {
                    throw new Exception("Out of game");
                }

                if (game.IsDead())
                {
                    Disable(PickitDisableReason.Died);
                    throw new Exception("Player is dead");
                }

                if (telekinesis && DoTelekinesis(item.uid))
                {
                }
                else if (pick)
                {
                    game.PickItem(item.uid);
                }
                else
                {
                    --item.pickTryCount;
                    return(false);
                }
            }

            return(true);
        }
Beispiel #9
0
        public bool HandleMessage(Keys key, MessageEvent mEvent)
        {
            //Console.WriteLine(mEvent.ToString() + " " + vkCode.ToString());
            //Log(mEvent.ToString() + " " + key.ToString());

            if (key == Keys.LControlKey || key == Keys.RControlKey)
            {
                if (mEvent == MessageEvent.WM_KEYUP && !overlay.ClickThrough)
                {
                    overlay.MakeNonInteractive(true);
                }
                else if (mEvent == MessageEvent.WM_KEYDOWN && overlay.ClickThrough)
                {
                    overlay.MakeNonInteractive(false);
                }
            }

            if (mEvent == MessageEvent.WM_KEYUP && GetUIVar(UIVars.ChatInput) == 0)
            {
                if (key == Settings.FastExit.Key)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        ExitGame();
                    }
                }
                if (key == Settings.OpenCube.Key)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        OpenCube();
                    }
                }
                if (key == Settings.OpenStash.Key)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        OpenStash();
                    }
                }
                if (key == Settings.RevealAct.Key)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        MapHandler.RevealAct();
                        //ItemStorage.LoadCodes(this);
                        //Test();
                    }
                }
                if (key == Settings.FastPortal.Key)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        if (OpenPortal() && Settings.GoToTownAfterPortal.IsEnabled())
                        {
                            backToTown = true;
                        }
                    }
                }

                if (key == Settings.ViewInventory.ViewInventoryKey && Settings.ViewInventory.Enabled)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        OnViewInventoryKey();
                    }
                }

                if (key == Settings.ReceivePacketHack.ItemTracker.ReactivatePickit.Key &&
                    Settings.ReceivePacketHack.ItemTracker.EnablePickit.IsEnabled())
                {
                    if (Pickit != null)
                    {
                        Pickit.ToggleEnabled();
                    }
                }

                if (key == Settings.AutoteleNext.Key)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        AutoTeleport.ManageTele(TeleType.Next);
                    }
                }

                if (key == Settings.AutoteleMisc.Key)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        AutoTeleport.ManageTele(TeleType.Misc);
                    }
                }

                if (key == Settings.AutoteleWP.Key)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        AutoTeleport.ManageTele(TeleType.WP);
                    }
                }

                if (key == Settings.AutotelePrev.Key)
                {
                    using (var suspender = new GameSuspender(this))
                    {
                        AutoTeleport.ManageTele(TeleType.Prev);
                    }
                }
            }

            if (mEvent == MessageEvent.WM_LBUTTONDOWN && Settings.ViewInventory.Enabled)
            {
                if (viewingUnit != 0 && GameReady() && GetUIVar(UIVars.Inventory) != 0 && GetViewingUnit() != 0 &&
                    viewingUnit != 0 && GetMouseX() >= 400)
                {
                    return(false);
                }
            }

            return(true);
        }