北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
楼主: ltblue

关于在地图文件里部分解决迷宫问题的思路

[复制链接]
 楼主| 发表于 2015-4-9 11:13:54 | 显示全部楼层
仔细看可以看到,两个迷宫的描述是不同的,换句话说,完全可以识别是在哪个迷宫内
从游戏代码看,松树林1共4个文件,互相勾结,没有出口,通过一个h文件,来保证一路向南可以出去
松树林2共2个文件,互相勾结,只有一个文件的一个出口,能通往松树林1
事实上,我们一般只走松树林1,因为要找枯荣......松树林2大家很少走,那个地方比较偏僻,进去也没啥用......
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 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 = {
                        [1] = "s",
                        [2] = "s",
                        [3] = "e",
                        [4] = "e",
                        [5] = "s",
                },

这个是为了在迷宫内找人用的,怕杀手在迷宫里,所以就加了这个
大体就是这样吧,吃饭去先
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 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 = {
                        [1] = "s",
                        [2] = "s",
                        [3] = "e",
                        [4] = "e",
                        [5] = "s",
                },

这个是为了在迷宫内找人用的,怕杀手在迷宫里,所以就加了这个
大体就是这样吧,吃饭去先
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2015-4-9 11:19:20 | 显示全部楼层
至于挡路的问题,我也写在里面了
[931] = {
        area = "大雪山",
        descriptions = {
            [1] = "这座法堂重檐盔顶,纯木结构,四面环以明廊,腰檐设有平座,建筑精湛,",
            [2] = "精巧别致。廊下环栽着长青松柏,庭中更有一株几抱粗的百年梅花树,树干黝",
            [3] = "黑似铁,苍劲挺拔。",
        },
        exits = {
            south = {
                cmd = "s",
                gto = 928,
            },
            up = {
                cmd = "up",
                gto = 932,
                stoper = {
                    [1] = {
                        id = "zayi lama",
                        level = 10,
                        mes = "杂役喇嘛拦住了你,小心翼翼地道:“施主留步,本寺方丈正在清修,不许打搅,施主",
                        name = ".*",
                    },
                },
            },
        },
        location = {
            [1] = "法堂二楼",
            [2] = "〓",
            [3] = "萨迦法堂",
            [4] = "|",
            [5] = "梵音阁",
        },
        name = "萨迦法堂",
    },
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2015-4-9 11:19:59 | 显示全部楼层
开门的问题
    [928] = {
        area = "大雪山",
        descriptions = {
            [1] = "阁为三间单体高台建筑,阁内四面均有砖砌成的许多个方形小佛龛,龛内",
            [2] = "各供泥塑佛像一尊。均身披袈裟,盘足坐莲台上,头部冒出佛光。是寺内诵经",
            [3] = "礼佛的地方。在东南角有扇不大起眼的黑漆木门。",
        },
        exits = {
            east = {
                cmd = "e",
                gto = 929,
            },
            north = {
                cmd = "n",
                gto = 931,
            },
            northwest = {
                beforego = {
                    [1] = {
                        cmd = "open door",
                        waitovermsg = "你将黑漆木门打开。",
                        waittime = 0.1,
                        waittimemax = 1,
                    },
                },
                cmd = "nw",
                gto = 942,
                move = 1,
                stoper = {
                    [1] = {
                        id = "Hufa lama",
                        level = 40,
                        mes = "护法喇嘛拦住你道:“后山是本寺重地,你没有方丈的手谕,不能进去。",
                        name = ".*",
                    },
                },
            },
            southdown = {
                cmd = "sd",
                gto = 925,
            },
            west = {
                cmd = "w",
                gto = 927,
            },
        },
        location = {
            [1] = "镜庐佛堂   萨迦法堂",
            [2] = "↖   |",
            [3] = "金刚院----梵音阁----大经堂",
            [4] = "↑",
            [5] = "护法扎仓",
        },
        name = "梵音阁",
    },
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-4-9 14:41:37 | 显示全部楼层
书剑玩家吧。。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2015-4-9 14:44:54 | 显示全部楼层
回复 16# silvent


    是滴。7年前在北侠玩过一段,那时候上大学。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 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,"这个方向没有出路") or  string.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
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-4-9 14:45:09 | 显示全部楼层
给你参考
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2015-4-9 14:47:57 | 显示全部楼层
迷宫处理模块,是要单独拿出来的。一般在walk模块里,迷宫进出是用特殊得walk行走比如alias模块控制,但是迷宫遍历,必须要替换,所以可以重新定义下walk
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 09:39 AM , Processed in 0.009216 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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