public override void OnTradeInit() { Bot.log.Success("Trade started!"); Bot.SteamFriends.SetPersonaState(EPersonaState.Busy); FileToCreate = "Donation\\" + System.DateTime.Today.ToString("MM-dd-yyyy") + ".log"; if (!File.Exists(FileToCreate)) { Bot.log.Success("File created!"); File.Create(FileToCreate); } if (!IsAdmin) { EChatEntryType type = EChatEntryType.ChatMsg; Bot.SteamFriends.SendChatMessage(OtherSID, type, "Thank you for donating to Gamem's Trading Service!"); } else { foreach (var item in Trade.MyInventory.Items) { if (!item.IsNotTradeable) { Trade.AddItem(item.Id); } } } }
/// <summary> /// Adds an item, retrying 5 times if neccessary /// </summary> /// <returns>True if successful.</returns> protected bool AddItem(Inventory.Item item) { int x = 0; Success = false; Log.Debug("Adding item: " + item.Defindex); while (Success == false && x < 5) { x++; Log.Debug("Loop #" + x); try { Success = Trade.AddItem(item.Id); } catch (TradeException te) { Log.Warn("Add Item failed."); var s = string.Format("Loop #{0}{1}Exception:{2}", x, Environment.NewLine, te); Log.Debug(s); Thread.Sleep(250); } catch (Exception e) { Log.Warn("Add Item failed"); var s = string.Format("Loop #{0}{1}Exception:{2}", x, Environment.NewLine, e); Log.Debug(s); Thread.Sleep(250); } } if (!Success) { Log.Error("Could not add item " + item.Id); } return(Success); }
public override void OnTradeMessage(string message) { switch (message.ToLower()) { case "errors": if (OtherSteamInventory.errors.Count > 0) { SendTradeMessage("User Errors:"); foreach (string error in OtherSteamInventory.errors) { SendTradeMessage(" * {0}", error); } } if (mySteamInventory.errors.Count > 0) { SendTradeMessage("Bot Errors:"); foreach (string error in mySteamInventory.errors) { SendTradeMessage(" * {0}", error); } } break; case "test": if (tested) { foreach (GenericInventory.Item item in mySteamInventory.items.Values) { Trade.RemoveItem(item); } } else { SendTradeMessage("Items on my bp: {0}", mySteamInventory.items.Count); foreach (GenericInventory.Item item in mySteamInventory.items.Values) { Trade.AddItem(item); } } tested = !tested; break; case "remove": foreach (var item in mySteamInventory.items) { Trade.RemoveItem(item.Value.assetid, item.Value.appid, item.Value.contextid); } break; } }
private void AddCrateBySeries(string series, uint amount) { int ser; bool parsed = int.TryParse(series, out ser); if (!parsed) { return; } var l = Trade.CurrentSchema.GetItemsByCraftingMaterial("supply_crate"); List <Inventory.Item> invItems = new List <Inventory.Item>(); foreach (var schemaItem in l) { ushort defindex = schemaItem.Defindex; invItems.AddRange(Trade.MyInventory.GetItemsByDefindex(defindex)); } uint added = 0; foreach (var item in invItems) { int crateNum = 0; for (int count = 0; count < item.Attributes.Length; count++) { // FloatValue will give you the crate's series number crateNum = (int)item.Attributes[count].FloatValue; if (crateNum == ser) { bool ok = Trade.AddItem(item.Id); if (ok) { added++; } // if bulk adding something that has a lot of unique // defindex (weapons) we may over add so limit here also if (amount > 0 && added >= amount) { return; } } } } }
public override void OnTradeMessage(string message) { if (message == "ALL" && Bot.MySteamID.Contains(OtherSID.ToString())) { List <long> contextId = new List <long>(); contextId.Add(2); Bot.mySteamInventory.load(Bot.BotGameUsage, contextId, Bot.SteamClient.SteamID); Trade.SendMessage("Welcome " + Bot.MySteamID + " ! This is what I have."); foreach (GenericInventory.Item item in Bot.mySteamInventory.items.Values) { Trade.AddItem(item); } } }
public void Test() { if (UserKeyAdded > 0) { //they are selling keys //check amount of keys user added (make into scrap) //see if currencies are the same //+/- if not TF2Currency tempCurn = new TF2Currency(0, 0, 0, (int)clsFunctions.KEY_BUY_VALUE.ToScrap() * UserKeyAdded); string TempCurnDebug = String.Format("UserStuff Ref Change {0} Rec Change {1} Scrap Change {2} Key Buy Price {3} Key Sell Price {4}", tempCurn.Refined, tempCurn.Reclaimed, tempCurn.Scrap, clsFunctions.KEY_BUY_VALUE.ToPrice(), clsFunctions.KEY_SELL_VALUE.ToPrice()); TF2Currency change = tempCurn.GetChange(Bot.myCurrency); string DebugFormat = String.Format("Ref Change {0} Rec Change {1} Scrap Change {2} Key Buy Price {3} Key Sell Price {4}", change.Refined, change.Reclaimed, change.Scrap, clsFunctions.KEY_BUY_VALUE.ToPrice(), clsFunctions.KEY_SELL_VALUE.ToPrice()); Bot.log.Success(DebugFormat); if (change.Neutral()) { } else if (change.Positive()) { //+ change means user is overpaying and bot needs to add correct change. #region Refined Adding if (change.Refined > 0) { if (InventoryRef - Bot.myCurrency.Refined >= change.Refined) { uint RefAdded = Trade.AddAllItemsByDefindex(5002, (uint)change.Refined); Bot.myCurrency.AddRef((int)RefAdded); if (RefAdded == change.Refined) { Bot.log.Success(String.Format("Added {0} refined.", RefAdded)); } } else { Trade.SendMessage("I'm sorry. I don't seem to have enough refined!"); } } #endregion #region Reclaimed Adding if (change.Reclaimed > 0) { if (InventoryRec - Bot.myCurrency.Reclaimed >= change.Reclaimed) { if (Bot.myCurrency.Reclaimed == 2) { if (InventoryRef - Bot.myCurrency.Refined >= 1) { uint rectoremove = 2; if (change.Reclaimed == 2) { rectoremove = 1; } uint RecRemoved = Trade.RemoveAllItemsByDefindex(5001, rectoremove); Bot.myCurrency.RemoveRec((int)RecRemoved); if (RecRemoved == rectoremove) { Bot.log.Success(String.Format("Removed {0} reclaimed", RecRemoved)); uint RefAdded = Trade.AddAllItemsByDefindex(5002, 1); if (RefAdded == 1) { Bot.myCurrency.AddRef(); Bot.log.Success("Added 1 refined."); change.RemoveRec(); } else { Trade.CancelTrade(); Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "Sorry. Something went wrong. Please trade me again."); Bot.log.Error("Something went wrong removing 2 rec and adding a ref(adding ref part)"); } } } else { uint RecAdded = Trade.AddAllItemsByDefindex(5001, (uint)change.Reclaimed); Bot.myCurrency.AddRec((int)RecAdded); if (RecAdded == change.Reclaimed) { Bot.log.Success(String.Format("Added {0} rec", RecAdded)); } else { Trade.CancelTrade(); Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "Sorry. Something went wrong. Please trade me again."); Bot.log.Error("Couldn't add reclaimed"); } } } else { uint RecAdded = Trade.AddAllItemsByDefindex(5001, (uint)change.Reclaimed); Bot.myCurrency.AddRec((int)RecAdded); if (RecAdded == change.Reclaimed) { Bot.log.Success(String.Format("Added {0} rec", RecAdded)); } else { Trade.CancelTrade(); Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "Sorry. Something went wrong. Please trade me again."); Bot.log.Error("Couldn't add reclaimed"); } } } else { Trade.SendMessage("Sorry. I do not have enough reclaimed!"); } } #endregion #region Scrap Adding if (change.Scrap > 0) { uint ScrapAdded = Trade.AddAllItemsByDefindex(5000, (uint)change.Scrap); Bot.myCurrency.AddScrap((int)ScrapAdded); if (ScrapAdded == change.Scrap) { Bot.log.Success(String.Format("Added {0} scrap", ScrapAdded)); } else { Trade.CancelTrade(); Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "Sorry. Something went wrong. Please trade me again."); Bot.log.Error("Couldn't add scrap"); } } #endregion } else if (change.Negative()) { change.MakePositive(); //- change means bot needs to remove items. #region Refined Removing if (change.Refined > 0) { if (Bot.myCurrency.Refined >= change.Refined) { uint RefRemoved = Trade.RemoveAllItemsByDefindex(5002, (uint)change.Refined); Bot.myCurrency.RemoveRef((int)RefRemoved); if (RefRemoved == change.Refined) { Bot.log.Success(String.Format("Removed {0} refined", RefRemoved)); } else { Trade.CancelTrade(); Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "Sorry. Something went wrong. Please trade me again."); Bot.log.Error("Something went wrong removing ref"); } } else { Trade.CancelTrade(); Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "Sorry. Something went wrong. Please trade me again."); Bot.log.Error("Something went wrong removing ref"); } } #endregion #region Reclaimed Removeing if (change.Reclaimed > 0) { if (Bot.myCurrency.Reclaimed >= change.Reclaimed) { uint RecRemoved = Trade.RemoveAllItemsByDefindex(5001, (uint)change.Reclaimed); Bot.myCurrency.RemoveRec((int)RecRemoved); if (RecRemoved == change.Reclaimed) { Bot.log.Success(String.Format("Removed {0} rec", RecRemoved)); } else { Trade.CancelTrade(); Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "Sorry. Something went wrong. Please trade me again."); Bot.log.Error("Something went wrong removing rec"); } } else if (Bot.myCurrency.Refined >= change.Reclaimed / 3) { double reftoremove; if (change.Reclaimed > 3) { reftoremove = Math.Abs(change.Reclaimed) / 3; } else { reftoremove = 1; } reftoremove = Math.Round(reftoremove, 0, MidpointRounding.AwayFromZero); if (Bot.myCurrency.Refined >= reftoremove) { uint RefRemoved = Trade.RemoveAllItemsByDefindex(5002, (uint)reftoremove); Bot.myCurrency.RemoveRef((int)RefRemoved); if (RefRemoved == reftoremove) { Bot.log.Success(String.Format("Removed {0} ref", RefRemoved)); int rectoadd = ((int)RefRemoved * 3) - change.Reclaimed; uint recadded = Trade.AddAllItemsByDefindex(5001, (uint)rectoadd); Bot.myCurrency.AddRec(rectoadd); if (recadded == rectoadd) { Bot.log.Success(String.Format("Added {0} rec.", recadded)); } } else { Trade.CancelTrade(); Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "Sorry. Something went wrong. Please trade me again."); Bot.log.Error("Something went wrong removing ref"); } } } } #endregion #region Scrap Removing if (change.Scrap > 0) { uint ScrapRemoved = Trade.RemoveAllItemsByDefindex(5000, (uint)change.Scrap); Bot.myCurrency.RemoveScrap((int)ScrapRemoved); if (ScrapRemoved == change.Scrap) { Bot.log.Warn(String.Format("Removed {0} scrap", ScrapRemoved)); } else { Trade.CancelTrade(); Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "Sorry. Something went wrong. Please trade me again."); Bot.log.Error("Couldn't remove scrap"); } } #endregion } } else if (UserKeyAdded == 0 && (Bot.myCurrency.Refined > 0 || Bot.myCurrency.Reclaimed > 0 || Bot.myCurrency.Scrap > 0)) { uint MetalRemoved = Trade.RemoveAllItemsByDefindex(5002); Bot.myCurrency.RemoveRef((int)MetalRemoved); MetalRemoved = Trade.RemoveAllItemsByDefindex(5001); Bot.myCurrency.RemoveRec((int)MetalRemoved); MetalRemoved = Trade.RemoveAllItemsByDefindex(5000); Bot.myCurrency.RemoveScrap((int)MetalRemoved); Bot.log.Warn("Removed all metal as all keys were removed"); } else { //they are buying keys //check metal they have added //divide by key selling price //if they have enough for one add (after checking # added int iUserKeyAfford = Bot.userCurrency.ToKeys(false); int iKeysToAdd = iUserKeyAfford - KeyBotAdded; if (iKeysToAdd == 0) { } else if (iKeysToAdd > 0) { while (iKeysToAdd > 0) { try { if (Trade.AddItem(KeyIDS[KeyBotAdded])) { KeyBotAdded++; Bot.log.Success("Added a key."); iKeysToAdd--; } } catch (Exception ex) { Console.WriteLine(ex.Message); Trade.SendMessage("I don't have enough keys!"); iKeysToAdd = 0; } } } else if (iKeysToAdd < 0) { while (iKeysToAdd < 0) { try { if (Trade.RemoveItem(KeyIDS[KeyBotAdded--])) { KeyBotAdded--; Bot.log.Success("Removed a key"); iKeysToAdd++; } } catch (Exception ex) { Console.WriteLine(ex.Message); Trade.CancelTrade(); Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "I'm sorry. Something went wrong. Please try again."); iKeysToAdd = 0; } } } } }
public bool Validate() { TF2Value verifiedValue = TF2Value.Zero; List <string> errors = new List <string>(); if (invalidItem > 0) { errors.Add("You have given me invalid items! Please remove them!"); Log.Warn("User has invalid items put up!"); } foreach (TradeUserAssets asset in Trade.OtherOfferedItems) { var item = Trade.CurrentSchema.GetItem(Trade.OtherInventory.GetItem(asset.assetid).Defindex); if ((item.CraftClass == "weapon" || item.CraftMaterialType == "weapon")) { verifiedValue += TF2Value.Scrap * 0.5; } else if (item.Defindex == 5000) { verifiedValue += TF2Value.Scrap; } else if (item.Defindex == 5001) { verifiedValue += TF2Value.Reclaimed; } else if (item.Defindex == 5002) { verifiedValue += TF2Value.Refined; } } if (UnverifiedAmount != verifiedValue) { errors.Add("The previous payout estimate was incorrect... I actually owe you " + verifiedValue.RefinedTotal + " ref"); } Trade.RemoveAllItems(); while (verifiedValue.RefinedPart > 0) { verifiedValue -= TF2Value.Refined; Trade.AddItem(5002); } while (verifiedValue.ReclaimedPart > 0) { verifiedValue -= TF2Value.Reclaimed; Trade.AddItem(5001); } while (verifiedValue.ScrapPart > 0) { verifiedValue -= TF2Value.Scrap; Trade.AddItem(5000); } // send the errors if (errors.Count != 0) { Trade.SendMessage("There were errors in your trade: "); } foreach (string error in errors) { Trade.SendMessage(error); } return(errors.Count == 0); }