ZMUD遍历,计划找到某NPC后停止,可是找到后,都多走下一步才停,怪了。
ZMUD 版本721,yangzhou, 是随便设的20 来步路, 就是走到曲清之后还要多走几步。
#alias zhaonpc {#var step 1
#var findnpc 0
#var area @yangzhou
#var steps %numitems( @area)
bianli}
#alias bianli {#if (@step<=@steps) {#if (@findnpc=0) {
#wa 500
%item( @area, @step)
#add step 1
bianli
} {xixi}}}
#tri {^??%s曲清} {#var findnpc 1}
这是从糖果老板那里照搬过来的。我想不清楚问题出在什么地方。
[ 本帖最后由 hotel 于 2011-4-29 02:31 PM 编辑 ] #wa 时间太短了吧,可能没来及触发,也就是过去以后才触发停下来 原帖由 zine 于 2011-4-29 02:33 PM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
#wa 时间太短了吧,可能没来及触发,也就是过去以后才触发停下来
调整了一下, 把 WA 该成 了1500,还是走到曲清之后,又走了一步。怪了。 把wa向上调一层 原帖由 labaz 于 2011-4-29 02:48 PM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
把wa向上调一层
#alias bianli {#if (@step<=@steps) {#wa 500;
#if (@findnpc=0) {
%item( @area, @step)
#add step 1
bianli
} {xixi}}}
终于能到地方停下了。真奇怪,从原来的那个代码逻辑上来说应该是没问题的啊。怎么执行过程中会有差异呢? bianli和bianli之间要留时间等触发,否则if判断是立即执行的 原来的代码:
#if (@step<=@steps) {
#if (@findnpc=0) {
#wa 500//即使在此期间触发了#var findnpc 1,以下的代码仍将执行,所以会多走一步
%item( @area, @step)
#add step 1
bianli
} {xixi}}
修改后的代码:
#if (@step<=@steps) {
#wa 500 //如果在此期间触发了#var findnpc 1,接下来在判断findnpc=1的时候就会停下来
#if (@findnpc=0) {
%item( @area, @step)
#add step 1
bianli
} {xixi}}} 试验反向返回, 出现新问题了。
#var fangxiang {n|e|nw|ne|nu|nd|eu|ed|u|enter|s|w|se|sw|sd|su|wd|wu|d|out}
#var fangxiangb {s|w|se|sw|sd|su|wd|wu|d|out|n|e|nw|ne|nu|nd|eu|ed|u|enter}
#tri {^??你嘻嘻地笑了起来。} {goback}
#alias goback {#if (@step>=1) {#wa 500;
%item( @fangxiangb, %ismember( %item( @area, @step), @fangxiang))
#add step -1
goback} {haha}}
原本设想,用%ismember 获取前一个方向在 fangxiang 中的数字位置,再从fangxiangb 中查找到它的反方向,从而回到出发点。但是碰到个问题, trigger 触发之后,第一个输出的方向,是刚才最后一步的方向,而不是它的反方向。 第2 个发出来的方向,才是正确的返回方向。 问题出在哪呢?
我对这些功能函数不太懂,一点一点的学。一点一点的试验。
[ 本帖最后由 hotel 于 2011-4-29 04:55 PM 编辑 ] %ismember返回的应该是找到的第一个元素,路径list变量里一般都有重复元素,不能用这个方法
直接用@step应该就可以了
%item( @fangxiangb, @step)
[ 本帖最后由 alucar 于 2011-4-29 04:04 PM 编辑 ] 原帖由 alucar 于 2011-4-29 04:03 PM 发表 http://www.pkuxkx.net/forum/images/common/back.gif
%ismember返回的应该是找到的第一个元素,路径list变量里一般都有重复元素,不能用这个方法
直接用@step应该就可以了
%item( @fangxiangb, @step)
实验了一下,在我这里没有运行。我去翻下函数资料。 一点一点试验。
%item( @area, @step), @step 是已经走到的第几步, @area 是一个string类型的变量, %item() 应该是输出string中指定的步数的命令, 是不是问题出在这里? 是不是应该用其他函数,获得string中指定步数的那个方向?
[ 本帖最后由 hotel 于 2011-4-29 04:41 PM 编辑 ]
页:
[1]
2