Exemple #1
0
        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.");
            }
        }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        /// <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);
            }
        }
Exemple #8
0
        /// <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);
        }
Exemple #9
0
        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));
        }
Exemple #10
0
        /// <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);
            }
        }
Exemple #11
0
        /// <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);
            }
        }
Exemple #12
0
        /// <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);
        }
Exemple #13
0
        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);
            }
        }