dodosheep 发表于 2011-12-3 23:36:13

新手mush求以下房间遍历LUA代码和正则触发

本帖最后由 dodosheep 于 2011-12-3 03:38 PM 编辑

B
|
A--C
|
D

看了论坛很多例子和贴子都解不出来,特别是#ok功能,但就是解不出来,还望各位高手赐教。谢谢!

要求:
1.每1秒走一步,不停在这4个房间走。
2.出现特定NPC停住,执行其它动作。

自己做了不是走很快,就是停不住。

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

dodosheep 发表于 2011-12-3 23:49:45

一步一步的行走其核心思想就是:把一个行走字符串分解成最小的单步命令,一步一步的根据触发来发送行走指 ...
littleknife 发表于 2010-12-30 07:50 AM http://pkuxkx.com/forum/images/common/back.gif
胡小子的思路,mapper的领悟机器人也看了,还是云里雾里。。唉,好笨呀。

littleknife 发表于 2011-12-4 10:15:45

本帖最后由 littleknife 于 2011-12-4 10:21 AM 编辑

实现无路线遍历的思路可以这样考虑:
1、抓取出口信息:比如“这里的出口是:”。。。
2、触发处理函数的方法:一个是直接用“这里的出口是”这个做触发迭代器,一个是用它触发自己的自定义触发:如set walkgo yes。然后在根据自己的“设定变量..”这个触发做迭代器来行走。

直接用“这里的出口是”做迭代器触发容易无法在NPC面前停止,因为NPC是在“这里的出口是”这个触发之后出现的,所以我的一般做法是“这里的出口是”--->Set walkgo yes,然后在调用处理函数(其实这个做法我个人理解就是#OK功能)。

3、处理函数比如:walkstep,分别来处理是否当前层,当前出口数,返回一个需要行走的命令。

基本流程可以这么考虑:

开始遍历=>“这里的出口是”=>Set walkgo yes (游戏反馈“设定环境变量...”)=>调用处理函数walkstep
=>开始处理相关抓取到的出口信息,以及特殊情况信息,返回当前应该发出的命令(行走指令,如east)=>发送行走指令,等待触发“这里的出口是”。然后循环。

zztuzki 发表于 2011-12-4 11:40:40

直接用“这里的出口是”做迭代器触发容易无法在NPC面前停止,因为NPC是在“这里的出口是”这个触发之后出现的,所以我的一般做法是“这里的出口是”--->Set walkgo yes,然后在调用处理函数(其实这个做法我个人理解就是#OK功能)。

littleknife 发表于 2011-12-4 10:15 AM http://www.pkuxkx.com/forum/images/common/back.gif

set brief 2/3,npc会在出口之前,当然类似#ok的更保险

dodosheep 发表于 2011-12-5 22:09:24

谢谢两位前辈。
path={"n","s","e","w","s","n","l"}
num=1

function go_walk()
if num~=nil then
   Simulate("\n下一步\n")
end
end


function walk()
   if num==stop then
   Send("say 1")
   else
   DoAfter (2, path)
   end
   if num==7 then
   num=1
   else
   num=num+1
   end
end

现在可以循环走了,但是,出现特定npc 没办法使num=="stop"。
npc触发用SetVariable ("num", "stop")也停不下来。
请前辈们指点指点。
谢谢。

dreamnb 发表于 2012-3-15 09:13:48

我觉得可以靠一些触发来做。
比如你要搜索路径是
n e w n
然后每走一步,就set walk=ok
然后根据这个触发走下一步

etet 发表于 2012-3-15 09:30:25

谢谢两位前辈。
path={"n","s","e","w","s","n","l"}
num=1

function go_walk()
if num~=nil then
...
dodosheep 发表于 2011-12-5 02:09 PM http://pkuxkx.com/forum/images/common/back.gif

兄弟,我是一个比你还新的人,请问下你这段代码在MUSH中怎么调用啊?
页: [1]
查看完整版本: 新手mush求以下房间遍历LUA代码和正则触发