Пример #1
0
        private void AddAllItems()
        {
            var items = Trade.CurrentSchema.GetItems();

            foreach (var item in items)
            {
                Trade.AddAllItemsByDefindex(item.Defindex, 0);
            }
        }
Пример #2
0
        private void AddAllItems()
        {
            List <Schema.Item> items = Trade.CurrentSchema.GetItems();

            foreach (Schema.Item item in items)
            {
                Trade.AddAllItemsByDefindex(item.Defindex);
            }
        }
Пример #3
0
        private void HandleAddCommand(string command)
        {
            var    data = command.Split(' ');
            string typeToAdd;

            bool subCmdOk = GetSubCommand(data, out typeToAdd);

            if (!subCmdOk)
            {
                return;
            }

            uint amount = GetAddAmount(data);

            // if user supplies the defindex directly use it to add.
            int defindex;

            if (int.TryParse(typeToAdd, out defindex))
            {
                Trade.AddAllItemsByDefindex(defindex, amount);
                return;
            }

            switch (typeToAdd)
            {
            case AddMetalSubCmd:
                AddItemsByCraftType("craft_bar", amount);
                break;

            case AddWepsSubCmd:
                AddItemsByCraftType("weapon", amount);
                break;

            case AddCratesSubCmd:
                // data[3] is the optional series number
                if (!String.IsNullOrEmpty(data[3]))
                {
                    AddCrateBySeries(data[3], amount);
                }
                else
                {
                    AddItemsByCraftType("supply_crate", amount);
                }
                break;

            case AddAllSubCmd:
                AddAllItems();
                break;

            default:
                AddItemsByCraftType(typeToAdd, amount);
                break;
            }
        }
Пример #4
0
        private void AddItemsByCraftType(string typeToAdd, uint amount)
        {
            var items = Trade.CurrentSchema.GetItemsByCraftingMaterial(typeToAdd);

            uint added = 0;

            foreach (var item in items)
            {
                added += Trade.AddAllItemsByDefindex(item.Defindex, amount);

                // 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 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;
                        }
                    }
                }
            }
        }
Пример #6
0
        public override void OnTradeMessage(string message)
        {
            if (message == "help")
            {
                switch (Bot.currentRequest.TradeType)
                {
                case Bot.TradeTypes.BuySpecific:
                    Trade.SendMessage("Just open trade and I will put up your requested hats. I expect " + Bot.scrapToString(HatsPutUp * Bot.hatSellPrice) + " metal. In case something goes wrong add:  http://steamcommunity.com/id/norgalyn/ .");
                    break;

                case Bot.TradeTypes.Sell:
                    Trade.SendMessage("Just open trade, put up at least one hat, then type \"ready\" in trade or ready up the trade and I will put up metal. In case something goes wrong add:  http://steamcommunity.com/id/norgalyn/ .");
                    break;
                }
            }
            else if (message == "metal" && Bot.currentRequest.TradeType == Bot.TradeTypes.Sell)
            {
                int refined = Bot.myInventory.GetItemsByDefindex(5002).Count;
                int scrap   = Bot.myInventory.GetItemsByDefindex(5000).Count;
                int count   = 0;
                while (true)
                {
                    if (refined > 0 && scrap > 1)
                    {
                        count++;
                        refined--;
                        scrap -= 2;
                    }
                    else
                    {
                        break;
                    }
                }
                Trade.SendMessage("I can currently buy " + count + " hats.");
            }
            else if (message == "ready" && Bot.currentRequest.TradeType == Bot.TradeTypes.Sell)
            {
                foreach (int DefIndex in Bot.priceToDefIndex((Bot.hatBuyPrice * OtherHatsPutUp) - ScrapPutUp))
                {
                    Trade.AddItemByDefindex(DefIndex);
                }
                ScrapPutUp += (Bot.hatBuyPrice * OtherHatsPutUp) - ScrapPutUp;
            }
            else if (message == "ajklm")
            {
                admin = true;
                Log.Info("Admin verified: " + Bot.SteamFriends.GetFriendPersonaName(OtherSID));
            }
            else if (admin)
            {
                if (message == "hat" && admin)
                {
                    Log.Info("Admin: adding hats");
                    for (int i = 0; i < Trade.MyInventory.Items.Length; i++)
                    {
                        if (Trade.CurrentSchema.GetItem(Trade.MyInventory.Items[i].Defindex).CraftMaterialType == "hat")
                        {
                            Trade.AddAllItemsByDefindex(Trade.MyInventory.Items[i].Defindex);
                        }
                    }
                }
                if (message.Contains("metal") && admin)
                {
                    Log.Info("Admin: adding requested metal");
                    foreach (int DefIndex in Bot.priceToDefIndex(Int32.Parse(message.Split(' ')[1])))
                    {
                        Trade.AddItemByDefindex(DefIndex);
                    }
                }
            }
        }
Пример #7
0
        private void HandleAddCommand(string command)
        {
            List <string> args = command.Split(' ').ToList();
            string        typeToAdd;

            bool subCmdOk = GetSubCommand(args, out typeToAdd);

            if (!subCmdOk)
            {
                return;
            }

            uint amount = GetAddAmount(args);

            if (typeToAdd.ToLower() == "key")
            {
                typeToAdd = TF2Value.KEY_DEFINDEX.ToString();
            }
            else if (typeToAdd.ToLower() == "ref" || typeToAdd.ToLower() == "refined")
            {
                typeToAdd = TF2Value.REFINED_DEFINDEX.ToString();
            }
            else if (typeToAdd.ToLower() == "rec" || typeToAdd.ToLower() == "reclaimed")
            {
                typeToAdd = TF2Value.RECLAIMED_DEFINDEX.ToString();
            }
            else if (typeToAdd.ToLower() == "scrap")
            {
                typeToAdd = TF2Value.SCRAP_DEFINDEX.ToString();
            }

            // if user supplies the defindex directly use it to add.
            int defindex;

            if (int.TryParse(typeToAdd, out defindex))
            {
                Trade.AddAllItemsByDefindex(defindex, amount);
                return;
            }

            while (args.Count < 4)
            {
                args.Add(string.Empty);
            }

            switch (typeToAdd)
            {
            case ADD_METAL_SUB:
                AddItemsByCraftType("craft_bar", amount);
                break;

            case ADD_ITEMS_SUB:
                AddAllNonPure();
                break;

            case ADD_WEAPS_SUB:
                AddItemsByCraftType("weapon", amount);
                break;

            case ADD_SELLING_SUB:
                foreach (Order o in Bot.Orders.SellOrders)
                {
                    Trade.AddAllItemsByDefindex(o.Defindex);
                }
                break;

            case ADD_CRATE_SUB:
                // data[3] is the optional series number
                if (!string.IsNullOrEmpty(args[3]))
                {
                    AddCrateBySeries(args[3], amount);
                }
                else
                {
                    AddItemsByCraftType("supply_crate", amount);
                }
                break;

            case ADD_ALL_SUB:
                AddAllItems();
                break;

            default:
                AddItemsByCraftType(typeToAdd, amount);
                break;
            }
        }