zhouyi 发表于 2019-4-17 12:11:12

【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

zhouyi 发表于 2019-4-21 22:02:30

利用buffer来实现多行触发:
---------------黄金战士的分割线-------
武馆休息室 -
    这是扬威武馆的休息室。收拾得非常干净,摆设简单。靠墙设有几张木床,
近门处放着一张桌子。
----------------以上是需要三行触发的内容----
#ACTION {近门处放着一张桌子} {
    #buffer {get} {bf} {1} {2};
    #if {"$bf"=="    这是扬威武馆的休息室。收拾得非常干净,摆设简单。靠墙设有几张木床," && "$bf"=="武馆休息室 - "} {#ec 三行触发测试成功} {#ec 三行触发测试失败};
};

onlinemud 发表于 2019-9-19 15:35:09

我一般用#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归类便于开关。

suwuji 发表于 2020-3-5 08:41:35

tintin的大括号太丑了,看得眼花
页: [1]
查看完整版本: 【tintin++】两种多行触发的实现方法