yuerr 发表于 2013-12-7 22:21:28

[tintin++]map入门

本帖最后由 yuerr 于 2013-12-7 10:24 PM 编辑

论坛里也有几篇关于tintin画地图的帖子了,但是我还是总结一下给新手看看。

由于绝大部分中国mud都有房子重复问题,所以自动化地图有点难度,如果新人有兴趣手动画图,那欢迎参考我下面的内容

建议使用下面的alias 和 mapper class

#nop mapoff命令关闭所有自动画图功能,不想自动画图就执行这个命令,你就不用担心地图被弄乱了
#ALIAS {mapoff}
{
      #map {flag} {static} {on};
      #class mapper kill;
      #echo {Room writes disabled!}
}

#nop mapof 命令激活自动画图,而且会导入我下面提供的mapper class
#ALIAS {mapon}
{
         #class mapper read mapper.tin;
      #echo {Mapping enabled!};
      #map {flag} {static} {off}
}

#nop mapper class 提供基本手动画图辅助和命令
#class mapper open;

#nop 自动match "金水桥 - (你目前在长安城)"触发,把名字和区域提取出来存在当前地图id下。方便实用,有的时候也把名字改错,嘿嘿,手动走几步就会纠正好了
#act {^{[^ ]*} %2目前在{[^\)]*})} {#var roomname %1;#var roomarea %3;setmap};

#alias setmap {#map set roomarea $roomarea;#MAP name $roomname};

#nop 设置当前地图为static, 方便自动创建overlap的房间,也是中文mud必须的,把一个房间设置好以后一定记得要执行这个命令!
#alias staticon {#map roomflag static on};

#nop 设置 void 房间
#alias void
{
    #if {"%1" == ""}
    {
       #echo {please provide the void room location: void e = #map insert e void}
    }
    {
       #map insert %1 void;
    };
};

#设置新房间,避免已存在房间被错误link在一起
#alias new
{
    #if {"%1" == ""}
    {
       #echo {please provide the new room location: new e = create new room at entry e}
    }
    {
       #map dig {%1} {new}
    };

}

#nop 方便查看当前房间的属性,防止忘了设置static和确保路径正确.
#alias info {#map info}

#class mapper close;


好吧,先把我现成的东西贴出来,下面才是正式说明

1. 看系统说明#help map
         #map
2. 创建地图/倒入地图
如果你还没有地图,那第一步就是创建一个空的地图#map create如果已有地图,可以直接导入#map read xxx.map3. 定位当前位置
必须订位以后tintin才知道你在哪里,一般常用的就是去扬州中心广场坐标#nop goto 地图坐标,加入中心广场是1,那就 #map goto 14. 开始画图!
用上面的alias “mapon" 激活辅助方程,然后就是左右行走自动画图了。
一般的主街道都可以自动走一遍画,但是要小心系统自动提示的自动操作
#nop 下面三行说明自动创建了新的房间,而且自动设置了回走命令,如果你希望的是link到现存房间,请用#map undo 取消操作,回到原来房间,#map goto 重新设置目标,记得"l" 一下自动更新房间名字
#MAP CREATE ROOM   276 {}.
#MAP CREATE EXIT   276 {wd} {wd}.
#MAP CREATE EXIT   275 {eu} {eu}.


#nop 下面这句说明自动创建了和已存在房间的链接,如果你希望新房间,请undo 重新定位然后手动创建房间
#MAP CREATE LINK   206 {康府大院}.
5. 避免重复的link到别的房间
这个问题是国内mud普遍存在的,也是tintin画图比较头痛的地方

细节参考 http://pkuxkx.com/forum/viewthread.php?tid=22043&extra=&page=5
redcoat 41楼详细描述了这个问题而且提供几个解决方案,相当不错

我这里要提的就是static属性,这个可以让tintin知道有overlap的房间存在,然后会自动创建新的

                   钱庄 - 北大街
                   金店       |
某某地方 - 西大街 - 中心广场 - 东大街 - 某某地方
                              |

重新用redcoat的例子,我们可以先创建钱庄,只需要走到钱庄,然后直接执行static即可
因为钱庄只有一个出入口,“走进钱庄”这个动作就会自动创建全部需要的信息,设成static就会避免tintin自动加出入口
然后你再走到金店,tintin会检查到这是个重叠的房间,然后自动创建新房间

下面是例子。
#MAP: Linkable room is marked static. Creating overlapping room instead.

这个方法很方便,但是也不能100%避免所有的问题, 大家使用中慢慢体会

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

yuerr 发表于 2013-12-7 22:25:44

本帖最后由 yuerr 于 2013-12-8 01:03 AM 编辑

差点忘了,要备份已经花完的地图,请用下面命令#map write mud.map
自动跑图

#map run 1#nop 自动跑到room 1


创建不在pathdir的路径,现在速成快餐mud不少, rideto 可以直接乱飞等等,所以我们需要手动创建path,也适合创建需要特殊命令的解密房间


#nop 在扬州中心广场飞北京#nop 调用new alias创建一个房间,在beijing 路径;
new beijing;
#nop 修改beijing命令的实际mud命令,加入你实际输入的命令是;r beijing
#map exit {beijing} {command} {r beijing};
#nop 输入beijing,你就会跑到北京了,然后创建回走命令, r gc(飞扬州广场)
#map link gc 1;
#map exit {gc} {command} {r gc};


这样你就把北京和扬州连在一起了,tintin会自动走到广场然后飞去对方城市,当然傻了点,实际上mud在空地就能飞

achates 发表于 2013-12-9 18:01:53

这个帖子一定要顶,顶了再看。呵呵

onlinemud 发表于 2014-3-7 12:37:02

ttk_18

hanglh 发表于 2022-12-13 20:14:32

好贴Mark
页: [1]
查看完整版本: [tintin++]map入门