religiose 发表于 2013-1-31 22:16:51

学习MUSH第三日(续)---抓取房间,出口,地点

都是收集别人的帖子,copy代码,加自己实践出来的(mush4.43绿色版)。
直接上例子:抓取一个房间的名称,描述,出口
房间格式类似如下:
一个小房间 -
   这里是一个小房间,是花一朵的小屋,淡雅,恬静。屋子中间放着几张座椅,普拉普拉普拉
   普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉
   普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉普拉。
   这里明显的出口是 up, out 和 west。

1,抓ROOM名称:触发器匹配:^(.{2,})\s\-\s$   发送就不写了,抓到了干什么都可以。
2,copy别人的,匹配:
<muclient>
<plugin
   name="room_desc"
   id="026692aaf3e3f8a2ef495057"
   language="Lua"
   save_state="y"
   date_written="2012-01-08 19:17:28"
   requires="4.43"
   version="1.0"
   >
</plugin>
<triggers>
<trigger
   enabled="y"
   group="map"
   lines_to_match="4"
   match="^$\n^\S+\s-\s$\n^\s+(\S+)\s*$\n^\s+"
   multi_line="y"
   name="map_desc1"
   regexp="y"
   send_to="12"
   sequence="101"
   variable="map_desc1"
>
<send>getRoomDesc("room_desc","%1")</send>
</trigger>
<trigger
   enabled="y"
   group="map"
   lines_to_match="5"
   match="^$\n^\S+\s-\s$\n^\s+(\S+)\s*$\n^(\S+)\s*$\n^\s+"
   multi_line="y"
   name="map_desc2"
   regexp="y"
   send_to="12"
   sequence="102"
   variable="map_desc2"
>
<send>getRoomDesc("room_desc","%1".."%2")</send>
</trigger>
<trigger
   enabled="y"
   group="map"
   lines_to_match="6"
   match="^$\n^\S+\s-\s$\n^\s+(\S+)\s*$\n^(\S+)\s*$\n^(\S+)\s*$\n^\s+"
   multi_line="y"
   name="map_desc3"
   regexp="y"
   send_to="12"
   sequence="103"
   variable="map_desc3"
>
<send>getRoomDesc("room_desc","%1".."%2".."%3")</send>
</trigger>
<trigger
   enabled="y"
   group="map"
   lines_to_match="7"
   match="^$\n^\S+\s-\s$\n^\s+(\S+)\s*$\n^(\S+)\s*$\n^(\S+)\s*$\n^(\S+)\s*$\n^\s+"
   multi_line="y"
   name="map_desc6"
   regexp="y"
   send_to="12"
   sequence="104"
   variable="map_desc6"
>
<send>getRoomDesc("room_desc","%1".."%2".."%3".."%4")</send>
</trigger>
<trigger
   enabled="y"
   group="map"
   lines_to_match="8"
   match="^$\n^\S+\s-\s$\n^\s+(\S+)\s*$\n^(\S+)\s*$\n^(\S+)\s*$\n^(\S+)\s*$\n^(\S+)\s*$\n^\s+"
   multi_line="y"
   name="map_desc5"
   regexp="y"
   send_to="12"
   sequence="105"
   variable="map_desc5"
>
<send>getRoomDesc("room_desc","%1".."%2".."%3".."%4".."%5")</send>
</trigger>
</triggers>

<!--Script-->
<script>
<![CDATA[
function getRoomDesc(room,roomdesc)
proomdesc = roomdesc
Note(proomdesc)
end
]]>
</script>
</muclient>
3,出口:require "wait"
require "tprint"
place=nil
desc=nil
ways=nil
function way_t()
    local l,w
    local find=string.find
Note(1)
    while 1 do
Note(7)
    l,w=wait.regexp("这里没有任何明显的出路|这里唯一的出口是 (+)。|这里明显的出口是 (+) 和 (+)|这里明显的出口是 (+)、(+) 和 (+)|这里明显的出口是 (+)、(+)、(+) 和 (+)|这里明显的出口是 (+)、(+)、(+)、(+) 和 (+)|这里明显的出口是 (+)、(+)、(+)、(+)、(+) 和 (+)|这里明显的出口是 (+)、(+)、(+)、(+)、(+)、(+) 和 (+)")
Note(l)
Note(w)
ways=nil
          ways={}
          local id=1
          if find(l,"-") then
         for i,v in ipairs(w) do
            if v~=nil and v~=false and (not find(v,">")) and v~="" and i>2 then
             Note(v)
             ways=v
             id=id+1
            end
         end
          else
         for i,v in ipairs(w) do
            if v~=nil and v~=false and v~="" then
             Note(v)
             ways=v
             id=id+1
            end
         end
          end
         tprint(ways)
    end
Note(6)
end
function init()
    wait.make(way_t);
end
init()基本都是收集的,不过看懂了,用起来还是蛮爽的。

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

labaz 发表于 2013-1-31 22:36:33

看着像是2毛的代码风格

dcl 发表于 2013-2-1 03:41:38

出口处理的不全,丐帮暗道梁长老那里的出口你这个捕获不到
页: [1]
查看完整版本: 学习MUSH第三日(续)---抓取房间,出口,地点