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); } }
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)); }
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"); }
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); } }
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 WorldPacket(WorldOpcodes opcode) : base((short)opcode, PacketHeaderType.WorldSmsg) { }
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))); }
private ProcessLoginPacketCallbackTypes <WorldSession, PCMoveInfo> GenerateResponse(WorldOpcodes worldOpcode) { return((session, handler) => TransmitMovement(session, handler, worldOpcode)); }
private ProcessLoginPacketCallbackTypes<WorldSession, PCMoveInfo> GenerateResponse(WorldOpcodes worldOpcode) { return (session, handler) => TransmitMovement(session, handler, worldOpcode); }
public PacketHandlerAttribute(WorldOpcodes packetId) : this(Convert.ToInt32(packetId), typeof(WorldOpcodes)) { }