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 }); }
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);
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" }); } }