铁血丹心

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

[其他] [长期活动] fishedit的bug修正和新版本计划

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

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

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

x
按照游泳的鱼的发布时的说法,任何人均可以对源码进行重新编译和发布。但是为了修改器和MOD制作的发展考虑,希望大家在发布自己的修改时能够依照以下几个原则:

1.以高于0.72的版本号发布自行编译的修改器是不适合的,形如 "fishedit 0.72 Rebuilt by Huang SK" 这样的名字是较为合适的选择。

2.希望大家可以自行动手修正一些bug并提交修改过的源码。如果没有对窗体的控件进行修改,可以只说明修改了哪一部分代码,最好附上完整的修改后的子程,方便别人使用;如果修改了控件,那么可能需要说明修改的过程,如果修改得较多需要提交frx或frm文件,可以上传为附件,权限不够可以PM给游戏区任意一位版主帮忙代传。

3.fishedit目前存在很多导致崩溃的bug,对这些bug进行修正是当前的首要工作。

4.以上原则并不要求严格遵守,只是一些建议。任何发布的人均可以自行决定是否遵循这些建议和是否公开自己修改过的源码。

5.以上建议为本人所写,但源码的发布者游泳的鱼应对这些建议有最终决定的权利。


因本人对Visual Basic的了解不多,因此希望更多的人参与到修正和更新中来,将fishedit打造成更加完美的修改器。

08.8.4

[发帖际遇]: weyl帮周威信押镖,结果:被太岳四侠打劫,倒赔银两30.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-8-5 14:18 | 显示全部楼层
联系游泳的鱼很不容易,先把我的建议发出来……有代庖之嫌……

[发帖际遇]: weyl冒充青木堂主向反清份子征收活动经费,结果:被陈近南发现,赔偿名誉损失费银两50.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-5 15:27 | 显示全部楼层
好像很麻烦的样子。。。
还是懒得发了。。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-5 20:12 | 显示全部楼层
建议:
新的FISHEDIT里要加LZ的扩展战斗系统指令的修改指导哈,一个一个手动修改指令字不够方便。
z.dat编辑里则可以加入更多的修改项,各位老大手里不都有些此类型的东东么。
场景事件D\S编辑中给出一个有效地图范围,避免画地图时把通路画到游戏中不可到达的位置。
场景事件D\S编辑中可以加入当前地图导入导出或是复制粘贴剪贴板的功能,便于侵犯他人知识产权?
贴图编辑里增加批量复制,要把200物品贴图的位置搬家就方便了……

[发帖际遇]: 凶神恶煞参与红花会陈家洛的计划:叛变勾结清廷,得到赏赐银两37.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-5 20:39 | 显示全部楼层
1.正在酝酿(我是懒得改了。就让无色来吧)
2.不是所有的人都有的
3.应该可以
4.这个早就被曾大虾实现了,在他空间里有下载
5.。。。。。。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-8-5 21:31 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-5 21:43 | 显示全部楼层
哪里哪里,一切都得靠S大大的技术支持啊

[发帖际遇]: 黄顺坤挺身而出,阻止萧峰打“段正淳”,成功挽救阿朱,得到奖励银两36.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-5 22:17 | 显示全部楼层
楼主说的我都同意。

关于发布的问题。虽然大家可以各自发布,但是最好能够找一个人比较熟悉负责牵头整理比较合适。目前我可以暂时负责这部分吧,如果有人愿意牵头那就更好了。

我会定期整理大家的发布版本,并出新的版本号。下一个版本号就是0.73了。当然,不公开源代码的显然我就无法整理了。

关于版本号的命名,就按照楼主的建议。如果你不是在0.72原版,而是在其它人修改版的基础上修改的,也请说明。

为了便于整理,如果大家愿意把自己的修改提交给我作为新版本的一部分,有必要遵循以下几条:
1.  目前建议主要以修改原有bug为主。尽量按照楼主说的第二条提交修改文件,必须说明是在原版基础上修改还是前面已经应用了其他人的修改。这一点很重要。因为有可能几个人的修改放到一起就不能工作了。
2. 多测试自己的修改有无问题,尽量把其他人的修改合并后进行测试,以发现合并后有无问题。并多测试原有功能是否正常。因为我在集成到一起的时候可能没有时间做详细测试。
3. 如果要增加新的功能,如果能够独立出来,建议做成单独的程序。这样就会尽量减少修改造成的问题。并且可以单独发布版本,不用和fishedit集成在一起。如果不能,比如必须引用原有的数据,也请尽量把代码集中在单独的frm,bas,cls等文件中,这样尽量减少代码之间的耦合,以免引入错误。新功能请自行测试,我一般不会测试新功能的。
4. 对于z.dat代码的修改,请尽量在addkdef.txt文件中增加内容,然后用修改器自动生成z.dat,并指出在addkdef.txt文件修改或增加的地方。能不增加vb代码就不要增加。如果确实有必要在修改器中控制z.dat的内容。也尽量用新的窗体实现。以免和原有窗体混在一起。
5. 关于已经有很多人发布了对z.dat代码的修改和增强,希望原作者能够按照格式在addkdef.txt中加上这部分内容,以便进行合并。并尽量给出比较详细的说明。

如果愿意把你修改或增加的功能集中到新版本中,请务必给我发email,地址为jywindows@163.com。在email中请附上修改的源代码和按以上要求写的文档。我一般会集中若干个修改以后才会发布新版本,一方面减少工作量,另一方面也希望有人自己使用这些修改能够发现潜在问题。新版本是连源代码和可执行包一起发布。
注意发email时一定注明你在论坛上的id,我会在专门的文档中列出大家修改的贡献的。

另外,如果对修改器源代码或者z.dat反汇编代码理解方面有什么技术性问题,也可以向我提问。我尽量回答。

先说这么多,如果大家感兴趣,可以试行一段时间。有什么不合适的或者问题再说。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-8-5 22:34 | 显示全部楼层
战斗指令集就是我做的...不过那时我不清楚fishedit居然有一个隐藏功能,所以是用了一套新的办法。现在也有几个月没碰了..有空我试着整理成那个格式...

此外0.72有几个bug,是36指令的和最大等级等地方,让小黄整理出来..

[发帖际遇]: 参与红花会陈家洛的计划:weyl向清廷告密,遭到红花会追杀损失银两3.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-8-6 13:28 | 显示全部楼层
现在我自己写的汇编自己都看不懂
从addkdef的定义来看游泳的鱼是曾经定出了一套标准的,但是现在很多修改方案已经偏离了这个标准


:sub_1c
; 取当前人物的战斗序号
; arg_0 变量

    8b 44 24 04               ;mov eax, [esp + arg_0]
    0f bf 0d *5a300           ;movsx ecx, word ptr [5a300]
    66 89 0c 45 *120000       ;mov [eax*2+120000],cx
    c3                        ;retn
   


:sub_1d
; 选择目标
;arg_0 type
;arg_4 战斗id
;arg_8 步数
;arg_c 保存选择的目标战斗id
;arg_10 是否显示选择画面
    53                         ;push ebx
    56                         ;push esi
    57                         ;push edi
    55                         ;push ebp
    83 7c 24 24 00             ;cmp dword ptr [esp+arg_10],0
    75 'loc_sub_1d_1           ;jnz short 0005ddf1
    6a 00                      ;push 0
    ff 74 24 18                ;push dword ptr [esp+arg_0]
    ff 74 24 20                ;push dword ptr [esp+arg_4]
    e8 "sub_getValue           ;call sub_getValue
    83 c4 0c                   ;add esp,c
    8b f0                      ;mov esi,eax
    6a 01                      ;push 1
    ff 74 24 18                ;push dword ptr [esp+arg_0]
    ff 74 24 24                ;push dword ptr [esp+arg_8]
    e8 "sub_getValue           ;call sub_getValue
    83 c4 0c                   ;add esp,c
    8b f8                      ;mov edi,eax
    6a 00                      ;push 0
    6a 01                      ;push 1
    57                         ;push edi
    56                         ;push esi
    e8 &36afe                  ;call 00036afe 选择目标子程
    83 c4 10                   ;add esp,10

loc_sub_1d_1:
    0f bf 1d *556dc            ;movsx ebx,word ptr [556dc]
    c1 e3 07                   ;shl ebx,7
    0f bf 05 *556da            ;movsx eax,word ptr [556da]
    0f bf 84 43 *1e4a04        ;movsx eax,word ptr [ebx+eax*2+e4a04]
    8b 4c 24 20                ;mov ecx,[esp+arg_c]
    66 89 04 4d *120000        ;mov [ecx*2+120000],ax
    5d                         ;pop ebp
    5f                         ;pop edi
    5e                         ;pop esi
    5b                         ;pop ebx
    c3                         ;retn
   
:sub_1e
; 读取人物战斗属性
; arg_0 type
; arg_4 战斗id
; arg_8 偏移
; arg_c 变量号
   
    60                         ;pushad
    6a 00                      ;push    0
    ff 74 24 28                ;push    [dword ss:esp+arg_0]
    ff 74 24 30                ;push    [dword ss:esp+arg_4]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b f8                      ;mov     edi, eax
    6a 01                      ;push    1
    ff 74 24 28                ;push    [dword ss:esp+arg_0]
    ff 74 24 34                ;push    [dword ss:esp+arg_8]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    6b ff 1c                   ;imul    edi, edi, 1c
    81 c7 2c *dc72c            ;add     edi, dc72c
    03 f8                      ;add     edi, eax
    0f bf 4c 24 30             ;movsx   ecx, [word ss:esp+arg_c]
    66 8b 07                   ;mov     ax, [word ds:edi]
    66 89 04 4d *120000        ;mov     [word ds:ecx*2+120000], ax
    61                         ;popad
    c3                         ;retn

:sub_1f
; 写入人物战斗属性
; arg_0 type
; arg_4 战斗id
; arg_8 偏移
; arg_c 数值

    60                         ;pushad
    6a 00                      ;push    0
    ff 74 24 28                ;push    [dword ss:esp+arg_0]
    ff 74 24 30                ;push    [dword ss:esp+arg_4]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b f8                      ;mov     edi, eax
    6a 01                      ;push    1
    ff 74 24 28                ;push    [dword ss:esp+arg_0]
    ff 74 24 34                ;push    [dword ss:esp+arg_8]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b f0                      ;mov     esi, eax
    6a 02                      ;push    2
    ff 74 24 28                ;push    [dword ss:esp+arg_0]
    ff 74 24 38                ;push    [dword ss:esp+arg_c]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b c8                      ;mov     ecx, eax
    6b ff 1c                   ;imul    edi, edi, 1c
    81 c7 *dc72c               ;add     edi, dc72c
    03 fe                      ;add     edi, esi
    66 89 0f                   ;mov     [word ds:edi], cx
    61                         ;popad
    c3                         ;retn


:sub_2c
;播放效果
; arg_0 type
; arg_4 战斗id                     
; arg_8 动作类型
; arg_c 效果编号


    60                         ;pushad
    6a 00                      ;push    0
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 30                ;push    [dword ss:esp+30]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b f8                      ;mov     edi, eax
    6a 01                      ;push    1
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 34                ;push    [dword ss:esp+34]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b f0                      ;mov     esi, eax
    6a 02                      ;push    2
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 38                ;push    [dword ss:esp+38]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    83 fe 00                   ;cmp     esi, 0
    7c 'loc_2c_2               ;jl      short loc_2c_2
    50                         ;push    eax
    56                         ;push    esi
    57                         ;push    edi
    e8 &3859e                  ;call    0003859e 武功动画
    83 c4 0c                   ;add     esp, c
    eb 'loc_2c_1               ;jmp     short loc_2c_1
:loc_2c_2                     
    50                         ;push    eax
    e8 &3884a                  ;call    0003884a 暗器动画
    83 c4 04                   ;add     esp, 4
:loc_2c_1                     
    61                         ;popad
    c3                         ;retn
   

:sub_2d
;显示数字
; arg_0 type
; arg_4 数字颜色                     
; arg_8 是否闪烁
; arg_c 闪烁颜色

    60                         ;pushad
    6a 00                      ;push    0
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 30                ;push    [dword ss:esp+30]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b f8                      ;mov     edi, eax
    6a 01                      ;push    1
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 34                ;push    [dword ss:esp+34]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b f0                      ;mov     esi, eax
    6a 02                      ;push    2
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 38                ;push    [dword ss:esp+38]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    66 89 3d *556d4            ;mov     [word ds:556f4], di
    66 a3 *e6ebc               ;mov     [word ds:e6ebc], ax
    56                         ;push    esi
    e8 &38910                  ;call    00038910
    83 c4 04                   ;add     esp, 4
    66 c7 05 *556f4 00 00      ;mov     [word ds:556f4], 0
    61                         ;popad
    c3                         ;retn
   
   
   
:sub_2e
;设定效果层
; arg_0 type
; arg_4 x起始                     
; arg_8 y起始是否闪烁
; arg_c x长度
; arg_10 y长度
; arg_14 数值


    60                         ;pushad
    6a 00                      ;push    0
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 30                ;push    [dword ss:esp+30]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b f8                      ;mov     edi, eax
    6a 01                      ;push    1
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 34                ;push    [dword ss:esp+34]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b f0                      ;mov     esi, eax
    6a 02                      ;push    2
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 38                ;push    [dword ss:esp+38]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b e8                      ;mov     ebp, eax
    6a 03                      ;push    3
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 3c                ;push    [dword ss:esp+3c]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b d8                      ;mov     ebx, eax
    6a 04                      ;push    4
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 40                ;push    [dword ss:esp+40]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
:loc_2e_1                     
    83 fd 00                   ;cmp     ebp, 0
    7e 'loc_2e_4               ;jle     short 0005e746
    53                         ;push    ebx
    56                         ;push    esi
:loc_2e_2
    83 fb 00                   ;cmp     ebx, 0
    7e 'loc_2e_3               ;jle     short 0005e740
    8b ce                      ;mov     ecx, esi
    c1 e1 07                   ;shl     ecx, 7
    66 89 84 79 *1dea04        ;mov     [word ds:ecx+edi*2+dea04], ax
    46                         ;inc     esi
    4b                         ;dec     ebx
:loc_2e_3
    eb 'loc_2e_2               ;jmp     short 0005e72a
    47                         ;inc     edi
    4d                         ;dec     ebp
    5e                         ;pop     esi
    5b                         ;pop     ebx
    eb 'loc_2e_1               ;jmp     short 0005e723
:loc_2e_4   
    61                         ;popad
    c3                         ;retn
   
   
:sub_2f
;恢复静止贴图
; arg_0 type
; arg_4 战斗序号

    60                         ;pushad
    6a 00                      ;push    0
    ff 74 24 28                ;push    [dword ss:esp+28]
    ff 74 24 30                ;push    [dword ss:esp+30]
    e8 "sub_getValue           ;call    0005d148
    83 c4 0c                   ;add     esp, c
    8b e8                      ;mov     ebp, eax
    55                         ;push    ebp
    e8 &3b1d6                  ;call    0003b1e6   计算人物静止贴图
    83 c4 04                   ;add     esp, 4
    6b ed 1c                   ;imul    ebp, ebp, 1c
    66 89 85 *1d73c            ;mov     [word ss:ebp+dc73c], ax
    e8 &2d653                  ;call    0002d653   清屏
    61                         ;popad
    c3                         ;retn

:sub_31
; 调用任意子程
; arg_0 子程地址低位
; arg_4 子程地址高位
; arg_8 起始参数
; arg_c 参数个数
; arg_10 返回值


    60                         ;pushad
    8b 44 24 28                ;mov     eax, [dword ss:esp+arg_4]
    c1 e0 10                   ;shl     eax, 10
    33 db                      ;xor     ebx, ebx
    66 8b 5c 24 24             ;mov     bx, [word ss:esp+arg_0]
    03 c3                      ;add     eax, ebx
    05 *feff0000               ;add     eax, fffe0000
    8b e8                      ;mov     ebp, eax
    8b 4c 24 2c                ;mov     ecx, [dword ss:esp+arg_8]
    8b 74 24 30                ;mov     esi, [dword ss:esp+arg_c]
    6b fe 04                   ;imul    edi, esi, 4
    83 fe 00                   ;cmp     esi, 0
    74 'loc_31_1               ;je      short 0005e6a8
:loc_31_1
    0f bf 04 4d *120000        ;movsx   eax, [word ds:ecx*2+120000]
    50                         ;push    eax
    41                         ;inc     ecx
    4e                         ;dec     esi
    83 fe 00                   ;cmp     esi, 0
    75 'loc_31_1               ;jnz     short 0005e698
:loc_31_2
    ff d5                      ;call    near ebp
    03 e7                      ;add     esp, edi
    8b 4c 24 34                ;mov     ecx, [dword ss:esp+arg_10]
    66 89 04 4d *120000        ;mov     [word ds:ecx*2+120000], ax
    61                         ;popad
    c3                         ;retn
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-6 15:02 | 显示全部楼层
那个功能和格式标准开始主要是我自己用的,为避免修改二进制的麻烦。本来是准备成熟后再发布的。结果发现对z.dat的修改是无止境的。

如果大家没时间整理成addkdef.txt的格式也没关系,把修改过的z.dat发给我就,说明一下具体的修改位置,我来整理。毕竟我对z.dat这个比较熟了。

晚上再写几条大家修改addkdef.txt 的的指南吧,以免各自整理集成后出现混乱。

[发帖际遇]: 游泳的鱼冒充青木堂主向反清份子征收活动经费,结果:被陈近南发现,赔偿名誉损失费银两50.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-8-6 20:14 | 显示全部楼层
我先把战斗指令按你的写法写出来吧, 然后你再简单调整一下估计就行了. 最麻烦的地方是判断选择目标是用什么键返回的, 这个是把原来的子程改了很多, 估计要费些力气.

其他的就是有很多地方插入了事件, 我会描述一下原理和修改的地方, 这个也许你可以有更合理的实现方案.

[发帖际遇]: weyl冒充青木堂主向反清份子征收活动经费,结果:非法融资被收监,交纳保释银两50.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-8-6 21:26 | 显示全部楼层
战斗指令共9条, 全部写好了, 其他的主要的两个是重写0号指令, 增加在大地图和战斗时正常清屏, 和选择目标的一些修改.

[发帖际遇]: weyl遭太岳四侠打劫,落荒而逃中丢失银两5.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-6 21:54 | 显示全部楼层
给出一份简单指南,大家可以照此整理自己对z.dat的修改。

修改addkdef.txt以的的指南

1.  除了修改原始addkdef.txt的错误外,尽量少修改原始addkdef.txt文件。增加的内容都加在原始文件的尾部。先写start,后写section,格式如下:

        start xxxxx
        xx xx xx
        Start xxxxx
        xxxxx
        。。。
       Section xx
       xx xx xx
       xx xx xx
       Section xx
       xx xx xx

2. start 段是修改原始z.dat中的代码或者数据,地址是固定的,因此直接用start指明修改地址。

3.  Section段为新增加代码。每个section为一个新页面。原来有60个页面,我使用了4个,61,62,63,64。大家可以从65开始用。

    fishedit.ini中
       [Newz]
           Pageadd=4
       指明了增加的页面数,增加了section后,就要修改此处。

4. 注意每个section只能写1000H字节的数据,修改器不判断是否超出,你可以反编译生成的z.dat看看有没有超出。如果超出,就要启用新的section。

5. 为了修改的方便,在section的代码或者数据中尽量不要依赖固定地址,而是用文件“增加指令格式.txt”中给定的方式引用这些地址。也就是把你的代码和数据放到其他section下,依然可以运行。因为修改器可以自动处理这些地址。如果确实需要固定地址,比如在修改器中要修改这个地址的数据,请把这个地址的数据放到fishedit.ini 的[NewZEdit]中。以方便修改地址。比如
                LightlistAddr = 5b004    ; 可加入人物列表地址
         这个就是我增加的数据地址。

6. 我固定了每个页面200个重定位表 ,大家尽量省着使用重定位项,如需多次使用,可以先把它放到寄存器或堆栈中。实在不够的话就修改源代码吧。

7. 我为了方便处理,目前页面数不能无限增加。主要是我固定了z.dat中程序起始地址为20000H,这样就和ida中的地址一致,方便直接修改。但是这样一来,前面留给重定位表的就不多了。因此估计最多还可以再增加10个左右的页面。目前估计够用,如不够,再修改源代码不迟。

8. 大家整理后可以自己生成z.dat,反编译看是否正确,然后再测试一下修改的功能是否实现。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-8-6 22:00 | 显示全部楼层
我写了一个子程添加进去, 生成之后获得了z_old.dat和z_old.dat.bak, 不过大小是相同的, 应该不对劲.

估计重定位项应该够用, 也许可以写一个子程用来从表象地址获得实际地址.

[发帖际遇]: weyl参与红花会陈家洛的计划:成功绑架乾隆,得到奖励银两35.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-6 22:03 | 显示全部楼层
代码格式写的很好!但是还缺少修改原有z.dat的部分。

你有没有自己试试用它生成新的z.dat,看看是否正确?

另外
     66 89 0c 45 *120000       ;mov [eax*2+120000],cx
我一般都是直接调用sub_0实现的。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-8-6 22:05 | 显示全部楼层
我刚开始只添加了一个, 生成过, 不正确

如果正确的话输出的文件名应该是什么?

[发帖际遇]: weyl卖下一个mod的制作人绝密采访稿,狂赚银两6.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-6 22:07 | 显示全部楼层
原帖由 weyl 于 2008-8-6 22:00 发表
我写了一个子程添加进去, 生成之后获得了z_old.dat和z_old.dat.bak, 不过大小是相同的, 应该不对劲.

估计重定位项应该够用, 也许可以写一个子程用来从表象地址获得实际地址.

[发帖际遇]: weyl参与红花会陈家洛 ...


生成的应该是z.dat, 可能直接放在游戏目录了吧?这个我也忘了在哪了。
z_old.dat还是原来的,只不过其中的重定位表有个错误,因此每次都要修正一下。

[发帖际遇]: 游泳的鱼参与红花会陈家洛的计划:成功绑架乾隆,得到奖励银两50.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-8-6 22:12 | 显示全部楼层
类型不匹配...这应是什么原因?

[发帖际遇]: weyl请陈园园签名,被吴三桂发现,损失银两30.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-6 22:18 | 显示全部楼层
原帖由 weyl 于 2008-8-6 22:12 发表
类型不匹配...这应是什么原因?

[发帖际遇]: weyl请陈园园签名,被吴三桂发现,损失银两30.

一般是文件格式有些问题吧?你再检查一下,如果还有问题,把它email给我,我看看。

[发帖际遇]: 游泳的鱼冒充青木堂主向反清份子征收活动经费,结果:被陈近南发现,赔偿名誉损失费银两50.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2008-8-6 22:35 | 显示全部楼层
刚才是一个冒号的位置写错了……
这些汇编代码应该问题不大,已经测试过好多次了。估计还要再测一次……

另外每个section只能写一次吧,以前我是把许多较小的修改写在5c000段的
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-6 22:44 | 显示全部楼层
我要学反汇编!(第十八次喊此口号)
天书=汇编

[发帖际遇]: 黄顺坤在华山山谷捡到被令狐冲打落的宝剑,送回给宁女侠,宁女侠感谢万分,送你银两18.
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-6 22:54 | 显示全部楼层
原帖由 weyl 于 2008-8-6 22:35 发表
刚才是一个冒号的位置写错了……
这些汇编代码应该问题不大,已经测试过好多次了。估计还要再测一次……

另外每个section只能写一次吧,以前我是把许多较小的修改写在5c000段的


每个section 确实只能写一次的,因此尽量集中一个section写就行了。其实只要不使用绝对地址,代码放在哪里问题都不大。

用section只是为了定义页面,方便确定重定位表项,因为它是和文件头的页面相关的。我为了简化处理,只能固定section了。否则一个4B的重定位项跨了页面如何处理我就不清楚了。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2008-8-20 05:55 | 显示全部楼层
坐挫板慢慢学习,做到认真记笔记。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-12-22 23:05

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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