예제 #1
0
        private static void HandleWorldChat(GameSession session, string message, ChatType type)
        {
            Item voucher = session.Player.Inventory.Items.Values.FirstOrDefault(x => x.Tag == "FreeWorldChatCoupon");

            if (voucher != null)
            {
                session.Send(NoticePacket.Notice(SystemNotice.UsedWorldChatVoucher, NoticeType.ChatAndFastText));
                InventoryController.Consume(session, voucher.Uid, 1);
            }
            else if (!session.Player.Wallet.RemoveMerets(30))
            {
                session.Send(ChatPacket.Error(session.Player, SystemNotice.InsufficientMerets, ChatType.NoticeAlert));
                return;
            }

            MapleServer.BroadcastPacketAll(ChatPacket.Send(session.Player, message, type));
        }
예제 #2
0
        private static void HandleWhisperChat(GameSession session, string recipient, string message)
        {
            Player recipientPlayer = GameServer.Storage.GetPlayerByName(recipient);

            if (recipientPlayer == null)
            {
                session.Send(ChatPacket.Error(session.Player, SystemNotice.UnableToWhisper, ChatType.WhisperFail));
                return;
            }

            if (BuddyManager.IsBlocked(session.Player, recipientPlayer))
            {
                session.Send(ChatPacket.Error(session.Player, SystemNotice.UnableToWhisper, ChatType.WhisperFail));
                return;
            }

            recipientPlayer.Session.Send(ChatPacket.Send(session.Player, message, ChatType.WhisperFrom));
            session.Send(ChatPacket.Send(recipientPlayer, message, ChatType.WhisperTo));
        }
예제 #3
0
        private static void HandleSuperChat(GameSession session, string message, ChatType type)
        {
            if (session.Player.SuperChat == 0)
            {
                return;
            }

            Item superChatItem = session.Player.Inventory.Items.Values.FirstOrDefault(x => x.Function.Id == session.Player.SuperChat);

            if (superChatItem == null)
            {
                session.Player.SuperChat = 0;
                session.Send(SuperChatPacket.Deselect(session.FieldPlayer));
                session.Send(ChatPacket.Error(session.Player, SystemNotice.InsufficientSuperChatThemes, ChatType.NoticeAlert));
                return;
            }

            MapleServer.BroadcastPacketAll(ChatPacket.Send(session.Player, message, type));
            InventoryController.Consume(session, superChatItem.Uid, 1);
            session.Send(SuperChatPacket.Deselect(session.FieldPlayer));
            session.Player.SuperChat = 0;
        }