如何计算SteamBoat中的多个项目

时间:2014-05-06 10:35:03

标签: c# steambot

在Jassecar的SteamBot中,有没有办法计算不同defindex的项目并将它们加起来? 我试过这个:

switch(message.ToLower())
{
    case "ticket":
        foreach (ulong id in Trade.OtherOfferedItems)
        {
            int totalScrap = 0;
            Trade.SendMessage("Please pay 3.44 ref");

            var items = Trade.OtherOfferedItems;
            var itemType = Trade.OtherInventory.GetItem(id);

            if (itemType.Defindex == 5002)
            {
                totalScrap = items.Count * 9;
            }
            else if (itemType.Defindex == 5001)
            {
                totalScrap = items.Count * 3;
            }
            else if (itemType.Defindex == 5000)
            {
                totalScrap = items.Count;
            }


            Trade.RemoveAllItems();
            if (totalScrap > 31)
            {
                Trade.AddItemByDefindex(725);
                int Change = 31 - totalScrap;
                while(Change > 0)
                {
                    Trade.AddItemByDefindex(5000);
                    Change - 1;
                }
            }
            else
            {
                Trade.SendMessage("You have only added a total of " + totalScrap + " Scrap, please put up the correct amount and type ticket again");
            }
        }

        break;

但是它将1个Scrap(物品Defindex为5000)和1个Refined Metal(物品Defindex为5002)作为9并且对用户说他已经添加了总共18个废料,其中他只添加了10个。(1精炼= 9废料)

1 个答案:

答案 0 :(得分:2)

您正在id内对Trade.OtherOfferedItems进行迭代。

错误#1 在循环的每次迭代中,您都要通过将totalScrap设置为0来清除`totalScrap = items.Count * 9`

错误#2 在这里:

Defindex

你在说"废品总量是我的物品的数量乘以9"这是错误的,因为如果您有2个可能不同Trade.RemoveAllItems(); es的项目(在您的情况下为5002和5000),它会给您18个。

错误#3 然后你就得到了:

totalScrap

我认为这将删除你实际上正在迭代的集合中的所有项目 - 我真的很惊讶你的循环没有崩溃。 将{{1}}放在外面。迭代每个项目,然后进行所有清算,删除并检查总和是否> 31。