public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();
            byte page  = packet.ReadByte();
            byte count = packet.ReadByte();

            GamePlayer[] players = WorldMgr.GetAllPlayersNoGame();
            int          total   = players.Length;
            byte         length  = (total > (int)count) ? count : ((byte)total);

            pkg.WriteByte(length);
            for (int i = (int)(page * count); i < (int)(page * count + length); i++)
            {
                PlayerInfo info = players[i % total].PlayerCharacter;
                pkg.WriteInt(info.ID);
                pkg.WriteString((info.NickName == null) ? "" : info.NickName);
                pkg.WriteBoolean(info.Sex);
                pkg.WriteInt(info.Grade);
                pkg.WriteInt(info.ConsortiaID);
                pkg.WriteString((info.ConsortiaName == null) ? "" : info.ConsortiaName);
                pkg.WriteInt(info.Offer);
                pkg.WriteInt(info.Win);
                pkg.WriteInt(info.Total);
                pkg.WriteInt(info.Escape);
                pkg.WriteInt(info.Repute);
                pkg.WriteInt(info.FightPower);
            }
            player.Out.SendTCP(pkg);
            return(0);
        }
        //修改:  Xiaov
        //时间:  2009-11-4
        //描述:  修改邮件的已读未读标志<已测试>
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();

            int id = packet.ReadInt();

            using (PlayerBussiness db = new PlayerBussiness())
            {
                MailInfo mes = db.GetMailSingle(client.Player.PlayerCharacter.ID, id);
                if (mes != null && !mes.IsRead)
                {
                    mes.IsRead = true;
                    if (mes.Type < 100)
                    {
                        mes.ValidDate = 3 * 24;
                        mes.SendTime  = DateTime.Now;
                    }
                    db.UpdateMail(mes, mes.Money);
                    pkg.WriteBoolean(true);
                }
                else
                {
                    pkg.WriteBoolean(false);
                }
            }

            client.Out.SendTCP(pkg);

            return(0);
        }
Exemple #3
0
 public int HandlePacket(GameClient client, GSPacketIn packet)
 {
     packet.ClearContext();
     packet.WriteDateTime(DateTime.Now);
     client.Out.SendTCP(packet);
     return(0);
 }
        public bool HandleCommand(TankMarryLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentMarryRoom == null || player.CurrentMarryRoom.RoomState != eRoomState.FREE)
            {
                return(false);
            }
            if (!player.CurrentMarryRoom.Info.GuestInvite && player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.GroomID && player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.BrideID)
            {
                return(false);
            }
            GSPacketIn gSPacketIn = packet.Clone();

            gSPacketIn.ClearContext();
            int        playerId   = packet.ReadInt();
            GamePlayer playerById = WorldMgr.GetPlayerById(playerId);

            if (playerById != null && playerById.CurrentRoom == null && playerById.CurrentMarryRoom == null)
            {
                gSPacketIn.WriteByte(4);
                gSPacketIn.WriteInt(player.PlayerCharacter.ID);
                gSPacketIn.WriteString(player.PlayerCharacter.NickName);
                gSPacketIn.WriteInt(player.CurrentMarryRoom.Info.ID);
                gSPacketIn.WriteString(player.CurrentMarryRoom.Info.Name);
                gSPacketIn.WriteString(player.CurrentMarryRoom.Info.Pwd);
                gSPacketIn.WriteInt(player.MarryMap);
                playerById.Out.SendTCP(gSPacketIn);
                return(true);
            }
            return(false);
        }
Exemple #5
0
        private void HandleSysNotice(GSPacketIn pkg)
        {
            BaseGame game = GameMgr.FindGame(pkg.ClientID);

            if (game != null)
            {
                Player     player = game.FindPlayer(pkg.Parameter1);
                GSPacketIn pkg2   = new GSPacketIn(3);
                pkg2.WriteInt(3);
                pkg2.WriteString(LanguageMgr.GetTranslation("AbstractPacketLib.SendGamePlayerLeave.Msg6", new object[]
                {
                    player.PlayerDetail.PlayerCharacter.Grade * 12,
                    15
                }));
                player.PlayerDetail.SendTCP(pkg2);
                pkg2.ClearContext();
                pkg2.WriteInt(3);
                pkg2.WriteString(LanguageMgr.GetTranslation("AbstractPacketLib.SendGamePlayerLeave.Msg7", new object[]
                {
                    player.PlayerDetail.PlayerCharacter.NickName,
                    player.PlayerDetail.PlayerCharacter.Grade * 12,
                    15
                }));
                game.SendToAll(pkg2, player.PlayerDetail);
            }
        }
Exemple #6
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            ItemInfo item = player.PropBag.GetItemByCategoryID(0, 11, 4);

            if (item != null)
            {
                player.PropBag.RemoveCountFromStack(item, 1, eItemRemoveType.Use);
                player.OnUsingItem(item.TemplateID);
                int        senderID   = packet.ReadInt();
                string     senderName = packet.ReadString();
                string     msg        = packet.ReadString();
                GSPacketIn pkg        = packet.Clone();
                pkg.ClearContext();
                pkg.ClientID = player.PlayerCharacter.ID;
                pkg.WriteInt(player.PlayerCharacter.ID);
                pkg.WriteString(player.PlayerCharacter.NickName);
                pkg.WriteString(msg);
                GamePlayer[] players = WorldMgr.GetAllPlayers();
                GamePlayer[] array   = players;
                for (int i = 0; i < array.Length; i++)
                {
                    GamePlayer p = array[i];
                    p.Out.SendTCP(pkg);
                }
            }
            return(0);
        }
Exemple #7
0
        //修改:  Xiaov
        //时间:  2009-11-7
        //描述:  用户与用户之间私聊<已测试>
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            int receiverID = packet.ReadInt();
            //int senderID = packet.ReadInt();
            string receiver    = packet.ReadString();
            string sender      = packet.ReadString();
            string msg         = packet.ReadString();
            bool   isAutoReply = packet.ReadBoolean();

            if (receiverID == 0)
            {
                using (PlayerBussiness db = new PlayerBussiness())
                {
                    PlayerInfo info = db.GetUserSingleByNickName(receiver);
                    if (info != null)
                    {
                        receiverID = info.ID;
                    }
                }
            }

            if (receiverID != 0)
            {
                GSPacketIn pkg = packet.Clone();
                pkg.ClearContext();
                pkg.WriteInt(receiverID);
                pkg.ClientID = (client.Player.PlayerCharacter.ID);
                //pkg.WriteInt(senderID);
                pkg.WriteString(receiver);
                pkg.WriteString(sender);
                pkg.WriteString(msg);
                pkg.WriteBoolean(false);

                GamePlayer player = Managers.WorldMgr.GetPlayerById(receiverID);

                if (player != null)
                {
                    if (player.IsBlackFriend(client.Player.PlayerCharacter.ID))
                    {
                        return(1);
                    }
                    player.Out.SendTCP(pkg);
                }
                else
                {
                    GameServer.Instance.LoginServer.SendPacket(pkg);
                }
                client.Out.SendTCP(pkg);
            }
            else
            {
                client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserPrivateChatHandler.NoUser"));
            }



            return(1);
        }
Exemple #8
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            //bool result = false;
            if (string.IsNullOrEmpty(client.Player.PlayerCharacter.CheckCode))
            {
                return(1);
            }

            //int check  = packet.ReadInt();

            string check = packet.ReadString();

            if (client.Player.PlayerCharacter.CheckCode.ToLower() == check.ToLower())
            {
                client.Player.PlayerCharacter.CheckCount = 0;

                //int rewardItemID = GameServer.Instance.Configuration.CheckRewardItem;
                //ItemTemplateInfo rewardItem = ItemMgr.GetSingleGoods(rewardItemID);
                //ItemInfo item = ItemInfo.CreateFromTemplate(rewardItem, 1, (int)Game.Server.Statics.ItemAddType.CheckCode);
                //if (item != null)
                //{
                //    item.IsBinds = true;
                //    if (client.Player.AddItem(item, Game.Server.Statics.ItemAddType.CheckCode) != -1)
                //    {
                //        client.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("CheckCodeHandler.Msg1", item.Template.Name));
                //    }
                //    else
                //    {
                //        client.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("CheckCodeHandler.Msg2"));
                //    }
                //}
                int GP = LevelMgr.GetGP(client.Player.PlayerCharacter.Grade);
                client.Player.AddGP(LevelMgr.IncreaseGP(client.Player.PlayerCharacter.Grade, client.Player.PlayerCharacter.GP));

                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("CheckCodeHandler.Msg1", client.Player.PlayerCharacter.Grade * 12));
                //result = true;
                packet.ClearContext();
                packet.WriteByte(1);
                packet.WriteBoolean(false);
                client.Out.SendTCP(packet);
            }
            // else if (client.Player.PlayerCharacter.CheckError < 1 && client.Player.PlayerCharacter.CheckCount < 20000)
            else if (client.Player.PlayerCharacter.CheckError < 9)
            {
                client.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("CheckCodeHandler.Msg3"));
                client.Player.PlayerCharacter.CheckError++;
                client.Out.SendCheckCode();
            }
            else
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("CheckCodeHandler.Msg3"));
                client.Disconnect();
            }


            return(0);
        }
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            int    id         = packet.ReadInt();
            string nickName   = packet.ReadString();
            string senderName = packet.ReadString();
            string msg        = packet.ReadString();

            if (id == 0)
            {
                using (PlayerBussiness db = new PlayerBussiness())
                {
                    PlayerInfo info = db.GetUserSingleByNickName(nickName);
                    if (info != null)
                    {
                        id = info.ID;
                    }
                }
            }
            int result;

            if (id != 0)
            {
                GSPacketIn pkg = packet.Clone();
                pkg.ClearContext();
                pkg.ClientID = player.PlayerCharacter.ID;
                pkg.WriteInt(id);
                pkg.WriteString(nickName);
                pkg.WriteString(player.PlayerCharacter.NickName);
                pkg.WriteString(msg);
                GamePlayer other = WorldMgr.GetPlayerById(id);
                if (other != null)
                {
                    if (other.IsBlackFriend(player.PlayerCharacter.ID))
                    {
                        result = 1;
                        return(result);
                    }
                    other.Out.SendTCP(pkg);
                }
                else
                {
                    GameServer.Instance.LoginServer.SendPacket(pkg);
                }
                player.Out.SendTCP(pkg);
            }
            else
            {
                player.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserPrivateChatHandler.NoUser", new object[0]));
            }
            result = 1;
            return(result);
        }
Exemple #10
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            packet = packet.Clone();
            packet.ClearContext();
            int num  = packet.ReadInt();
            int num2 = packet.ReadInt();
            int num3 = packet.ReadInt();
            int num4 = packet.ReadInt();
            int num5 = packet.ReadInt();
            int num6 = packet.ReadInt();
            int num7 = packet.ReadInt();

            client.Player.CurrentHotSpringRoom = new HotSpringRoom(new HotSpringRoomInfo(), new TankHotSpringLogicProcessor());
            client.Player.CurrentHotSpringRoom.ProcessData(client.Player, packet);
            return(0);
        }
Exemple #11
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();
            Dictionary <int, int> infos = ShopMgr.GetLimitShopItemInfo();

            pkg.WriteInt(infos.Count);
            foreach (int key in infos.Keys)
            {
                pkg.WriteInt(key);
                pkg.WriteInt(infos[key]);
            }
            player.SendTCP(pkg);
            return(0);
        }
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            int result;

            if (string.IsNullOrEmpty(player.PlayerCharacter.CheckCode))
            {
                result = 1;
            }
            else
            {
                string check = packet.ReadString();
                if (player.PlayerCharacter.CheckCode.ToLower() == check.ToLower())
                {
                    int GP = LevelMgr.GetGP(player.PlayerCharacter.Grade);
                    if (player.PlayerCharacter.ChatCount != 5)
                    {
                        player.AddGP(LevelMgr.IncreaseGP(player.PlayerCharacter.Grade, player.PlayerCharacter.GP));
                        player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("CheckCodeHandler.Msg1", new object[]
                        {
                            player.PlayerCharacter.Grade * 12
                        }));
                    }
                    player.PlayerCharacter.CheckCount = 0;
                    player.PlayerCharacter.ChatCount  = 0;
                    packet.ClearContext();
                    packet.WriteByte(1);
                    packet.WriteBoolean(false);
                    player.Out.SendTCP(packet);
                }
                else
                {
                    if (player.PlayerCharacter.CheckError < 9)
                    {
                        player.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("CheckCodeHandler.Msg3", new object[0]));
                        player.PlayerCharacter.CheckError++;
                        player.Out.SendCheckCode();
                    }
                    else
                    {
                        player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("CheckCodeHandler.Msg3", new object[0]));
                        player.Disconnect();
                    }
                }
                result = 0;
            }
            return(result);
        }
Exemple #13
0
        public bool HandleCommand(GamePlayer player, GSPacketIn packet)
        {
            bool result;

            if (player.CurrentSpaRoom == null)
            {
                result = false;
            }
            else
            {
                if (player.CurrentSpaRoom.Spa_Room_Info.PlayerID != player.PlayerCharacter.ID)
                {
                    result = false;
                }
                else
                {
                    if (player.CurrentSpaRoom.Count >= player.CurrentSpaRoom.Spa_Room_Info.MaxCount)
                    {
                        result = false;
                    }
                    else
                    {
                        GSPacketIn pkg = packet.Clone();
                        pkg.ClearContext();
                        int        id           = packet.ReadInt();
                        GamePlayer invitePlayer = WorldMgr.GetPlayerById(id);
                        if (invitePlayer != null && invitePlayer.CurrentRoom == null && invitePlayer.CurrentMarryRoom == null && invitePlayer.CurrentSpaRoom == null)
                        {
                            pkg.WriteByte(4);
                            pkg.WriteInt(player.PlayerCharacter.ID);
                            pkg.WriteString(player.PlayerCharacter.NickName);
                            pkg.WriteInt(player.CurrentSpaRoom.Spa_Room_Info.RoomID);
                            pkg.WriteString(player.CurrentSpaRoom.Spa_Room_Info.RoomName);
                            pkg.WriteString(player.CurrentSpaRoom.Spa_Room_Info.Pwd);
                            invitePlayer.Out.SendTCP(pkg);
                            result = true;
                        }
                        else
                        {
                            result = false;
                        }
                    }
                }
            }
            return(result);
        }
Exemple #14
0
        private void HandleSysNotice(GSPacketIn pkg)
        {
            BaseGame game = GameMgr.FindGame(pkg.ClientID);

            if (game != null)
            {
                Player     player = game.FindPlayer(pkg.Parameter1);
                GSPacketIn pkg1   = new GSPacketIn((byte)eFightPackageType.SYS_NOTICE);
                // int type = pkg.ReadInt();
                pkg1.WriteInt(3);
                pkg1.WriteString(LanguageMgr.GetTranslation("AbstractPacketLib.SendGamePlayerLeave.Msg6", player.PlayerDetail.PlayerCharacter.Grade * 12, 15));
                player.PlayerDetail.SendTCP(pkg1);
                pkg1.ClearContext();
                pkg1.WriteInt(3);
                pkg1.WriteString(LanguageMgr.GetTranslation("AbstractPacketLib.SendGamePlayerLeave.Msg7", player.PlayerDetail.PlayerCharacter.NickName, player.PlayerDetail.PlayerCharacter.Grade * 12, 15));
                game.SendToAll(pkg1, player.PlayerDetail);
            }
        }
Exemple #15
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            byte unknow = packet.ReadByte();
            int  id     = packet.ReadInt();

            if (client.Player.PlayerCharacter.AnswerSite < id)
            {
                List <ItemInfo> infos = null;
                client.Player.PlayerCharacter.AnswerSite = id;
                if (DropInventory.AnswerDrop(id, ref infos))
                {
                    int gold      = 0;
                    int money     = 0;
                    int giftToken = 0;
                    int medal     = 0;
                    foreach (ItemInfo info in infos)
                    {
                        ItemInfo.FindSpecialItemInfo(info, ref gold, ref money, ref giftToken, ref medal);
                        //if ((info != null) && (info.Template.BagType == eBageType.PropBag))
                        //{
                        client.Player.MainBag.AddTemplate(info, info.Count);
                        //}
                        client.Player.AddGold(gold);
                        client.Player.AddMoney(money);
                        client.Player.AddGiftToken(giftToken);
                        client.Player.AddMedal(medal);
                        LogMgr.LogMoneyAdd(LogMoneyType.Award, LogMoneyType.Award_Answer, client.Player.PlayerCharacter.ID, giftToken, client.Player.PlayerCharacter.Money, money, 0, 0, 0, "", "", "");
                    }
                }
            }

            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();
            pkg.WriteInt(client.Player.PlayerCharacter.AnswerSite);
            for (int i = 0; i < client.Player.PlayerCharacter.AnswerSite; i++)
            {
                pkg.WriteByte(unknow);
            }

            client.Player.Out.SendTCP(pkg);
            return(1);
        }
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            string message = string.Empty;
            bool   result  = false;
            int    place   = packet.ReadInt();

            if (place != -1)
            {
                ItemInfo item = player.TempBag.GetItemAt(place);
                if (item != null)
                {
                    this.GetItem(player, item, ref message, ref result);
                }
            }
            else
            {
                List <ItemInfo> items = player.TempBag.GetItems();
                if (items.Count > 0)
                {
                    foreach (ItemInfo item in items)
                    {
                        if (!this.GetItem(player, item, ref message, ref result))
                        {
                            break;
                        }
                    }
                }
            }
            if (!string.IsNullOrEmpty(message))
            {
                player.Out.SendMessage(eMessageType.ERROR, message);
            }
            if (result)
            {
                packet.ClearContext();
                packet.WriteBoolean(true);
                player.Out.SendTCP(packet);
            }
            player.SaveIntoDatabase();
            return(0);
        }
Exemple #17
0
        public bool HandleCommand(TankMarryLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            bool result;

            if (player.CurrentMarryRoom == null || player.CurrentMarryRoom.RoomState != eRoomState.FREE)
            {
                result = false;
            }
            else
            {
                if (!player.CurrentMarryRoom.Info.GuestInvite)
                {
                    if (player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.GroomID && player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.BrideID)
                    {
                        result = false;
                        return(result);
                    }
                }
                GSPacketIn pkg = packet.Clone();
                pkg.ClearContext();
                int        id            = packet.ReadInt();
                GamePlayer invitedplayer = WorldMgr.GetPlayerById(id);
                if (invitedplayer != null && invitedplayer.CurrentRoom == null && invitedplayer.CurrentMarryRoom == null && invitedplayer.CurrentSpaRoom == null)
                {
                    pkg.WriteByte(4);
                    pkg.WriteInt(player.PlayerCharacter.ID);
                    pkg.WriteString(player.PlayerCharacter.NickName);
                    pkg.WriteInt(player.CurrentMarryRoom.Info.ID);
                    pkg.WriteString(player.CurrentMarryRoom.Info.Name);
                    pkg.WriteString(player.CurrentMarryRoom.Info.Pwd);
                    pkg.WriteInt(player.MarryMap);
                    invitedplayer.Out.SendTCP(pkg);
                    result = true;
                }
                else
                {
                    result = false;
                }
            }
            return(result);
        }
Exemple #18
0
 public bool HandleCommand(TankHotSpringLogicProcessor process, GamePlayer player, GSPacketIn packet)
 {
     if ((player.CurrentHotSpringRoom != null) && (player.CurrentHotSpringRoom.RoomState == eRoomState.FREE))
     {
         if (player.PlayerCharacter.ID != player.CurrentHotSpringRoom.Info.PlayerID)
         {
             return(false);
         }
         GSPacketIn pkg = packet.Clone();
         pkg.ClearContext();
         GamePlayer playerById = WorldMgr.GetPlayerById(packet.ReadInt());
         if (((playerById != null) && (playerById.CurrentRoom == null)) && (playerById.CurrentHotSpringRoom == null))
         {
             pkg.WriteByte((byte)HotSpringCmdType.HOTSPRING_ROOM_INVITE);
             pkg.WriteInt(player.CurrentHotSpringRoom.Info.RoomID);
             playerById.Out.SendTCP(pkg);
             return(true);
         }
     }
     return(false);
 }
Exemple #19
0
        public bool HandleCommand(TankMarryLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentMarryRoom == null || player.CurrentMarryRoom.RoomState != eRoomState.FREE)
            {
                return(false);
            }

            if (player.CurrentMarryRoom.Info.GuestInvite == false)
            {
                if (player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.GroomID && player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.BrideID)
                {
                    return(false);
                }
            }

            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();

            int        id            = packet.ReadInt();
            GamePlayer invitedplayer = Managers.WorldMgr.GetPlayerById(id);

            if (invitedplayer != null && invitedplayer.CurrentRoom == null && invitedplayer.CurrentMarryRoom == null)
            {
                pkg.WriteByte((byte)MarryCmdType.INVITE);
                pkg.WriteInt(player.PlayerCharacter.ID);
                pkg.WriteString(player.PlayerCharacter.NickName);
                pkg.WriteInt(player.CurrentMarryRoom.Info.ID);
                //pkg.WriteInt(player.CurrentMarryRoom.Info.MapIndex);
                pkg.WriteString(player.CurrentMarryRoom.Info.Name);
                pkg.WriteString(player.CurrentMarryRoom.Info.Pwd);
                pkg.WriteInt(player.MarryMap);

                invitedplayer.Out.SendTCP(pkg);

                return(true);
            }

            return(false);
        }
Exemple #20
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            //修改:  Xiaov
            //时间:  2009-11-4
            //描述:  小喇叭<未测试>

            ItemInfo item = client.Player.PropBag.GetItemByCategoryID(0, 11, 4);

            if (item != null)
            {
                //item.Count--;
                //if (item.Count <= 0)
                //{
                //    client.Player.RemoveItem(item);
                //}
                //else
                //{
                client.Player.PropBag.RemoveCountFromStack(item, 1);
                //  }
                int        senderID   = packet.ReadInt();
                string     senderName = packet.ReadString();
                string     msg        = packet.ReadString();
                GSPacketIn pkg        = packet.Clone();
                pkg.ClearContext();
                pkg.ClientID = (client.Player.PlayerCharacter.ID);
                pkg.WriteInt(client.Player.PlayerCharacter.ID);
                pkg.WriteString(client.Player.PlayerCharacter.NickName);
                pkg.WriteString(msg);


                GamePlayer[] players = Managers.WorldMgr.GetAllPlayers();

                foreach (GamePlayer p in players)
                {
                    p.Out.SendTCP(pkg);
                }
            }

            return(0);
        }
Exemple #21
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            ItemInfo item = client.Player.PropBag.GetItemByCategoryID(0, 11, 5);

            if (item != null)
            {
                //item.Count--;
                //if (item.Count <= 0)
                //{
                //    //client.Player.RemoveAllItem(item, false, Game.Server.Statics.ItemRemoveType.Use, item.GetBagType());
                //    client.Player.RemoveItem(item);
                //}
                //else
                //{
                // client.Player.PropBag.RefreshItem(item);
                client.Player.PropBag.RemoveCountFromStack(item, 1);


                //  }
                int    senderID   = packet.ReadInt();
                string senderName = packet.ReadString();
                string msg        = packet.ReadString();

                GSPacketIn pkg = packet.Clone();
                pkg.ClearContext();
                pkg.ClientID = (client.Player.PlayerCharacter.ID);
                pkg.WriteInt(client.Player.PlayerCharacter.ID);
                pkg.WriteString(client.Player.PlayerCharacter.NickName);
                pkg.WriteString(msg);

                GameServer.Instance.LoginServer.SendPacket(pkg);

                GamePlayer[] players = Managers.WorldMgr.GetAllPlayers();
                foreach (GamePlayer p in players)
                {
                    p.Out.SendTCP(pkg);
                }
            }
            return(0);
        }
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();

            byte page  = packet.ReadByte();
            byte count = packet.ReadByte();

            GamePlayer[] players = Managers.WorldMgr.GetAllPlayersNoGame();

            int  total  = players.Length;
            byte length = total > count ? count : (byte)total;

            pkg.WriteByte(length);
            for (int i = page * count; i < page * count + length; i++)
            {
                PlayerInfo info = players[i % total].PlayerCharacter;
                pkg.WriteInt(info.ID);
                pkg.WriteString(info.NickName == null ? "" : info.NickName);
                //Isvip
                pkg.WriteBoolean(true);
                pkg.WriteInt(5);
                pkg.WriteBoolean(info.Sex);
                pkg.WriteInt(info.Grade);
                pkg.WriteInt(info.ConsortiaID);
                pkg.WriteString(info.ConsortiaName == null ? "" : info.ConsortiaName);
                pkg.WriteInt(info.Offer);
                pkg.WriteInt(info.Win);
                pkg.WriteInt(info.Total);
                pkg.WriteInt(info.Escape);
                pkg.WriteInt(info.Repute);
                pkg.WriteInt(info.FightPower);
            }

            client.Out.SendTCP(pkg);

            return(0);
        }
Exemple #23
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();
            bool IsBinds      = false;
            int  OpertionType = packet.ReadInt();
            int  Count        = packet.ReadInt();

            List <ItemInfo>  Items       = new List <ItemInfo>();
            List <ItemInfo>  AppendItems = new List <ItemInfo>();
            List <eBageType> BagTypes    = new List <eBageType>();

            StringBuilder str = new StringBuilder();

            int defaultprobability = 25;

            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.locked"));
                return(1);
            }



            for (int i = 0; i < Count; i++)
            {
                eBageType bagType = (eBageType)packet.ReadInt();
                int       place   = packet.ReadInt();

                ItemInfo info = client.Player.GetItemAt(bagType, place);
                if (info != null)
                {
                    if (!Items.Contains(info))
                    {
                        if (info.IsBinds == true)
                        {
                            IsBinds = true;
                        }
                        str.Append(info.ItemID + ":" + info.TemplateID + ",");
                        Items.Add(info);
                        BagTypes.Add(bagType);
                    }
                    else
                    {
                        client.Out.SendMessage(eMessageType.Normal, "Bad Input");
                        return(1);
                    }
                }
            }

            //          ItemInfo MainMaterial = client.Player.GetItemAt(packet.ReadInt(), packet.ReadInt());


            eBageType BagType = (eBageType)packet.ReadInt();
            int       Place   = packet.ReadInt();

            ItemInfo Item = client.Player.GetItemAt(BagType, Place);

            if (Item != null)
            {
                str.Append(Item.ItemID + ":" + Item.TemplateID + ",");
            }

            eBageType LuckBagType = (eBageType)packet.ReadInt();
            int       LuckPlace   = packet.ReadInt();

            ItemInfo LuckItem = client.Player.GetItemAt(LuckBagType, LuckPlace);;

            bool Luck = LuckItem == null ? false : true;

            //if (IsBinds != Item.IsBinds && IsBinds == true)
            //{
            //    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.IsBinds"));
            //  //  return 1;
            //}

            if (Count != 4 || Item == null)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.ItemNotEnough"));
                return(1);
            }

            bool result    = false;
            bool IsFormula = false;


            if (OpertionType == 0)  //预览模式
            {
                ItemTemplateInfo Template = Managers.RefineryMgr.Refinery(client.Player, Items, Item, Luck, OpertionType, ref result, ref defaultprobability, ref IsFormula);

                if (Template != null)
                {
                    client.Out.SendRefineryPreview(client.Player, Template.TemplateID, IsBinds, Item);
                }

                return(0);
            }
            else                     //玩家炼化
            {
                int MustGold = 10000;

                if (client.Player.PlayerCharacter.Gold > MustGold)
                {
                    client.Player.RemoveGold(MustGold);
                    ItemTemplateInfo RewardItem = Managers.RefineryMgr.Refinery(client.Player, Items, Item, Luck, OpertionType, ref result, ref defaultprobability, ref IsFormula);
                    if (RewardItem != null && IsFormula && result)
                    {
                        str.Append("Success");
                        result = true;

                        if (result)
                        {
                            ItemInfo item = ItemInfo.CreateFromTemplate(RewardItem, 1, (int)ItemAddType.Refinery);

                            if (item != null)
                            {
                                client.Player.OnItemMelt(Item.Template.CategoryID);
                                //  Managers.RefineryMgr.InheritProperty(Item, ref item);
                                item.IsBinds = IsBinds;

                                AbstractInventory bg = client.Player.GetItemInventory(RewardItem);

                                if (!bg.AddItem(item, bg.BeginSlot))
                                {
                                    str.Append("NoPlace");
                                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(item.GetBagName()) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace"));
                                }

                                pkg.WriteByte(0);

                                Item.Count--;
                                client.Player.UpdateItem(Item);
                            }
                        }

                        else
                        {
                            str.Append("false");
                        }
                    }
                    else
                    {
                        pkg.WriteByte(1);
                    }



                    if (Luck)
                    {
                        LuckItem.Count--;
                        client.Player.UpdateItem(LuckItem);
                    }

                    for (int i = 0; i < Items.Count; i++)
                    {
                        client.Player.UpdateItem(Items[i]);
                        if (Items[i].Count <= 0)
                        {
                            client.Player.RemoveItem(Items[i]);
                        }
                    }
                    client.Player.RemoveItem(Items[Items.Count - 1]);
                    client.Player.Out.SendTCP(pkg);
                }
                else
                {
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.NoGold"));
                }


                return(1);
            }
        }
Exemple #24
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();

            StringBuilder str       = new StringBuilder();
            int           mustGold  = 5000;
            int           mustMoney = 1000;


            int ordPlace = packet.ReadInt();
            int newPlace = packet.ReadInt();

            ItemInfo ordItem = client.Player.StoreBag2.GetItemAt(0);
            ItemInfo newItem = client.Player.StoreBag2.GetItemAt(1);

            client.Player.StoreBag2.ClearBag();
            client.Player.MainBag.AddItem(ordItem);
            client.Player.MainBag.AddItem(newItem);
            //if (ordItem != null && newItem != null && ordItem.Template.CategoryID == newItem.Template.CategoryID && ordItem.Template.CategoryID < 10 && ordItem.Place > 10 &&
            //    newItem.Place > 10 && newItem.Count == 1 && ordItem.Count == 1 && ordItem.IsValidItem() && newItem.IsValidItem() && ordItem.Template.PayType != 0 && newItem.Template.PayType != 0)
            //{
            //未开始
            if (ordItem != null && newItem != null && ordItem.Template.CategoryID == newItem.Template.CategoryID && ordItem.Template.CategoryID < 10 &&
                newItem.Count == 1 && ordItem.Count == 1 && ordItem.IsValidItem() && newItem.IsValidItem())
            {
                if (ordItem.StrengthenLevel == 0 && ordItem.StrengthenLevel == 0 && ordItem.DefendCompose == 0 && ordItem.LuckCompose == 0 && ordItem.AgilityCompose == 0 && ordItem.AttackCompose == 0)
                {
                    return(1);
                }

                if (ordItem.Template.CategoryID == 7 && client.Player.PlayerCharacter.Money < mustMoney)
                {
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("itemtransferhandler.nomoney"));
                    return(1);
                }
                else if (client.Player.PlayerCharacter.Gold < mustGold)
                {
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("itemtransferhandler.nogold"));
                    return(1);
                }

                client.Player.BeginChanges();
                client.Player.MainBag.BeginChanges();
                try
                {
                    if (ordItem.Template.CategoryID == 7)
                    {
                        client.Player.RemoveMoney(mustMoney);
                        LogMgr.LogMoneyAdd(LogMoneyType.Item, LogMoneyType.Item_Move, client.Player.PlayerCharacter.ID, mustMoney, client.Player.PlayerCharacter.Money, 0, 0, 0, "", "", "");
                    }
                    else
                    {
                        client.Player.RemoveGold(mustGold);
                    }

                    str.Append(ordItem.ItemID + ":" + ordItem.TemplateID + ",");
                    str.Append(ordItem.StrengthenLevel + ",");
                    str.Append(ordItem.AttackCompose + ",");
                    str.Append(ordItem.DefendCompose + ",");
                    str.Append(ordItem.LuckCompose + ",");
                    str.Append(ordItem.AgilityCompose + ",");

                    newItem.StrengthenLevel = ordItem.StrengthenLevel;
                    ordItem.StrengthenLevel = 0;
                    newItem.AttackCompose   = ordItem.AttackCompose;
                    ordItem.AttackCompose   = 0;
                    newItem.DefendCompose   = ordItem.DefendCompose;
                    ordItem.DefendCompose   = 0;
                    newItem.LuckCompose     = ordItem.LuckCompose;
                    ordItem.LuckCompose     = 0;
                    newItem.AgilityCompose  = ordItem.AgilityCompose;
                    ordItem.AgilityCompose  = 0;
                    newItem.IsBinds         = true;

                    client.Player.MainBag.UpdateItem(ordItem);
                    client.Player.MainBag.UpdateItem(newItem);

                    str.Append(newItem.ItemID + ":" + newItem.TemplateID + ",");
                    str.Append(newItem.StrengthenLevel + ",");
                    str.Append(newItem.AttackCompose + ",");
                    str.Append(newItem.DefendCompose + ",");
                    str.Append(newItem.LuckCompose + ",");
                    str.Append(newItem.AgilityCompose);

                    pkg.WriteByte(0);
                    client.Out.SendTCP(pkg);
                }
                finally
                {
                    client.Player.CommitChanges();

                    client.Player.MainBag.CommitChanges();
                }
            }
            else
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("itemtransferhandler.nocondition"));
            }

            return(0);
        }
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            int        id     = packet.ReadInt();
            int        price  = packet.ReadInt();
            bool       result = false;
            GSPacketIn pkg    = packet.Clone();

            pkg.ClearContext();
            string msg = "AuctionUpdateHandler.Fail";
            int    result2;

            if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked)
            {
                player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                result2 = 0;
            }
            else
            {
                using (PlayerBussiness db = new PlayerBussiness())
                {
                    AuctionInfo info = db.GetAuctionSingle(id);
                    if (info == null)
                    {
                        msg = "AuctionUpdateHandler.Msg1";
                    }
                    else
                    {
                        if (info.PayType == 0 && price > player.PlayerCharacter.Gold)
                        {
                            msg = "AuctionUpdateHandler.Msg2";
                        }
                        else
                        {
                            if (info.PayType == 1 && price > player.PlayerCharacter.Money)
                            {
                                msg = "AuctionUpdateHandler.Msg3";
                            }
                            else
                            {
                                if (info.BuyerID == 0 && info.Price > price)
                                {
                                    msg = "AuctionUpdateHandler.Msg4";
                                }
                                else
                                {
                                    if (info.BuyerID != 0 && info.Price + info.Rise > price && (info.Mouthful == 0 || info.Mouthful > price))
                                    {
                                        msg = "AuctionUpdateHandler.Msg5";
                                    }
                                    else
                                    {
                                        int oldBuyerID = info.BuyerID;
                                        info.BuyerID   = player.PlayerCharacter.ID;
                                        info.BuyerName = player.PlayerCharacter.NickName;
                                        info.Price     = price;
                                        if (info.Mouthful != 0 && price >= info.Mouthful)
                                        {
                                            info.Price   = info.Mouthful;
                                            info.IsExist = false;
                                        }
                                        if (db.UpdateAuction(info))
                                        {
                                            if (info.PayType == 0)
                                            {
                                                player.RemoveGold(info.Price);
                                            }
                                            else
                                            {
                                                player.RemoveMoney(info.Price, LogMoneyType.Auction, LogMoneyType.Auction_Update);
                                            }
                                            if (info.IsExist)
                                            {
                                                msg = "AuctionUpdateHandler.Msg6";
                                            }
                                            else
                                            {
                                                msg = "AuctionUpdateHandler.Msg7";
                                                player.Out.SendMailResponse(info.AuctioneerID, eMailRespose.Receiver);
                                                player.Out.SendMailResponse(info.BuyerID, eMailRespose.Receiver);
                                            }
                                            if (oldBuyerID != 0)
                                            {
                                                player.Out.SendMailResponse(oldBuyerID, eMailRespose.Receiver);
                                            }
                                            result = true;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    player.Out.SendAuctionRefresh(info, id, info != null && info.IsExist, null);
                    player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg, new object[0]));
                }
                pkg.WriteBoolean(result);
                pkg.WriteInt(id);
                player.Out.SendTCP(pkg);
                result2 = 0;
            }
            return(result2);
        }
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            packet.ClientID = player.PlayerCharacter.ID;
            byte       channel = packet.ReadByte();
            bool       team    = packet.ReadBoolean();
            string     nick    = packet.ReadString();
            string     msg     = packet.ReadString();
            GSPacketIn pkg     = packet.Clone();

            pkg.ClearContext();
            pkg.ClientID = player.PlayerCharacter.ID;
            pkg.WriteInt(player.AreaID);
            pkg.WriteByte(channel);
            pkg.WriteBoolean(team);
            pkg.WriteString(player.PlayerCharacter.NickName);
            pkg.WriteString(msg);
            int result;

            if (player.CurrentRoom != null && channel != 3 && channel != 9)
            {
                if (player.CurrentRoom.RoomType == eRoomType.Match)
                {
                    if (player.CurrentRoom.Game != null)
                    {
                        player.CurrentRoom.BattleServer.Server.SendChatMessage(msg, player, team, channel);
                        result = 1;
                        return(result);
                    }
                }
            }
            if (channel == 3)
            {
                if (player.PlayerCharacter.ConsortiaID == 0)
                {
                    result = 0;
                    return(result);
                }
                if (player.PlayerCharacter.IsBanChat)
                {
                    player.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("ConsortiaChatHandler.IsBanChat", new object[0]));
                    result = 1;
                    return(result);
                }
                pkg.WriteInt(player.PlayerCharacter.ConsortiaID);
                GamePlayer[] players = WorldMgr.GetAllPlayers();
                GamePlayer[] array   = players;
                for (int i = 0; i < array.Length; i++)
                {
                    GamePlayer p = array[i];
                    if (p.PlayerCharacter.ConsortiaID == player.PlayerCharacter.ConsortiaID && !p.IsBlackFriend(player.PlayerCharacter.ID))
                    {
                        p.Out.SendTCP(pkg);
                    }
                }
                GameServer.Instance.LoginServer.SendPacket(pkg);
            }
            else
            {
                if (channel == 9)
                {
                    if (player.CurrentMarryRoom == null)
                    {
                        result = 1;
                        return(result);
                    }
                    player.CurrentMarryRoom.SendToAllForScene(pkg, player.MarryMap);
                }
                else
                {
                    if (channel == 13)
                    {
                        if (player.CurrentSpaRoom == null)
                        {
                            result = 1;
                            return(result);
                        }
                        player.CurrentSpaRoom.SendToRoomPlayer(pkg);
                    }
                    else
                    {
                        if (player.CurrentRoom != null)
                        {
                            if (team)
                            {
                                player.CurrentRoom.SendToTeam(pkg, player.CurrentRoomTeam, player);
                            }
                            else
                            {
                                player.CurrentRoom.SendToAll(pkg);
                            }
                        }
                        else
                        {
                            if (DateTime.Compare(player.LastChatTime.AddSeconds(1.0), DateTime.Now) > 0)
                            {
                                result = 1;
                                return(result);
                            }
                            if (team)
                            {
                                result = 1;
                                return(result);
                            }
                            if (DateTime.Compare(player.LastChatTime.AddSeconds(30.0), DateTime.Now) > 0)
                            {
                                player.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("SceneChatHandler.Fast", new object[0]));
                                result = 1;
                                return(result);
                            }
                            player.LastChatTime = DateTime.Now;
                            GamePlayer[] list  = WorldMgr.GetAllPlayers();
                            GamePlayer[] array = list;
                            for (int i = 0; i < array.Length; i++)
                            {
                                GamePlayer p = array[i];
                                if (p.CurrentRoom == null && p.CurrentMarryRoom == null && p.CurrentSpaRoom == null && !p.IsBlackFriend(player.PlayerCharacter.ID))
                                {
                                    p.Out.SendTCP(pkg);
                                }
                            }
                            player.PlayerCharacter.ChatCount++;
                            player.Out.SendCheckCode();
                        }
                    }
                }
            }
            result = 1;
            return(result);
        }
Exemple #27
0
        // <summary>
        // 修改:  Xiaov
        // 时间:  2009-11-7
        // 描述:  发送邮件<未测试>

        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (client.Player.PlayerCharacter.Gold < 100)
            {
                return(1);
            }



            string       msg  = "UserSendMailHandler.Success";
            eMessageType eMsg = eMessageType.Normal;
            GSPacketIn   pkg  = packet.Clone();

            pkg.ClearContext();

            string nickName  = packet.ReadString().Trim();
            string title     = packet.ReadString();
            string content   = packet.ReadString();
            bool   isPay     = packet.ReadBoolean();
            int    validDate = packet.ReadInt();
            int    money     = packet.ReadInt();

            eBageType bag1   = (eBageType)packet.ReadByte();
            int       place1 = packet.ReadInt();
            eBageType bag2   = (eBageType)packet.ReadByte();
            int       place2 = packet.ReadInt();
            eBageType bag3   = (eBageType)packet.ReadByte();
            int       place3 = packet.ReadInt();
            eBageType bag4   = (eBageType)packet.ReadByte();
            int       place4 = packet.ReadInt();

            if ((money != 0 || place1 != -1 || place2 != -1 || place3 != -1 || place4 != -1) && (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked))
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked"));
                pkg.WriteBoolean(false);
                client.Out.SendTCP(pkg);
                return(1);
            }

            using (PlayerBussiness db = new PlayerBussiness())
            {
                PlayerInfo user;
                GamePlayer player = Managers.WorldMgr.GetClientByPlayerNickName(nickName);
                if (player == null)
                {
                    user = db.GetUserSingleByNickName(nickName);
                }
                else
                {
                    user = player.PlayerCharacter;
                }

                if (user != null && !string.IsNullOrEmpty(nickName))
                {
                    if (user.NickName != client.Player.PlayerCharacter.NickName)
                    {
                        client.Player.SaveIntoDatabase();

                        //附件内容描述(例:邮件最后一行标注附件为:1、大喇叭x5;2、强化石4级x1;3、极•烈火x1;4、点券999999;5、强化公式-朱雀x5
                        MailInfo message = new MailInfo();
                        message.SenderID   = client.Player.PlayerCharacter.ID;
                        message.Sender     = client.Player.PlayerCharacter.NickName;
                        message.ReceiverID = user.ID;
                        message.Receiver   = user.NickName;
                        message.IsExist    = true;
                        message.Gold       = 0;
                        message.Money      = 0;

                        message.Title   = title;
                        message.Content = content;
                        List <ItemInfo>  items       = new List <ItemInfo>();
                        List <eBageType> bagType     = new List <eBageType>();
                        StringBuilder    annexRemark = new StringBuilder();
                        annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.AnnexRemark"));
                        int index = 0;

                        if (place1 != -1)
                        {
                            ItemInfo goods = client.Player.GetItemAt(bag1, place1);
                            if (goods != null && !goods.IsBinds)
                            {
                                message.Annex1Name = goods.Template.Name;
                                message.Annex1     = goods.ItemID.ToString();
                                items.Add(goods);
                                bagType.Add(bag1);
                                //annexRemark = message.Annex1Name + "x" + goods.Count;
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                //annexRemark.Append(annexRemark.Length);
                                annexRemark.Append(message.Annex1Name);
                                annexRemark.Append("x");
                                annexRemark.Append(goods.Count);
                                annexRemark.Append(";");
                                //goods.UserID = 0;
                                //client.Player.RemoveAllItem(goods, true, ItemRemoveType.Mail);
                            }
                        }

                        if (place2 != -1)
                        {
                            ItemInfo goods = client.Player.GetItemAt(bag2, place2);
                            if (goods != null && !goods.IsBinds)
                            {
                                message.Annex2Name = goods.Template.Name;
                                message.Annex2     = goods.ItemID.ToString();
                                items.Add(goods);
                                bagType.Add(bag2);
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                annexRemark.Append(message.Annex2Name);
                                annexRemark.Append("x");
                                annexRemark.Append(goods.Count);
                                annexRemark.Append(";");
                                //goods.UserID = 0;
                                //client.Player.RemoveAllItem(goods, true, ItemRemoveType.Mail);
                            }
                        }

                        if (place3 != -1)
                        {
                            ItemInfo goods = client.Player.GetItemAt(bag3, place3);
                            if (goods != null && !goods.IsBinds)
                            {
                                message.Annex3Name = goods.Template.Name;
                                message.Annex3     = goods.ItemID.ToString();
                                items.Add(goods);
                                bagType.Add(bag3);
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                annexRemark.Append(message.Annex3Name);
                                annexRemark.Append("x");
                                annexRemark.Append(goods.Count);
                                annexRemark.Append(";");
                            }
                        }

                        if (place4 != -1)
                        {
                            ItemInfo goods = client.Player.GetItemAt(bag4, place4);
                            if (goods != null && !goods.IsBinds)
                            {
                                message.Annex4Name = goods.Template.Name;
                                message.Annex4     = goods.ItemID.ToString();
                                items.Add(goods);
                                bagType.Add(bag4);
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                annexRemark.Append(message.Annex4Name);
                                annexRemark.Append("x");
                                annexRemark.Append(goods.Count);
                                annexRemark.Append(";");
                            }
                        }

                        if (isPay)
                        {
                            if (money <= 0 || (string.IsNullOrEmpty(message.Annex1) && string.IsNullOrEmpty(message.Annex2) && string.IsNullOrEmpty(message.Annex3) && string.IsNullOrEmpty(message.Annex4)))
                            {
                                return(1);
                            }

                            message.ValidDate = validDate == 1 ? 1 : 6;
                            message.Type      = (int)eMailType.Payment;
                            if (money > 0)
                            {
                                message.Money = money;
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.PayMoney"));
                                annexRemark.Append(money);
                                annexRemark.Append(";");
                            }
                        }
                        else
                        {
                            message.Type = (int)eMailType.Common;
                            if (client.Player.PlayerCharacter.Money >= money && money > 0)
                            {
                                message.Money = money;
                                client.Player.RemoveMoney(money);
                                LogMgr.LogMoneyAdd(LogMoneyType.Mail, LogMoneyType.Mail_Send, client.Player.PlayerCharacter.ID, money, client.Player.PlayerCharacter.Money, 0, 0, 0, 0, "", "", "");
                                index++;
                                annexRemark.Append(index);
                                annexRemark.Append("、");
                                annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.Money"));
                                annexRemark.Append(money);
                                annexRemark.Append(";");
                            }
                        }

                        if (annexRemark.Length > 1)
                        {
                            message.AnnexRemark = annexRemark.ToString();
                        }

                        if (db.SendMail(message))
                        {
                            client.Player.RemoveGold(100);
                            for (int i = 0; i < items.Count; i++)
                            {
                                items[i].UserID = 0;
                                client.Player.RemoveItem(items[i]);
                                items[i].IsExist = true;
                            }
                        }

                        client.Player.SaveIntoDatabase();
                        pkg.WriteBoolean(true);

                        //发送通知
                        if (user.State != 0)
                        {
                            client.Player.Out.SendMailResponse(user.ID, eMailRespose.Receiver);
                        }
                        client.Player.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Send);
                    }
                    else
                    {
                        msg = "UserSendMailHandler.Failed1";
                        pkg.WriteBoolean(false);
                    }
                }
                else
                {
                    eMsg = eMessageType.ERROR;
                    msg  = "UserSendMailHandler.Failed2";
                    pkg.WriteBoolean(false);
                }
            }
            client.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg));
            client.Out.SendTCP(pkg);

            return(0);
        }
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();
            StringBuilder str      = new StringBuilder();
            int           mustGold = AppConfig.AppSettings["ComposeGold"].ConvertToInt(1000);
            int           result2;

            if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked)
            {
                player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                result2 = 0;
            }
            else
            {
                if (player.PlayerCharacter.Gold < mustGold)
                {
                    player.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("ItemComposeHandler.NoMoney", new object[0]));
                    result2 = 0;
                }
                else
                {
                    bool     isBinds       = false;
                    bool     consortia     = packet.ReadBoolean();
                    ItemInfo item          = player.HideBag.GetItemAt(1);
                    ItemInfo stone         = player.HideBag.GetItemAt(2);
                    ItemInfo luck          = null;
                    string   BeginProperty = "";
                    if (item != null)
                    {
                        BeginProperty = item.GetPropertyString();
                    }
                    string AddItem = null;
                    if (item != null && stone != null && item.Template.CanCompose && (item.Template.CategoryID < 10 || item.Template.CategoryID >= 18) && stone.Template.CategoryID == 11 && stone.Template.Property1 == 1)
                    {
                        isBinds = (isBinds || item.IsBinds);
                        isBinds = (isBinds || stone.IsBinds);
                        str.Append(string.Concat(new object[]
                        {
                            item.ItemID,
                            ":",
                            item.TemplateID,
                            ",",
                            stone.ItemID,
                            ":",
                            stone.TemplateID,
                            ","
                        }));
                        bool   result      = false;
                        byte   isSuccess   = 1;
                        bool   isGod       = false;
                        double probability = (double)stone.Template.Property2;
                        luck = player.HideBag.GetItemAt(0);
                        if (luck != null)
                        {
                            if (luck.Template.CategoryID == 11 && luck.Template.Property1 == 3)
                            {
                                isBinds = (isBinds || luck.IsBinds);
                                object obj = AddItem;
                                AddItem = string.Concat(new object[]
                                {
                                    obj,
                                    "|",
                                    luck.ItemID,
                                    ":",
                                    luck.Template.Name,
                                    "|",
                                    stone.ItemID,
                                    ":",
                                    stone.Template.Name
                                });
                                probability *= (double)(luck.Template.Property2 + 100);
                                str.Append(string.Concat(new object[]
                                {
                                    luck.ItemID,
                                    ":",
                                    luck.TemplateID,
                                    ","
                                }));
                            }
                            else
                            {
                                probability *= 100.0;
                                luck         = null;
                            }
                        }
                        else
                        {
                            probability *= 100.0;
                        }
                        if (consortia)
                        {
                            ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(player.PlayerCharacter.ConsortiaID);
                            using (ConsortiaBussiness csbs = new ConsortiaBussiness())
                            {
                                ConsortiaEquipControlInfo cecInfo = csbs.GetConsortiaEuqipRiches(player.PlayerCharacter.ConsortiaID, 0, 2);
                                if (info == null)
                                {
                                    player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemStrengthenHandler.Fail", new object[0]));
                                }
                                else
                                {
                                    if (player.PlayerCharacter.Riches < cecInfo.Riches)
                                    {
                                        player.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("ItemStrengthenHandler.FailbyPermission", new object[0]));
                                        result2 = 1;
                                        return(result2);
                                    }
                                    probability *= 1.0 + 0.1 * (double)info.SmithLevel;
                                }
                            }
                        }
                        int rand = ItemComposeHandler.random.Next(10000);
                        switch (stone.Template.Property3)
                        {
                        case 1:
                            if (stone.Template.Property4 > item.AttackCompose)
                            {
                                result = true;
                                if (probability > (double)rand)
                                {
                                    isSuccess          = 0;
                                    item.AttackCompose = stone.Template.Property4;
                                }
                                else
                                {
                                    if (!isGod)
                                    {
                                    }
                                }
                            }
                            break;

                        case 2:
                            if (stone.Template.Property4 > item.DefendCompose)
                            {
                                result = true;
                                if (probability > (double)rand)
                                {
                                    isSuccess          = 0;
                                    item.DefendCompose = stone.Template.Property4;
                                }
                                else
                                {
                                    if (!isGod)
                                    {
                                    }
                                }
                            }
                            break;

                        case 3:
                            if (stone.Template.Property4 > item.AgilityCompose)
                            {
                                result = true;
                                if (probability > (double)rand)
                                {
                                    isSuccess           = 0;
                                    item.AgilityCompose = stone.Template.Property4;
                                }
                                else
                                {
                                    if (!isGod)
                                    {
                                    }
                                }
                            }
                            break;

                        case 4:
                            if (stone.Template.Property4 > item.LuckCompose)
                            {
                                result = true;
                                if (probability > (double)rand)
                                {
                                    isSuccess        = 0;
                                    item.LuckCompose = stone.Template.Property4;
                                }
                                else
                                {
                                    if (!isGod)
                                    {
                                    }
                                }
                            }
                            break;
                        }
                        if (result)
                        {
                            item.IsBinds = isBinds;
                            if (isSuccess != 0)
                            {
                                str.Append("false!");
                                result = false;
                                if (!isGod)
                                {
                                    if (item.Template.Level < 3)
                                    {
                                    }
                                }
                            }
                            else
                            {
                                str.Append("true!");
                                result = true;
                                player.OnItemCompose(stone.TemplateID);
                            }
                            //LogMgr.LogItemAdd(player.PlayerCharacter.ID, LogItemType.Compose, BeginProperty, item, AddItem, Convert.ToInt32(result));
                            stone.Count--;
                            player.UpdateItem(stone);
                            if (luck != null)
                            {
                                luck.Count--;
                                player.UpdateItem(luck);
                            }
                            player.RemoveGold(mustGold);
                            player.HideBag.UpdateItem(item);
                            pkg.WriteByte(isSuccess);
                            player.Out.SendTCP(pkg);
                            player.SaveIntoDatabase();
                        }
                        else
                        {
                            player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemComposeHandler.NoLevel", new object[0]));
                        }
                    }
                    else
                    {
                        player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemComposeHandler.Fail", new object[0]));
                    }
                    result2 = 0;
                }
            }
            return(result2);
        }
Exemple #29
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();

            StringBuilder str             = new StringBuilder();
            int           mustGold        = 40000;
            bool          _moveHole       = packet.ReadBoolean();
            bool          _moveFivSixHole = packet.ReadBoolean();

            ItemInfo transferBefore = client.Player.StoreBag2.GetItemAt(0);
            ItemInfo transferAfter  = client.Player.StoreBag2.GetItemAt(1);

            //未开始
            if (transferBefore != null && transferAfter != null &&
                transferBefore.Template.CategoryID == transferAfter.Template.CategoryID &&
                //transferBefore.Template.CategoryID < 10 &&
                transferAfter.Count == 1 && transferBefore.Count == 1 &&
                transferBefore.IsValidItem() && transferAfter.IsValidItem())
            {
                if (client.Player.PlayerCharacter.Gold < mustGold)
                {
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("itemtransferhandler.nogold"));
                    return(1);
                }
                client.Player.RemoveGold(mustGold);

                if (transferBefore.Template.CategoryID == 7 || transferAfter.Template.CategoryID == 7)
                {
                    ItemTemplateInfo newTemp0 = null;
                    ItemTemplateInfo newTemp1 = null;
                    ItemInfo         newItem0 = null;
                    ItemInfo         newItem1 = null;
                    int _temID0 = transferBefore.TemplateID;
                    int _temID1 = transferAfter.TemplateID;

                    GetWeaponID(ref _temID0, ref _temID1);

                    newTemp0 = Bussiness.Managers.ItemMgr.FindItemTemplate(_temID0);
                    newTemp1 = Bussiness.Managers.ItemMgr.FindItemTemplate(_temID1);
                    if (newTemp0 != null)
                    {
                        newItem0 = ItemInfo.CreateWeapon(newTemp0, transferBefore, (int)ItemAddType.Strengthen);
                    }
                    transferBefore = newItem0;
                    if (newTemp1 != null)
                    {
                        newItem1 = ItemInfo.CreateWeapon(newTemp1, transferAfter, (int)ItemAddType.Strengthen);
                    }
                    transferAfter = newItem1;
                }

                StrengthenMgr.InheritTransferProperty(ref transferBefore, ref transferAfter, _moveHole, _moveFivSixHole);

                client.Player.StoreBag2.ClearBag();
                client.Player.StoreBag2.AddItemTo(transferBefore, 0);
                client.Player.StoreBag2.AddItemTo(transferAfter, 1);
                client.Player.SaveIntoDatabase();
                pkg.WriteByte(0);
                client.Out.SendTCP(pkg);
            }
            else
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("itemtransferhandler.nocondition"));
            }

            return(0);
        }
Exemple #30
0
        //0友好,1黑名单
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            pkg.ClearContext();

            string nickName = packet.ReadString();
            int    relation = packet.ReadInt();

            if (relation < 0 || relation > 1)
            {
                return(1);
            }

            using (PlayerBussiness db = new PlayerBussiness())
            {
                PlayerInfo user   = null;
                GamePlayer player = Managers.WorldMgr.GetClientByPlayerNickName(nickName);
                if (player != null)
                {
                    user = player.PlayerCharacter;
                }
                else
                {
                    user = db.GetUserSingleByNickName(nickName);
                }
                if (!string.IsNullOrEmpty(nickName) && user != null)
                {
                    if (!client.Player.Friends.ContainsKey(user.ID) || client.Player.Friends[user.ID] != relation)
                    {
                        FriendInfo friend = new FriendInfo();
                        friend.FriendID = user.ID;
                        friend.IsExist  = true;
                        friend.Remark   = "";
                        friend.UserID   = client.Player.PlayerCharacter.ID;
                        friend.Relation = relation;
                        if (db.AddFriends(friend))
                        {
                            client.Player.FriendsAdd(user.ID, relation);
                            pkg.WriteInt(user.ID);
                            pkg.WriteString(user.NickName);
                            pkg.WriteBoolean(user.Sex);
                            pkg.WriteString(user.Style);
                            pkg.WriteString(user.Colors);
                            pkg.WriteString(user.Skin);
                            pkg.WriteInt(user.State == 1 ? 1 : 0);
                            pkg.WriteInt(user.Grade);
                            pkg.WriteInt(user.Hide);
                            pkg.WriteString(user.ConsortiaName);
                            pkg.WriteInt(user.Total);
                            pkg.WriteInt(user.Escape);
                            pkg.WriteInt(user.Win);
                            pkg.WriteInt(user.Offer);
                            pkg.WriteInt(user.Repute);
                            pkg.WriteInt(relation);
                            pkg.WriteString(user.UserName);
                            pkg.WriteInt(user.Nimbus);
                            pkg.WriteInt(user.FightPower);
                            pkg.WriteInt(500);
                            pkg.WriteString("Honor");
                            if (relation != 1 && user.State != 0)
                            {
                                GSPacketIn response = new GSPacketIn((byte)ePackageType.FRIEND_RESPONSE, client.Player.PlayerCharacter.ID);
                                response.WriteInt(user.ID);
                                response.WriteString(client.Player.PlayerCharacter.NickName);
                                if (player != null)
                                {
                                    player.Out.SendTCP(response);
                                }
                                else
                                {
                                    GameServer.Instance.LoginServer.SendPacket(response);
                                }
                            }
                            client.Out.SendTCP(pkg);
                        }
                    }
                    else
                    {
                        client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("FriendAddHandler.Falied"));
                    }
                }
                else
                {
                    client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("FriendAddHandler.Success"));
                }
            }
            return(0);
        }