alucar 发表于 2011-4-29 16:51:46

试试 #exec %item(@area,@step)

hotel 发表于 2011-4-29 17:08:07

原帖由 alucar 于 2011-4-29 04:51 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
试试 #exec %item(@area,@step)


发现问题了。目前发现这个问题好象和 bianli 里面的内容有关系。

#if (@step<=@steps) {   #wa 500
#if (@findnpc=0) {         %item( @area, @step)         #add step 1         bianli         }
{xixi}}}


自己看了看,找到NPC 之后,虽然停止了以后步数的行走,但是, step的数值,却给加了一次。这样再用
%ismember( %item( @area, @step),获得就是下一步路径,在方向string里面的数值了。 暂时改动 trigger
#tri {^??你嘻嘻地笑了起来。} {#add step -1;goback}
成功返回起点。我去把bianli 里面的逻辑判断修改下, 看看会有什么变化。

hotel 发表于 2011-4-29 17:35:01

试验之后发现,
#alias bianli {
#if (@step<=@steps)
{#wa 500
#if (@findnpc=1) {xixi}
{%item( @area, @step)
#add step 1
bianli }
}}

这样改过逻辑判断的顺序之后, 在执行了xixi 之后, step 又被执行了个 #add step 1.

trigger 保留成#tri {^??你嘻嘻地笑了起来。} {#add step -1;goback}   才能顺利原路返回。 这是怎么回事情? 是不是721的脾气呢? 我去找个 555 版来检查下。

alucar 发表于 2011-4-29 17:48:40

这个逻辑执行的结果就是step+1
执行过程是:没有找到npc,则执行@step指定的步数,同时step+1,如果找到npc,执行xixi
当找到npc时,step已经被+1了,指定的值其实是找到npc后下一步的值

hotel 发表于 2011-4-29 18:06:29

原帖由 alucar 于 2011-4-29 05:48 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
这个逻辑执行的结果就是step+1
执行过程是:没有找到npc,则执行@step指定的步数,同时step+1,如果找到npc,执行xixi
当找到npc时,step已经被+1了,指定的值其实是找到npc后下一步的值


怎样防止它逻辑上+1 呢?我的头有点晕,想不出来。

对于自身嵌套我实在不熟悉,是不是使用这个结构,必然会有step+1 呢?晚上我下个555版本测试一下。

[ 本帖最后由 hotel 于 2011-4-29 06:17 PM 编辑 ]

alucar 发表于 2011-4-29 18:56:26

没必要防止阿,在xixi那里加个#add step -1就好了

hotel 发表于 2011-4-29 19:11:31

原帖由 alucar 于 2011-4-29 06:56 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
没必要防止阿,在xixi那里加个#add step -1就好了


先休息一会,然后开始后面的试验。有点找到写小程序的感觉了。

alucar 发表于 2011-4-29 19:14:22

或者step从0开始记,把%item( @area, @step)和#add step 1换个顺序
页: 1 [2]
查看完整版本: ZMUD遍历,计划找到某NPC后停止,可是找到后,都多走下一步才停,怪了。