示例#1
0
        public async Task <MethodResult> RecycleItem(InventoryItemSetting itemSetting, int toDelete)
        {
            try
            {
                var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
                {
                    RequestType    = RequestType.RecycleInventoryItem,
                    RequestMessage = new RecycleInventoryItemMessage
                    {
                        Count  = toDelete,
                        ItemId = itemSetting.Id
                    }.ToByteString()
                });

                RecycleInventoryItemResponse recycleInventoryItemResponse = null;

                recycleInventoryItemResponse = RecycleInventoryItemResponse.Parser.ParseFrom(response);
                LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, recycleInventoryItemResponse.NewCount), LoggerTypes.Recycle));

                return(new MethodResult
                {
                    Success = true
                });
            }
            catch (Exception ex)
            {
                LogCaller(new LoggerEventArgs(String.Format("Failed to recycle iventory item {0}", itemSetting.FriendlyName), LoggerTypes.Warning, ex));

                return(new MethodResult());
            }
        }
示例#2
0
        public async Task <MethodResult> RecycleItem(InventoryItemSetting itemSetting, int toDelete)
        {
            try
            {
                RecycleInventoryItemResponse response = await _client.Inventory.RecycleItem(itemSetting.Id, toDelete);

                if (response.Result == RecycleInventoryItemResponse.Types.Result.Success)
                {
                    LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, response.NewCount), LoggerTypes.Recycle));

                    return(new MethodResult
                    {
                        Success = true
                    });
                }
                else
                {
                    LogCaller(new LoggerEventArgs(String.Format("Failed to delete {0}. Message: {1}", itemSetting.FriendlyName, response.Result), LoggerTypes.Warning));

                    return(new MethodResult());
                }
            }
            catch (Exception ex)
            {
                LogCaller(new LoggerEventArgs(String.Format("Failed to recycle iventory item {0}", itemSetting.FriendlyName), LoggerTypes.Warning, ex));

                return(new MethodResult());
            }
        }
示例#3
0
        public async Task <MethodResult> RecycleFilteredItems()
        {
            if (Items.Count == 0 || Items == null)
            {
                return new MethodResult
                       {
                           Message = "Not items here...."
                       }
            }
            ;

            if (!UserSettings.RecycleItems)
            {
                return(new MethodResult
                {
                    Message = "Item deletion not enabled"
                });
            }

            //TODO: skip ThrowInvalidOperationException(ExceptionResource resource)
            try
            {
                foreach (ItemData item in Items)
                {
                    InventoryItemSetting itemSetting = UserSettings.ItemSettings.FirstOrDefault(x => x.Id == item.ItemId);

                    if (itemSetting == null)
                    {
                        continue;
                    }

                    int toDelete = item.Count - itemSetting.MaxInventory;

                    if (toDelete <= 0)
                    {
                        continue;
                    }

                    await RecycleItem(itemSetting, toDelete);

                    await Task.Delay(CalculateDelay(UserSettings.DelayBetweenPlayerActions, UserSettings.PlayerActionDelayRandom));
                }

                UpdateInventory(InventoryRefresh.Items);

                return(new MethodResult
                {
                    Message = "Success",
                    Success = true
                });
            }
            catch
            {
                return(new MethodResult());
            }
        }
示例#4
0
        public async Task <MethodResult> RecycleItem(ItemData item, int toDelete)
        {
            InventoryItemSetting itemSetting = UserSettings.ItemSettings.FirstOrDefault(x => x.Id == item.ItemId);

            if (itemSetting == null)
            {
                return(new MethodResult());
            }

            return(await RecycleItem(itemSetting, toDelete));
        }
示例#5
0
        public async Task <MethodResult> RecycleItem(InventoryItemSetting itemSetting, int toDelete)
        {
            if (!_client.LoggedIn)
            {
                MethodResult result = await AcLogin();

                if (!result.Success)
                {
                    return(result);
                }
            }

            var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
            {
                RequestType    = RequestType.RecycleInventoryItem,
                RequestMessage = new RecycleInventoryItemMessage
                {
                    Count  = toDelete,
                    ItemId = itemSetting.Id
                }.ToByteString()
            });

            if (response == null)
            {
                return(new MethodResult());
            }

            RecycleInventoryItemResponse recycleInventoryItemResponse = RecycleInventoryItemResponse.Parser.ParseFrom(response);

            switch (recycleInventoryItemResponse.Result)
            {
            case RecycleInventoryItemResponse.Types.Result.ErrorCannotRecycleIncubators:
                return(new MethodResult());

            case RecycleInventoryItemResponse.Types.Result.ErrorNotEnoughCopies:
                return(new MethodResult());

            case RecycleInventoryItemResponse.Types.Result.Success:
                LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, recycleInventoryItemResponse.NewCount), LoggerTypes.Recycle));

                return(new MethodResult
                {
                    Success = true
                });

            case RecycleInventoryItemResponse.Types.Result.Unset:
                return(new MethodResult());
            }
            return(new MethodResult());
        }
示例#6
0
        public async Task <MethodResult> RecycleFilteredItems()
        {
            if (!UserSettings.RecycleItems)
            {
                return(new MethodResult
                {
                    Message = "Item deletion not enabled"
                });
            }

            MethodResult <List <InventoryItem> > inventoryResponse = await UpdateInventory();

            if (!inventoryResponse.Success)
            {
                return(inventoryResponse);
            }


            await UpdateItemList(false);

            foreach (ItemData item in Items)
            {
                InventoryItemSetting itemSetting = UserSettings.ItemSettings.FirstOrDefault(x => x.Id == item.ItemId);

                if (itemSetting == null)
                {
                    continue;
                }

                int toDelete = item.Count - itemSetting.MaxInventory;

                if (toDelete <= 0)
                {
                    continue;
                }

                await RecycleItem(itemSetting, toDelete);

                await Task.Delay(CalculateDelay(UserSettings.DelayBetweenPlayerActions, UserSettings.PlayerActionDelayRandom));
            }


            return(new MethodResult
            {
                Message = "Success",
                Success = true
            });
        }
示例#7
0
        public void LoadInventorySettings()
        {
            ItemSettings = new List <InventoryItemSetting>();

            foreach (ItemId item in Enum.GetValues(typeof(ItemId)))
            {
                if (item == ItemId.ItemUnknown)
                {
                    continue;
                }

                var itemSetting = new InventoryItemSetting {
                    Id = item
                };

                ItemSettings.Add(itemSetting);
            }
        }
示例#8
0
        private void editToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int totalObjects = fastObjectListViewRecycling.SelectedObjects.Count;

            if (totalObjects == 0)
            {
                return;
            }

            InventoryItemSetting iiSettings = fastObjectListViewRecycling.SelectedObjects[0] as InventoryItemSetting;

            if (iiSettings == null)
            {
                return;
            }

            string num = Prompt.ShowDialog("Max Inventory Amount", "Edit Amount", iiSettings.MaxInventory.ToString());

            if (String.IsNullOrEmpty(num))
            {
                return;
            }

            int maxInventory = 0;

            if (!Int32.TryParse(num, out maxInventory))
            {
                return;
            }

            foreach (InventoryItemSetting item in fastObjectListViewRecycling.SelectedObjects)
            {
                item.MaxInventory = maxInventory;
            }

            fastObjectListViewRecycling.SetObjects(_manager.UserSettings.ItemSettings);
        }
示例#9
0
        public async Task <MethodResult> RecycleItems()
        {
            if (!UserSettings.RecycleItems)
            {
                return(new MethodResult
                {
                    Message = "Item deletion not enabled"
                });
            }

            MethodResult <List <InventoryItem> > inventoryResponse = await GetInventory();

            if (!inventoryResponse.Success)
            {
                return(inventoryResponse);
            }


            await UpdateItemList(false);

            foreach (ItemData item in Items)
            {
                InventoryItemSetting itemSetting = UserSettings.ItemSettings.FirstOrDefault(x => x.Id == item.ItemId);

                if (itemSetting == null)
                {
                    continue;
                }

                int toDelete = item.Count - itemSetting.MaxInventory;

                if (toDelete <= 0)
                {
                    continue;
                }

                try
                {
                    RecycleInventoryItemResponse response = await _client.Inventory.RecycleItem(itemSetting.Id, toDelete);

                    if (response.Result == RecycleInventoryItemResponse.Types.Result.Success)
                    {
                        LogCaller(new LoggerEventArgs(String.Format("Deleted {0} {1}. Remaining {2}", toDelete, itemSetting.FriendlyName, response.NewCount), LoggerTypes.Recycle));
                    }
                    else
                    {
                        LogCaller(new LoggerEventArgs(String.Format("Failed to delete {0}. Message: {1}", itemSetting.FriendlyName, response.Result), LoggerTypes.Warning));
                    }

                    await Task.Delay(500);
                }
                catch (Exception ex)
                {
                    LogCaller(new LoggerEventArgs(String.Format("Failed to recycle iventory item {0}", itemSetting.FriendlyName), LoggerTypes.Warning, ex));
                }
            }


            return(new MethodResult
            {
                Message = "Success",
                Success = true
            });
        }