北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 4770|回复: 6

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

[复制链接]
发表于 2011-12-3 23:36:13 | 显示全部楼层 |阅读模式
本帖最后由 dodosheep 于 2011-12-3 03:38 PM 编辑

B
|
A--C
|
D

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

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

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

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-12-3 23:49:45 | 显示全部楼层
一步一步的行走其核心思想就是:把一个行走字符串分解成最小的单步命令,一步一步的根据触发来发送行走指 ...
littleknife 发表于 2010-12-30 07:50 AM

胡小子的思路,mapper的领悟机器人也看了,还是云里雾里。。唉,好笨呀。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 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)=>发送行走指令,等待触发“这里的出口是”。然后循环。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-12-4 11:40:40 | 显示全部楼层
直接用“这里的出口是”做迭代器触发容易无法在NPC面前停止,因为NPC是在“这里的出口是”这个触发之后出现的,所以我的一般做法是“这里的出口是”--->Set walkgo yes,然后在调用处理函数(其实这个做法我个人理解就是#OK功能)。

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


  set brief 2/3,npc会在出口之前,当然类似#ok的更保险
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 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[num])
   end
   if num==7 then
     num=1
   else
     num=num+1
   end
end

现在可以循环走了,但是,出现特定npc 没办法使num=="stop"。
npc触发用SetVariable ("num", "stop")也停不下来。
请前辈们指点指点。
谢谢。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-3-15 09:13:48 | 显示全部楼层
我觉得可以靠一些触发来做。
比如你要搜索路径是
n e w n
然后每走一步,就set walk=ok
然后根据这个触发走下一步
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 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


兄弟,我是一个比你还新的人,请问下你这段代码在MUSH中怎么调用啊?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-17 07:49 AM , Processed in 0.012089 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表