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); } } }
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; } } }