英雄无敌小麦 发表于 2015-12-11 07:13:08

修改wog内部运行机制的一点体会

这段时间一直在做一个脚本,构想中可以实现一回会多次施法,经大神007指点,参看了双C脚本,非常好用,正是我想实现的功能,只有一点和预想中的不同,我预想的是鼠标点击施法图标两次施法。这就要求第一次施法之后,施法图标不能变灰,于是再次在007的指点之下,我开始了wog内部机制修改之旅,修改的目的就是实现施法图标不变灰的功能。
启运ce,创建进程,调试-运行,让wog运行起来,并进入战斗界面。
到了这一步,不知怎么下断,然后看了双C脚本,007里面用了一个内部函数,功能是弹出魔法书,于是我就用这个函数下断,函数地址是0x476500,这是我换算后的十六进制地址。右键点击代码窗口-转到地址-输入地址,直接跳到这个地址-下断。
点施法图标,我满怀希望的断没有出现,当时真没想到内部机制弹出魔法书竟然用的不是这个函数。
我又试其它操作,结果在怪物移动时,中断了。
然后,我shift+F8返回,返回,连续返回,然后定到一个函数那里,再也返回不动了,这个就是战场总处理函数,再能返出去,就是退出战斗了。
就在这个函数下断,不愧为总处理函数,一断下,画面就定格了,按F9看看效果,按一下,动一下,效果很好。
这时点施法图标,按F7进入总处理函数内部,按F8一步一步执行。
这个时候就是考验耐心的时候,我因为初时没有耐心,在这一步重复N多次,眼睛看花了,也没有得到有用的结果。
按一段时间之后,魔法书弹出,把这个函数下断,我当时在想,原来你才是御用的魔法书弹出函数啊。
这时点选一个魔法,又断,大家注意观察一下,这时EAX的值就是你所选魔法的编号。
F8继续前进,几步之后,又过一个函数,让你点选施法目标,点选之后,又断下,按F8继续,一会儿之后,魔法书图标变灰,好了,就是这个函数,下断。
wog的内部施法机制是图标先变灰,再显示法术动画效果。
F9运行起来了,把前面的断点都删除,等下一回合能施法时,点施法图标弹出魔法书,点选魔法,选择施法目标,中断到刚才施法图标变灰的函数上。
F7进入,F8继续。这个时候更是考验耐心的时候,因为接下来的函数还有很多,你要判断哪个是环节函数,哪个是底部执行函数。
我们要做的就是找出最接近底部执行函数的环节函数,因为通常情况下,最接近底部的操作起来更加安全,不会对全局造成影响。
一般情况下是不能操作底部执行函数的,因为它被调用的太频繁了,改它更容易出错。
这样找下去之后,我找到一个比较合适的环节函数,然后看它的执行条件,结果就是在0x5A032C这个地址看到一个条件跳转,条件满足时,会跳过环节函数,不进行战场重绘,当然图标也不会变灰了。
就是它了,立即改成无条件跳转,F9运行,果然跳过,战场显示法术动画,而施法图标却没有变灰。
最后改成erm语句,就是!!UN:C5899052/4/2206870251;
这是改成无条件跳转,恢复语句就是!!UN:C5899052/4/2206870132;
最后感谢贤知有您007的帮助和指点。


XEricSin 发表于 2015-12-11 07:55:12

内存直接修改醉无敌

贤知有您 发表于 2015-12-11 09:11:59

楼主太赞了.立马就想到弹出魔法书函数是切入口.
其实很多内部操作都是相互关联的,只要有切入口,纵观大部分函数就可以获得很多内部的运行机制信息.
热切期待楼主新脚本的发布,估计是一个魔法加强(或者魔法师加强)的脚本.
:good_job:

克招 发表于 2015-12-11 09:47:08

楼主碉堡了,我完全听不懂你在说什么~~~~~~;exp;

英雄无敌小麦 发表于 2015-12-11 11:11:30

贤知有您 发表于 2015-12-11 09:11
楼主太赞了.立马就想到弹出魔法书函数是切入口.
其实很多内部操作都是相互关联的,只要有切入口,纵观大部分 ...

好的,我的脚本做的也差不多了,再调试调试就可以放出来了

英雄无敌小麦 发表于 2015-12-11 11:14:15

克招 发表于 2015-12-11 09:47
楼主碉堡了,我完全听不懂你在说什么~~~~~~

有好多东西没解释清楚,我感觉自己有点相当然了。。

bnza60 发表于 2015-12-11 11:18:18

楼主厉害,小白看晕了
页: [1]
查看完整版本: 修改wog内部运行机制的一点体会

捐赠