|
#t+ exit;
npcnum=0;
degree=0;
searchpath=;
pathnum=;
#wa 500;
look;
#t+ go_2;
alias 寻找目标;
#t- go_1
上面这一句是准备开始 alias 寻找目标是得到一句触发。
#if (%numwords(@pathnum,"|")<@degree) {#var searchpath %additem(@item(@exit,1),@searchpath);
#var pathnum %additem(1,@pathnum);
@item(@exit,1);
alias 寻找目标} {#t- exit;
#var roomnum 0;
#var npcnum 0;
#t+ find;
#wa 500;
#forall @exit {look %i}};
#wa 500;
alias 是否找到目标
这里就开始寻找的过程了
#t- find;
#if @npcnum>0 {#t+ go_6;
alias 找到目标} {#t+ go_4;
alias 未找到目标}
这里是判断是否找到的触发
#t+ exit;
#wa 1000;
#if (%numwords(@pathnum,"|")=0) {#add degree 1;
alias 寻找目标} {goback}
这里是如果没找到,那么判断当前房间的度,如果是0 degree+1开始遍历1度,否则返回
#if (%numwords(@pathnum,"|")=0and@temp<%numwords(@exit,"|")) {bianlinextdegree} {#if (@temp<%numwords(@exit,"|")) {#add temp 1;
#var temp2 @item(@exit,@temp);
#var pathnum %additem(@temp,@pathnum);
#var searchpath %additem(@temp2,@searchpath);
@temp2;
alias 寻找目标} {goback}}
这里是返回一步以后的判断。。
@item是用的论坛上的自定义函数,经过测试,我可以遍历地点1度的所有房间,可问题是,如果超过,我就没办法去,永远在起点跟1度的房间循环,这个思路跟方式都是看的一篇帖子,原帖用的是5.55,我用的是462,我实在找不到解决的办法,请大神帮我看看问题出在哪里
北大侠客行MUD,中国最好的MUD |
|