53 lines
2.2 KiB
C#
53 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using PSO2SERVER.Models;
|
|
using PSO2SERVER.Party;
|
|
using PSO2SERVER.Protocol.Packets;
|
|
using PSO2SERVER.Zone;
|
|
|
|
namespace PSO2SERVER.Protocol.Handlers
|
|
{
|
|
[PacketHandlerAttr(0x04, 0x75)]
|
|
public class ActionEnd : PacketHandler
|
|
{
|
|
public ObjectHeader unk1 { get; set; } = new ObjectHeader();
|
|
/// Object that was performing an action.
|
|
public ObjectHeader performer { get; set; } = new ObjectHeader();
|
|
public uint unk2 { get; set; } = 0;
|
|
public ObjectHeader unk3 { get; set; } = new ObjectHeader();
|
|
public ObjectHeader unk4 { get; set; } = new ObjectHeader();
|
|
public byte[] unk5 { get; set; } = new byte[0x04];
|
|
public string action { get; set; } = string.Empty;//Ascii
|
|
|
|
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);
|
|
|
|
var reader = new PacketReader(data, position, size);
|
|
unk1 = reader.ReadObjectHeader();
|
|
performer = reader.ReadObjectHeader();
|
|
unk2 = reader.ReadUInt32();
|
|
unk3 = reader.ReadObjectHeader();
|
|
unk4 = reader.ReadObjectHeader();
|
|
unk5 = reader.ReadBytes(4);
|
|
action = reader.ReadAscii(0x83EF, 0x40);
|
|
// 打印各个字段的内容
|
|
Logger.Write("unk1: " + unk1); // 假设 ObjectHeader 重载了 ToString() 方法
|
|
Logger.Write("performer: " + performer); // 同上
|
|
Logger.Write("unk2: " + unk2);
|
|
Logger.Write("unk3: " + unk3);
|
|
Logger.Write("unk4: " + unk4);
|
|
Logger.Write("unk5: " + BitConverter.ToString(unk5)); // 打印 byte 数组
|
|
Logger.Write("action: " + action); // 打印 ASCII 字符串
|
|
|
|
foreach (Client cl in PartyManager.instance.GetCurrentPartyForClient(context).getMembers())
|
|
{
|
|
cl.SendPacket(new ActionEndPacket(unk1, performer, unk2, unk3, unk4, unk5, action));
|
|
}
|
|
}
|
|
}
|
|
}
|