【tintin++】两种多行触发的实现方法
本帖最后由 zhouyi 于 2019-4-17 04:20 AM 编辑tintin++原生无法支持多行触发,自己实验了一下。尝试了一种嵌套的方法实现多行触发,但是觉得似乎会有些隐患,一时还没想明白。
-------------用action制作多行触发(一行只会被匹配一次,所以这个方法会影响其他触发器生效)
#act {测试行1} {#act {%*} {#if "%%0"=="测试行2" {#showme 两行触发测试};#unact {%*}}
#act {测试行1} {#act {%*} {#if "%%0"=="测试行2" {#act {%*} {#if "%%%0"=="测试行3" {#showme 三行触发测试};#unact {%*}}} {#unact {%*}}}}
尝试了一下用event做多行触发,好处是不影响action的生效,坏处是可能覆盖你其他地方定义的eve动作。
-------------用event制作多行触发(event会在触发器之前生效,使用中应当注意。另外,event只会在真实接受到来自服务器的行后生效,#showme无效)
#eve {RECEIVED LINE} {#var tmp {%1};#if {"$tmp"==" 蓝蓝的大海一望无边。岸边不远处停着几只小船,细细的白沙,"} {#eve {RECEIVED LINE} {#var tmp {%%1};#if {"$tmp"=="踩在脚下软软的好不舒服。不时有几只小蟹横行而过。一排浅浅的足"} {#ec 两行触发测试成功} {#echo 两行触发测试失败};#uneve {RECEIVED LINE}}}}
------------用act和eve结合起来实现多个多行触发并行存在的方法
#act { 蓝蓝的大海一望无边。岸边不远处停着几只小船,细细的白沙,} {#var tmp {%0};#if {"$tmp"==" 蓝蓝的大海一望无边。岸边不远处停着几只小船,细细的白沙,"} {#eve {RECEIVED LINE} {#var tmp {%%1};#if {"$tmp"=="踩在脚下软软的好不舒服。不时有几只小蟹横行而过。一排浅浅的足"} {#ec 两行触发测试成功} {#echo 两行触发测试失败};#uneve {RECEIVED LINE}}}}
我想应该还可以用list的办法来实现多行触发吧,下次再试试。 --2019年4月17日
北大侠客行MUD,中国最好的MUD 利用buffer来实现多行触发:
---------------黄金战士的分割线-------
武馆休息室 -
这是扬威武馆的休息室。收拾得非常干净,摆设简单。靠墙设有几张木床,
近门处放着一张桌子。
----------------以上是需要三行触发的内容----
#ACTION {近门处放着一张桌子} {
#buffer {get} {bf} {1} {2};
#if {"$bf"==" 这是扬威武馆的休息室。收拾得非常干净,摆设简单。靠墙设有几张木床," && "$bf"=="武馆休息室 - "} {#ec 三行触发测试成功} {#ec 三行触发测试失败};
}; 我一般用#ac镶嵌,结合#class开关
#class room open;
#ac {^白虎大街 -} {
#class tmp open;
#ac {^耸立于前。北边是家大的酒楼,里面熙熙攘攘,热闹非凡。向南却是} {say 南面是化生寺;T- tmp};
#ac {^耸立于前。北面静静的是一家书局,来往多是些读书人。南面是一家} {say 南面是钱庄;T- tmp};
#class tmp close;
};
#class room close;
镶嵌的action用class归类便于开关。 tintin的大括号太丑了,看得眼花
页:
[1]