public async Task <UseItemRequest> UseItem(ItemId itemId) { var customRequest = new UseItemRequest { ItemId = itemId, }; PokemonGo.RocketAPI.Enums.RequestType type = RequestType.METHOD_UNSET; switch (itemId) { case ItemId.ItemLuckyEgg: type = RequestType.USE_ITEM_XP_BOOST; break; case ItemId.ItemIncenseOrdinary: type = RequestType.USE_INCENSE; break; } var useItemRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30, new Request.Types.Requests { Type = (int)type, Message = customRequest.ToByteString() }); return (await _httpClient.PostProtoPayload <Request, UseItemRequest>($"https://{_apiUrl}/rpc", useItemRequest)); }
private void CreateSyncRequest() { GameObject playerSyncRequest = new GameObject("PlayerSyncRequest"); moveRequest = playerSyncRequest.AddComponent <MoveRequest>(); moveRequest.PlayerManager = this; useSkillRequest = playerSyncRequest.AddComponent <UseSkillRequest>(); useSkillRequest.PlayerManager = this; useItemRequest = playerSyncRequest.AddComponent <UseItemRequest>(); useItemRequest.PlayerManager = this; attackRequest = playerSyncRequest.AddComponent <AttackRequest>(); attackRequest.PlayerManager = this; }
public async Task UseIncense(Client client, GetInventoryResponse inventory) { IEnumerable <Item> myItems = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Item).Where(p => p != null); IEnumerable <Item> Incenses = myItems.Where(i => (ItemId)i.Item_ == ItemId.ItemIncenseOrdinary); Item Incense = Incenses.FirstOrDefault(); if (Incense != null && Incense.Count > 0) { UseItemRequest useIncense = await client.UseItem(ItemId.ItemLuckyEgg); ColoredConsoleWrite(ConsoleColor.Green, $"[{DateTime.Now.ToString("HH:mm:ss")}] Used Incense. Remaining: {Incense.Count}"); } await Task.Delay(11 * 60 * 1000); GetInventoryResponse newInventory = await client.GetInventory(); UseIncense(client, newInventory); }
public async Task <UseItemRequest> UseItemXpBoost(ItemId itemId) { var customRequest = new UseItemRequest { ItemId = itemId, }; var useItemRequest = RequestBuilder.GetRequest(_unknownAuth, _currentLat, _currentLng, 30, new Request.Types.Requests { Type = (int)RequestType.USE_ITEM_XP_BOOST, Message = customRequest.ToByteString() }); return (await _httpClient.PostProtoPayload <Request, UseItemRequest>($"https://{_apiUrl}/rpc", useItemRequest)); }
public async Task <UseItemRequest> UseItemIncense(ItemId itemId) //changed from UseItem to UseItemXpBoost because of the RequestType { var customRequest = new UseItemRequest { ItemId = itemId, }; var useItemRequest = RequestBuilder.GetRequest(_unknownAuth, CurrentLat, CurrentLng, CurrentAltitude, new Request.Types.Requests { Type = (int)RequestType.USE_INCENSE, Message = customRequest.ToByteString() }); return (await _httpClient.PostProtoPayload <Request, UseItemRequest>($"https://{_apiUrl}/rpc", useItemRequest)); }
public async Task<UseItemRequest> UseXpBoostItem(ItemId itemId) { var customRequest = new UseItemRequest { ItemId = itemId, }; var useItemRequest = RequestBuilder.GetRequest(_unknownAuth, CurrentLat, CurrentLng, CurrentAltitude, new Request.Types.Requests { Type = (int)RequestType.USE_ITEM_XP_BOOST, Message = customRequest.ToByteString() }); return await _httpClient.PostProtoPayload<Request, UseItemRequest>($"https://{_apiUrl}/rpc", useItemRequest); }
public async Task<UseItemRequest> UseItemIncense(ItemId itemId) //changed from UseItem to UseItemXpBoost because of the RequestType { var customRequest = new UseItemRequest { ItemId = itemId, }; var useItemRequest = RequestBuilder.GetRequest(_unknownAuth, CurrentLat, CurrentLng, CurrentAltitude, new Request.Types.Requests { Type = (int)RequestType.USE_INCENSE, Message = customRequest.ToByteString() }); return await _httpClient.PostProtoPayload<Request, UseItemRequest>($"https://{_apiUrl}/rpc", useItemRequest); }
public int Call_UseItem(UseItemRequest request) { int itemCnt = 1; if (request.cnt > itemCnt) { itemCnt = request.cnt; } var player = CurrentSession.GetBindPlayer(); var item = player.Items.FirstOrDefault(x => x.Id == request.id); if (item == null) { return((int)GameErrorCode.道具并不存在); } if (item.Count < itemCnt) { return((int)GameErrorCode.道具不足); } DItem di = _ditems[item.Tid]; if (!di.useable) { return((int)GameErrorCode.道具不可使用); } UseItemResponse response = new UseItemResponse(); response.id = request.id; response.success = true; int unitId = di.breakUnitId;//使用后解锁的兵种id string reason = $"使用道具{di.tid}"; if (unitId > 0) { var campController = Server.GetController <CampController>(); UnitInfo ui = campController.UnlockUnit(player, unitId); response.unitInfo = ui; } else if (di.breakRandomId > 0)//使用后可以获得随机库 { RewardInfo reward = this.RandomReward(player, di.breakRandomId, reason); response.rewardInfo = reward; } else if (di.breakCount > 0)//资源 { var playerController = Server.GetController <PlayerController>(); playerController.AddCurrency(player, di.type, di.breakCount, reason); response.rewardInfo = new RewardInfo(); response.rewardInfo.res = new List <ResInfo>() { new ResInfo() { type = di.type, count = di.breakCount } }; } //else if (di.type == 18) //{ // //后勤基地工人+1 // // int maxCnt = engine.getInt(Application.systemFile, "worker_max_cnt"); // // Industry industry = Spring.bean(IndustryService.class).getIndustry(item.getPid()); // // if (industry.getTotalWorkers() + cnt > maxCnt) { // // response.setInfo(Spring.errCode("item_use_fail_workersmax")); // // return response; // // } // // industry.setIdleWorkers(industry.getIdleWorkers() + cnt); // // industry.setTotalWorkers(industry.getTotalWorkers() + cnt); // // rojo.updateAndFlush(industry, "idleWorkers", "totalWorkers"); // // BuyWorkerResponse resp = new BuyWorkerResponse(); // //resp.setSuccess(true); // // resp.setIdleWorkers(industry.getIdleWorkers()); // // resp.setTotalWorkers(industry.getTotalWorkers()); // // Support su = Spring.bean(PlayerService.class).getSupport(item.getPid()); // // resp.setDiamond((int) su.getDiamond()); // // Context.getContextServer().send(resp, item.getPid()); // // response.setSuccess(true); //} item.Count -= itemCnt;//减少堆叠 if (item.Count <= 0) { _db.Items.Remove(item); //player.Items.Remove(item); } _db.SaveChanges(); response.lap = item.Count; CurrentSession.SendAsync(response); return(0); }