铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 3222|回复: 8

[通用] 修改z.dat教程—在关键位置插入事件

[复制链接]
发表于 2008-7-6 14:01 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
这套教程推荐使用的软件:

IDA 5.2:反汇编文件需要它打开。
C32Asm:16进制编辑器,也可以直接写入汇编指令。



例:将“离队”这个选项改成调用事件

用IDA打开反汇编文件,找到 Menu_Esc 子程,其中有这样的部分:

dseg02:00021450 loc_21450:                              ; CODE XREF: _MainMenu_esc+184j
dseg02:00021450                 cmp     dword ptr ds:word_1C0820, 4 ; 主选单选项编号
dseg02:00021457                 jnz     short loc_21463
dseg02:00021459                 call    _Menu_Leave     ; 离队选项
dseg02:0002145E                 jmp     loc_21311

使用 C32asm 对这部分进行修改:


把21459改为
call XXXXX
在XXXXX的位置添加代码:

XXXXX:
push  3fa
call  2c319
add   esp, 4
ret


2c319即CallEvent这个子程,为事件的总调用入口。
以上修改即可将离队这个选项改成调用1018事件。
如果还需要原来事件的功能,可以在ret之前加上 call _Menu_Leave(改成离队选项的地址)。

注意事项:
明白原理之后,这类修改其实非常简单。需要注意的是,如果你要在战斗的执行过程中插入事件,需要使用50指令中的43指令。
这是因为战斗中再调用事件涉及事件重入。
你可以用

0005C5EE:  6A 00                      PUSH    0
0005C5F0:  6A 00                      PUSH    0
0005C5F2:  6A 00                      PUSH    0
0005C5F4:  6A 00                      PUSH    0
0005C5F6:  68 03040000                PUSH    403
0005C5FB:  6A 00                      PUSH    0
0005C5FD:  E8 B61E0000                CALL    0005E4B8
0005C602:  83C4 18                    ADD     ESP,18


或者同样功能的语句来实现调用43指令。


关于栈的问题:
必须注意栈在修改之后也要保持平衡,一旦栈操作不配对,结果会是灾难性的。
如果你认为修改的部分并不适合使用call语句,可以使用jmp进行跳转。
如果需要调用栈中的数据,注意call语句会压一个值入栈。

哪些地方可以插入事件:
一般地说大部分地方都可以插入事件,甚至包括标题画面,但是系统的重要子程中尽量避免过多的事件。
有些涉及画图的子程可能不宜插入事件。在战斗中显示人物小头像这个子程中,插入事件会导致游戏崩溃。但是将整个子程替换成事件却并没什么问题(并不是建议你这样做)。




[ 本帖最后由 weyl 于 2008-7-6 20:18 编辑 ]

评分

参与人数 1 +10 收起 理由
lift_viper + 10 好贴奖励

查看全部评分

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-7-6 17:12 | 显示全部楼层
帮我改改吧..

不会..

[发帖际遇]: 黄顺坤用胡萝卜、白萝卜、玉米粒、葱花等材料仿制侠客岛“腊八粥”,获利银两18.


[ 本帖最后由 weyl 于 2008-7-7 23:47 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-7-6 17:32 | 显示全部楼层
你要改什么?可以下订单。之后付费或者写教程

[发帖际遇]: weyl在丽春院喝酒,发掘了人才韦小宝,增加奖惩积分27.


[ 本帖最后由 weyl 于 2008-7-7 23:47 编辑 ]
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-7-7 01:19 | 显示全部楼层
你要改什么?可以下订单。之后唱歌或者写教程

[发帖际遇]: KG跟踪成昆进入明教密道,结果:被秃驴发现打伤,损失医药费银两34。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-7-7 09:15 | 显示全部楼层
唱歌 ...呵呵..我不会,还是自己来吧
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-7-7 16:04 | 显示全部楼层
啊!!!!多谢SCC了!!!!!
(我验收验收....)

[发帖际遇]: 黄顺坤在海边沙滩上捡到一支圣火令,当废铜卖了,获得银两5.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-7-7 16:22 | 显示全部楼层
楼上连发,版主请扣分
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-7-7 23:50 | 显示全部楼层
一般这类修改的通用性不高,而已经发布的一些扩展指令究竟改了哪里作者并未完整说明。(都是汇编跟开源差不远要什么说明……)
所以我建议以“扩展战斗指令+50指令扩充功能+50指令bug修正”为基础修改。

[发帖际遇]: weyl拜岳老三为师,得到见面礼银两29.


[ 本帖最后由 weyl 于 2008-7-7 23:52 编辑 ]
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2009-8-17 23:19 | 显示全部楼层
又被减少银子了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-11-16 03:27

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表