public void ScanTab(string name_tab = "trade_tab") { Position found_pos = null; _LoggerService.Log($"Search {name_tab} trade tab..."); for (int count_try = 0; count_try < 16; count_try++) { var screen_shot = ScreenCapture.CaptureRectangle(10, 90, 450, 30); found_pos = OpenCV_Service.FindObject(screen_shot, $"Assets/{Properties.Settings.Default.UI_Fragments}/notactive_" + name_tab + ".jpg"); if (found_pos != null && found_pos.IsVisible) { break; } else { found_pos = OpenCV_Service.FindObject(screen_shot, $"Assets/{Properties.Settings.Default.UI_Fragments}/active_" + name_tab + ".jpg"); if (found_pos != null && found_pos.IsVisible) { screen_shot.Dispose(); break; } } screen_shot.Dispose(); Thread.Sleep(500); } if (found_pos != null && found_pos.IsVisible) { Win32.MoveTo(10 + found_pos.Left + found_pos.Width / 2, 90 + found_pos.Top + found_pos.Height / 2); Thread.Sleep(200); Win32.DoMouseClick(); Thread.Sleep(250); List <Cell> skip = new List <Cell>(); Point _StashTabSize = Utils.ZeroStash(); int tabSize = Utils.WidthHeightTab(); for (int i = 0; i < 12; i++) { for (int j = 0; j < 12; j++) { if (skip.Find(cel => cel.Left == i && cel.Top == j) != null) { continue; } Win32.MoveTo(0, 0); Thread.Sleep(100); Win32.MoveTo(_StashTabSize.Y + tabSize * i, _StashTabSize.Y + tabSize * j); #region OpenCv var screen_shot = ScreenCapture.CaptureRectangle(_StashTabSize.Y - 30 + tabSize * i, _StashTabSize.X - 30 + tabSize * j, 60, 60); Position pos = OpenCV_Service.FindObject(screen_shot, $"Assets/{Properties.Settings.Default.UI_Fragments}/empty_cel.png", 0.5); if (!pos.IsVisible) { #region Good code string item_info = CommandsService.CtrlC_PoE(); if (item_info != "empty_string") { var item = new Item { Price = _itemmService.GetPrice_PoE(item_info), Name = CommandsService.GetNameItem_PoE_Pro(item_info), StackSize = CommandsService.GetStackSize_PoE_Pro(item_info) }; item.Places.Add(new Cell(i, j)); if (item.StackSize == 1) { item.SizeInStack = 1; } else { item.SizeInStack = (int)CommandsService.GetSizeInStack(item_info); } if (item.Name.Contains("Resonator")) { if (item.Name.Contains("Potent")) { item.Places.Add(new Cell(i, j + 1)); skip.Add(new Cell(i, j + 1)); } if (item.Name.Contains("Prime") || item.Name.Contains("Powerful")) { item.Places.Add(new Cell(i, j + 1)); skip.Add(new Cell(i, j + 1)); item.Places.Add(new Cell(i + 1, j + 1)); skip.Add(new Cell(i + 1, j + 1)); item.Places.Add(new Cell(i + 1, j)); skip.Add(new Cell(i + 1, j)); } } _Tabs.AddItem(item); #endregion } screen_shot.Dispose(); #endregion } } } Win32.SendKeyInPoE("{ESC}"); _LoggerService.Log("Scan is end!"); } else { throw new Exception($"{name_tab} not found."); } }
public bool PutItems(CustomerInfo CurrentCustomer) { int x_inventory = 925; int y_inventory = 440; int offset = 37; var customer = CurrentCustomer; int TotalAmount = 0; List <Cell> skip = new List <Cell>(); for (int j = 0; j < 12; j++) { for (int i = 0; i < 5; i++) { if (skip.Find(cel => cel.Left == i && cel.Top == j) != null) { continue; } Win32.MoveTo(x_inventory + offset * j, +175); Thread.Sleep(100); var screen_shot = ScreenCapture.CaptureRectangle(x_inventory - 30 + offset * j, y_inventory - 30 + offset * i, 60, 60); var pos = OpenCV_Service.FindObject(screen_shot, $"Assets/{Properties.Settings.Default.UI_Fragments}/empty_cel.png", 0.5); if (!pos.IsVisible) { Win32.MoveTo(x_inventory + offset * j, y_inventory + offset * i); var item_info = CommandsService.CtrlC_PoE(); string name = CommandsService.GetNameItem_PoE_Pro(item_info); if (name != customer.Product) { continue; } int SizeInStack = CommandsService.GetStackSize_PoE_Pro(item_info); TotalAmount += SizeInStack; if (name.Contains("Resonator")) { if (name.Contains("Potent")) { skip.Add(new Cell(i, j + 1)); } if (name.Contains("Prime") || name.Contains("Powerful")) { skip.Add(new Cell(i, j + 1)); skip.Add(new Cell(i + 1, j + 1)); skip.Add(new Cell(i + 1, j)); } } Win32.CtrlMouseClick(); Thread.Sleep(250); if (TotalAmount >= customer.NumberProducts) { screen_shot.Dispose(); _LoggerService.Log($"I put {TotalAmount} items in trade window"); return(true); } } screen_shot.Dispose(); } } Win32.SendKeyInPoE("{ESC}"); Win32.ChatCommand("@" + CurrentCustomer.Nickname + " i sold it, sry"); return(false); }