此文参照基地址为: $7F966228
之前读取云天河1-11级的等级点数发现,人物的点数每级是不规则增加的,但如果是Random的话,重新玩后,点数增加数量还是一样,而且需要每台机器都一样,但再怎么说用Random太草率了。所以怀疑会有一个每级的点数数据保存为数据库的想法。果不其然,之后得到yes2的帮助,说在某段地址附近保存着人物的等级数据。之后发现确实有一大段地址,保存着很有规律的数据,研究结果如下:
那么存放4个人关于人物升级的起始数据地址为:
云天河 $7F7F1258(偏移值- $00174FD0)
韩菱纱 $7F7F5038(偏移值- $001711F0)
柳梦璃 $7F7F8E18(偏移值- $0016D410)
慕容紫英 $7F7FCBF8(偏移值- $00169630)
这个值的偏移值与基地址的偏移值不一样,比如基地址的偏移量为 $00001000,但云天河实际偏移量为 $00000C78,而不是 $00001000。所以要准确读取这里的数据,可能需要另外建各参考点。
比如我打算如此:
从 $7F7F0080,然后搜索63369(这个数值怎么来看下面),这个值我搜了下,在7F段是唯一的,所以能找到。
或者用基地址偏移值再向前搜索。
基础结构如下:
V从这里开始
00 00 00 00 89 F7 00 00 07 00 00 00 D2 00 00 00
数据段开头 精
05 00 00 00 1E 00 00 00 18 00 00 00 12 00 00 00
?? 神 功 防
24 00 00 00 18 00 00 00 12 00 00 00 CD CC 4C 3E
速 运 灵 起始标示符
CD CC 4C 3D 00 00 00 00 00 00 00 00 00 00 00 00
现在标示符 慕容的这个位置是9A 99 19 3E,也可以说是最终标示符
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 01 00 00 00 E9 03 00 00
编号
01 00 00 00 36 00 00 00
等级 本等级经验,到达这个值则进入下一等级,这里是累加值
这段数据大小为A0字节,之后总共有396段。
89 F7 00 00 :整个396段数据的开头标示,这个值就是63369。396段结束后有个00 00 00 00的空值来结尾。我觉得可以这么理解。
数据段开头:本数据段的开头标示符号。好像固定为07 00 00 00。
精:本等级的精。
??:又在精和神之间看到这个值,应该就是存放气的地方,诞生气的MAX值是不变的。所以大概是用这个值来说明……吧。
神:本等级的神。
攻:本等级的攻。
防:本等级的防。
速:本等级的速。
运:本等级的运。
灵:本等级的灵。
起始标示符:感觉是相对于整段数据的起始人物标示符。只有云天河的数值中有。
现在标示符:现在等级段的标示符,每4级标示符一样,但除了1-2级同一个标示符和99级是一个标示符。(通过这个可以直接查出人物现在所在的等级段)
最终标示符:最后一个人这个地方拥有数据,怀疑和起始标示符是对应关系。只有慕容紫英地数值中有。
编号:编号,就和ID一个概念。可以用找这个值来直接查找某人的某个等级的数据。
E9 03 00 00:可能是表示符。
等级:说明这个数据段保存着的数值是对应人物哪个等级。人物等级最高99级。
本等级经验:当达到或超过这个值时,人物升级到下个等级。比如人物1级,那么升级到下级还需要的经验为:本等级经验-人物现有经验。比如经验到或者超过Hex 00441BF6(4463606经验……)就是99级。
韩菱纱和柳梦璃的数值段中没有起始标示符和最终标示符。
以下是每个人物每个等级阶段所对应的标示符,其实这里与 $7F966880处(偏移值 $00000658)有着直接的关系,其实就是直接赋值过来。而后面 $7F9669D0(偏移值 $000007A8)处的结构也是大同小异,只是 $7F9669F0(偏移值 $000007C8)处的结构怀疑是武器+现在标示符。
*以下标示符为内存值未反转值,比如CD CC 4C 3D,如果要转成数值,则要先变成3D 4C CC CD再转换。 等级段人物 云天河(ID:1-99) 韩菱纱(ID:100-198) 柳梦璃(ID:199-297) 慕容紫英(ID:298-396)
1-2 CD CC 4C 3D 9A 99 19 3E 00 00 00 00 9A 99 19 3E
3-6 8F C2 75 3D OA D7 23 3E OA D7 23 3C OA D7 23 3E
7-10 29 5C 8F 3D 7B 14 2E 3E 0A D7 A3 3C 7B 14 2E 3E
11-14 0A D7 A3 3D EC 51 38 3E 8F C2 F5 3C EC 51 38 3E
15-18 EC 51 B8 3D 5C 8F 42 3E OA D7 23 3D 5C 8F 42 3E
19-22 CD CC CC 3D CD CC 4C 3E CD CC 4C 3D CD CC 4C 3E
23-26 AE 47 E1 3D 3D 0A 57 3E 8F C2 75 3D 3D 0A 57 3E
27-30 8F C2 F5 3D AE 47 61 3E 29 5C 8F 3D AE 47 61 3E
31-34 B8 1E 05 3E
1F 85 6B 3E OA D7 A3 3D 1F 85 6B 3E
35-38 29 5C 0F 3E 8F C2 75 3E EC 51 B8 3D 8F C2 75 3E
39-42 9A 99 19 3E 00 00 80 3E CD CC CC 3D 00 00 80 3E
43-46 OA D7 23 3E B8 1E 85 3E AE 47 E1 3D B8 1E 85 3E
47-50 7B 14 2E 3E 71 3D 8A 3E 8F C2 F5 3D 71 3D 8A 3E
51-54 EC 51 38 3E 29 5C 8F 3E B8 1E 05 3E 29 5C 8F 3E
55-58 5C 8F 42 3E E1 7A 94 3E 29 5C 0F 3E E1 7A 94 3E
59-62 CD CC 4C 3E 9A 99 99 3E 9A 99 19 3E 9A 99 99 3E
63-66 3D OA 57 3E 52 B8 9E 3E OA D7 23 3E 52 B8 9E 3E
67-70 AE 47 61 3E OA D7 A3 3E 7B 14 2E 3E 67-69:OA D7 A3 3E
70:OA D7 23 3C
71-74 1F 85 6B 3E C3 F5 A8 3E EC 51 38 3E C3 F5 A8 3E
75-78 8F C2 75 3E 7B 14 AE 3E 5C 8F 42 3E 7B 14 AE 3E
79-82 00 00 80 3E 33 33 B3 3E CD CC 4C 3E 33 33 B3 3E
83-86 B8 1E 85 3E EC 51 B8 3E 3D 0A 57 3E EC 51 B8 3E
87-90 71 3D 8A 3E A4 70 BD 3E AE 47 61 3E A4 70 BD 3E
91-94 29 5C 8F 3E 5C 8F C2 E3 1F 85 6B 3E 5C 8F C2 3E
95-98 E1 7A 94 3E
14 AE C7 3E 8F C2 75 3E 14 AE C7 3E
99 9A 99 99 3E CD CC CC 3E 00 00 80 3E CD CC CC 3E
慕容紫英的数值段比较特殊,在后面还有20个字节是7。不知道为什么。
9A 99 19 3E 9A 99 19 3E 00 00 00 00 00 00 00 00
07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00
07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
就因为有这个数据库,所以人物的属性值(包括五围)增加每级不同,而且修改存档或者内存的人物属性值,在升级后会重新从以上位置读取相对应的数值加以赋值。