public override void OnHandle(PacketChat packet)
        {
            base.OnHandle(packet);

            var user = this.User;

            Server.Instance.Broadcast($"[{user.DisplayName}] : {packet.Message}");
        }
Example #2
0
        public static void HandleServerChatMessage(Packet packet)
        {
            PacketChat chatPacket = packet.Holder.Chat = new PacketChat();
            var        text       = new CreatureText
            {
                Type       = (ChatMessageType)packet.ReadByteE <ChatMessageTypeNew>("SlashCmd"),
                Language   = packet.ReadByteE <Language>("Language"),
                SenderGUID = packet.ReadPackedGuid128("SenderGUID")
            };

            packet.ReadPackedGuid128("SenderGuildGUID");
            packet.ReadPackedGuid128("WowAccountGUID");
            text.ReceiverGUID = packet.ReadPackedGuid128("TargetGUID");
            packet.ReadUInt32("TargetVirtualAddress");
            packet.ReadUInt32("SenderVirtualAddress");
            packet.ReadPackedGuid128("PartyGUID");
            packet.ReadUInt32("AchievementID");
            packet.ReadSingle("DisplayTime");

            var bits24     = packet.ReadBits(11);
            var bits1121   = packet.ReadBits(11);
            var prefixLen  = packet.ReadBits(5);
            var channelLen = packet.ReadBits(7);
            var textLen    = packet.ReadBits(12);
            var flags      = packet.ReadBits("ChatFlags", ClientVersion.AddedInVersion(ClientVersionBuild.V6_1_2_19802) ? 11 : 10);

            packet.ReadBit("HideChatLog");
            packet.ReadBit("FakeSenderName");

            text.SenderName   = packet.ReadWoWString("Sender Name", bits24);
            text.ReceiverName = packet.ReadWoWString("Receiver Name", bits1121);
            packet.ReadWoWString("Addon Message Prefix", prefixLen);
            packet.ReadWoWString("Channel Name", channelLen);

            chatPacket.Text     = text.Text = packet.ReadWoWString("Text", textLen);
            chatPacket.Sender   = text.SenderGUID.ToUniversalGuid();
            chatPacket.Target   = text.ReceiverGUID.ToUniversalGuid();
            chatPacket.Language = (int)text.Language;
            chatPacket.Type     = (int)text.Type;
            chatPacket.Flags    = flags;

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
 public void receiveChatPacket(PacketChat chat)
 {
     if (chat.destination == "monitor")
     {
         _server.sendPackToMonitor(chat);
         Console.WriteLine("Sent Pack to monitor");
     }
     else
     {
         _server.sendPacketToClient(chat, chat.destinationID);
         Console.WriteLine("Sent Pack to client");
     }
 }
Example #4
0
        private void textBox8_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                Chatbox.AppendText("[you] " + this.Sendbox.Text + Environment.NewLine);

                //send packet to the server
                PacketChat chat = new PacketChat(this.Sendbox.Text + Environment.NewLine, hostName, "monitor", id);
                this.serverConnection.WritePacket(chat);
                Console.WriteLine("Sent message");
                Sendbox.Clear();
            }
        }
        public void recievePacketChat(PacketChat chat)
        {
            //append text to the App form
            //this.client.appendTextToChat("[dokter] " + chat.messageText + Environment.NewLine);

            List <Client> clients = this.client.clients;

            foreach (Client client in clients)
            {
                if (client.Identifier.Id == chat.destinationID)
                {
                    client.Panel.changeChatBoxText("[dokter] " + chat.messageText + Environment.NewLine);
                }
            }
        }
Example #6
0
        private void SessionHandler()
        {
            //Send starting chat packet
            PacketChat chat = new PacketChat("Session started...", panel.id.Username, "client", panel.id.Id);

            connection.writePacket(chat);
            if (radioButton_Time.Checked)
            {
                int  tt   = int.Parse(timeTextBox.Text);
                int  min  = tt / 100;
                int  sec  = tt % 100;
                bool flag = true;
                while (flag)
                {
                    //Decrease by 1 second
                    sec--;
                    //Check if seconds are over and minutes should be decreased.
                    if (sec == 0)
                    {
                        if (min == 0)
                        {
                            PacketChat end = new PacketChat("Session ended...", panel.id.Username, "client", panel.id.Id);
                            connection.writePacket(end);
                            flag = false;
                        }

                        sec = 60;
                        min--;
                    }
                    Thread.Sleep(1000);
                }
            }
            else if (radioButton_Distance.Checked)
            {
                bool flag = true;
                while (flag)
                {
                    int distance = int.Parse(panel.ReturnDistanceTextBox().Text);
                    if (distance == 0)
                    {
                        PacketChat end = new PacketChat("Session ended...", panel.id.Username, "client", panel.id.Id);
                        connection.writePacket(end);
                        flag = false;
                    }
                }
            }
        }
        public void ThreadClient()
        {
            Console.WriteLine("{0}\tStarted{1}", GetHashCode(), "");
            while (TcpClient.Connected)
            {
                Packet packet = (Packet)formatter.Deserialize(Stream);
                packet.handleServerSide(this);
                Console.WriteLine("Packet received from: {0}", GetHashCode());
                //Console.WriteLine("packet received from {0}", packet.GetName());

                if (packet is PacketChat)
                {
                    PacketChat chatPacket = (PacketChat)packet;
                    Console.WriteLine("Hostname: {0}, destination: {1}, destinationID: {2}", chatPacket.hostName, chatPacket.destination, chatPacket.destinationID);
                }
            }
        }
        public void recieveChat(PacketChat pack)
        {
            Console.WriteLine("Recieved Chat Packet");

            form.Invoke((Action)(() =>
            {
                try
                {
                    form.showMessage(pack.destinationID, pack.messageText);
                }
                catch
                (Exception e)
                {
                    Console.WriteLine(e.Message);
                    //MessageBox.Show("No connection to the server");
                    //form.closeApplicaton();
                }
            }));
        }
 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
 {
     if (keyData == Keys.Enter && ReturnActualPowerTextBox().Focused)
     {
         ReturnChatInputTextBox().Select();
         RPMTextbox.Text = "text";
     }
     if (keyData == Keys.Enter && ReturnChatInputTextBox().Focused)
     {
         ReturnChatInputTextBox().Select();
         string chatText = ReturnChatInputTextBox().Text;
         changeChatBoxTextSelf(chatText);
         PacketChat chat = new PacketChat(chatText, id.Username, "client", id.Id);
         connection.writePacket(chat);
         chatInputTextBox.Clear();
         return(true);
     }
     return(base.ProcessCmdKey(ref msg, keyData));
 }
        public static void HandleServerChatMessage(Packet packet)
        {
            PacketChat chatPacket        = packet.Holder.Chat = new PacketChat();
            var        text              = new CreatureText();
            var        groupGUIDBytes    = new byte[8];
            var        guildGUIDBytes    = new byte[8];
            var        receiverGUIDBytes = new byte[8];
            var        senderGUIDBytes   = new byte[8];

            var bit1316 = !packet.ReadBit();

            packet.ReadBit("bit5269");
            packet.ReadBit(); // fake bit
            var hasSender = !packet.ReadBit();

            packet.StartBitStream(groupGUIDBytes, 6, 1, 7, 5, 4, 3, 2, 0);
            packet.ReadBit(); // fake bit
            var hasChannel = !packet.ReadBit();

            packet.StartBitStream(receiverGUIDBytes, 1, 5, 7, 4, 2, 0, 6, 3);
            packet.ReadBit("bit5268");
            var hasReceiver = !packet.ReadBit();

            int receiverLen = 0;

            if (hasReceiver)
            {
                receiverLen = (int)packet.ReadBits(11);
            }

            packet.ReadBit(); // fake bit
            packet.StartBitStream(guildGUIDBytes, 0, 6, 1, 5, 7, 3, 4, 2);
            var hasText   = !packet.ReadBit();
            var hasPrefix = !packet.ReadBit();

            int senderName = 0;

            if (hasSender)
            {
                senderName = (int)packet.ReadBits(11);
            }

            int textLen = 0;

            if (hasText)
            {
                textLen = (int)packet.ReadBits(12);
            }

            var hasConstTime = !packet.ReadBit();
            var hasAchi      = !packet.ReadBit();

            packet.ReadBit(); // fake bit
            packet.StartBitStream(senderGUIDBytes, 5, 4, 1, 0, 6, 2, 7, 3);

            int channelLen = 0;

            if (hasChannel)
            {
                channelLen = (int)packet.ReadBits(7);
            }

            var bit2630 = !packet.ReadBit();

            if (bit2630)
            {
                packet.ReadBitsE <ChatTag>("Chat Tag", 9);
            }

            var hasLang   = !packet.ReadBit();
            int prefixLen = 0;

            if (hasPrefix)
            {
                prefixLen = (int)packet.ReadBits(5);
            }

            if (hasPrefix)
            {
                packet.ReadWoWString("Addon Message Prefix", prefixLen);
            }

            packet.ParseBitStream(guildGUIDBytes, 3, 1, 5, 4, 6, 2, 0, 7);
            packet.ParseBitStream(receiverGUIDBytes, 7, 4, 2, 3, 1, 5, 6, 0);
            packet.ParseBitStream(senderGUIDBytes, 5, 0, 7, 4, 3, 2, 1, 6);
            packet.ParseBitStream(groupGUIDBytes, 3, 5, 2, 6, 4, 0, 1, 7);

            text.SenderGUID   = packet.WriteGuid("SenderGUID", senderGUIDBytes);
            text.ReceiverGUID = packet.WriteGuid("ReceiverGUID", receiverGUIDBytes);
            packet.WriteGuid("GroupGUID", groupGUIDBytes);
            packet.WriteGuid("GuildGUID", guildGUIDBytes);

            if (hasAchi)
            {
                packet.ReadInt32 <AchievementId>("Achievement Id");
            }

            if (hasReceiver)
            {
                text.ReceiverName = packet.ReadWoWString("Receiver Name", receiverLen);
            }

            text.Type = (ChatMessageType)packet.ReadByteE <ChatMessageTypeNew>("Chat type");
            if (hasText)
            {
                text.Text = packet.ReadWoWString("Text", textLen);
            }

            if (hasConstTime)
            {
                packet.ReadInt32("Constant time");
            }

            if (bit1316)
            {
                packet.ReadSingle("float1316");
            }

            if (hasChannel)
            {
                packet.ReadWoWString("Channel Name", channelLen);
            }

            if (hasSender)
            {
                text.SenderName = packet.ReadWoWString("Sender Name", senderName);
            }

            if (hasLang)
            {
                text.Language = packet.ReadByteE <Language>("Language");
            }

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }

            chatPacket.Text     = text.Text;
            chatPacket.Sender   = text.SenderGUID.ToUniversalGuid();
            chatPacket.Target   = text.ReceiverGUID.ToUniversalGuid();
            chatPacket.Language = (int?)text.Language ?? 0;
            chatPacket.Type     = (int?)text.Type ?? 0;
        }
Example #11
0
 protected override bool Process(PacketBase basePacket, PacketChat packet)
 {
     return(packet.Sender.Equals(playerGuid));
 }
Example #12
0
 protected override UniversalGuid?Process(PacketBase basePacket, PacketChat packet)
 {
     return(packet.Sender);
 }
Example #13
0
        public static void HandleServerChatMessage(Packet packet)
        {
            PacketChat chatPacket = packet.Holder.Chat = new PacketChat();
            var        text       = new CreatureText
            {
                Type       = packet.ReadByteE <ChatMessageType>("Type"),
                Language   = packet.ReadInt32E <Language>("Language"),
                SenderGUID = packet.ReadGuid("GUID")
            };

            packet.ReadInt32("Constant time");

            switch (text.Type)
            {
            case ChatMessageType.Achievement:
            case ChatMessageType.GuildAchievement:
            {
                packet.ReadGuid("Sender GUID");
                break;
            }

            case ChatMessageType.WhisperForeign:
            {
                packet.ReadInt32("Name Length");
                text.SenderName   = packet.ReadCString("Name");
                text.ReceiverGUID = packet.ReadGuid("Receiver GUID");
                break;
            }

            case ChatMessageType.BattlegroundNeutral:
            case ChatMessageType.BattlegroundAlliance:
            case ChatMessageType.BattlegroundHorde:
            {
                var target = packet.ReadGuid("Sender GUID");
                switch (target.GetHighType())
                {
                case HighGuidType.Creature:
                case HighGuidType.Vehicle:
                case HighGuidType.GameObject:
                case HighGuidType.Transport:
                case HighGuidType.Pet:
                    packet.ReadInt32("Sender Name Length");
                    packet.ReadCString("Sender Name");
                    break;
                }
                break;
            }

            case ChatMessageType.MonsterSay:
            case ChatMessageType.MonsterYell:
            case ChatMessageType.MonsterParty:
            case ChatMessageType.MonsterEmote:
            case ChatMessageType.MonsterWhisper:
            case ChatMessageType.RaidBossEmote:
            case ChatMessageType.RaidBossWhisper:
            case ChatMessageType.BattleNet:
            {
                packet.ReadInt32("Name Length");
                text.SenderName   = packet.ReadCString("Name");
                text.ReceiverGUID = packet.ReadGuid("Receiver GUID");
                switch (text.ReceiverGUID.GetHighType())
                {
                case HighGuidType.Creature:
                case HighGuidType.Vehicle:
                case HighGuidType.GameObject:
                case HighGuidType.Transport:
                    packet.ReadInt32("Receiver Name Length");
                    text.ReceiverName = packet.ReadCString("Receiver Name");
                    break;
                }
                break;
            }

            default:
            {
                if (packet.Opcode == Opcodes.GetOpcode(Opcode.SMSG_GM_MESSAGECHAT, Direction.ServerToClient))
                {
                    packet.ReadInt32("GMNameLength");
                    packet.ReadCString("GMSenderName");
                }

                if (text.Type == ChatMessageType.Channel)
                {
                    packet.ReadCString("Channel Name");
                }

                packet.ReadGuid("Sender GUID");
                break;
            }
            }

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_1_0_13914) && text.Language == Language.Addon)
            {
                packet.ReadCString("Addon Message Prefix");
            }

            packet.ReadInt32("Text Length");
            text.Text = packet.ReadCString("Text");

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V5_1_0_16309))
            {
                packet.ReadInt16E <ChatTag>("Chat Tag");
            }
            else
            {
                packet.ReadByteE <ChatTag>("Chat Tag");
            }

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_2_0_14333))
            {
                if (text.Type == ChatMessageType.RaidBossEmote || text.Type == ChatMessageType.RaidBossWhisper)
                {
                    packet.ReadSingle("Unk single");
                    packet.ReadByte("Unk byte");
                }
            }

            if (text.Type == ChatMessageType.Achievement || text.Type == ChatMessageType.GuildAchievement)
            {
                packet.ReadInt32 <AchievementId>("Achievement Id");
            }

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID != null && text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }

            chatPacket.Text     = text.Text;
            chatPacket.Sender   = text.SenderGUID.ToUniversalGuid();
            chatPacket.Target   = text.ReceiverGUID?.ToUniversalGuid();
            chatPacket.Language = (int)text.Language;
            chatPacket.Type     = (int)text.Type;
        }
Example #14
0
 public override void OnHandle(PacketChat packet)
 {
     base.OnHandle(packet);
     Client.Instance.Console.SendMessage(packet.Message);
 }
Example #15
0
 protected override bool Process(PacketBase basePacket, PacketChat packet)
 {
     return(packet.Sender.Type == UniversalHighGuid.Player);
 }
Example #16
0
        public static void HandleServerChatMessage(Packet packet)
        {
            PacketChat chatPacket = packet.Holder.Chat = new PacketChat();
            var        text       = new CreatureText();

            var senderGUIDBytes   = new byte[8];
            var guildGUIDBytes    = new byte[8];
            var receiverGUIDBytes = new byte[8];
            var groupGUIDBytes    = new byte[8];

            var bit1495 = packet.ReadBit();

            var hasText   = !packet.ReadBit();
            var hasAchi   = !packet.ReadBit();
            var hasSender = !packet.ReadBit();

            packet.ReadBit(); // fake bit

            packet.StartBitStream(senderGUIDBytes, 2, 4, 0, 6, 1, 3, 5, 7);

            packet.ReadBit(); // fake bit

            packet.StartBitStream(groupGUIDBytes, 6, 0, 4, 1, 2, 3, 7, 5);

            var hasPrefix  = !packet.ReadBit();
            var bit1494    = packet.ReadBit();
            var hasRealmId = !packet.ReadBit();
            var bit1490    = !packet.ReadBit();

            int senderName = 0;

            if (hasSender)
            {
                senderName = (int)packet.ReadBits(11);
            }

            packet.ReadBit(); // fake bit

            packet.StartBitStream(receiverGUIDBytes, 4, 0, 6, 7, 5, 1, 3, 2);

            int prefixLen = 0;

            if (hasPrefix)
            {
                prefixLen = (int)packet.ReadBits(5);
            }

            var hasReceiver = !packet.ReadBit();
            var bit148C     = !packet.ReadBit();

            int textLen = 0;

            if (hasText)
            {
                textLen = (int)packet.ReadBits(12);
            }

            var hasLang = !packet.ReadBit();

            int countBits148C = 0;

            if (bit148C)
            {
                countBits148C = (int)packet.ReadBits(9);
            }

            packet.ReadBit(); // fake bit

            int receiverLen = 0;

            if (hasReceiver)
            {
                receiverLen = (int)packet.ReadBits(11);
            }

            packet.StartBitStream(guildGUIDBytes, 0, 2, 1, 4, 6, 7, 5, 3);

            var hasChannel = !packet.ReadBit();

            if (hasChannel)
            {
                var channelLen = (int)packet.ReadBits(7);
                packet.ReadWoWString("Channel Name", channelLen);
            }

            if (hasSender)
            {
                text.SenderName = packet.ReadWoWString("Sender Name", senderName);
            }

            packet.ParseBitStream(groupGUIDBytes, 6, 7, 1, 2, 4, 3, 0, 5);

            packet.ParseBitStream(receiverGUIDBytes, 0, 4, 1, 3, 5, 7, 2, 6);

            text.Type = (ChatMessageType)packet.ReadByteE <ChatMessageTypeNew>("SlashCmd");

            packet.ParseBitStream(senderGUIDBytes, 7, 6, 5, 4, 0, 2, 1, 3);

            if (hasPrefix)
            {
                packet.ReadWoWString("Addon Message Prefix", prefixLen);
            }

            if (hasRealmId)
            {
                packet.ReadInt32("Realm Id");
            }

            packet.ParseBitStream(guildGUIDBytes, 1, 0, 3, 7, 6, 5, 2, 4);

            if (hasReceiver)
            {
                text.ReceiverName = packet.ReadWoWString("Receiver Name", receiverLen);
            }

            if (hasAchi)
            {
                packet.ReadInt32 <AchievementId>("Achievement Id");
            }

            if (hasLang)
            {
                text.Language = packet.ReadByteE <Language>("Language");
            }

            if (hasText)
            {
                text.Text = packet.ReadWoWString("Text", textLen);
            }

            if (bit1490)
            {
                packet.ReadSingle("Float1490");
            }

            text.SenderGUID   = packet.WriteGuid("SenderGUID", senderGUIDBytes);
            text.ReceiverGUID = packet.WriteGuid("ReceiverGUID", receiverGUIDBytes);
            packet.WriteGuid("GuildGUID", guildGUIDBytes);
            packet.WriteGuid("GroupGUID", groupGUIDBytes);

            chatPacket.Text     = text.Text;
            chatPacket.Sender   = text.SenderGUID.ToUniversalGuid();
            chatPacket.Target   = text.ReceiverGUID.ToUniversalGuid();
            chatPacket.Language = (int?)text.Language ?? 0;
            chatPacket.Type     = (int)text.Type;

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #17
0
 protected virtual T?Process(PacketBase basePacket, PacketChat packet) => default;
 public void recievePacketChat(PacketChat chat)
 {
     //append text to the App form
     this.client.appendTextToChat("[doctor] " + chat.messageText);
 }