轩辕剑外传: 汉之云 打1.01补丁后战斗死循环解决方法研究

2008-03-14 11:16:45 来源:本站原创 作者:佚名 编辑:dsgames568 我要投稿

由于玩的是XX版,所以1.01补丁直接打上去是不行的。一般人都是备份原先的 swdhc.exe,打完补丁再复制回去。造成的结果就是主程序仍然是 1.00版,新增剧情可以体现(但有严重问题,见下文),修正后的护国持天等技能也可以看到,但1.00系统的一些bug无法修正。

最严重的问题在于新增战斗死循环。用网上下载的新增剧情战斗存档测试后可以发现,在打完路人轩、二战黑龙后,剧情会回到打死boss之间的地方重新进行,造成死循环,无法继续剧情。

本来这个问题是没办法修正的,除了等1.01的XX补丁。不过,前几天看到 vbvan 大大的强帖:汉之云脚本研究(附带MOD制作工具) ,并且大大已经更新了1.01的原始剧情脚本,顿时看到了希望!

经过数小时的研究,发现通过修改脚本,可以修正死循环的问题。

所以,有兴趣diy的可以跟着我一起修改。当然觉得麻烦的可以直接下载修改好的文件。

研究1:新增战斗死循环解决

通过全文搜索关键字,确定暴走陆的剧情全部在 10804c.lua 文件中。判断战斗前后剧情的关键代码如下:

CODE:
crazylu_2 = function()
   if isfon(4801) == 1 and isfon(2913) == 0 then
      crazylu_2_a()
   else
      if isfon(2913) == 1 and isfon(4803) == 0 then
         crazylu_2_b()
      end
   end
end
判断是否与小陆子战斗过的flag是2913。但是整个代码中并无一处设置 fon(2913) 。因此,可以认为 fon(2913) 是在1.01的主程序里直接给出,而1.00的主程序则不会,导致的结果就是 isfon(2913)永远为0,陷入死循环。

修正方法就是把 fon(2913)  加到战斗开始之前——虽然主程序没有设定2913这个flag,在脚本进行过程中设置的效果也是一样的。可以找到 crazylu_2_a() 函数的合适位置:

CODE:
      chatinfo(80, "少年", "喝啊啊啊啊──")
      story_music_off(0, 0)
      story_music(84, 1, 84, 1, 2, 0)
      call_fightdark(383)
      lock_player(0)
这是原先的代码,修改为

CODE:
      chatinfo(80, "少年", "喝啊啊啊啊──")
      fon(2913)
      story_music_off(0, 0)
      story_music(84, 1, 84, 1, 2, 0)
      call_fightdark(383)
      lock_player(0)
这样就可以了。使用网上流传的小陆子战斗前存档测试,在战胜后可以顺利接下面的剧情。


新增的龙吟事件需要三次战斗,第一场位于葫芦谷的战斗不会死循环。而在巫山和绝命崖的战斗都会死循环,原因和陆承轩战斗的道理是一样的。

解决后两次战斗死循环的方法也是一样的。龙吟事件的完整代码在 10805c.lua 中。第二战的flag是 2915,第三战是 2916 。因此,只需把 fon(2915) 和 fon(2916) 分别加入到 plusevent_3_a 与 plusevent_4_a 两段函数的代码当中任意位置。同样用上述存档测试,可以顺利开展后续剧情。

更多相关内容请关注:轩辕剑外传:汉之云专区

1 2 下一页
友情提示:支持键盘左右键“← →”翻页
游民星空APP
随手浏览游戏攻略
code
    没有任何记录
单机游戏下载
休闲娱乐
综合热点资讯
游民星空联运游戏