III

内存 Memory

内存读写、句柄指针与原生调用

gta3 · 扩展 CLEO · 需 CLEO

与 VC/SA 同名;经典 05DF05EC 等为别名。示例地址用 III。

写法见 Lua / Redux

写内存

WRITE_MEMORY · 0A8C
Memory.Write

按 1/2/4 字节往地址写;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。pop 固定 0。

0AA6 CALL_METHOD
in: address, struct, numArgs, pop, args...
// 经典别名 05E3

调函数取返回值

CALL_FUNCTION_RETURN · 0AA7
Memory.CallFunctionReturn

0AA5 并取返回值。经典别名 05E2

0AA7 CALL_FUNCTION_RETURN
in: address, numArgs, pop, args...
out: funcRet
// 经典别名 05E2

调方法取返回值

CALL_METHOD_RETURN · 0AA8
Memory.CallMethodReturn

0AA6 并取返回值。经典别名 05E4

0AA8 CALL_METHOD_RETURN
in: address, struct, numArgs, pop, args...
out: funcRet
// 经典别名 05E4

ped 句柄转指针

GET_PED_POINTER · 0A96
Memory.GetPedPointer

角色句柄 → 地址。经典别名 05E6

0A96 GET_PED_POINTER
in: char
out: address
// 经典别名 05E6

载具句柄转指针

GET_VEHICLE_POINTER · 0A97
Memory.GetVehiclePointer

载具句柄 → 地址。经典别名 05E7

0A97 GET_VEHICLE_POINTER
in: handle
out: address
// 经典别名 05E7

物体句柄转指针

GET_OBJECT_POINTER · 0A98
Memory.GetObjectPointer

物体句柄 → 地址。经典别名 05E8

0A98 GET_OBJECT_POINTER
in: object
out: address
// 经典别名 05E8

当前脚本结构体

GET_THIS_SCRIPT_STRUCT · 0A9F
Memory.GetThisScriptStruct

当前脚本结构体。经典别名 05EC

0A9F GET_THIS_SCRIPT_STRUCT
out: address
// 经典别名 05EC

按名取脚本结构体

GET_SCRIPT_STRUCT_NAMED · 0AAA
Memory.GetScriptStructNamed

按名找脚本结构体。经典别名 05ED

0AAA GET_SCRIPT_STRUCT_NAMED
in: scriptName
out: address
// 经典别名 05ED

标签指针

GET_LABEL_POINTER · 0AC6
Memory.GetLabelPointer

标签绝对地址。经典别名 05F7

0AC6 GET_LABEL_POINTER
in: label
out: address
// 经典别名 05F7

变量指针

GET_VAR_POINTER · 0AC7
Memory.GetVarPointer

变量指针。经典别名 05F8

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

取浮点返回值。经典别名 05F2

0AE9 POP_FLOAT
out: number
// 经典别名 05F2

ped 指针转句柄

GET_PED_REF · 0AEA
Memory.GetPedRef

ped 地址 → 句柄。经典别名 05E9

0AEA GET_PED_REF
in: address
out: handle
// 经典别名 05E9

载具指针转句柄

GET_VEHICLE_REF · 0AEB
Memory.GetVehicleRef

载具地址 → 句柄。经典别名 05EA

0AEB GET_VEHICLE_REF
in: address
out: handle
// 经典别名 05EA

物体指针转句柄

GET_OBJECT_REF · 0AEC
Memory.GetObjectRef

物体地址 → 句柄。经典别名 05EB

0AEC GET_OBJECT_REF
in: address
out: handle
// 经典别名 05EB

设内存偏移

SET_MEMORY_OFFSET · 0606
Memory.SetOffset

address1 相对 address2 的偏移,写回 address1vp 要改保护时再开。

0606 SET_MEMORY_OFFSET
in: address1, address2, vp

On this page