|
关于Act3Sewers的小bug
在用Act3Sewers场景时,总是拿不了箱子。偶不是很懂Javascript,只能靠瞎猜了,请楼主看一下。如果是偶的版本太旧那请无视吧。
主要下面几个问题:
(1)买不了钥匙
NTTownManager.ntl/NTTMGR_TownManager()
当在第三幕时代码去掉了判断买钥匙的条件(_NTTMGR_BuyKey),仅判断了是否维修(_NTTMGR_DoRepair),若需要维修回 Act2 Visit Fara,但Fara不出售钥匙。
(2)有时候找不到箱子
NTCommon.ntl/NTC_GetSpecialChest()
在判断箱子的状态时,有一个判断条件“GetDistance(_chestbox.x, _chestbox.y, me.x, me.y ) < 25”,这个距离25太近了,导致箱子远一点就不去开,改成250就可以了。
(3)找到箱子,但只能开一个箱子
NTAct3Sewers.ntj/NT_Main()
开箱子的代码有问题,原始的代码如下:
_chest = NTC_GetSpecialChest();
if(_chest)
{
if(!NTM_MoveTo(me.areaid, _chest.x+1, _chest.y))
{
NTC_SendMsgToScript(\"NTBotGame.ntj\", \"NTM_MoveTo()\");
return;
}
if(NTConfig_ClearPosition)
NTA_ClearPosition();
NTC_OpenChest(_chest);
NTSI_PickItems();
}
}
这里明显只开了一个箱子(如果找到箱子的话),可改为do...while...循环:
_chest = NTC_GetSpecialChest();
do{
if(_chest)
{
if(!NTM_MoveTo(me.areaid, _chest.x+1, _chest.y))
{
NTC_SendMsgToScript(\"NTBotGame.ntj\", \"NTM_MoveTo()\");
return;
}
if(NTConfig_ClearPosition)
NTA_ClearPosition();
NTC_OpenChest(_chest);
NTSI_PickItems();
}
_chest = NTC_GetSpecialChest();
}
while(_chest);
实际测试了以下,上面代码似乎可以。
(4)有时候下了2层之后直接退出,这个原因估计是NTMove.ntl/NTM_TakeStair()这个函数的问题,这个出现的概率不高,没什么时间就没看了。 |
|