由于玩的是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 两段函数的代码当中任意位置。同样用上述存档测试,可以顺利开展后续剧情。
更多相关内容请关注:轩辕剑外传:汉之云专区