2024-11-26 00:07:24 +08:00
|
|
|
|
using System;
|
|
|
|
|
using PSO2SERVER.Models;
|
2024-11-27 18:05:53 +08:00
|
|
|
|
using PSO2SERVER.Protocol.Packets;
|
2024-11-26 00:07:24 +08:00
|
|
|
|
|
2024-11-27 18:05:53 +08:00
|
|
|
|
namespace PSO2SERVER.Protocol.Handlers
|
2024-11-26 00:07:24 +08:00
|
|
|
|
{
|
|
|
|
|
[PacketHandlerAttr(0x0B, 0x09)]
|
2024-12-03 13:18:58 +08:00
|
|
|
|
public class MinimapRevealRequest : PacketHandler
|
2024-11-26 00:07:24 +08:00
|
|
|
|
{
|
|
|
|
|
// 定义 MinimapRevealRequestPacket 数据包结构
|
|
|
|
|
public struct MinimapRevealRequestPacket
|
|
|
|
|
{
|
|
|
|
|
// 未知字段,32位无符号整数
|
|
|
|
|
public uint unk1;
|
|
|
|
|
|
|
|
|
|
// 玩家进入的区域块的ID
|
|
|
|
|
public uint chunk_id;
|
|
|
|
|
|
|
|
|
|
// 地图上区域块的列坐标
|
|
|
|
|
public uint map_column;
|
|
|
|
|
|
|
|
|
|
// 地图上区域块的行坐标
|
|
|
|
|
public uint map_row;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void HandlePacket(Client context, byte flags, byte[] data, uint position, uint size)
|
|
|
|
|
{
|
|
|
|
|
//var info = string.Format("[<--] 接收到的数据 (hex): {0} 字节", data.Length);
|
|
|
|
|
//Logger.WriteHex(info, data);
|
|
|
|
|
if (context.Character == null)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
var reader = new PacketReader(data, position, size);
|
|
|
|
|
|
|
|
|
|
// 从接收到的字节数组中解析数据到结构体
|
|
|
|
|
MinimapRevealRequestPacket packet = new MinimapRevealRequestPacket
|
|
|
|
|
{
|
|
|
|
|
unk1 = reader.ReadUInt32(), // 从数据包中解析unk1
|
|
|
|
|
chunk_id = reader.ReadUInt32(), // 从数据包中解析chunk_id
|
|
|
|
|
map_column = reader.ReadUInt32(), // 从数据包中解析map_column
|
|
|
|
|
map_row = reader.ReadUInt32() // 从数据包中解析map_row
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 打印解析后的数据
|
|
|
|
|
Logger.Write($"解析的地图数据包: unk1 = {packet.unk1}, Chunk ID = {packet.chunk_id}, Column = {packet.map_column}, Row = {packet.map_row}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|