[仙剑4]仙剑4内存修改 – 针对战斗模式相关的一些资料[研究手稿]

断断续续一天多的研究,对仙剑4的战斗模式结构有了些了解,看下面:
PS:感谢游侠论坛的lckiu提供人物战斗基地址和是否在战斗中的基地址。

基地址:
PS:ReadMemoryToInt这个函数是读取指定地址中的数值

人物战斗基地址(战斗中的人物,最多3名)
ReadMemoryToInt(ReadMemoryToInt($00400000+$004f3128)+$34)

左侧人物:+$00000000
中间人物:+$00000004
右侧人物:+$00000008

是否在战斗中的基地址,不在战斗中则为0
ReadMemoryToInt($00400000+$004f3190)

交换的人物,如果4个人物进入战斗模式,排在最后的人会在这个地址里保存数据

基地址:ReadMemoryToInt(ReadMemoryToInt($00400000+$004f3128)+$24)
偏移值:+$0000000C

战斗敌人基地址,战斗模式中最多容下6个敌人位置
ReadMemoryToInt(ReadMemoryToInt($00400000+$004f3128)+$14)

第一敌人:+$00000000
第二敌人:+$00000004
第三敌人:+$00000008
第四敌人:+$0000000C
第五敌人:+$00000010
第六敌人:+$00000014

以下为人物和敌人的战斗中数据结构(前部):

$8   基础精
$c   基础气
$10  基础神
$14 基础攻
$18 基础防
$1C 基础速
$20 基础运
$24 基础灵

$E0  基础等级
$E4  基础经验

$14C  位置

$158  精增加幅度
$15C  气增加幅度
$160  神增加幅度
$164 攻
$168防
$16c速
$170运
$174灵

$230 显示等级
$234 显示经验
$23C 精
$240 气
$244 神

$29C 位置

偏移值  作用  值   其他说明
$38  ??  $FA  $188有一样的
$8C  ??  $32   $1DC有一样的
$D0  ??   $bd3    $220有一样的
$d4  ??   $1      $224有一样的
$150  ??  $11?  $2A0有一样的
$154  ??  $2?

特殊
人数数据里的位置指的就是人物在战斗模式中位置,0为左边,1为中间,2为右边,6为交换人物。

我这里辨认人物在哪个位置是利用读取迷宫模式里的人物基础精,再去与战斗模式中我方的4个地址里的基础精做比较,对上了则直接赋值。

判别基地址里是否有敌人或我方人物,则判断他们地址位置上(偏移$0)上的值是多少,值为$846008是我方,值为$00845D00是敌人。

每次战斗结束或战斗中有敌人死亡后(针对战场上可攻击敌人少于6人)。如果有7个敌人,打死第2个,那第7个敌人数据会出现在第二敌人基地址上。所以第N敌人的基地址是战斗模式里的位置。一些规律如下:
遇到6个敌人
第一敌人 A1
第二敌人 A2
第三敌人 A3
第四敌人 A4
第五敌人 A5
第六敌人 A6

当第二敌人死亡,则会变成
第一敌人 A1
第二敌人 A3
第三敌人 A4
第四敌人 A5
第五敌人 A6
第六敌人 A6

当第一敌人死亡
第一敌人 A3
第二敌人 A4
第三敌人 A5
第四敌人 A6
第五敌人 A6
第六敌人 A6

当全灭敌人结束战斗,回到迷宫模式后
第一敌人 A6
第二敌人 A6
第三敌人 A6
第四敌人 A6
第五敌人 A6
第六敌人 A6

下场遇到3个敌人
第一敌人 B1
第二敌人 B2
第三敌人 B3
第四敌人 A6
第五敌人 A6
第六敌人 A6

在换人位置里的数据貌似是不可改写的。

人物死亡后再锁定精补满不会复活,现在粗略的感觉有2个地址有关,但都是表示头像状态和人物模型的,所以可能人物死亡后会比较麻烦。

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据