예제 #1
0
        public void SendChatMessage(IClient client, string message)
        {
            var level      = client.Session.Level;
            var cmsMessage = new ChatMessageServerMessage
            {
                // To prevent the client from viewing profile and stuff.
                UserId = level.Avatar.Id,
                HomeId = level.Avatar.Id,

                League    = 22,
                Name      = "Command System",
                ExpLevels = 100,
                Message   = message,
            };

            client.SendMessage(cmsMessage);
        }
        private Task HandleChatMessageClient(IClient client, Message message, CancellationToken cancellationToken)
        {
            var senderLevel = client.Session.Level;
            var cmcMessage  = (ChatMessageClientMessage)message;

            if (cmcMessage.TextMessage.StartsWith("/"))
            {
                ChatManager.Handle(client, cmcMessage.TextMessage);
            }
            else
            {
                if (cmcMessage.TextMessage.ToLower().Contains("savegame"))
                {
                    ChatManager.SendChatMessage(client, "Did you know? 'savegame' isn't a command and does nothing? ^^");
                }

                var cmsMessage = new ChatMessageServerMessage
                {
                    UserId    = senderLevel.Avatar.Id,
                    HomeId    = senderLevel.Avatar.Id,
                    League    = senderLevel.Avatar.League,
                    Name      = senderLevel.Avatar.Name,
                    ExpLevels = senderLevel.Avatar.ExpLevels,
                    Alliance  = senderLevel.Avatar.Alliance,
                    Message   = cmcMessage.TextMessage,
                };

                // TODO: Might want to create Chat Rooms to reduce network usage.

                // Sends the message to all the clients.
                foreach (var c in Server.Clients)
                {
                    c.SendMessage(cmsMessage);
                }
            }

            return(Task.FromResult <object>(null));
        }