public Price GetPrice_PoE(string item_info) { Price price = new Price(); if (!item_info.Contains("Note: ~price")) { return(new Price()); } if (Regex.IsMatch(item_info, "~price [0-9.]+/[0-9.]+")) { price.Cost = Convert.ToDouble(Regex.Replace(item_info, @"([\w\s\W\n]+Note: ~price )|(/+[\w\s\W]*)|([^0-9.])", "")); price.ForNumberItems = Convert.ToInt32(Regex.Replace(item_info, @"([\w\s\W]+/)|([^0-9.])", "")); price.CurrencyType = _CurrenciesService.GetCurrencyByName(Regex.Replace(item_info, @"[\w\s\W]+\d+\s|\n", "")); } if (Regex.IsMatch(item_info, @"~price +[0-9.]+\s\D*")) { price.Cost = Convert.ToDouble(Regex.Replace(item_info, @"[\w\W]*~price |[^0-9.]*", "").Replace('.', ',')); price.ForNumberItems = CommandsService.GetStackSize_PoE_Pro(item_info); price.CurrencyType = _CurrenciesService.GetCurrencyByName(Regex.Replace(item_info, @"[\w\s\W]+\d+\s|\n", "")); } if (!price.IsSet) { return(new Price()); } else { return(price); } }
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); }