/* 文件名:PacketClass.nut 路径:BaseClass/PacketClass/PacketClass.nut 创建日期:2024-04-07 16:59 文件用途:数据包类 */ class Packet extends Base_C_Object { //传参就构造 不传就new一个新包 constructor(...) { if (vargv.len() > 0) { base.constructor(vargv[0]); } else { local Buf = Sq_New_Point(0x20000); Sq_CallFunc(S_Ptr("0x858DD4C"), "void", ["pointer"], Buf); base.constructor(Buf); } } function Put_Header(a, b) { Sq_CallFunc(S_Ptr("0x80CB8FC"), "int", ["pointer", "int", "int"], this.C_Object, a, b); // Sq_Packet_Put_header(this.C_Object, a, b); } function Put_Byte(Value) { Sq_CallFunc(S_Ptr("0x80CB920"), "int", ["pointer", "int"], this.C_Object, Value); // Sq_Packet_Put_byte(this.C_Object, Value); } function Put_Short(Value) { Sq_CallFunc(S_Ptr("0x80D9EA4"), "int", ["pointer", "int"], this.C_Object, Value); // Sq_Packet_Put_short(this.C_Object, Value); } function Put_Int(Value) { Sq_CallFunc(S_Ptr("0x80CB93C"), "int", ["pointer", "int"], this.C_Object, Value); // Sq_Packet_Put_int(this.C_Object, Value); } function Put_Binary(Value) { local StrPoint = Str_Ptr(Value); Sq_CallFunc(S_Ptr("0x811DF08"), "int", ["pointer", "pointer", "int"], this.C_Object, StrPoint, Value.len()); // Sq_Packet_Put_binary(this.C_Object, Value); } function Put_BinaryEx(Str, Len) { Sq_CallFunc(S_Ptr("0x811DF08"), "int", ["pointer", "pointer", "int"], this.C_Object, Str, Len); //Sq_Packet_Put_binaryex(this.C_Object, Str, Len); } function Put_BinaryEx_M(Str, Len) { // Sq_Packet_Put_binaryex(this.C_Object, Str, Len); Sq_CallFunc(S_Ptr("0x811DF08"), "int", ["pointer", "pointer", "int"], this.C_Object, Str, Len); } function Put_Str(Str, Len) { Sq_CallFunc(S_Ptr("0x81B73E4"), "int", ["pointer", "pointer", "int"], this.C_Object, Str, Len); } function Finalize(Value) { Sq_Packet_Finalize(this.C_Object, Value); } function Send(SUser) { Sq_Packet_Send(SUser.C_Object, this.C_Object); } function GetByte() { local data = Memory.alloc(1); if (Sq_CallFunc(S_Ptr("0x858CF22"), "int", ["pointer", "pointer"], this.C_Object, data.C_Object)) { return data.readS8(); } return null; } function GetShort() { local data = Memory.alloc(2); if (Sq_CallFunc(S_Ptr("0x858CFC0"), "int", ["pointer", "pointer"], this.C_Object, data.C_Object)) { return data.readS16(); } return null; } function GetInt() { local data = Memory.alloc(4); if (Sq_CallFunc(S_Ptr("0x858D27E"), "int", ["pointer", "pointer"], this.C_Object, data.C_Object)) { return data.readS32(); } return null; } function GetBinary(len) { local data = Memory.alloc(len); if (Sq_CallFunc(S_Ptr("0x858D3B2"), "int", ["pointer", "pointer"], this.C_Object, data.C_Object)) { return data; } return null; } function Delete() { Sq_CallFunc(S_Ptr("0x858DE80"), "void", ["pointer"], this.C_Object); Sq_Delete_Point(this.C_Object); // Sq_Packet_Delete(this.C_Object); } }