feishu 发表于 2014-5-15 17:17:43

求教cmud map迷宫问题。

本帖最后由 feishu 于 2014-5-16 11:18 AM 编辑

画地图碰到一个迷宫,机构如下

青石大道                    树林-树林   大门
      |             /            \       |         
    宜兴                 /              树林-树林
      | \ 田地1-田地2-田地3              |    /
    南浔镇  

 
其中田地2是一个随机的出口迷宫,每次田地1-2-3之间出口在n;s;w;e四个出口中随机刷新,请问怎么样才能在map中顺利从宜兴-树林,或者相反。怎么才能解决呢。我自己的是解决的办法是1、2、3在map的出口连接设置成other,再配合trigger。
代码如下多行触发 <pattern><!]></pattern>
    <trigger>
      <pattern><!]></pattern>
      <value>exit_qu=%trim(%replace(%replace(%replace(%replace(%concat(%trim(%1)," ",%trim(%2)),"southwest",""),"northwest",""),northeast,""),southeast,""));
fanfangxiang
</value>
其中反方向是个alias代码 <alias name="fanfangxiang">
    <value>#if (@exit_qu=south) {#var exit_hui north};
#if (@exit_qu=north) {#var exit_hui south};
#if (@exit_qu=west) {#var exit_hui east};
#if (@exit_qu=east) {#var exit_hui west};</value>
</alias>
在分别在田地2房间连接1和2的方向添加命令look;#execute %replace(@exit_qu,@exit_hui,"")
现在的问题是,如果鼠标在1、2、3内逐个房间走的话,就可以走,如果直接从1-3点鼠标就不行。求各位大侠解决方法。不胜感激!

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

huacuozid 发表于 2014-5-16 07:37:06

cmud不懂,估计应该合mush的思路是一样的吧。
1 你的房间拓扑结构没看懂
2 就当做是随机迷宫的处理吧:房间2和1、3的连接可以设置为一个函数啊,这个函数的内容就是房间2内随机走,设置房间1和3为边界,一直走到需要的房间,函数结束。

feishu 发表于 2014-5-16 11:22:51

回复 2# huacuozid

不好意思,没有编辑,出口虽然是随机的,但是却是唯一的,田地2只有两个随机出口,除去回到1或3的出口实际上只有一个,你的说函数怎么实现呢?有点不明白.
现在的可以找到唯一的出口,但是不能正确执行,不知道怎么办。

huacuozid 发表于 2014-5-16 13:26:28

四处只有一步就简单了:
lua大概就是这样了:
1 去的天地1和2的唯一标识(描述,出口,等)
look north
抓取看到的描述和田地的描述作对比
if 就是想要到的房间 then north return
else
    look east
    抓取看到的描述和田地的描述作对比
   if 就是想要到的房间 then east return
else...................以此类推

huacuozid 发表于 2014-5-16 13:27:29

四处只有一步就简单了:
lua大概就是这样了:
去的田地1和2的唯一标识(描述,出口,等)

look north
抓取看到的描述和目标房间的描述作对比
if 就是想要到的房间 then north return
else
    look east
    抓取看到的描述和目标房间的描述作对比
   if 就是想要到的房间 then east return
else...................以此类推

yaot 发表于 2014-5-16 16:39:57

花大神威武

feishu 发表于 2014-5-19 13:26:25

谢谢您的提醒,问题解决了。

littleknife 发表于 2014-6-5 20:36:12

本帖最后由 littleknife 于 2014-6-5 08:39 PM 编辑

我的处理方法是这样的:你在“宜兴”这个节点指向“田地”这个方向时,采用特殊方向,比如:yx2td3(相当于楼主的other思路、也相当于花长老的单独建立函数)在行走到“宜兴”这个节点时,若想走到“田地3”,这个方向是yx2td3,在行走函数发现是特殊命令yx2td3,则单独处理此函数,处理完成后返回行走函数,继续下一步。

这个思路和坐船,以及和zmud中定义方向Direction是一个思路,不要把方向的定义局限在东南西北这些方向上。比如,进入丐帮地道,也可以设置成中央广场到树洞的一个特殊方向来处理。虽然没用过Cmud,但是估计和zmud录制地图差不多。楼主可以考虑定义Direction的方式,比如定义一个专门的方向yx2td3来解决这个问题,相应得定义相反方向。
页: [1]
查看完整版本: 求教cmud map迷宫问题。