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