在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废料)
答案 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。