北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
123
返回列表 发新帖
楼主: hasea

Mushclient中wait.lua模块的扩展

[复制链接]
 楼主| 发表于 2013-12-9 22:03:21 | 显示全部楼层
本帖最后由 hasea 于 2013-12-9 10:13 PM 编辑

回复 34# chinali

这个是mushclient程序本身触发的设置。其实是wait.lua这个模块外的问题了。

1、能否说一下为什么需要抓第二行。我也抓过房间的出口。我记得不用抓第二行的数据。因为下一行数据一般是npc。

2、我使用多行触发的时候,没有抓过前面的内容。你可以把wait.regexp返回的三个值都打出看是不是有前一行的内容。记得我打印过,但我忘了。

3、如果实在不行,而你又有这个需求。那有两种办法。
    A、使用GetLinesInBufferCount 和GetLineInfo 来完成这功能
    B、也可以用如以下这样写来获得第一行及第二行数据      
  1.         while true do
  2.         l1,z1=wait.regexp( "^\\s*这里.*的出口是\\s*(.*)")
  3.         l2,z2=wait.regexp(".*")   
  4.          if string.find(l2,"%s*.*")~=nil then  break  end
  5.         end
复制代码



如果你想抓取npc..我记得好像应该不用多行触行来做的。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-12-9 22:15:07 | 显示全部楼层
遍历需要获得出口,在unset biref下,现在的出口有这样一行的
    这里明显的出口是 north、south、east 和 west。
也有这样两行的
    这里明显的出口是 north、east、southeast、northeast、west、southdown、southwest
、northwest 和 eastdown。

一行的触发以及获得出口没问题了,现在就是两行的出口,我该如何获得全部出口?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2013-12-9 22:34:38 | 显示全部楼层
本帖最后由 hasea 于 2013-12-9 10:36 PM 编辑

回复 36# chinali

你应该测试下。下面是我测试的代码。w[0]将打印出两行的数据。!。
    local l,w,s
    wait.make (function ()
        Execute("look")
        l,w,s=wait.regexp("^\\s*这里.*的出口是\\s*(.*)\\n\\s*(.*)。$",nil,nil,true,2)
        Note(w[0])
    end)
我上面说的第二条建议,你没有尝试。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-12-14 00:16:42 | 显示全部楼层
mobai
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2020-8-28 17:34:39 | 显示全部楼层
学习
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2021-9-3 00:20:23 | 显示全部楼层
顶!!!
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2022-3-16 21:20:31 | 显示全部楼层
顶2
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 12:16 PM , Processed in 0.011417 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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