From 0114bbc5d4b7e22dab2e194997ed87dbef1f783d Mon Sep 17 00:00:00 2001 From: Longfeng Qin Date: Sun, 8 Dec 2024 09:30:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A303=2000=20=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../03-00-MapTransferPacket.cs | 52 ++++++++++++++++--- Server/Zone/Map.cs | 18 +------ 2 files changed, 47 insertions(+), 23 deletions(-) diff --git a/Server/Protocol/Packets/03-ServerPacket/03-00-MapTransferPacket.cs b/Server/Protocol/Packets/03-ServerPacket/03-00-MapTransferPacket.cs index b55567e..4dfd342 100644 --- a/Server/Protocol/Packets/03-ServerPacket/03-00-MapTransferPacket.cs +++ b/Server/Protocol/Packets/03-ServerPacket/03-00-MapTransferPacket.cs @@ -5,29 +5,67 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; -using static PSO2SERVER.Zone.Map; namespace PSO2SERVER.Protocol.Packets { public class MapTransferPacket : Packet { - private readonly Map _map; - private readonly int _playerid; + //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; - _playerid = 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(map); pkt.WriteStruct(target); - pkt.WriteStruct(settings); + pkt.WriteStruct(_zonesettings); return pkt.ToArray(); } diff --git a/Server/Zone/Map.cs b/Server/Zone/Map.cs index 09f762b..3ec937d 100644 --- a/Server/Zone/Map.cs +++ b/Server/Zone/Map.cs @@ -109,21 +109,6 @@ namespace PSO2SERVER.Zone return location; } - public struct ZoneSettings - { - public uint WorldId; - public uint Unk1; - public uint ZoneId; - public uint MapId; // Map layout id. - public uint ZoneType; - public uint Seed; - public uint Args; - public uint SizeX; - public uint SizeY; - public uint Unk2; - public uint AreaIndex; - public uint SubArea; - public uint Unk3; /// /// Spawns a client into a map at a given location @@ -245,7 +230,8 @@ namespace PSO2SERVER.Zone public uint WorldId; public uint Unk1; public uint ZoneId; - public uint MapId; // Map layout id. + /// Map layout id. + public uint MapId; public uint ZoneType; public uint Seed; public uint Args;