Ejemplo n.º 1
0
        protected override void OnPacket(byte[] data)
        {
            try
            {
                for (int index = 0; index < data.Length; index++)
                {
                    byte[] headerData = new byte[6];
                    Array.Copy(data, index, headerData, 0, 6);
                    this.Decode(headerData);
                    Array.Copy(headerData, 0, data, index, 6);

                    ushort opcode = BitConverter.ToUInt16(headerData, 0);
                    int    length = BitConverter.ToInt16(headerData, 2);

                    WorldOpcodes code = (WorldOpcodes)opcode;

                    byte[] packetData = new byte[length + 2];
                    Array.Copy(data, index, packetData, 0, length + 2);
                    Log.Print(LogType.Database, "Server <- Client [" + code + "] Packet Length: " + length);

                    Server.Router.CallHandler(this, packetData);

                    index += 2 + (length - 1);
                }
            }
            catch (Exception e)
            {
                Log.Print(LogType.Error, e.ToString() + " " + e.InnerException);
            }
        }
Ejemplo n.º 2
0
        public PSMovement(WorldOpcodes worldOpcode, WorldSession session, PCMoveInfo moveinfo)
            : base(worldOpcode)
        {
            var correctedMoveTime = (uint)Environment.TickCount;

            byte[] packedGUID = session.Player.ObjectGUID.GetGuidBytes();
            this.WriteBytes(packedGUID);
            this.WriteBytes((moveinfo.BaseStream as MemoryStream).ToArray());

            // We then overwrite the original moveTime (sent from the client) with ours
            (this.BaseStream as MemoryStream).Position = 4 + packedGUID.Length;
            this.WriteBytes(BitConverter.GetBytes(correctedMoveTime));
        }
Ejemplo n.º 3
0
        public PSMovement(WorldOpcodes worldOpcode, WorldSession session, PCMoveInfo moveinfo)
            : base(worldOpcode)
        {
            var correctedMoveTime = (uint)Environment.TickCount;

            byte[] packedGUID = session.Player.ObjectGUID.GetGuidBytes();
            this.WriteBytes(packedGUID);
            this.WriteBytes((moveinfo.BaseStream as MemoryStream).ToArray());

            // We then overwrite the original moveTime (sent from the client) with ours
            (this.BaseStream as MemoryStream).Position = 4 + packedGUID.Length;
            this.WriteBytes(BitConverter.GetBytes(correctedMoveTime));
        }
Ejemplo n.º 4
0
        public void SendHexPacket(WorldOpcodes opcde, string hex)
        {
            string end = hex.Replace(" ", "").Replace("\n", "");

            byte[] data = Utils.HexToByteArray(end);

            WorldPacket packet = new WorldPacket(opcde);

            packet.Write(data);

            this.SendPacket(packet);
            //throw new Exception("no");
        }
Ejemplo n.º 5
0
        public void SendPacket(WorldOpcodes opcode, byte[] data)
        {
            using (var ms = new MemoryStream())
                using (var bw = new BinaryWriter(ms))
                {
                    bw.Write(((ushort)(data.Length + 2)).SwitchEndian());
                    bw.Write((ushort)opcode);
                    bw.Write(data);

                    var packet = ms.ToArray();
                    Crypt?.Encrypt(packet);
                    Log.WriteLine(GatewayLogTypes.Packets, $"-> {opcode}({packet.Length}):\n\t{string.Join(" ", packet.Select(b => b.ToString("X2")))}");
                    Send(packet);
                }
        }
Ejemplo n.º 6
0
        public void SendPacket(WorldOpcodes opcode, byte[] data)
        {
            using (var ms = new MemoryStream())
                using (var bw = new BinaryWriter(ms))
                {
                    bw.Write(GUID);
                    bw.Write(((ushort)(data.Length + 2)));
                    bw.Write((ushort)opcode);
                    bw.Write(data);

                    var packet = ms.ToArray();
                    Log.WriteLine(WorldLogTypes.Packets, $"-> {opcode}({packet.Length}):\n\t{string.Join(" ", packet.Select(b => b.ToString("X2")))}");
                    WorldManager.Instance.Gateway.Send(packet);
                }
        }
Ejemplo n.º 7
0
        public void SendPacket(WorldOpcodes opcode, byte[] data)
        {
            using (var ms = new MemoryStream())
            using (var bw = new BinaryWriter(ms))
            {
                bw.Write(GUID);
                bw.Write(((ushort)(data.Length + 2)));
                bw.Write((ushort)opcode);
                bw.Write(data);

                var packet = ms.ToArray();
                Log.WriteLine(WorldLogTypes.Packets, $"-> {opcode}({packet.Length}):\n\t{string.Join(" ", packet.Select(b => b.ToString("X2")))}");
                WorldManager.Instance.Gateway.Send(packet);
            }
        }
        public void SendPacket(WorldOpcodes opcode, byte[] data)
        {
            using (var ms = new MemoryStream())
            using (var bw = new BinaryWriter(ms))
            {
                bw.Write(((ushort)(data.Length + 2)).SwitchEndian());
                bw.Write((ushort)opcode);
                bw.Write(data);

                var packet = ms.ToArray();
                Crypt?.Encrypt(packet);
                Log.WriteLine(GatewayLogTypes.Packets, $"-> {opcode}({packet.Length}):\n\t{string.Join(" ", packet.Select(b => b.ToString("X2")))}");
                Send(packet);
            }
        }
Ejemplo n.º 9
0
 public WorldPacket(WorldOpcodes opcode)
     : base((short)opcode, PacketHeaderType.WorldSmsg)
 {
 }
Ejemplo n.º 10
0
 private void TransmitMovement(WorldSession session, PCMoveInfo handler, WorldOpcodes code)
 {
     UpdateEntity(session, handler);
     //ToList because collection can be modified while iterating.
     session.Player.SubscribedBy.ToList().ForEach(s => s.SendPacket(new PSMovement(code, session, handler)));
 }
Ejemplo n.º 11
0
 private ProcessLoginPacketCallbackTypes <WorldSession, PCMoveInfo> GenerateResponse(WorldOpcodes worldOpcode)
 {
     return((session, handler) => TransmitMovement(session, handler, worldOpcode));
 }
Ejemplo n.º 12
0
 private void TransmitMovement(WorldSession session, PCMoveInfo handler, WorldOpcodes code)
 {
     UpdateEntity(session, handler);
     //ToList because collection can be modified while iterating.
     session.Player.SubscribedBy.ToList().ForEach(s => s.SendPacket(new PSMovement(code, session, handler)));
 }
Ejemplo n.º 13
0
 private ProcessLoginPacketCallbackTypes<WorldSession, PCMoveInfo> GenerateResponse(WorldOpcodes worldOpcode)
 {
     return (session, handler) => TransmitMovement(session, handler, worldOpcode);
 }
 public PacketHandlerAttribute(WorldOpcodes packetId)
     : this(Convert.ToInt32(packetId), typeof(WorldOpcodes))
 {
 }
Ejemplo n.º 15
0
        public void SendHexPacket(WorldOpcodes opcde, string hex)
        {
            string end = hex.Replace(" ", "").Replace("\n", "");

            byte[] data = Utils.HexToByteArray(end);

            WorldPacket packet = new WorldPacket(opcde);
            packet.Write(data);

            this.SendPacket(packet);
            //throw new Exception("no");
        }
Ejemplo n.º 16
0
 public WorldPacket(WorldOpcodes opcode) : base((short)opcode, PacketHeaderType.WorldSmsg)
 {
 }
 public PacketHandlerAttribute(WorldOpcodes packetId)
     : this(Convert.ToInt32(packetId), typeof(WorldOpcodes))
 {
 }