예제 #1
0
        public override void OnTradeTimeout()
        {
            //Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg,
            //                                  "Trade timeout.");
            Log.Warn("Trade timeout.");
            Log.Info("Getting Inventory");
            Bot.GetInventory();

            int ItemsLeft = 0;

            if (ManageCrates)
            {
                ItemsLeft = GetTradeItems(Bot.MyInventory, TransferCrates).Count;
            }
            else
            {
                ItemsLeft = GetTradeItems(Bot.MyInventory, 0).Count;
            }

            if (ItemsLeft > 0)
            {
                Log.Debug("Still have items to trade");
                //errorOcccured = true;
                CancelTrade();
                OnTradeClose();
            }
            else
            {
                Log.Debug("No items in inventory, removing");
                TradeReadyBots.Remove(mySteamID);
                CancelTrade();
                OnTradeClose();
                Bot.StopBot();
            }
        }
예제 #2
0
        public override void OnTradeTimeout()
        {
            Log.Warn("Trade timeout.");
            Bot.GetOtherInventory(OtherSID);

            int ItemsLeft = 0;

            if (ManageCrates)
            {
                ItemsLeft = GetTradeItems(Bot.OtherInventory, TransferCrates).Count;
            }
            else
            {
                ItemsLeft = GetTradeItems(Bot.OtherInventory, 0).Count;
            }

            if (ItemsLeft > 0)
            {
                Log.Debug("Still has items to trade");
                //errorOcccured = true;
            }
            else
            {
                Log.Debug("No items in inventory, removing");
                if (TradeReadyBots.Contains(OtherSID))
                {
                    TradeReadyBots.Remove(OtherSID);
                }
            }
            if (OtherSID != MainSID && OtherSID != CrateSID)
            {
                CancelTrade();
                OnTradeClose();
            }
        }
예제 #3
0
        public override void OnLoginCompleted()
        {
            List <Inventory.Item> itemsToTrade = new List <Inventory.Item>();

            // Must get inventory here
            Log.Info("Getting Inventory");
            Bot.GetInventory();

            // Optional Crafting
            if (AutoCraftWeps)
            {
                AutoCraftAll();
            }

            if (ManageCrates)
            {
                DeleteSelectedCrates(DeleteCrates);

                // One more break before updating inventory
                Thread.Sleep(500);
                Bot.GetInventory();

                itemsToTrade = GetTradeItems(Bot.MyInventory, TransferCrates);
            }
            else
            {
                itemsToTrade = GetTradeItems(Bot.MyInventory, 0);
            }

            if (!BotItemMap.ContainsKey(mySteamID))
            {
                BotItemMap.Add(mySteamID, itemsToTrade);
                Admins.Add(mySteamID);
            }

            Log.Info("[Giving] " + Bot.DisplayName + " checking in. " + BotItemMap.Count + " of " + NumberOfBots + " Bots.");

            if (!Bot.MyInventory.IsFreeToPlay())
            {
                if (BotItemMap[mySteamID].Count > 0)
                {
                    TradeReadyBots.Add(mySteamID);
                    Log.Info(Bot.DisplayName + " has items. Added to list." + TradeReadyBots.Count + " Bots waiting to trade.");
                }
                else
                {
                    Log.Warn(Bot.DisplayName + " did not have an item to trade.");
                    Log.Warn("Stopping bot.");
                    Bot.StopBot();
                }
            }
            else
            {
                // Requires more info on f2p item characteristics.
                Log.Warn(Bot.DisplayName + " is free to play. F2P trading is not configured yet.");
                Bot.StopBot();
            }
        }
예제 #4
0
        public void TradeAccept()
        {
            if (OtherSID == MainSID || OtherSID == CrateSID)
            {
                Thread.Sleep(100);
                Success = AcceptTrade();
                if (Success)
                {
                    Log.Success("Trade was Successful!");
                    totalAdded += Trade.OtherOfferedItems.Count;
                    TradeReadyBots.Remove(mySteamID);
                    //Trade.Poll();
                    //Bot.StopBot();
                }
                else
                {
                    Log.Warn("Trade might have failed.");
                    Bot.GetInventory();

                    int ItemsLeft = 0;

                    if (ManageCrates)
                    {
                        ItemsLeft = GetTradeItems(Bot.OtherInventory, TransferCrates).Count;
                    }
                    else
                    {
                        ItemsLeft = GetTradeItems(Bot.OtherInventory, 0).Count;
                    }

                    if (ItemsLeft > 0)
                    {
                        Log.Warn("Bot has no items, trade may have succeeded. Removing bot.");
                        TradeReadyBots.Remove(mySteamID);
                        CancelTrade();

                        Log.Warn("[Receiving] TRADE CLOSED");
                        Bot.CloseTrade();
                        Bot.StopBot();
                    }
                }
            }
            else if (IsAdmin)
            {
                if (AcceptTrade())
                {
                    totalAdded += Trade.OtherOfferedItems.Count;
                    Log.Success("Trade was Successful!");
                }
                else
                {
                    Log.Warn("Trade might have failed.");
                    // Going to wait a little while to give the other bot time to finish prep if necessary.
                    Thread.Sleep(1000);
                }
                OnTradeClose();
            }
        }
예제 #5
0
        public void AddItems()
        {
            Thread.Sleep(500);

            Bot.GetInventory();

            Log.Debug("Adding all items.");

            uint added = AddItemsFromList(BotItemMap[mySteamID]);

            if (added > 0)
            {
                Log.Success("Added " + added + " items.");
                System.Threading.Thread.Sleep(50);
                if (!SendMessage("ready"))
                {
                    CancelTrade();
                    OnTradeClose();
                }
            }
            else
            {
                Log.Debug("Something's gone wrong.");
                Bot.GetInventory();
                int ItemsLeft = 0;

                if (ManageCrates)
                {
                    ItemsLeft = GetTradeItems(Bot.MyInventory, TransferCrates).Count;
                }
                else
                {
                    ItemsLeft = GetTradeItems(Bot.MyInventory, 0).Count;
                }

                if (ItemsLeft > 0)
                {
                    Log.Debug("Still have items to trade, aborting trade.");
                    //errorOcccured = true;
                    Bot.SteamFriends.SendChatMessage(OtherSID, EChatEntryType.ChatMsg, "failed");
                    OnTradeClose();
                }
                else
                {
                    Log.Debug("No items in bot inventory. This shouldn't be possible.");
                    TradeReadyBots.Remove(mySteamID);

                    CancelTrade();
                    OnTradeClose();
                    Bot.StopBot();
                }
            }
        }
예제 #6
0
        public void TradeAccept()
        {
            Thread.Sleep(100);
            Success = AcceptTrade();

            if (Success)
            {
                Log.Success("Trade was Successful!");
                //Trade.Poll();
                //Bot.StopBot();
            }
            else
            {
                Log.Warn("Trade might have failed.");
                Bot.GetInventory();

                int ItemsLeft = 0;

                if (ManageCrates)
                {
                    ItemsLeft = GetTradeItems(Bot.MyInventory, TransferCrates).Count;
                }
                else
                {
                    ItemsLeft = GetTradeItems(Bot.MyInventory, 0).Count;
                }

                if (ItemsLeft > 0)
                {
                    Log.Warn("Bot has no items, trade may have succeeded. Removing bot.");
                    TradeReadyBots.Remove(mySteamID);
                    OnTradeClose();
                    Bot.StopBot();
                }
            }
        }
예제 #7
0
 public override void OnTradeAccept()
 {
     TradeReadyBots.Remove(mySteamID);
     OnTradeClose();
 }
예제 #8
0
        public void AddItems()
        {
            Log.Info("Getting Inventory");
            Bot.GetInventory();

            var AllItems = new List <Inventory.Item>();

            if (OtherSID == CrateSID)
            {
                if (ManageCrates)
                {
                    AllItems = GetCrates(Bot.MyInventory, TransferCrates);
                }
                else
                {
                    return;
                }
            }
            else if (OtherSID == MainSID)
            {
                AllItems = GetTradeItems(Bot.MyInventory, TransferCrates);
            }
            else
            {
                return;
            }

            Log.Debug("Adding items");
            uint added = AddItemsFromList(AllItems);

            if (added > 0 || AllItems.Count == 0)
            {
                Log.Info("Added " + added + " items.");
                System.Threading.Thread.Sleep(50);
                MeAdded = true;
                if (!SendMessage("ready"))
                {
                    CancelTrade();
                    OnTradeClose();
                }
            }
            else
            {
                Log.Debug("Something's gone wrong.");
                Bot.GetInventory();
                int ItemsLeft = 0;

                if (ManageCrates)
                {
                    ItemsLeft = GetTradeItems(Bot.MyInventory, TransferCrates).Count;
                }
                else
                {
                    ItemsLeft = GetTradeItems(Bot.MyInventory, 0).Count;
                }

                if (ItemsLeft > 0)
                {
                    Log.Debug("Still have items to trade, aborting trade.");
                    //errorOcccured = true;
                    CancelTrade();
                    OnTradeClose();
                }
                else
                {
                    Log.Debug("No items in bot inventory. This shouldn't be possible.");
                    TradeReadyBots.Remove(mySteamID);
                    CancelTrade();

                    Log.Warn("[Receiving] TRADE CLOSED");
                    Bot.CloseTrade();
                    Bot.StopBot();
                }
            }
        }