hillson 发表于 2018-1-15 16:03:16

福州mush运镖的问题

mush新手所以很多都不懂.我是直接下qq群里面福州mush机器人来用的,把.mcl里面的路径都改成机器里面的路径.

在运膘途中,不被乱入时基本一切正常,但被乱入后很大情况无法找到路(只有25%时候能够找到),我注意了一下,下面具体案例

gan che 到福州城中心,robber乱入连人带车往west踢了一次到西大街,杀完robber后机器人开始luanru和lrfind的识别.此时var抓的didian和miaoshu都是西大街的,然而HB_didian1和HB_miaoshu1
都是城中心的(车的位置在西大街),所以luanru和lrfind识别一段时间后都是不正确,然后就放弃停在那里了.

我想知道到底是什么情况导致了会这样?

北大侠客行MUD,中国最好的MUD

candyqing 发表于 2018-1-15 16:15:04

就是每个room的出口顺序随机变化,所以这个机器人抓的出口与改变后的顺序对不上就会找不到。

hillson 发表于 2018-1-15 17:16:06

回复 2# candyqing


那么有什么解决方法吗?因为这种情况,基本上机器人在有乱入的情况下都无法工作,我想知道其他人是怎样处理这个问题的,还是这种情况只出现在我身上?

hillson 发表于 2018-1-15 18:01:15

下面是我觉得有问题的部分,麻烦看以下

local didian=GetVariable("didian")
local miaoshu=GetVariable("miaoshu")
local chukou=GetVariable("chukou")
local HB_luanru=GetVariable("HB_luanru")
local HB_lrdidian=GetVariable("HB_lrdidian_"..HB_luanru)
local HB_lrmiaoshu=GetVariable("HB_lrmiaoshu_"..HB_luanru)
local HB_lrchukou=GetVariable("HB_lrchukou_"..HB_luanru)
local HB_lrlj=GetVariable("HB_lrlj")
local HB_lrcs=tonumber(GetVariable("HB_lrcs"))
if didian~=HB_lrdidian or miaoshu~= HB_lrmiaoshu or chukou~=HB_lrchukou then
Note("不是这里")
DoAfterSpecial(1,revfx(HB_lrlj),10)
HB_lrcs=HB_lrcs+1
SetVariable("HB_lrcs",HB_lrcs)
DoAfterSpecial(2,"set HB_jieduan luanru",10)
else
Note("找回原路")
SetVariable("HB_lrcs","1")
DoAfterSpecial(1,revfx(HB_lrlj),10)
DoAfterSpecial(2,"set HB_jieduan fanhui",10)
end


其中didian/miaoshu/chukou为被踢后room的信息(比如从城中心踢到西大街,则是西大街的信息), lrdian/lrmiaoshu/lrchukou 则是要检查的周围房间的信息, lrlj是从出口提取的方向变量.所以每次到这种情况机器人都会扔下镖车,在附近房间走去检查,但问题是附近房间的信息当然无法符合本身didian/miaoshu(原地不动)的信息,结果就这样走几轮后就卡在那里了.

另外我尝试过,假如把车直接gan去别的房间(比如north),然后south回来则能通过判定(因为这样目的地房间就变成了原来的房间,则判定通过.


下面是我的猜测,假如被踢的只有车而不是人(人和车不在同一房间),则上面的触发都能正常判定,问题是当人和 车同时被踢时问题就来了.

candyqing 发表于 2018-1-17 08:26:43

这两天我的小猫生了重病,所以我一直也没有心情上线,今天才上论坛来看看,你说的这个问题有处理方法,你找一下论坛里 nrm 发的帖子,就在技术那栏里面,标题好像是叫地图的几个处理方法来着,你看一下,那个就能解决你的问题。

ffff 发表于 2019-10-30 11:11:16

学习了,谢谢分享!
页: [1]
查看完整版本: 福州mush运镖的问题