public void PlayerBuyItemGameShop(GPlayer player, Packet packet) { ShopItemRequest ShopItem; uint DeletePang, DeleteCookie, RentalPrice; if (!packet.ReadByte(out byte BuyType)) { return; } if (!packet.ReadUInt16(out ushort BuyTotal)) { return; } switch ((TGAME_SHOP_ACTION)BuyType) { case TGAME_SHOP_ACTION.Normal: { for (int Count = 0; Count <= BuyTotal - 1; Count++) { ShopItem = (ShopItemRequest)packet.Read(new ShopItemRequest()); Console.WriteLine($"[BUY_ITEM_RESULT]: TypeID =>{ShopItem.IffTypeId}, Name =>{IffEntry.GetItemName(ShopItem.IffTypeId)} IsPang =>{ShopItem.PangPrice > 0}, IsCookie =>{ShopItem.CookiePrice > 0}"); if (!IffEntry.IsExist(ShopItem.IffTypeId)) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.PASSWORD_WRONG)); return; } if (!IffEntry.IsBuyable(ShopItem.IffTypeId)) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.CANNOT_BUY_ITEM)); return; } if (!player.Inventory.Available(ShopItem.IffTypeId, ShopItem.IffQty)) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.BUY_FAIL)); return; } if (IffEntry.GetPrice(ShopItem.IffTypeId, ShopItem.IffDay) <= 0) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.BUY_FAIL)); return; } switch (IffEntry.GetShopPriceType(ShopItem.IffTypeId)) { case 0: case 2: case 6: case 32: case 96: //Pang { DeletePang = IffEntry.GetPrice(ShopItem.IffTypeId, ShopItem.IffDay) * ShopItem.IffQty; if (!player.RemovePang(DeletePang)) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.PANG_NOTENOUGHT)); WriteConsole.WriteLine("HandlePlayerBuyItemGameShop: Cannot Delete Player_{0} {1} pang's", new object[] { player.GetLogin, DeletePang }); return; } } break; case 1: case 33: case 97: //Cookie { DeleteCookie = IffEntry.GetPrice(ShopItem.IffTypeId, ShopItem.IffDay); if (!player.RemoveCookie(DeleteCookie)) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.COOKIE_NOTENOUGHT)); WriteConsole.WriteLine("HandlePlayerBuyItemGameShop: Cannot Delete Player_{0} {1} cookie's", new object[] { player.GetLogin, DeleteCookie }); return; } } break; default: { if (ShopItem.CookiePrice > 0) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.BUY_FAIL)); Utils.Log("GameShopCore", $"CookiePriceType: {IffEntry.GetShopPriceType(ShopItem.IffTypeId)}", "GameShopCoreSystem"); return; } if (ShopItem.PangPrice > 0) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.BUY_FAIL)); Utils.Log("GameShopCore", $"PangPriceType: {IffEntry.GetShopPriceType(ShopItem.IffTypeId)}", "GameShopCoreSystem"); return; } } break; } AddShopItem(player, ShopItem); } } break; case TGAME_SHOP_ACTION.Rental: { for (int Count = 0; Count <= BuyTotal - 1; Count++) { ShopItem = (ShopItemRequest)packet.Read(new ShopItemRequest()); if (!(GetItemGroup(ShopItem.IffTypeId) == 2)) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.ITEM_CANNOT_PURCHASE)); return; } if (!IffEntry.IsExist(ShopItem.IffTypeId)) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.PASSWORD_WRONG)); return; } if (!IffEntry.IsBuyable(ShopItem.IffTypeId)) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.CANNOT_BUY_ITEM)); return; } if (player.Inventory.IsExist(ShopItem.IffTypeId)) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.ITEM_CANNOT_PURCHASE)); return; } RentalPrice = IffEntry.GetRentalPrice(ShopItem.IffTypeId); if (RentalPrice <= 0) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.ITEM_CANNOT_PURCHASE)); return; } if (!player.RemovePang(RentalPrice)) { player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.PANG_NOTENOUGHT)); WriteConsole.WriteLine("PlayerPlayerBuyItemGameShop: Cannot delete Player_{0} {1} pang(s)", new object[] { player.GetNickname, RentalPrice }); } AddShopRentItem(player, ShopItem); } } break; } player.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.BUY_SUCCESS, player.GetPang, player.GetCookie)); }
// 6B = The process is not yet finished // 6C = You have too many items, cannot be put more // 6D = item can not be put in locker // 6E = item can be expired, cannot be put it locker // 6F = Cannot be put the amount of item more than you have // 70 = The process is finished // automatically close the locker public void PlayerPutItemLocker(GPlayer player, Packet packet) { //dados não utilizados var PlayerID = packet.ReadUInt32(); packet.Skip(5); var TypeID = packet.ReadUInt32(); var Index = packet.ReadUInt32(); var GetItem = player.Inventory.ItemWarehouse.GetItem(Index); if (null == GetItem) { player.SendResponse(new byte[] { 0x6E, 0x01, 0x6B, 0x00, 0x00, 0x00 }); return; } if (!(GameTools.Tools.GetItemGroup(GetItem.ItemTypeID) == 2)) { player.SendResponse(new byte[] { 0x6E, 0x01, 0x6D, 0x00, 0x00, 0x00 }); return; } var _db = new PangyaEntities(); var invent = _db.USP_INVEN_PUSH((int)player.GetUID, (int)GetItem.ItemTypeID, IffEntry.GetItemName(GetItem.ItemTypeID), (int)GetItem.ItemIndex).FirstOrDefault(); var Code = invent.Value; if (Code != 0) { player.SendResponse(new byte[] { 0x6E, 0x01, 0x6B, 0x00, 0x00, 0x00 }); return; } if (player.Inventory.ItemWarehouse.RemoveItem(GetItem)) { player.SendResponse(new byte[] { 0x39, 0x01, 0x00, 0x00 }); player.Response.Write(new byte[] { 0xEC, 0x00 }); player.Response.Write(1); player.Response.Write(1); player.Response.WriteStr("", 9); player.Response.Write(GetItem.ItemTypeID); player.Response.Write(GetItem.ItemIndex); player.Response.Write(player.GetUID);//quantity player.Response.WriteZero(27); player.Response.WriteStr(GetItem.ItemUCCUnique, 9); player.Response.Write(GetItem.ItemUCCCopyCount ?? 0); player.Response.Write(GetItem.ItemUCCStatus ?? 0); player.Response.WriteZero(54); player.Response.WriteStr(GetItem.ItemUCCName, 16); player.Response.WriteZero(25); player.Response.WriteStr(GetItem.ItemUCCDrawer, 22); player.SendResponse(); player.Response.Write(new byte[] { 0x6E, 0x01 }); player.Response.WriteZero(12); player.Response.Write(GetItem.ItemTypeID); player.Response.Write(GetItem.ItemIndex); player.Response.Write(player.GetUID);//quantity player.Response.WriteZero(27); player.Response.WriteStr(GetItem.ItemUCCUnique, 9); player.Response.Write(GetItem.ItemUCCCopyCount ?? 0); player.Response.Write(GetItem.ItemUCCStatus ?? 0); player.Response.WriteZero(54); player.Response.WriteStr(GetItem.ItemUCCName, 16); player.Response.WriteZero(25); player.Response.WriteStr(GetItem.ItemUCCDrawer, 22); player.SendResponse(); } }