Thursday, July 23, 2009

DOS时代的问题

以下是dos时期很多人问过的问题,当然现在这些问题大部分甚至在dos开发中已经解决了。以下只是为了记住这段历史。

 

对z.dat文件的开发是艰辛的,在你玩到新的MOD的时候,不要忘记背后许多人无私的努力。
以下是我整理的在发展过程中曾被提出的一些重要的技术问题,多数加上了我的简单评论,通过它们你可以了解到MOD技术开发的一些历史。你可以发现问问题最多的几个人都是如今很熟悉的名字,这是他们当年努力研究的见证。
这些问题中的大部分如今已经得到解决,少部分被认为难以解决或无必要解决。

1.看到伤害计算公式能改变,不知能否让公式加入更多影响元素?因为武功多元性太少了,希望加入一些特色,让每个武功不再只是比较"威力范围格数"如此简单。
比如公式能加入命中率,记得R*中的武功栏有一些没使用的位址变量,可使用一个作为命中率,计算方式大概为:
假设命中率85,if 随机(0-100)<85 then 伤害正常,else 伤害 x 85%。
计算公式时能访问该武功的命中率,不知可行否?甚至能再加入更多影响元素。(guest)
已经由“伤害公式事件”实现。

2.能否实现主角从场景a,经由事件遣送到场景b,且出来大地图是场景b的外面?(KG)
已经由KG等研究实现,并在《笑梦游记》中获得应用。原理为动态修改跳转口。

3.能不能扩展道具的种类代号?举个例子,就像攻击分为,0点,1线,2十字,3面一样,把物品用参数分类,武器,防具,暗器,药材,特殊等原来有的之外再详细分类。(龙吟星落)
已经由“物品调用事件”基本实现。

4.要是能做出更强大的战斗系统就好了,比如增加攻击反噬、点穴等状态,或者可以判断玩家战斗后一共使用了几回合等。(南宫梦)
反噬效果已经实现。特别地,已经有人在研究其他特技的实现,点穴因需要增加太多内容可能比较困难。回合数判断已经由“战斗起始事件”和“回合结束事件”实现。

5.当玩家装备某物品的时候,自动修改一些内存地址,比如装备裘千仞的鞋子,则开启水上飘,加上您之前说的把改变内存地址放到r*中,下次读档自动改变,就可以做好多新的功能。(南宫梦)
已经由“读档事件”实现。

6.能不能实现使用一个物品便执行一个指定的事件?(南宫梦)
已经由“物品调用事件”实现。

7.那些“用毒”“状态”那些选单(场景地图里的)可不可以从调用Z.dat改为调用事件?(KG)
已经实现。需要阅读原版的反汇编文件并手动修改指令。

8.能不能把大地图读取进度取消。(南宫梦)
能。

9.我将人物的生命上限调到9999但显示起来很不美观,不知道有没有解决的办法。(孤山印月)
已经解决。

10.对话的头像边框能不能自定义长宽?或者只要自定义长度就好了,因为我要导入的新游戏头像都很大,我怎么切割都放不进游戏的框框里,除非缩很小,但游戏效果就很丑,很像被打烂的脸,主要是长度,宽度应该够。(guest)
能,但是“对话框修改器”中并没有这个选项,需要手动修改。或者改用新对话指令。

11.修改人物状态栏显示的属性及位置。(KG)
已经可以,但是需要手动修改,比较复杂。

12.可不可以把一些文件放到目录里,比如把所有npc战斗文件放到一个目录里,把所有声音文件放到一个目录里?发现很多人拿到修改档后找不到可执行文件。(南宫梦)
仅复刻版有过这方面尝试。

13.我发现当物品贴图的起始位置过于靠后的话,大地图上第一次显示物品图片还是不正常。(南宫梦)
以前的修改器中漏改了一个地址,此外需要修改大地图实际贴图个数。

14.能不能扩大战斗的人数呢?(KG)
不能,但是已经可以在人数不足26个的时候添加人物。

15.能不能实现函数或过程。(南宫梦)
已经由50指令中的43号指令实现。

16.可否利用现在的指令,另外写一套战斗事件,就是战斗不用去战斗地图。直接在场景地图上,这样可以在战斗中利用事件层触发事件,因为战斗靠新的战斗事件控制,则可以随意定义伤害公式,使武功有更多变数,比如斗转星移之类有实现的可能。(无名)
这可能是一个伟大的想法,但更接近空中楼阁。即使使用高级语言重现战斗系统,代码也非常复杂,更何况是近似机器指令的50指令集。

17.能不能把那两个自宫武功的编号改掉?(KG)
参考前面的相关内容。

18.能不能任意指定物品显示的图片?(KG)
似乎是不能。

19.0.72有几个BUG:Z.dat方面:最高等级貌似不能超过30,否则当升级到31级等级自动变成64级。(KG)
参考前面的相关内容。

20.小宝商店最多能有几项?(KG)
从R文件的结构来看,似乎有7个地点,每个地点5种货物。但是游戏中只使用了5个地点。

21.什么时候可以修改大地图大小?(无名)
至今仍不能。并非是技术上的问题,而是许多数据结构需重新定义,现有的资源也大多无法使用。不过目前看来仍没有必要。

22.游戏中任意调出输入法,这个希望有时间能加上,现在很流行自创的,自创的话让大家自己输入名称不是很好吗。(南宫梦)
输入法的部分目前来看并不是那么简单,所以仍不能。仅复刻版能够调出输入框并使用系统输入法。

23.游戏的场景大小能变得更大吗?(南宫梦)
至今仍不能,问题也在于数据结构的重定义。

24.另外游戏中好像贴图最大200*200,再大游戏不支持,这个能改吗?(南宫梦)
从RLE8压缩的算法来看,应该能够更大,但是列数超过256的话图像格式会有问题,而行数似乎并无限制。但是最好不要这样做。

25.能否加上新的音乐,比较好的音质的。(qja)
仅复刻引擎能使用mp3文件。原Dos引擎的声音文件有很大限制。

26.我希望可以在遊戲內增設一個小地圖,可以較容易知道自己身處那裡。還有不要有水上飄,雖然是方便,但很不好看,可唔可以增設多些船,在地圖上中下都有架,較省時找船,
或者當主角一踏出陸地就會自動變做一架船,這樣就方便得多la~又不難看~(陸無雙)
增加一个小地图并不划算,我的建议是在罗盘上挂一个事件。复刻引擎中尝试过主角在海上自动变成船。

27.突破队友数上限,突破跟随的队友数上限,突破主角武功数上限。(Cloud)
技术上可以,但并不划算。可以使用变通的方法实现。

28.旧指令“得到物品”能显示数量。(guest)
已经有新指令。

29.问个问题,可以让一个人多装备几个东西哇,而且不分武器或者防具哇,譬如一个人可以穿5件衣服什么的?(kingzlw)
可以用“物品调用事件”写一个复杂的事件实现。

30.原来指令中有个场景变暗,能不能再弄个场景变半暗,这样可以弄出黑天的效果。(南宫梦)
已由KG制作出修改调色板的事件。

31.能否在原游戏的“人物状态”中某个位置或
用某个已有的状态(如“用毒能力”位置)来显示“资质”或“道德”等?(曾大虾)
以前并未实现是由于重定位表的问题。现在已经可以了。

32.修改伤害公式,当前内力或最大内力影响伤害,同样的七伤拳级别,内力999的张无忌和内力250的崆峒五老打出的伤害应该大有差别。内力700的铁丑使出的1级腐尸毒比内力50的阿紫的5级腐尸毒伤害要高。武学常识不累加,而取最高值。否则人越多武学常识越高。(碧落)
由“新版伤害公式”部分实现。

33.能扩展物品说明栏的字数吗?(guest)
物品名称出现了两次,有可能把其中一个合并到说明里并设法显示出来。但是似乎没有足够的显示位置。

34.或者新增的菜单指令能容纳6人以上,且可以选择要上场的人吗?(最多6人)(guest)
至今仍不能。但是KG似乎能够用其他方法解决这个问题。

35.能不能实现根据角色在战斗中的表现,如零伤害完成战斗,对敌方造成更多的伤害,给予额外的奖励。(江湖小虾)
大概可以,但是判断指令会写得很复杂吧。

36.秘笈可不可以限制修练次数。(lichao001486)
技术上可以,但是比较复杂。而且,一本书总不能看几次就坏掉吧。

37.队友列表和战斗选人可以改成显示4个汉字吧。(KG)
参考KG签名档。

38.还有能否增加这一功能:如练6脉需要10级一阳,10级缺3掌才能练18掌等判断指令。(张良计)
“物品调用指令”似乎可以实现这个想法。

39.废掉L键或改为别的键(这个应该好弄吧)(南宫梦)
容易。
虽然游泳的鱼这样说,但是我还没找到这个键值的位置。

40.以前有人说大地图飘云的速度能改吗?(guest)
可以,但需要找到控制的地方。
同上。

3 comments:

游客 said...

请问如何恒定主角居的名字?
例如苍龙逐日中主角居恒定为“小村”...

我想改为其它名,是否要用到Z.dat

upwinded(真正的强强) said...

支持偶像!

upwinded(真正的强强) said...

偶像,为啥显示状态(31问)和重定位表有关呢?只修改代码段不行吗?