【发布时间】:2014-04-18 07:08:55
【问题描述】:
这可能是一个不寻常的问题,但我将不胜感激。
首先,我不是程序员,也没有学过编程,但是对Visual Basic和Java有一些业余的了解。
我一直在尝试修改一款名为“古墓丽影 III”的旧电子游戏。
这是一个 3D 游戏,一个叫 Lara 的女人与一些生物战斗。你可以在this video clip看到比赛(滚动到5:00分钟,看看她是如何与老虎战斗的)。
我想做的是修改游戏,以便敌方生物在击中劳拉时对她的健康造成更多伤害。
运行游戏的文件名为“tomb3.exe”。我用反汇编程序 OllyDbg 打开了这个文件。我很幸运地找到了一个命令行,当她被敌人击中时,它显然会对 Lara 的健康造成损害。当我用“NOP'S”替换这一行时(即删除它),劳拉变得无敌了。她不再受到敌人袭击的伤害。老虎(例如)会继续打她,但她的健康不会受到影响。
This image 显示了我正在谈论的那一行。它位于 004205EC。
004205BD 和 004205CF 之间的代码负责让敌人攻击 Lara。当我删除这段代码时,老虎会像攻击她一样跑向拉拉,但它不会咬或抓她。
似乎对敌人攻击造成的伤害负责的线条是:
CMP WORD PTR DS:[ESI+12],AX
MOV WORD PTR DS:[ESI+E],AX
我尝试(以多种方式)编辑这些行,但在编辑后我无法使它们工作。我只是不知道怎么做。
我想要的是增加敌人攻击造成的伤害(比如双倍或三倍)。我认为 AX 可能包含伤害值(或者可能包含 Lara 的健康值?)。我试图通过使用诸如“imul AX, 2”之类的命令来更改 AX 的值,但这只会在 Lara 出现敌人时导致游戏崩溃。
我知道这是一个奇怪的问题,但任何建议都将不胜感激。
提前致谢。
更新:我想解释一下。我在这个问题中提到的代码负责地面敌人在攻击 Lara 时可以做的不同动画。我突出显示的特定行负责地面敌人在攻击 Lara 时所做的最终动作。对于持枪的人来说,这种行为表现为子弹从枪中射向劳拉的身体。因此,禁用这条线将禁用子弹动画,劳拉不会受到伤害。这段代码是关于地面敌人在攻击模式下的动画。我认为这与劳拉的健康或敌人攻击的强度无关。我还没有发现负责这些事情的代码。
【问题讨论】: