ltblue 发表于 2015-4-9 11:13:54

仔细看可以看到,两个迷宫的描述是不同的,换句话说,完全可以识别是在哪个迷宫内
从游戏代码看,松树林1共4个文件,互相勾结,没有出口,通过一个h文件,来保证一路向南可以出去
松树林2共2个文件,互相勾结,只有一个文件的一个出口,能通往松树林1
事实上,我们一般只走松树林1,因为要找枯荣......松树林2大家很少走,那个地方比较偏僻,进去也没啥用......

ltblue 发表于 2015-4-9 11:18:34

我的迷宫文件,就用这两个节点代表了这个迷宫,没有其他的了。
大体解释一下内容哈
area、descriptions、exits、location、name。每个节点都有,没什么可解释的
maze和tomaze两个,我目前只是个标示,实际没啥用,至少目前没啥用
跟一般节点不同的,只有
mazeout = {
                              cmd = "s;s;s;s;s;s;s;s;s;s",
                              trytimes = 3,
                              okmsg = "你筋疲力尽,终于走出了松林。",
                              refind = 1,
                              gto = 1044,
                              stop = 1,
                        },
这个代表了一个方向,寻址的时候,是跟其他方向平等的,只是多了几个属性
trytimes是尝试次数
okmsg是走出去的描述
refind 是走出去之后要重新寻址
stop是走路之前要先停一下(以免指令过多)

另外,还有
walk = {
                         = "s",
                         = "s",
                         = "e",
                         = "e",
                         = "s",
                },

这个是为了在迷宫内找人用的,怕杀手在迷宫里,所以就加了这个
大体就是这样吧,吃饭去先

ltblue 发表于 2015-4-9 11:18:42

我的迷宫文件,就用这两个节点代表了这个迷宫,没有其他的了。
大体解释一下内容哈
area、descriptions、exits、location、name。每个节点都有,没什么可解释的
maze和tomaze两个,我目前只是个标示,实际没啥用,至少目前没啥用
跟一般节点不同的,只有
mazeout = {
                              cmd = "s;s;s;s;s;s;s;s;s;s",
                              trytimes = 3,
                              okmsg = "你筋疲力尽,终于走出了松林。",
                              refind = 1,
                              gto = 1044,
                              stop = 1,
                        },
这个代表了一个方向,寻址的时候,是跟其他方向平等的,只是多了几个属性
trytimes是尝试次数
okmsg是走出去的描述
refind 是走出去之后要重新寻址
stop是走路之前要先停一下(以免指令过多)

另外,还有
walk = {
                         = "s",
                         = "s",
                         = "e",
                         = "e",
                         = "s",
                },

这个是为了在迷宫内找人用的,怕杀手在迷宫里,所以就加了这个
大体就是这样吧,吃饭去先

ltblue 发表于 2015-4-9 11:19:20

至于挡路的问题,我也写在里面了
= {
      area = "大雪山",
      descriptions = {
             = "这座法堂重檐盔顶,纯木结构,四面环以明廊,腰檐设有平座,建筑精湛,",
             = "精巧别致。廊下环栽着长青松柏,庭中更有一株几抱粗的百年梅花树,树干黝",
             = "黑似铁,苍劲挺拔。",
      },
      exits = {
            south = {
                cmd = "s",
                gto = 928,
            },
            up = {
                cmd = "up",
                gto = 932,
                stoper = {
                   = {
                        id = "zayi lama",
                        level = 10,
                        mes = "杂役喇嘛拦住了你,小心翼翼地道:“施主留步,本寺方丈正在清修,不许打搅,施主",
                        name = ".*",
                  },
                },
            },
      },
      location = {
             = "法堂二楼",
             = "〓",
             = "萨迦法堂",
             = "|",
             = "梵音阁",
      },
      name = "萨迦法堂",
    },

ltblue 发表于 2015-4-9 11:19:59

开门的问题
    = {
      area = "大雪山",
      descriptions = {
             = "阁为三间单体高台建筑,阁内四面均有砖砌成的许多个方形小佛龛,龛内",
             = "各供泥塑佛像一尊。均身披袈裟,盘足坐莲台上,头部冒出佛光。是寺内诵经",
             = "礼佛的地方。在东南角有扇不大起眼的黑漆木门。",
      },
      exits = {
            east = {
                cmd = "e",
                gto = 929,
            },
            north = {
                cmd = "n",
                gto = 931,
            },
            northwest = {
                beforego = {
                   = {
                        cmd = "open door",
                        waitovermsg = "你将黑漆木门打开。",
                        waittime = 0.1,
                        waittimemax = 1,
                  },
                },
                cmd = "nw",
                gto = 942,
                move = 1,
                stoper = {
                   = {
                        id = "Hufa lama",
                        level = 40,
                        mes = "护法喇嘛拦住你道:“后山是本寺重地,你没有方丈的手谕,不能进去。",
                        name = ".*",
                  },
                },
            },
            southdown = {
                cmd = "sd",
                gto = 925,
            },
            west = {
                cmd = "w",
                gto = 927,
            },
      },
      location = {
             = "镜庐佛堂   萨迦法堂",
             = "↖   |",
             = "金刚院----梵音阁----大经堂",
             = "↑",
             = "护法扎仓",
      },
      name = "梵音阁",
    },

silvent 发表于 2015-4-9 14:41:37

书剑玩家吧。。

ltblue 发表于 2015-4-9 14:44:54

回复 16# silvent


    是滴。7年前在北侠玩过一段,那时候上大学。

silvent 发表于 2015-4-9 14:44:58

function alias:caidi_cunzhongxin()
       wait.make(function()
      world.Send("north")
                local l,w=wait.regexp("^(> |)菜地 \\- .*$|^(> |)你乱走了一通,居然发现自己走回了原地。$|^(> |)你的动作还没有完成,不能移动。$|^(> |)什么?$|^(> |)这个方向没有出路。$",3)
                if l==nil then
                  self:caidi_cunzhongxin()
                  return
                end
               if string.find(l,"你的动作还没有完成") then
      wait.time(0.5)
      self:caidi_cunzhongxin()
      return
   end
                if string.find(l,"你乱走了一通,居然发现自己走回了原地")   then
                   self:finish()
                   return
                end
                if string.find(l,"这个方向没有出路") orstring.find(l,"什么") then
          local w
                w=walk.new()
                w.walkover=function()
                   self:finish()
                end
                w:go(651)
                return
       end
                if string.find(l,"菜地") then
                   wait.time(0.5)
                   self:caidi_cunzhongxin()
                   return
                end
               if not string.find(l,"菜地") then
       local w
         w=walk.new()
      w.walkover=function()
         self:finish()
      end
       w:go(651)
      return
   end
               
           end)
end

silvent 发表于 2015-4-9 14:45:09

给你参考

silvent 发表于 2015-4-9 14:47:57

迷宫处理模块,是要单独拿出来的。一般在walk模块里,迷宫进出是用特殊得walk行走比如alias模块控制,但是迷宫遍历,必须要替换,所以可以重新定义下walk
页: 1 [2] 3
查看完整版本: 关于在地图文件里部分解决迷宫问题的思路