Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
        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();
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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();
            }
        }