コード例 #1
0
ファイル: ChatManager.cs プロジェクト: gitter-badger/OpenORPG
 /// <summary>
 /// Broadcasts a message to all users in this chat channel.
 /// </summary>
 /// <param name="messagePacket">The message packet to send to this chat channel</param>
 public void SendMessage(ServerChatMessagePacket messagePacket)
 {
     foreach (var client in Clients)
     {
         SendToClient(messagePacket, client);
     }
 }
コード例 #2
0
ファイル: ChatHandler.cs プロジェクト: Erikai/OpenORPG
        public static void OnChatMessage(GameClient client, ClientChatMessagePacket packet)
        {
            var player = client.HeroEntity;
            var channel = ChatManager.Current.GetChannel(player.Zone.ChatChannel.Id);

            packet.Message.Trim();
            if (channel != null && packet.Message != string.Empty)
            {
                // Strip out any nasty HTML tags that a player might try and inject
                packet.Message = HtmlTools.StripTagsCharArray(packet.Message);

                // Send the actual message to the user as requested
                var newPacket = new ServerChatMessagePacket(player.Name, packet.Message, channel.Id);
                channel.SendMessage(newPacket);
            }
        }
コード例 #3
0
ファイル: ChatHandler.cs プロジェクト: gitter-badger/OpenORPG
        public static void OnChatMessage(GameClient client, ClientChatMessagePacket packet)
        {
            var player = client.HeroEntity;
            var zone = player.Zone;

            // Grab the service and fire off to it
            var chatService = zone.GetGameSystem<ChatService>();

            bool result;

            try
            {
                result = chatService.HandleMessage(player, packet);
            }
            catch (Exception exception)
            {
                // It's invalid, we should kick out and let the player know they need to retry
                var msg = new ServerSendGameMessagePacket(GameMessage.ChatCommandInvalid,
                    new List<string>() {packet.Message});
                player.Client.Send(msg);
                return;
            }

            if (!result)
            {
                var channel = ChatManager.Current.GetChannel(player.Zone.ChatChannel.Id);

                packet.Message = packet.Message.Trim();
                if (channel != null && packet.Message != string.Empty)
                {
                    // Strip out any nasty HTML tags that a player might try and inject
                    packet.Message = HtmlTools.StripTagsCharArray(packet.Message);

                    // Send the actual message to the user as requested
                    var newPacket = new ServerChatMessagePacket(player.Name, packet.Message, channel.Id);
                    channel.SendMessage(newPacket);
                }

            }
        }
コード例 #4
0
ファイル: ChatManager.cs プロジェクト: gitter-badger/OpenORPG
 private static void SendToClient(ServerChatMessagePacket messagePacket, GameClient client)
 {
     client.Send(messagePacket);
 }
コード例 #5
0
ファイル: ChatManager.cs プロジェクト: gitter-badger/OpenORPG
 public void SendMessageToAllBut(ServerChatMessagePacket messagePacket, Player player)
 {
     foreach (var client in Clients.Where(x => x.HeroEntity.Id != player.Id))
         SendToClient(messagePacket, client);
 }