using PSO2SERVER.Models; using PSO2SERVER.Zone; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace PSO2SERVER.Protocol.Packets { public class MapTransferPacket : Packet { //private readonly Map _map; //private readonly int _playerid; public ObjectHeader map { get; set; } = new ObjectHeader(); public ObjectHeader target { get; set; } = new ObjectHeader(); public ZoneSettings _zonesettings { get; set; } = new ZoneSettings(); public MapTransferPacket(Map map, int PlayerId) { //_map = map; this.map = new ObjectHeader((uint)map.MapID, ObjectType.Map); target = new ObjectHeader((uint)PlayerId, ObjectType.Player); _zonesettings = new ZoneSettings { WorldId = 1, Unk1 = 0, ZoneId = ~(uint)map.Type, MapId = (uint)map.MapID, ZoneType = 0, Seed = map.GenerationArgs.seed, Args = (uint)map.VariantID, SizeX = map.GenerationArgs.xsize, SizeY = map.GenerationArgs.ysize, Unk2 = 1, AreaIndex = 1, SubArea = 0xFFFFFFFF, Unk3 = 0x301, }; } #region implemented abstract members of Packet public override byte[] Build() { //PacketWriter writer = new PacketWriter(); //writer.WriteStruct(new ObjectHeader(3, ObjectType.Map)); //writer.WriteStruct(target); //writer.Write(0x1); // 8 Zeros //writer.Write(0); // 8 Zeros //writer.Write(~(uint)_map.Type); // F4 FF FF FF //writer.Write(_map.MapID); // Map ID maybe //writer.Write((uint)_map.Flags); //writer.Write(_map.GenerationArgs.seed); // 81 8F E6 19 (Maybe seed) //writer.Write(_map.VariantID); // Randomgen enable / disable maybe //writer.Write(_map.GenerationArgs.xsize); // X Size //writer.Write(_map.GenerationArgs.ysize); // Y Size //writer.Write(1); //writer.Write(1); //writer.Write(~0); // FF FF FF FF FF FF FF FF //writer.Write(0x301); //return writer.ToArray(); PacketWriter pkt = new PacketWriter(); pkt.WriteStruct(map); pkt.WriteStruct(target); pkt.WriteStruct(_zonesettings); return pkt.ToArray(); } public override PacketHeader GetHeader() { return new PacketHeader(0x03, 0x00, PacketFlags.None); } #endregion } }