// /// <summary> /// Проверяем, есть ли предметы в уведомлениях, которые нужно добавить в покупки /// </summary> public void CheckNotifications() { try { int i = 0; var ans = CLIENT1.GetNotifications(cfg.key); if (ans != null && ans.success) { foreach (var itm in ans.Notifications) { var haveInItems = Items.Find(item => item.id == itm.i_classid + "_" + itm.i_instanceid); if (haveInItems == null) { AddItem("https://market.csgo.com/item/" + itm.i_classid + "-" + itm.i_instanceid, Convert.ToInt32(itm.n_val) / 100, PriceCheck.Notification); i++; } } if (i != 0) { WriteMessage($"Добавлено {i} предметов", MessageType.Info); } } } catch { } }
/// <summary> /// Говорим сайту что мы онлайн и проверям быстрые покупки /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void PingPongTimer(object sender, ElapsedEventArgs e) { CLIENT.Ping(cfg.key); // client.Send("PING"); //проверка быстрых покупок QuickOrderAction.Invoke(); if (autoConfirmTrades) { var info = CLIENT1.CountItemsToTransfer(cfg.key); if (info?.getCount > 0) { tradeWorker.AcceptTrade(TypeTrade.OUT); } if (info?.outCount > 0) { tradeWorker.AcceptTrade(TypeTrade.IN); } } }
/// <summary> /// Обновление цен и проверка обменов /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void PriceCorrectTimer(object sender, ElapsedEventArgs e) { WriteMessage("Таймер", MessageType.Timer); //выставитьToolStripMenuItem_Click(sender, e); UpdatePriceDelegateAction.BeginInvoke(CallbackUpdater, null); if (autoConfirmTrades) { var info = CLIENT1.CountItemsToTransfer(cfg.key); if (info?.getCount > 0) { tradeWorker.AcceptTrade(TypeTrade.OUT); } if (info?.outCount > 0) { tradeWorker.AcceptTrade(TypeTrade.IN); } //AcceptTradeAction.Invoke(); //AcceptMobileOrdersAction.Invoke(); } }
/// <summary> /// Обновление цен /// </summary> void CorrectPrice() { try { double Averange, MinPrice, Discount, Cost; Discount = 1 - Convert.ToDouble(cfg.discount / 100); foreach (Itm I in Items) { //Если предмет добавлен с уведомлений, то его цену прверяем в списке уведомлений if (I.priceCheck == PriceCheck.Notification) { var ans = CLIENT1.GetNotifications(cfg.key); if (ans != null && ans.success) { var item = ans.Notifications.Find(fi => fi.i_classid + "_" + fi.i_instanceid == I.id); if (item != null) { I.price = Convert.ToInt32(item.n_val) / 100.0; } } } else { //проверяем остальные вещи Thread.Sleep(cfg.Itimer); // new System.Action(() => Console.Write("\r{0}/{1} ", ++count, Items.Count)).BeginInvoke(null, null); MinPrice = Convert.ToDouble(CLIENT.GetMinPrice(I, cfg.key)); if (MinPrice == -1) { MinPrice = Convert.ToDouble(CLIENT.GetMinPrice(I, cfg.key)); if (MinPrice == -1) { continue; } } Averange = Convert.ToDouble(CLIENT.GetAverangePrice(I, cfg.key)); if (Averange < MinPrice) { Cost = Averange; } else { Cost = MinPrice; } //если у предмета выставлена персональная прибыль, то используем ее, а не общую double profit; if (I.profit != 0) { profit = I.profit; } else { profit = cfg.price; } if (Cost > 20000) { I.price = Math.Round((Cost * Discount - profit * 2) / 100.0, 2); continue; } if (Cost > 10000) { I.price = Math.Round((Cost * Discount - profit) / 100.0, 2); continue; } else { I.price = Math.Round((Cost * Discount - profit) / 100.0, 2); continue; } } } WriteMessage("Обновлены цены", MessageType.Info); } catch (Exception ex) { WriteMessage(string.Format("[CorrectPrice] {0}", ex.Message), MessageType.Error); } }
public void MassUpdate() { try { string data = ""; foreach (var itm in Items) { data += itm.id + ","; } data = data.Remove(data.Length - 1); var ans = CLIENT1.MassInfo(cfg.key, data); if (ans?.Success == true) { foreach (var itm in ans.Results) { double Averange, MinPrice, Discount, Cost; Discount = 1 - Convert.ToDouble(cfg.discount / 100); var id = itm.Classid + "_" + itm.Instanceid; var FindedItem = Items.Find(item => item.id == id); MinPrice = itm.SellOffers.BestOffer; Averange = Convert.ToDouble(CLIENT.GetAverangePrice(FindedItem, cfg.key)); if (Averange < MinPrice) { Cost = Averange; } else { Cost = MinPrice; } //если у предмета выставлена персональная прибыль, то используем ее, а не общую double profit; if (FindedItem.profit != 0) { profit = FindedItem.profit; } else { profit = cfg.price; } if (Cost > 20000) { FindedItem.price = Math.Round((Cost * Discount - profit * 2) / 100.0, 2); continue; } if (Cost > 10000) { FindedItem.price = Math.Round((Cost * Discount - profit) / 100.0, 2); continue; } else { FindedItem.price = Math.Round((Cost * Discount - profit) / 100.0, 2); continue; } } } } catch (Exception ex) { WriteMessage("MassUpdate: " + ex.Message, MessageType.Error); } }