public static void HandleJoinChannel(IRealmClient client, RealmPacketIn packet) { //int channelNumber = packet.ReadInt32(); uint channelId = packet.ReadUInt32(); // used for lookup in dbc for flags byte unk = packet.ReadByte(); // Unknown byte unk2 = packet.ReadByte(); // Unknown string channelName = packet.ReadCString(); string password = packet.ReadCString(); var group = ChatChannelGroup.GetGroup(client.ActiveCharacter.Faction.Group); if (group == null) { return; } if (string.IsNullOrEmpty(channelName)) { return; } var chan = group.GetChannel(channelName, channelId, true); chan.TryJoin(client.ActiveCharacter, password, false); }
public override void Process(CmdTrigger <RealmServerCmdArgs> trigger) { var ticket = trigger.Args.TicketHandler.HandlingTicket; if (ticket != null) { Character user = ticket.Owner; if (ticket.Owner == null) { trigger.Reply("The owner of this Ticket is offline."); } else { var me = new ChannelMember(trigger.Args.User); var ircChannel = new ChatChannelGroup(FactionGroup.Invalid); var chan = new ChatChannel(ircChannel); chan.Invite(me, user); //user.SendMessage(trigger.Args.User, // "A staff member wants to chat with you about your ticket. Please do not leave the channel."); } } else { trigger.Reply("You must have a ticket selected."); } }
public static void HandleLeaveChannel(IRealmClient client, RealmPacketIn packet) { var channelNumber = packet.ReadUInt32(); // unk var channelName = packet.ReadCString(); var chan = ChatChannelGroup.RetrieveChannel(client.ActiveCharacter, channelName); if (chan != null) { chan.Leave(client.ActiveCharacter, false); } }
/// <summary>Handles an incoming channel leave request</summary> /// <param name="client">the client the incoming packet belongs to</param> /// <param name="packet">the full packet</param> public static void HandleLeaveChannel(IRealmClient client, RealmPacketIn packet) { int num = (int)packet.ReadUInt32(); string channelName = packet.ReadCString(); ChatChannel chatChannel = ChatChannelGroup.RetrieveChannel(client.ActiveCharacter, channelName); if (chatChannel == null) { return; } chatChannel.Leave(client.ActiveCharacter, false); }
public override void Process(CmdTrigger <RealmServerCmdArgs> trigger) { var wcellUser = trigger.Args.User as WCellUser; var chanName = trigger.Text.NextWord(); var targetUsr = trigger.Args.GetCharArgumentOrTarget(trigger, trigger.Text.NextWord()); ChannelMember me = new ChannelMember(wcellUser); ChatChannelGroup ircChannelGroup = new ChatChannelGroup(FactionGroup.Invalid); var chatChan = new ChatChannel(ircChannelGroup, chanName); chatChan.Invite(me, targetUsr); //ChatMgr.OnChat += new ChatNotifyDelegate(ChatMgr_OnChat); }
public static void HandleListChannel(IRealmClient client, RealmPacketIn packet) { var channelName = packet.ReadCString(); var chan = ChatChannelGroup.RetrieveChannel(client.ActiveCharacter, channelName); if (chan != null) { SendChannelList(client, chan); } else { SendNotOnChannelReply(client, channelName); } }
/// <summary>Handles an incoming channel list request</summary> /// <param name="client">the client the incoming packet belongs to</param> /// <param name="packet">the full packet</param> public static void HandleListChannel(IRealmClient client, RealmPacketIn packet) { string str = packet.ReadCString(); ChatChannel chan = ChatChannelGroup.RetrieveChannel((IUser)client.ActiveCharacter, str); if (chan != null) { ChannelHandler.SendChannelList((IPacketReceiver)client, chan); } else { ChannelHandler.SendNotOnChannelReply((IPacketReceiver)client, str); } }
/// <summary>Handles an incoming channel join request</summary> /// <param name="client">the client the incoming packet belongs to</param> /// <param name="packet">the full packet</param> public static void HandleJoinChannel(IRealmClient client, RealmPacketIn packet) { uint channelId = packet.ReadUInt32(); int num1 = packet.ReadByte(); int num2 = packet.ReadByte(); string name = packet.ReadCString(); string password = packet.ReadCString(); ChatChannelGroup group = ChatChannelGroup.GetGroup(client.ActiveCharacter.Faction.Group); if (group == null || string.IsNullOrEmpty(name)) { return; } group.GetChannel(name, channelId, true).TryJoin(client.ActiveCharacter, password, false); }
private void CreateChatChannels() { ChatChannelGroup alliance = ChatChannelGroup.Alliance; ChatChannelGroup horde = ChatChannelGroup.Horde; if (Template.Flags.HasFlag(ZoneFlags.Arena)) { return; } AllianceChatChannels.Add(m_allianceLocalDefenseChannel = alliance.CreateLocalDefenseChannel(Template)); HordeChatChannels.Add(m_hordeLocalDefenseChannel = horde.CreateLocalDefenseChannel(Template)); AllianceChatChannels.Add(m_allianceGeneralChannel = alliance.CreateGeneralChannel(Template)); HordeChatChannels.Add(m_hordeGeneralChannel = horde.CreateGeneralChannel(Template)); }
/// <summary> /// Lets the player join/leave the appropriate chat-channels /// </summary> /// <param name="chr">the player</param> private void UpdateChannels(Character chr, Zone oldZone) { var newChannels = GetChatChannels(chr.FactionGroup); if (oldZone != null) { var oldChannels = oldZone.GetChatChannels(chr.FactionGroup); if (oldZone.Template.IsCity) { ChatChannelGroup.GetGroup(chr.FactionGroup).TradeChannel.Leave(chr, false); } foreach (var oldChnl in oldChannels) { if (!newChannels.Contains(oldChnl)) { oldChnl.Leave(chr, false); } } foreach (var newChnl in newChannels) { if (!oldChannels.Contains(newChnl)) { newChnl.TryJoin(chr); } } } else { foreach (var newChnl in newChannels) { newChnl.TryJoin(chr); } } if (Template.IsCity) { ChatChannelGroup.GetGroup(chr.FactionGroup).TradeChannel.TryJoin(chr); } }
/// <summary> /// Handles a request of getting the number of members in a channel /// </summary> /// <param name="client">the client the incoming packet belongs to</param> /// <param name="packet">the full packet</param> public static void HandleMemberCountRequest(IRealmClient client, RealmPacketIn packet) { string channelName = packet.ReadCString(); Character activeCharacter = client.ActiveCharacter; if (activeCharacter == null) { SendMemberCountReply(client, channelName, 0, 0U); } else { ChatChannel chatChannel = ChatChannelGroup.RetrieveChannel(client.ActiveCharacter, channelName); if (chatChannel == null) { return; } SendMemberCountReply(activeCharacter, chatChannel.Name, (byte)chatChannel.Flags, (uint)chatChannel.MemberCount); } }
/// <summary> /// Lets the player join/leave the appropriate chat-channels /// </summary> /// <param name="chr">the player</param> private void UpdateChannels(Character chr, Zone oldZone) { IList <ChatChannel> chatChannels1 = GetChatChannels(chr.FactionGroup); if (oldZone != null) { IList <ChatChannel> chatChannels2 = oldZone.GetChatChannels(chr.FactionGroup); if (oldZone.Template.IsCity) { ChatChannelGroup.GetGroup(chr.FactionGroup).TradeChannel.Leave(chr, false); } foreach (ChatChannel chatChannel in chatChannels2) { if (!chatChannels1.Contains(chatChannel)) { chatChannel.Leave(chr, false); } } foreach (ChatChannel chatChannel in chatChannels1) { if (!chatChannels2.Contains(chatChannel)) { chatChannel.TryJoin(chr); } } } else { foreach (ChatChannel chatChannel in chatChannels1) { chatChannel.TryJoin(chr); } } if (!Template.IsCity) { return; } ChatChannelGroup.GetGroup(chr.FactionGroup).TradeChannel.TryJoin(chr); }
public static void HandleMemberCountRequest(IRealmClient client, RealmPacketIn packet) { var channelName = packet.ReadCString(); var chr = client.ActiveCharacter; if (chr == null) { // Queried before finishing login: Reply with 0 for now. SendMemberCountReply(client, channelName, 0, 0); } else { var chan = ChatChannelGroup.RetrieveChannel(client.ActiveCharacter, channelName); if (chan == null) { return; } SendMemberCountReply(chr, chan.Name, (byte)chan.Flags, (uint)chan.MemberCount); } }