hasea
发表于 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、也可以用如以下这样写来获得第一行及第二行数据 while true do
l1,z1=wait.regexp( "^\\s*这里.*的出口是\\s*(.*)")
l2,z2=wait.regexp(".*")
if string.find(l2,"%s*.*")~=nil thenbreakend
end
如果你想抓取npc..我记得好像应该不用多行触行来做的。
chinali
发表于 2013-12-9 22:15:07
遍历需要获得出口,在unset biref下,现在的出口有这样一行的
这里明显的出口是 north、south、east 和 west。
也有这样两行的
这里明显的出口是 north、east、southeast、northeast、west、southdown、southwest
、northwest 和 eastdown。
一行的触发以及获得出口没问题了,现在就是两行的出口,我该如何获得全部出口?
hasea
发表于 2013-12-9 22:34:38
本帖最后由 hasea 于 2013-12-9 10:36 PM 编辑
回复 36# chinali
你应该测试下。下面是我测试的代码。w将打印出两行的数据。!。
local l,w,s
wait.make (function ()
Execute("look")
l,w,s=wait.regexp("^\\s*这里.*的出口是\\s*(.*)\\n\\s*(.*)。$",nil,nil,true,2)
Note(w)
end)
我上面说的第二条建议,你没有尝试。
qdz
发表于 2013-12-14 00:16:42
mobai
dengtaliyi
发表于 2020-8-28 17:34:39
学习
mathematics
发表于 2021-9-3 00:20:23
顶!!!
tiiger
发表于 2022-3-16 21:20:31
顶2