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); }
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 { } }
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()); }
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; }
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); } }
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); }
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); }
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); }
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); }