예제 #1
0
        public void OnChat(CM_CHAT p)
        {
            uint   chanID = p.ChannelID;
            string msg    = p.Message;
            ConcurrentDictionary <ulong, ChatSession> clients = null;

            if (chanID == ChannelID)
            {
                ChatClientManager.Instance.ClientsByChannel.TryGetValue(Channel, out clients);
            }
            else if (chanID == PartyChannelID)
            {
                ChatClientManager.Instance.ClientsByChannel.TryGetValue(PartyChannel, out clients);
            }
            if (clients != null)
            {
                foreach (KeyValuePair <ulong, ChatSession> i in clients)
                {
                    SM_CHAT p1 = new SM_CHAT()
                    {
                        ChannelID = chanID,
                        ActorID   = ActorID
                    };
                    p1.PutMessage(Name, msg);
                    i.Value.Network.SendPacket(p1);
                }
            }
        }
예제 #2
0
        public void OnChat(CM_CHAT p)
        {
            string recipient = p.Recipient;
            string txt       = p.Text;

            if (!Commands.Instance.ProcessCommand(this, txt))
            {
                ChatArgument arg = new ChatArgument()
                {
                    Sender    = chara,
                    Type      = p.Type,
                    Recipient = recipient,
                    Message   = txt
                };
                switch (p.Type)
                {
                case ChatType.Whisper:
                    GameSession temp = GameClientManager.Instance.FindClient(p.Recipient);
                    if (temp != null)
                    {
                        map.OnEvent(MapEvents.CHAT, arg, chara, null);
                        map.OnEvent(MapEvents.CHAT, arg, temp.chara, null);
                    }
                    else
                    {
                        SM_CHAT_RESPONSE r = new SM_CHAT_RESPONSE()
                        {
                            MessageId = 17
                        };
                        Network.SendPacket(r);
                    }
                    break;

                case ChatType.UnknownParty:
                    break;

                case ChatType.General:
                default:
                    arg.Recipient = null;
                    map.SendEventToAllActorsWhoCanSeeActor(MapEvents.CHAT, arg, chara, true);
                    break;
                }
            }
        }