Пример #1
0
        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);
                    }
                }
            }
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
        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;
                        }
                    }
                }
            }
        }
Пример #5
0
        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;
                        }
                    }
                }
            }
        }
Пример #7
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);
        }