PSO2SERVER/Server/Protocol/Packets/04-ObjectRelatedPacket/04-75-ActionEndPacket.cs
2024-12-11 20:47:36 +08:00

54 lines
2.0 KiB
C#

using PSO2SERVER.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PSO2SERVER.Protocol.Packets
{
public class ActionEndPacket : Packet
{
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 ActionEndPacket(ObjectHeader unk1, ObjectHeader performer, uint unk2, ObjectHeader unk3, ObjectHeader unk4, byte[] unk5, string action)
{
this.unk1 = unk1; // 如果传入的值为 null, 使用默认值
this.performer = performer;
this.unk2 = unk2;
this.unk3 = unk3;
this.unk4 = unk4;
this.unk5 = unk5 ?? new byte[0x04]; // 如果传入的值为 null, 使用默认字节数组
this.action = action ?? string.Empty; // 如果传入的值为 null, 使用空字符串
}
#region implemented abstract members of Packet
public override byte[] Build()
{
var pkt = new PacketWriter();
unk1.WriteObjectHeaderToStream(pkt);
performer.WriteObjectHeaderToStream(pkt);
pkt.Write(unk2);
unk3.WriteObjectHeaderToStream(pkt);
unk4.WriteObjectHeaderToStream(pkt);
pkt.Write(unk5);
pkt.WriteAscii(action, 0x83EF, 0x40);
return pkt.ToArray();
}
public override PacketHeader GetHeader()
{
return new PacketHeader(0x04, 0x75, PacketFlags.PACKED_OBJECT_RELATED);
}
#endregion
}
}