void AddShopItem(GPlayer PL, ShopItemRequest shop) { var ListSet = IffEntry.SetItem.SetList(shop.IffTypeId); AddData ItemAddedData; AddItem ItemAddData; TBuyItem DataBuy; //group set item if (GetItemGroup(shop.IffTypeId) == 9) { if (ListSet.Count <= 0)// ## should not be happened { PL.SendResponse(ShowBuyItemSucceed(TGAME_SHOP.BUY_FAIL)); WriteConsole.WriteLine("Something strange happened (T.T)"); return; } else { foreach (var datas in ListSet) { ItemAddData = new AddItem { ItemIffId = datas.FirstOrDefault().Key, Quantity = datas.FirstOrDefault().Value, Transaction = false, Day = 0 }; ItemAddedData = PL.AddItem(ItemAddData); DataBuy = CheckData(ItemAddedData); PL.SendResponse(ShowBuyItem(ItemAddedData, DataBuy, PL.GetPang, PL.GetCookie)); } } } else { ItemAddData = new AddItem { ItemIffId = shop.IffTypeId, Quantity = IffEntry.GetRealQuantity(shop.IffTypeId, shop.IffQty), Transaction = false, Day = shop.IffDay }; ItemAddedData = PL.AddItem(ItemAddData); DataBuy = CheckData(ItemAddedData); PL.SendResponse(ShowBuyItem(ItemAddedData, DataBuy, PL.GetPang, PL.GetCookie)); } }
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)); }
public string GetSqlUpdateString() { StringBuilder SQLString; SQLString = new StringBuilder(); try { SQLString.Append('^'); SQLString.Append(ItemIndex); SQLString.Append('^'); SQLString.Append(ItemC0); SQLString.Append('^'); SQLString.Append(ItemC1); SQLString.Append('^'); SQLString.Append(ItemC2); SQLString.Append('^'); SQLString.Append(ItemC3); SQLString.Append('^'); SQLString.Append(ItemC4); SQLString.Append('^'); SQLString.Append(ItemIsValid); SQLString.Append('^'); SQLString.Append(IfCompare <byte>(IffEntry.IsSelfDesign(ItemTypeID), 1, 0)); SQLString.Append('^'); SQLString.Append(ItemUCCStatus ?? 0); SQLString.Append('^'); SQLString.Append(ItemUCCUnique ?? "0"); SQLString.Append('^'); SQLString.Append(GetSQLTime(ItemEndDate)); SQLString.Append('^'); SQLString.Append(ItemFlag ?? 0); SQLString.Append('^'); // { CLUB SET DATA } SQLString.Append(ItemClubPoint); SQLString.Append('^'); SQLString.Append(ItemClubWorkCount); SQLString.Append('^'); SQLString.Append(ItemClubPointLog); SQLString.Append('^'); SQLString.Append(ItemClubPangLog); SQLString.Append('^'); SQLString.Append(ItemC0Slot); SQLString.Append('^'); SQLString.Append(ItemC1Slot); SQLString.Append('^'); SQLString.Append(ItemC2Slot); SQLString.Append('^'); SQLString.Append(ItemC3Slot); SQLString.Append('^'); SQLString.Append(ItemC4Slot); SQLString.Append('^'); SQLString.Append(ItemClubSlotCancelledCount); SQLString.Append('^'); SQLString.Append(IfCompare <byte>(GetItemGroup(ItemTypeID) == 4, 1, 0)); SQLString.Append(','); // close for next player var data = SQLString.ToString(); return(data); } finally { SQLString = null; } }
public void PlayerGMCommand(GPlayer player, Packet packet) { GameBase Game; MailSender AddMail; Channel PLobby; uint ItemTypeID, Quantity, PlayerConnectionID; string Nick; byte Arg1; if (!(player.GetCapability == 4)) { WriteConsole.WriteLine("HandleGMCommands: Player has requested gm command but he is not an admin"); return; } if (!packet.ReadUInt16(out ushort CommandId)) { return; } PLobby = player.Lobby; if (PLobby == null) { return; } switch ((GM_COMMAND)CommandId) { case GM_COMMAND.GM_Visibility: //command /visible [on/off] (Ficar Visivel Ou Invisivel) { packet.ReadByte(out Arg1); switch ((TVISIBLE_ACTION)Arg1) { case TVISIBLE_ACTION.Enable: //visibilidade: on { player.Visible = 4; } break; case TVISIBLE_ACTION.Disable: //visibilidade: off { player.Visible = 0; } break; } PLobby.UpdatePlayerLobbyInfo(player); break; } case GM_COMMAND.Player_Whisper: //command /whisper [on/off] { packet.ReadByte(out Arg1); switch ((TWHISPER_ACTION)Arg1) { case TWHISPER_ACTION.Disable: //whisper: off { } break; case TWHISPER_ACTION.Enable: //whiper: on { } break; } player.SendResponse(new byte[] { 0x0F, 0x00 }); } break; case GM_COMMAND.Player_Lobby: //command /TLobby [on/off] { packet.ReadByte(out Arg1); switch (Arg1) { case 0: //lobby: off { } break; case 2: //lobby: on { } break; } player.SendResponse(new byte[] { 0x0F, 0x00 }); } break; case GM_COMMAND.Player_Open: //command /open [nick] { packet.ReadPStr(out Nick); WriteConsole.WriteLine("test =>" + Nick); } break; case GM_COMMAND.Player_Close: //command /close [nick] { packet.ReadPStr(out Nick); WriteConsole.WriteLine("test =>" + Nick); } break; case GM_COMMAND.Player_Kick: //command /kick [nick] [op] { if (!packet.ReadUInt32(out PlayerConnectionID)) { return; } var client = PLobby.GetPlayerByConnectionId(PlayerConnectionID); if (client == null) { return; } player.SendResponse(new byte[] { 0x0F, 0x00 }); client.Close(); } break; case GM_COMMAND.Player_Disconnect_By_UID: //command /discon_uid [uid] { if (!packet.ReadUInt32(out PlayerConnectionID)) { return; } var client = PLobby.GetPlayerByConnectionId(PlayerConnectionID); if (client == null) { return; } client.SendResponse(new byte[] { 0x76, 0x02, 0xFA, 0x00, 0x00, 0x00 }); client.Close(); } break; case GM_COMMAND.Player_Change_GameWind: //Command /wind [spd] [dir] { packet.ReadByte(out byte WP); packet.ReadByte(out byte WD); Game = PLobby.GetGameHandle(player); if (Game == null) { return; } if (Game != null && Game.GameType != GAME_TYPE.CHAT_ROOM) { Game.Send(ShowWind(WP, WD)); } } break; case GM_COMMAND.Player_Change_GameWeather: //Command /weather [type] 'fine', 'rain', 'snow', 'cloud' (Chuva, Neve ...) { packet.ReadByte(out Arg1); Game = PLobby.GetGameHandle(player); if (Game == null) { return; } Game.Send(ShowWeather(Arg1)); } break; case GM_COMMAND.Player_GiveItem: //giveitem: /giveitem [nick][typeid][num] { packet.ReadUInt32(out PlayerConnectionID); //meu id de conexão ou do client packet.ReadUInt32(out ItemTypeID); //id do item enviado packet.ReadUInt32(out Quantity); //quantidade de itens enviado if (!IffEntry.IsExist(ItemTypeID)) { return; } var Client = (GPlayer)(player.Server).GetClientByConnectionId(PlayerConnectionID); if (null == Client) { return; } AddMail = new MailSender(); try { AddMail.Sender = "@GM"; AddMail.AddText("GM presents you"); AddMail.AddItem(ItemTypeID, Quantity, true); // Add to db AddMail.Send(Client.GetUID); Client.SendMailPopup(); player.SendResponse(new byte[] { 0x0F, 0x00 }); } finally { AddMail.Dispose(); } } break; case GM_COMMAND.Player_GoldenBell: //Command goldenbell ID (enviar item para todos da sala) { //id do item enviado if (!packet.ReadUInt32(out ItemTypeID)) { return; } //quantidade de itens enviado if (!packet.ReadUInt32(out Quantity)) { return; } //Checagem do item if (!IffEntry.IsExist(ItemTypeID)) { return; } Game = PLobby.GetGameHandle(player); if (Game == null) { return; } AddMail = new MailSender(); try { foreach (var Client in Game.Players) { AddMail.Sender = "@GM"; AddMail.AddText("GM presents you"); AddMail.AddItem(ItemTypeID, Quantity, true); // Add to db AddMail.Send(Client.GetUID); Client.SendMailPopup(); } } finally { AddMail.Dispose(); } } break; case GM_COMMAND.HioHoleCupScale: { } break; case GM_COMMAND.SetMission: //Command /setmission [MISSION_NUM] { packet.ReadByte(out byte MissionID); WriteConsole.WriteLine("SetMission => " + MissionID); } break; case GM_COMMAND.MatchMap: //Command /matchmap [mapcount] { packet.ReadUInt32(out uint MapCount); WriteConsole.WriteLine("MatchMap => " + MapCount); } break; case GM_COMMAND.Notice_Prize: { //List<TNoticePrize> itens; if (!packet.ReadByte(out Arg1)) { return; } switch (Arg1) { case 0: //lobby: off { if (!packet.ReadUInt32(out uint Count)) { return; } for (int i = 0; i < Count; i++) { var item = (TNoticePrize)packet.Read(new TNoticePrize()); } } break; case 2: //lobby: on { } break; } player.SendResponse(new byte[] { 0x0F, 0x00 }); } break; default: { WriteConsole.WriteLine("Command ID UNK => " + CommandId); packet.Save(); } break; } }
// 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(); } }
public AddData AddItemToDB(AddItem ItemAddData) { Object TPlayerItemData; PlayerTransactionData Tran; AddData Result; Result = new AddData() { Status = false }; var _db = new PangyaEntities(); var additem = _db.ProcAddItem((int)UID, (int)ItemAddData.ItemIffId, (int)ItemAddData.Quantity, IfCompare <byte>(IffEntry.IsSelfDesign(ItemAddData.ItemIffId), 1, 0), IffEntry.GetItemTimeFlag(ItemAddData.ItemIffId, ItemAddData.Day), (int)ItemAddData.Day).ToList(); if (additem.Count > 0) { var dbdata = additem.FirstOrDefault(); Tran = new PlayerTransactionData() { Types = 2, Index = (uint)dbdata.IDX, TypeID = (uint)dbdata.iffTypeId, PreviousQuan = 0, NewQuan = (uint)dbdata.Quantity, UCC = dbdata.UCC_KEY }; ItemTransaction.Add(Tran); try { switch ((TITEMGROUP)GetPartGroup(ItemAddData.ItemIffId)) { case TITEMGROUP.ITEM_TYPE_CHARACTER: { TPlayerItemData = new PlayerCharacterData(); ((PlayerCharacterData)(TPlayerItemData)).Index = (uint)dbdata.IDX; ((PlayerCharacterData)(TPlayerItemData)).TypeID = (uint)dbdata.iffTypeId; ((PlayerCharacterData)(TPlayerItemData)).HairColour = 0; ((PlayerCharacterData)(TPlayerItemData)).GiftFlag = 0; ItemCharacter.CharacterAdd((PlayerCharacterData)(TPlayerItemData)); CharacterIndex = (uint)dbdata.IDX; Result = new AddData() { Status = true, ItemIndex = ((PlayerCharacterData)(TPlayerItemData)).Index, ItemTypeID = ((PlayerCharacterData)(TPlayerItemData)).TypeID, ItemOldQty = 1, ItemNewQty = 1, ItemUCCKey = string.Empty, ItemFlag = 0, ItemEndDate = DateTime.MinValue, }; } break; case TITEMGROUP.ITEM_TYPE_AUX: case TITEMGROUP.ITEM_TYPE_PART: case TITEMGROUP.ITEM_TYPE_CLUB: case TITEMGROUP.ITEM_TYPE_BALL: case TITEMGROUP.ITEM_TYPE_USE: { TPlayerItemData = new PlayerItemData(); ((PlayerItemData)(TPlayerItemData)).ItemIndex = (uint)dbdata.IDX; ((PlayerItemData)(TPlayerItemData)).ItemTypeID = (uint)dbdata.iffTypeId; ((PlayerItemData)(TPlayerItemData)).ItemC0 = (ushort)dbdata.Quantity; ((PlayerItemData)(TPlayerItemData)).ItemUCCUnique = dbdata.UCC_KEY; ((PlayerItemData)(TPlayerItemData)).CreateNewItem(); // Add to inventory list ItemWarehouse.ItemAdd((PlayerItemData)(TPlayerItemData)); // Set the result data Result = new AddData() { Status = true, ItemIndex = ((PlayerItemData)(TPlayerItemData)).ItemIndex, ItemTypeID = ((PlayerItemData)(TPlayerItemData)).ItemTypeID, ItemOldQty = 0, ItemNewQty = ItemAddData.Quantity, ItemUCCKey = ((PlayerItemData)(TPlayerItemData)).ItemUCCUnique, ItemFlag = 0, ItemEndDate = null, }; } break; case TITEMGROUP.ITEM_TYPE_CADDIE: { TPlayerItemData = new PlayerCaddieData(); ((PlayerCaddieData)(TPlayerItemData)).CaddieIdx = (uint)dbdata.IDX; ((PlayerCaddieData)(TPlayerItemData)).CaddieTypeId = (uint)dbdata.iffTypeId; ((PlayerCaddieData)(TPlayerItemData)).CaddieDateEnd = (DateTime)dbdata.END_DATE; ((PlayerCaddieData)(TPlayerItemData)).CaddieAutoPay = 0; ((PlayerCaddieData)(TPlayerItemData)).CaddieType = (byte)dbdata.Flag; // Add caddie to inventory list ItemCaddie.CadieAdd((PlayerCaddieData)(TPlayerItemData)); // set the result data Result = new AddData() { Status = true, ItemIndex = ((PlayerCaddieData)(TPlayerItemData)).CaddieIdx, ItemTypeID = ((PlayerCaddieData)(TPlayerItemData)).CaddieTypeId, ItemOldQty = 0, ItemNewQty = 1, ItemUCCKey = string.Empty, ItemFlag = ((PlayerCaddieData)(TPlayerItemData)).CaddieType, ItemEndDate = null, }; } break; case TITEMGROUP.ITEM_TYPE_SKIN: { TPlayerItemData = new PlayerItemData(); ((PlayerItemData)(TPlayerItemData)).ItemIndex = (uint)dbdata.IDX; ((PlayerItemData)(TPlayerItemData)).ItemTypeID = (uint)dbdata.iffTypeId; ((PlayerItemData)(TPlayerItemData)).ItemC0 = (ushort)ItemAddData.Quantity; ((PlayerItemData)(TPlayerItemData)).ItemUCCUnique = dbdata.UCC_KEY; ((PlayerItemData)(TPlayerItemData)).ItemFlag = (byte)dbdata.Flag; ((PlayerItemData)(TPlayerItemData)).ItemEndDate = dbdata.END_DATE; ((PlayerItemData)(TPlayerItemData)).ItemIsValid = 1; // Add to inventory list ItemWarehouse.ItemAdd((PlayerItemData)(TPlayerItemData)); // Set the result data Result = new AddData() { Status = true, ItemIndex = ((PlayerItemData)(TPlayerItemData)).ItemIndex, ItemTypeID = ((PlayerItemData)(TPlayerItemData)).ItemTypeID, ItemOldQty = 0, ItemNewQty = ItemAddData.Quantity, ItemUCCKey = ((PlayerItemData)(TPlayerItemData)).ItemUCCUnique, ItemFlag = (byte)((PlayerItemData)(TPlayerItemData)).ItemFlag, ItemEndDate = ((PlayerItemData)(TPlayerItemData)).ItemEndDate, }; } break; case TITEMGROUP.ITEM_TYPE_CARD: { TPlayerItemData = new PlayerCardData(); ((PlayerCardData)(TPlayerItemData)).CardIndex = (uint)dbdata.IDX; ((PlayerCardData)(TPlayerItemData)).CardTypeID = (uint)dbdata.iffTypeId; ((PlayerCardData)(TPlayerItemData)).CardQuantity = ItemAddData.Quantity; ((PlayerCardData)(TPlayerItemData)).CardIsValid = 1; ((PlayerCardData)(TPlayerItemData)).CardNeedUpdate = false; // ## add to card ItemCard.CardAdd((PlayerCardData)(TPlayerItemData)); // set the result data Result = new AddData() { Status = true, ItemIndex = ((PlayerCardData)(TPlayerItemData)).CardIndex, ItemTypeID = ((PlayerCardData)(TPlayerItemData)).CardTypeID, ItemOldQty = 0, ItemNewQty = ((PlayerCardData)(TPlayerItemData)).CardQuantity, ItemUCCKey = string.Empty, ItemFlag = 0, ItemEndDate = null, }; } break; case TITEMGROUP.ITEM_TYPE_MASCOT: { TPlayerItemData = new PlayerMascotData(); ((PlayerMascotData)(TPlayerItemData)).MascotIndex = (uint)dbdata.IDX; ((PlayerMascotData)(TPlayerItemData)).MascotTypeID = (uint)dbdata.iffTypeId; ((PlayerMascotData)(TPlayerItemData)).MascotMessage = "Pangya !"; ((PlayerMascotData)(TPlayerItemData)).MascotIsValid = 1; ((PlayerMascotData)(TPlayerItemData)).MascotNeedUpdate = false; ((PlayerMascotData)(TPlayerItemData)).MascotEndDate = (DateTime)dbdata.END_DATE; ((PlayerMascotData)(TPlayerItemData)).MascotDayToEnd = (ushort)(DaysBetween(dbdata.END_DATE, DateTime.Now)); // ## add to card ItemMascot.MascotAdd((PlayerMascotData)(TPlayerItemData)); // set the result data Result = new AddData() { Status = true, ItemIndex = ((PlayerMascotData)(TPlayerItemData)).MascotIndex, ItemTypeID = ((PlayerMascotData)(TPlayerItemData)).MascotTypeID, ItemOldQty = 0, ItemNewQty = 1, ItemUCCKey = string.Empty, ItemFlag = 4, ItemEndDate = DateTime.Now.AddDays(ItemAddData.Day + 1), }; } break; } } catch { var player = (GPlayer)MainServer.Program._server.GetPlayerByUID(UID); if (player != null) { player.Close(); } } } // ## resulted return(Result); }
public AddData AddItem(AddItem ItemAddData) { Object TPlayerItemData; AddData Result; Result = new AddData() { Status = false }; if (UID == 0) { return(Result); } switch ((TITEMGROUP)GetPartGroup(ItemAddData.ItemIffId)) { case TITEMGROUP.ITEM_TYPE_CHARACTER: { TPlayerItemData = ItemCharacter.GetChar(ItemAddData.ItemIffId, CharType.bTypeID); if (TPlayerItemData == null) { return(AddItemToDB(ItemAddData)); } else if (!(TPlayerItemData != null)) { Result.Status = true; Result.ItemIndex = ((PlayerCharacterData)(TPlayerItemData)).Index; Result.ItemTypeID = ((PlayerCharacterData)(TPlayerItemData)).TypeID; Result.ItemOldQty = 1; Result.ItemNewQty = 1; Result.ItemUCCKey = string.Empty; Result.ItemFlag = 0; Result.ItemEndDate = null; if (ItemAddData.Transaction) { ItemTransaction.AddChar(2, (PlayerCharacterData)TPlayerItemData); } } } break; case TITEMGROUP.ITEM_TYPE_HAIR_STYLE: { var IffHair = IffEntry.GetByHairColor(ItemAddData.ItemIffId); var character = ItemCharacter.GetCharByType((byte)IffHair.CharType); if (character != null) { character.HairColour = IffHair.HairColor; character.Update(character); Result.Status = true; Result.ItemIndex = character.Index; Result.ItemTypeID = ItemAddData.ItemIffId; Result.ItemOldQty = 0; Result.ItemNewQty = 1; Result.ItemUCCKey = null; Result.ItemFlag = 0; Result.ItemEndDate = null; } } break; case TITEMGROUP.ITEM_TYPE_PART: { return(AddItemToDB(ItemAddData)); } case TITEMGROUP.ITEM_TYPE_CLUB: { return(AddItemToDB(ItemAddData)); } case TITEMGROUP.ITEM_TYPE_AUX: case TITEMGROUP.ITEM_TYPE_BALL: case TITEMGROUP.ITEM_TYPE_USE: { TPlayerItemData = ItemWarehouse.GetItem(ItemAddData.ItemIffId, 1); if (TPlayerItemData != null) { Result.Status = true; Result.ItemIndex = ((PlayerItemData)(TPlayerItemData)).ItemIndex; Result.ItemTypeID = ((PlayerItemData)(TPlayerItemData)).ItemTypeID; Result.ItemOldQty = ((PlayerItemData)(TPlayerItemData)).ItemC0; Result.ItemNewQty = ((PlayerItemData)(TPlayerItemData)).ItemC0 + ItemAddData.Quantity; Result.ItemUCCKey = ((PlayerItemData)(TPlayerItemData)).ItemUCCUnique; Result.ItemFlag = (byte)((PlayerItemData)(TPlayerItemData)).ItemFlag; Result.ItemEndDate = null; //Add ((PlayerItemData)(TPlayerItemData)).AddQuantity(ItemAddData.Quantity); if (ItemAddData.Transaction) { ItemTransaction.AddItem(0x02, (PlayerItemData)TPlayerItemData, ItemAddData.Quantity); } } else if (TPlayerItemData == null) { return(AddItemToDB(ItemAddData)); } } break; case TITEMGROUP.ITEM_TYPE_CADDIE: { return(AddItemToDB(ItemAddData)); } case TITEMGROUP.ITEM_TYPE_CADDIE_ITEM: { TPlayerItemData = ItemCaddie.GetCaddieBySkinId(ItemAddData.ItemIffId); if (!(TPlayerItemData == null)) { ((PlayerCaddieData)(TPlayerItemData)).Update(); ((PlayerCaddieData)(TPlayerItemData)).UpdateCaddieSkin(ItemAddData.ItemIffId, ItemAddData.Day); Result.Status = true; Result.ItemIndex = ((PlayerCaddieData)(TPlayerItemData)).CaddieIdx; Result.ItemTypeID = ((PlayerCaddieData)(TPlayerItemData)).CaddieSkin; Result.ItemOldQty = 1; Result.ItemNewQty = 1; Result.ItemUCCKey = string.Empty; Result.ItemFlag = 0; Result.ItemEndDate = DateTime.Now.AddDays(ItemAddData.Day); } } break; case TITEMGROUP.ITEM_TYPE_SKIN: { return(AddItemToDB(ItemAddData)); } case TITEMGROUP.ITEM_TYPE_MASCOT: { TPlayerItemData = ItemMascot.GetMascotByTypeId(ItemAddData.ItemIffId); if (TPlayerItemData != null) { ((PlayerMascotData)(TPlayerItemData)).AddDay(ItemAddData.Day); Result.Status = true; Result.ItemIndex = ((PlayerMascotData)(TPlayerItemData)).MascotIndex; Result.ItemTypeID = ((PlayerMascotData)(TPlayerItemData)).MascotTypeID; Result.ItemOldQty = 1; Result.ItemNewQty = 1; Result.ItemUCCKey = ""; Result.ItemFlag = 0; Result.ItemEndDate = ((PlayerMascotData)(TPlayerItemData)).MascotEndDate; } else if (TPlayerItemData == null) { return(AddItemToDB(ItemAddData)); } } break; case TITEMGROUP.ITEM_TYPE_CARD: { TPlayerItemData = ItemCard.GetCard(ItemAddData.ItemIffId, 1); if (TPlayerItemData == null) { AddItemToDB(ItemAddData); } else if (TPlayerItemData != null) { Result.Status = true; Result.ItemIndex = ((PlayerCardData)(TPlayerItemData)).CardIndex; Result.ItemTypeID = ((PlayerCardData)(TPlayerItemData)).CardTypeID; Result.ItemOldQty = ((PlayerCardData)(TPlayerItemData)).CardQuantity; Result.ItemNewQty = ((PlayerCardData)(TPlayerItemData)).CardQuantity + ItemAddData.Quantity; Result.ItemUCCKey = string.Empty; Result.ItemFlag = 0; Result.ItemEndDate = null; ((PlayerCardData)(TPlayerItemData)).AddQuantity(ItemAddData.Quantity); if (ItemAddData.Transaction) { ItemTransaction.AddCard(0x02, (PlayerCardData)TPlayerItemData, ItemAddData.Quantity); } } } break; } return(Result); }
public void PlayerRenewRent(GPlayer player, Packet packet) { uint PartCharge; if (!packet.ReadUInt32(out uint PartIndex)) { return; } var PPart = player.Inventory.ItemWarehouse.GetItem(PartIndex); if (PPart == null) { player.SendResponse(new byte[] { 0x8F, 0x01, 0x05 }); WriteConsole.WriteLine("PlayerPlayerRenewRent: variable ppart is null"); return; } if (!(GetItemGroup(PPart.ItemTypeID) == 2) || (!(PPart.ItemFlag == 0x62))) { player.SendResponse(new byte[] { 0x8F, 0x01, 0x03 }); WriteConsole.WriteLine("PlayerPlayerRenewRent: Error 01"); return; } PartCharge = IffEntry.GetRentalPrice(PPart.ItemTypeID); if (PartCharge <= 0) { player.SendResponse(new byte[] { 0x8F, 0x01, 0x05 }); WriteConsole.WriteLine("PlayerPlayerRenewRent: Error RentalPrice"); return; } if (!player.RemovePang(PartCharge)) { player.SendResponse(new byte[] { 0x8F, 0x01, 0x04 }); WriteConsole.WriteLine("PlayerPlayerRenewRent: Error RemovePang"); return; } player.SendPang(); PPart.Renew(); try { packet.Write(new byte[] { 0x8F, 0x01, 0x00 }); packet.WriteUInt32(PPart.ItemTypeID); packet.WriteUInt32(PPart.ItemIndex); player.SendResponse(packet.GetBytes()); } finally { packet.Dispose(); } }