VC
内存 Memory
内存读写、句柄指针与原生调用
vc · 扩展 CLEO · 需 CLEO
读写内存、句柄↔指针、调原生。经典别名 05DF–05EC / 05F2 / 05F7–05F8 等与下列同名。
写内存
WRITE_MEMORY · 0A8C
Memory.Write
往进程地址写指定宽度。vp 为真时改页保护。错地址/宽度会崩。
0A8C WRITE_MEMORY
in: address, size, value, vp
// 经典别名 05DF读内存
READ_MEMORY · 0A8D
Memory.Read
从地址读指定宽度。
0A8D READ_MEMORY
in: address, size, vp
out: result
// 经典别名 05E0调函数
CALL_FUNCTION · 0AA5
Memory.CallFunction
按地址调原生函数。pop=0 当 stdcall;pop=numArgs 当 cdecl。后面变长参数。
0AA5 CALL_FUNCTION
in: address, numArgs, pop, args...
// 经典别名 05E1调方法
CALL_METHOD · 0AA6
Memory.CallMethod
thiscall。struct 为 this,pop 固定 0。
0AA6 CALL_METHOD
in: address, struct, numArgs, pop, args...
// 经典别名 05E3调函数取返回值
CALL_FUNCTION_RETURN · 0AA7
Memory.CallFunctionReturn
同 0AA5,并取整数返回值。
0AA7 CALL_FUNCTION_RETURN
in: address, numArgs, pop, args...
out: funcRet
// 经典别名 05E2调方法取返回值
CALL_METHOD_RETURN · 0AA8
Memory.CallMethodReturn
同 0AA6,并取返回值。
0AA8 CALL_METHOD_RETURN
in: address, struct, numArgs, pop, args...
out: funcRet
// 经典别名 05E4ped 句柄转指针
GET_PED_POINTER · 0A96
Memory.GetPedPointer
角色句柄 → ped 结构体地址。
0A96 GET_PED_POINTER
in: char
out: address
// 经典别名 05E6载具句柄转指针
GET_VEHICLE_POINTER · 0A97
Memory.GetVehiclePointer
载具句柄 → 结构体地址。
0A97 GET_VEHICLE_POINTER
in: handle
out: address
// 经典别名 05E7物体句柄转指针
GET_OBJECT_POINTER · 0A98
Memory.GetObjectPointer
物体句柄 → 结构体地址。
0A98 GET_OBJECT_POINTER
in: object
out: address
// 经典别名 05E8当前脚本结构体
GET_THIS_SCRIPT_STRUCT · 0A9F
Memory.GetThisScriptStruct
当前脚本结构体地址。
0A9F GET_THIS_SCRIPT_STRUCT
out: address
// 经典别名 05EC按名取脚本结构体
GET_SCRIPT_STRUCT_NAMED · 0AAA
Memory.GetScriptStructNamed
按脚本名找运行中脚本结构体;没有为 0。
0AAA GET_SCRIPT_STRUCT_NAMED
in: scriptName
out: address
// 经典别名 05ED标签指针
GET_LABEL_POINTER · 0AC6
Memory.GetLabelPointer
标签代码位置的绝对地址。
0AC6 GET_LABEL_POINTER
in: label
out: address
// 经典别名 05F7变量指针
GET_VAR_POINTER · 0AC7
Memory.GetVarPointer
脚本变量在内存中的指针。
0AC7 GET_VAR_POINTER
in: var
out: address
// 经典别名 05F8分配内存
ALLOCATE_MEMORY · 0AC8
Memory.Allocate
分配内存块,返回地址。条件表示是否成功。
0AC8 ALLOCATE_MEMORY
in: size
out: address释放内存
FREE_MEMORY · 0AC9
Memory.Free
释放 0AC8 分配的内存。
0AC9 FREE_MEMORY
in: address弹出浮点返回值
POP_FLOAT · 0AE9
Memory.PopFloat
取出前一次调用留下的浮点返回值。
0AE9 POP_FLOAT
out: number
// 经典别名 05F2ped 指针转句柄
GET_PED_REF · 0AEA
Memory.GetPedRef
ped 地址 → 角色句柄。
0AEA GET_PED_REF
in: address
out: handle
// 经典别名 05E9载具指针转句柄
GET_VEHICLE_REF · 0AEB
Memory.GetVehicleRef
载具地址 → 句柄。
0AEB GET_VEHICLE_REF
in: address
out: handle
// 经典别名 05EA物体指针转句柄
GET_OBJECT_REF · 0AEC
Memory.GetObjectRef
物体地址 → 句柄。
0AEC GET_OBJECT_REF
in: address
out: handle
// 经典别名 05EB设内存偏移
SET_MEMORY_OFFSET · 0606
Memory.SetOffset
算 address1 相对 address2 的偏移并写回 address1(VC 扩展)。
0606 SET_MEMORY_OFFSET
in: address1, address2, vp