_NPC遍历_被单击 真实代码数据源:你贴出的
_NPC遍历_被单击子程序(易语言,本机活游戏实跑代码)。
这是本游戏(D:\rxjh2025,YGOnline.exe 2026-09-14 构建)怪物对象布局的权威值。
配套验证脚本:CE_怪物对象字段验证.lua(CE 挂进程跑,输出rxjh_monsterobj.txt)。
⚠ 玩家(type 0x31)与怪物(type 0x2E)是不同 C++ 类,字段偏移不通用! 遍历必须先按+0x08类型分流。
代码逐字:
怪物位置 = 内存_读整数型 (全局_进程句柄, (8000 + x) × 4 + #怪物基址值)
#怪物基址值(活游戏实测 = 0x03BE3E68,YGOnline.exe+0x37E3E68)k = 8000 + x,x = 1..2000 → 槽位 k = 8001..10000读整数(0x03BE3E68 + k×4);指针 ≤ 0 跳过(空槽)读整数(指针 + 0x08) == 0x2E(46=怪物)才处理怪物位置)| 偏移(hex) | 偏移(dec) | 字段 | 读取方式 | 来源 | 状态 |
|---|---|---|---|---|---|
| +0x08 | 8 | 类型(0x2E=怪物) | 整数 | 代码过滤 ==0x2E |
✅ 代码 |
| +0x0C | 12 | 怪物ID / 槽位ID | 整数 | 内存_读整数型(ptr+0xC) |
✅ 代码(与玩家同偏移) |
| +0x364 | 868 | 名字(BIG5 内联文本) | 文本 | 编码_BIG5到简体(内存_读文本型(ptr+0x364)) |
✅ 代码 |
| +0x5F4 | 1522 | 当前血 | 整数 | 内存_读整数型(ptr+0x5F4) |
✅ 代码 |
| +0x5F8 | 1528 | 最大血 | 整数 | 内存_读整数型(ptr+0x5F8) |
✅ 代码 |
| +0x5FC | 1532 | 等级 | 整数 | 内存_读整数型(ptr+0x5FC) |
✅ 代码 |
| +0x12FC | 4860 | 坐标X(float) | 小数 | 内存_读小数型(ptr+0x107C+0x280) |
⚠ 代码注释(待验证) |
| +0x130C | 4876 | 坐标Y(float) | 小数 | 内存_读小数型(ptr+0x1084+0x288) |
⚠ 代码注释(待验证) |
坐标说明:代码写成
怪物位置 + 0x107C + 0x280,即ptr + 0x107C + 0x280 = ptr + 0x12FC(是扁平偏移,非指针链;若是指针链会写成读整数(ptr+0x107C)+0x280)。故坐标 X =ptr+0x12FC,Y =ptr+0x130C。
| 字段 | 玩家(type 0x31) | 怪物(type 0x2E) |
|---|---|---|
| 名字 | +0x18 | +0x364 |
| ID/槽位 | +0x0C | +0x0C(相同) |
| 当前血 | +0x74 | +0x5F4 |
| 最大血 | +0x78 | +0x5F8 |
| 等级 | +0x2780 | +0x5FC |
| 坐标X | +0x1F84 | +0x12FC |
| 坐标Y | +0x1F8C | +0x130C |
| 类型 | +0x08(值 0x31) | +0x08(值 0x2E) |
结论:数组叫"对象数组"但玩家/怪物是不同结构。不能把玩家的
+0x74血 /+0x18名 /+0x2780等级套到怪物上,反之亦然。遍历时务必先按+0x08分流。
| 字段 | 旧记值 | 本版本真实(代码) | 结论 |
|---|---|---|---|
| 怪名字 | +0x18(误,那是玩家)/ +0x360(旧记) | +0x364 | 旧错;0x360 可能是 4 字节长度前缀 |
| 怪当前血 | +0x5F8(误标"当前") | +0x5F4(当前)/ +0x5F8(最大) | 旧错,以代码为准 |
| 怪等级 | +0x5FC | +0x5FC | ✅ 一致 |
| 怪坐标 | 0x1078 / 0x1080 | +0x12FC / +0x130C | 旧错,以代码(0x107C+0x280)为准 |
未在
_NPC遍历_被单击内出现的旧记字段,仍待验证:距离+0x35C、怪编号+0x3B0。
D:\rxjh2025\client\YGOnline.exe → 内存浏览器 → Lua 引擎 → 执行 CE_怪物对象字段验证.luaC:\Users\Administrator\rxjh_monsterobj.txt:每只 type=0x2E 对象打印 名字@0x364 / 名字@0x360(对照) / 等级 / 当前血 / 最大血 / 坐标X / 坐标Y常量.e.txt。