保存脚本,然后点击AA窗口File--"Assign to current cheat table",将脚本分配到Cheat Table中,然后激活脚本,返回到游戏中,验证我们能不能击毁目标:
第一击:
进入第二关后会看到如下界面:
第二关简直丧心病狂,除了要1vs2,电脑攻高血厚(攻击力和血都是玩家的2倍);更要命的玩家一次只能攻击一个目标,但是会同时受到2个目标的还击,躲都躲不了。换句话说,除非改代码,否则根本无法过关。如果Freeze玩家HP,侥幸干掉一个目标,剩下的一个目标瞬间能灭掉玩家,不管玩家有多少血。估计是作者直接把玩家的HP清零了。(顺带一提,如果读者自己扫描几次游戏,会发现玩家的HP是100,2个电脑玩家的HP是200;玩家的每次攻击造成电脑-1HP,而电脑造成玩家-2HP)。这一关的提示让我想起Cheat Engine官网上的一篇教程:Find the team id in the player structure
这一关玩家的HP有精确的数值,所以"Scan Type"改成"Exact Value"即可。玩家挨几次打,马上能定位存放玩家血量的变量,将该变量加入Cheat Table后,右键"Find out what writes to this address",然后切换进游戏,让玩家再被打一顿,就会显示修改玩家HP的代码了:
在教程Find the team id in the player structure 中间接的提到,有些游戏可能会设计如下形式的扣血函数:
1).在"Memory Viewer"窗口指令"gtutorial-i386.exe+34B70 - 29 50 50 - sub [eax+50],edx"处右键--选择"Find out what address this instruction access",点击该菜单项后会弹出"Changed Address by xxxx"窗口:
2).返回到游戏,让玩家和2个CPU都掉血,然后查看窗口中的内存项,由于在游戏中我们修改了3个对象的血量,所以窗口中有3个记录项。全选这3个记录项,右键选择"Open dissect data with selected address",这时CE会问一堆问题,一路勾选确定最终打开数据解析窗口:
1).在"Memory Viewer"窗口指令"gtutorial-i386.exe+34B70 - 29 50 50 - sub [eax+50],edx"处右键--选择"Find out what address this instruction access",点击该菜单项后会弹出"Changed Address by xxxx"窗口:
2).返回到游戏,让玩家和2个CPU都掉血,然后查看窗口中的内存项,由于在游戏中我们修改了3个对象的血量,所以窗口中有3个记录项。全选这3个记录项,右键选择"Open dissect data with selected address",这时CE会问一堆问题,一路勾选确定最终打开数据解析窗口:
1).在"Memory Viewer"窗口指令"gtutorial-i386.exe+34B70 - 29 50 50 - sub [eax+50],edx"处右键--选择"Find out what address this instruction access",点击该菜单项后会弹出"Changed Address by xxxx"窗口: