server-side trigger
2007/5/11 20:48:45


每当网络速度太慢而导致你的指令无法及时送出的时候,你一定会有
把机器砸掉的冲动,尤其是看到屏幕突然不动,等传过来的时候已经
在黄泉路上,实在是很不爽的一种事情. 
基于这种考虑,我们提出server-side trigger的概念,即允许用户自
定义一些简单的trigger,在服务器对用户发出这些信息之前就有机会触发
这些trigger,执行一系列事先定义好的命令. 
和server-side alias一起,client端可以变的更"瘦",最终能彻底淘汰
zmud是最好了,不过,相信80%的时候,zmud都是在用来快速走路和触发一些
简单的trigger,然后是timer. 
这样一来,虽然比zmud还差些,不过也已经可以用个最破的telnet来舒服的玩
mud了,包括计划中的简单java-applet-client(当然是放在主页里面啦) 
目前server-side trigger只支持子串匹配和正则表达式的匹配,还不能够
把匹配的变量取出来. 
可以匹配带颜色的pattern 
int help (object me)
{
        write(@HELP
指令格式 : trigger <触发信息> <触发后欲执行之命令>
 
当你从系统接收到<触发信息>的时候,可以让系统自动执行一个
或者一系列预先定义好的指令(可以是你定义的alias).
 
例如:
        'trigger 英俊男子身着布衣走了过来。 hi' 会在
        出现“英俊男子身着布衣走了过来。”的时候自动执行一个 "hi" 的指令。
        'trigger' 後不加参数则列出你所有的trigger。
        'trigger sc' 会消除 sc 这个trigger。 (如果你设定过这个trigger的话)
        'trigger on' 会打开trigger触发。
        'trigger off'会关闭trigger的触发。
        'trigger xxxx $gag' 会不显示所有包含xxxx的信息。比如敲这个指令
                        'trigger 流星雨 $gag',这样你就看不到他的一切话了。
        'trigger OnDisconnect quit' 会在你断线的时候自动执行 'quit' 指令,
                        当然也可以是别的指令
HELP
);
        return 1;


发信人: yeung (流星雨), 信区: Mud_Builder       
标  题: 程序实现(1)
发信站: BBS 水木清华站 (Mon Jul 26 07:02:02 1999) 

/cmds/usr/trigger.c 
// trigger.c
#include 
inherit F_CLEAN_UP; 
int main(object me, string arg)
{
        int i;
        mapping trigger;
        string verb, replace, *vrbs,cname; 
        if( !arg ) {
                trigger = me->query_all_trigger();
                if( !sizeof(trigger) ) {
                        write("你目前并没有设定任何 trigger。\n");
                        me->disable_trigger();
                } else  {
                        i = me->query_trigger_enabled();
                        me->disable_trigger();
                        write("你目前设定的 trigger 有:\n");
                        vrbs = keys(trigger);
                        for(i=0; i < sizeof(vrbs); i++)
                                printf("%-40s 将触发如下命令:  %s\n", vrbs[i]+NOR, trigger[vrbs[i]]);
                        write("\n你的触发器目前是"+(i?"打开的":"关闭的")+"。\n");
                        if( i ) me->enable_trigger();
                }
                return 1;
        } 
        if( arg=="on" )
        {
                me->enable_trigger();
                write("打开trigger触发。\n");
                return 1;
        }
        if( arg=="off" )
        {
               

下一页
返回列表
返回首页
©2025 MUD游戏网_文字mud 电脑版
Powered by iwms