Sunday, April 20, 2008

有关“插入事件改写系统”的碎语


这个post不是什么技术相关的,大概算是一个无聊碎语的集合。

我以前编写过一个新的伤害公式,那时是完全用十六进制代码写的,首先将汇编代码译成十六进制代码,call和jmp指令的地址还都要自己计算出来,非常麻烦也容易出错。

使用物品直接触发事件是谁最早提出来的已经搞不清楚了,最早跟我提这个的是Guest。战斗中调用事件其实也不知最早是谁的主意,总之用事件修改伤害公式也是很早之前就有人想过(但那时想怎么改,直接改汇编代码么?那样还是有很大限制的)。

用物品调用事件,就可以任意增加大地图事件了。那么自然就会想到,战斗中能不能调用事件?如果能的话,需要什么样的事件?

我看反汇编的代码时,发现有一个子程似乎是控制选择攻击目标的,这就是有了战斗指令的最早构思。最开始是想有一个选择目标的也许就够了,但后来越想越复杂。

最初只构思了法宝,后来发现也许只有法宝还是不够的,于是又增加了武功调用事件,这样有些功能就必须直接操作内存才能用,但是这时已经是战斗指令搞出来一个多月了。所以从0.10到0.20,指令没有增加,却有了非常大的变化。

后来所想的就是找许多适当的位置插入事件了,这样系统许多功能就完全可以自定,随作者的想法了。

不过我自己倒是没开放太多地方,z.dat文件里面的空间其实还有很多,插几十个事件还不成问题,但插在哪却要好好想一想。如果选的地方好可以事半功倍,选的地方糟糕就有可能没有效果甚至导致游戏功能出错。

无论如何,“插入事件”总算开了个花,希望能看到结果的那天。

No comments: