发现一则一段屎山脚本把其他MOD的任务全卡掉的案例,留个记录。最近发现古旧神殿卖花女不出现,融化旅店的吉文也不出现的BUG,但他俩在之前的档都是没问题的,查触发条件没有任何问题,百思不得其解,往上翻脚本发现这几个区域关卡脚本里法多BG2 MOD的脚本有这么一段:
IF
AreaCheck("AR1000") // 行政区
CombatCounter(0)
GlobalTimerExpired("L#FaldornReturnsTime","GLOBAL")
Global("L#FaldornReturns","GLOBAL",1)
THEN
RESPONSE #100
CreateCreatureObject("L#FALMES",Player1,0,0,0) // 德鲁伊信使
SetGlobal("L#FaldornReturns","GLOBAL",2)
Continue()
END
IF
Global("L#FaldornReturns","GLOBAL",2)
THEN
RESPONSE #100
ActionOverride("L#FALMES",StartDialogueNoSet(Player1))
END
其中第二段,"L#FaldornReturns"=2后触发德鲁伊信使对主角的对话,但是脚本本身没有跳出条件("L#FaldornReturns"=2这个条件在下一次执行时依然成立,变量刷新的动作估计写在对话文件里),而德鲁伊信使完全可能生成在另一个玩家不去的关卡导致长期无法和主角完成对话(我的档几个关卡里都找不到这个NPC),最终导致这段脚本每次都会执行,进而把后面的脚本全卡掉(关卡脚本的运行逻辑就是每次从上往下找到一条条件为true的代码运行然后再从头开始)。
这就是这游戏为啥老有NPC不出现的原因,一个MOD的垃圾脚本就能把整个区域的任务全卡住
