private async Task <MethodResult> UseLuckyEgg()
        {
            if (_client.ClientSession.LuckyEggsUsed)
            {
                return(new MethodResult
                {
                    Message = "Lucky egg already active"
                });
            }

            ItemData data = Items.FirstOrDefault(x => x.ItemId == ItemId.ItemLuckyEgg);

            if (data == null || data.Count == 0)
            {
                LogCaller(new LoggerEventArgs("No lucky eggs left", LoggerTypes.Info));

                return(new MethodResult
                {
                    Message = "No lucky eggs"
                });
            }

            if (!_client.LoggedIn)
            {
                MethodResult result = await AcLogin();

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

            var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
            {
                RequestType    = RequestType.UseItemXpBoost,
                RequestMessage = new UseItemXpBoostMessage
                {
                    ItemId = ItemId.ItemLuckyEgg
                }.ToByteString()
            });

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

            UseItemXpBoostResponse useItemXpBoostResponse = null;

            useItemXpBoostResponse = UseItemXpBoostResponse.Parser.ParseFrom(response);

            LogCaller(new LoggerEventArgs(String.Format("Lucky egg used. Remaining: {0}", data.Count - 1), LoggerTypes.Success));

            return(new MethodResult
            {
                Success = true
            });
        }
示例#2
0
        private async Task <MethodResult> UseLuckyEgg()
        {
            if (LuckyEggActive)
            {
                return(new MethodResult
                {
                    Success = true
                });
            }

            ItemData data = Items.FirstOrDefault(x => x.ItemId == POGOProtos.Inventory.Item.ItemId.ItemLuckyEgg);

            if (data == null || data.Count == 0)
            {
                LogCaller(new LoggerEventArgs("No lucky eggs left", LoggerTypes.Info));

                return(new MethodResult
                {
                    Message = "No lucky eggs"
                });
            }

            try
            {
                var response = await ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
                {
                    RequestType    = RequestType.UseItemXpBoost,
                    RequestMessage = new UseItemXpBoostMessage
                    {
                        ItemId = ItemId.ItemLuckyEgg
                    }.ToByteString()
                });

                UseItemXpBoostResponse useItemXpBoostResponse = null;

                useItemXpBoostResponse = UseItemXpBoostResponse.Parser.ParseFrom(response);

                if (useItemXpBoostResponse.Result == UseItemXpBoostResponse.Types.Result.Success)
                {
                    LastLuckyEgg = DateTime.Now;

                    LogCaller(new LoggerEventArgs(String.Format("Lucky egg used. Remaining: {0}", data.Count - 1), LoggerTypes.Info));

                    return(new MethodResult
                    {
                        Success = true
                    });
                }
                else if (useItemXpBoostResponse.Result == UseItemXpBoostResponse.Types.Result.ErrorNoItemsRemaining)
                {
                    LogCaller(new LoggerEventArgs("No lucky eggs left", LoggerTypes.Info));

                    return(new MethodResult
                    {
                        Message = "No lucky eggs",
                        Success = true
                    });
                }
                else if (useItemXpBoostResponse.Result == UseItemXpBoostResponse.Types.Result.ErrorXpBoostAlreadyActive)
                {
                    LogCaller(new LoggerEventArgs("Lucky egg already active", LoggerTypes.Info));

                    return(new MethodResult
                    {
                        Message = "Lucky egg already active",
                        Success = true
                    });
                }
                else
                {
                    LogCaller(new LoggerEventArgs(String.Format("Unknown response from lucky egg request. Response: {0}", useItemXpBoostResponse.Result), LoggerTypes.Info));

                    return(new MethodResult
                    {
                        Message = "Unknown response from lucky egg request"
                    });
                }
            }
            catch (Exception ex)
            {
                LogCaller(new LoggerEventArgs("Lucky egg request failed", LoggerTypes.Exception, ex));

                return(new MethodResult
                {
                    Message = "Lucky egg request failed"
                });
            }
        }
 /// <summary>
 /// Provides a safe way to invoke the <see cref="UseItemXpBoostReceived" /> event.
 /// </summary>
 /// <param name="value"></param>
 public void RaiseUseItemXpBoostReceived(UseItemXpBoostResponse value) => UseItemXpBoostReceived?.Invoke(this, value);
示例#4
0
        private async Task <MethodResult> UseLuckyEgg()
        {
            ItemData data = Items.FirstOrDefault(x => x.ItemId == POGOProtos.Inventory.Item.ItemId.ItemLuckyEgg);

            if (data == null || data.Count == 0)
            {
                LogCaller(new LoggerEventArgs("No lucky eggs left", LoggerTypes.Info));

                return(new MethodResult
                {
                    Message = "No lucky eggs"
                });
            }

            try
            {
                UseItemXpBoostResponse response = await _client.Inventory.UseItemXpBoost();

                if (response.Result == UseItemXpBoostResponse.Types.Result.Success)
                {
                    LogCaller(new LoggerEventArgs(String.Format("Lucky egg used. Remaining: {0}", data.Count - 1), LoggerTypes.Info));

                    return(new MethodResult
                    {
                        Success = true
                    });
                }
                else if (response.Result == UseItemXpBoostResponse.Types.Result.ErrorNoItemsRemaining)
                {
                    LogCaller(new LoggerEventArgs("No lucky eggs left", LoggerTypes.Info));

                    return(new MethodResult
                    {
                        Message = "No lucky eggs",
                        Success = true
                    });
                }
                else if (response.Result == UseItemXpBoostResponse.Types.Result.ErrorXpBoostAlreadyActive)
                {
                    LogCaller(new LoggerEventArgs("Lucky egg already active", LoggerTypes.Info));

                    return(new MethodResult
                    {
                        Message = "Lucky egg already active",
                        Success = true
                    });
                }
                else
                {
                    LogCaller(new LoggerEventArgs(String.Format("Unknown response from lucky egg request. Response: {0}", response.Result), LoggerTypes.Info));

                    return(new MethodResult
                    {
                        Message = "Unknown response from lucky egg request"
                    });
                }
            }
            catch (Exception ex)
            {
                LogCaller(new LoggerEventArgs("Lucky egg request failed", LoggerTypes.Exception, ex));

                return(new MethodResult
                {
                    Message = "Lucky egg request failed"
                });
            }
        }