zMUD中函数和变量的应用二(中级玩家适用)
作者:不易 http://buyi.yeah.net/
前面咱们说到在trigger前面加上一个^符号就可以完善了很多,那么当Pattern重复出现时,我们怎么解
决呢?比如,我们一般会做出"看来该找机会逃跑了..."就一口气跑到仙人洞或客栈睡觉,但如果move和dodge
的有效值比较低的情况下会被拦住,trigger会被多次激活,当然,我们在逃跑前加个投降(surrender)可以万
无一失的逃掉,可如果网一慢,仍旧会出现Pattern重复激活trigger的情况,后果轻者去judge那答题,重者
可能要被踢出去,那么,我们如何解决这个问题呢?hehe,easy....下面我先着重介绍两个指令"#T+ , #T-"
。
#T+、#T-是做高级trigger中最常用的两个指令,它可以打开或关闭指定的trigger,甚至打开或关闭一
类trigger。trigger中的class是分类标志,那么比如:#T+ fight就表示打开class为fight的所有trigger,
#T- sleep就表示关闭class为sleep的trigger,ok,看明白这两个指令就好办了。下面举个例子:
假设我们在打三个戏迷,路径大家都熟吧,trigger如下:
1、class---fight_escape
pattern:{看来该找机会逃跑了...}
commands:{#T- fight_escape;#T+ fight_wake;surrender;s;s;n;#3 e;s;give 1 silver to waiter;u;e;
u;w;u;s;u;n;shui}
2、class---fight_wake
pattern:{你一觉醒来,觉得身体完全恢复了!}
commands:{#T- fight_wake;#T+ fight_escape;#wa 10000;n;w;w;w;n;kill viewer;kill viewer 2;kill
viewer 3}
这套trigger我主要介绍四个重点:
第一、class应区分开,这样用#T+、#T-时才不会混乱,当逃跑时关闭escape,睡醒后再打开,就可以防
止多次激活trigger;
第二、surrender后一定要用s;s;n;#3 e是因为有时候你碰巧逃掉了,位于大理西街1,直接3个e就可以去
客栈,但如果没逃掉就需要s;#3 e,那么最保险的走法是s;s;n;#3 e,因为到了段家当铺就没有向南的出口了
,这看起来简单,但实际上是一种做trigger的思路,我将在以后详细讲这个部分。比如,我给你们留个题想想
:怎么能在大理南1,北1,东1,西1四个位置都用同一套路径走到天龙客栈?
第三、在客栈抢房间睡觉是我们常遇到的问题,那么把四个房间都试一遍才是上选。当然,如果碰巧四个
房间都满了,这trigger就停下来了,怎么解决呢?据我所知有多种方法,无非是往出走几步取描述、做emote
等等,其实最好加个变量a,一出现客满那句就#add a 1,最后加个#IF {@a=4} {#wa 2000;u;e;u;w;u;s;u;
n;shui;#VAR a 0}就可以了。 :)
第四、如果有的trigger这句你既没有加上颜色也没法在前面加^,那就最好当不用时就#T-关上,比如,
我们fight时最好把"你一觉醒来"之类的关上,等跑去睡觉时再打开,以防混乱。OK,我们趁热打铁,我再做
个抢仙人洞的trigger,请大家着重注意#T+、#T-的用法。先做几个alias:
#alias {xrd1} {s;s;s;s;w;w;w;w;w;w;w;n}
#alias {xrd2} {s;s;s;s;w;w;w;w;w;s;s;w;w;n}
#alias {xrd3} {s;s;s;s;w;w;w;w;w;s;s;s;s;w;w;n}
#alias {xrd4} {s;s;s;s;w;w;w;w;w;s;s;s;s;s;s;w;w;w;n}
#alias {killall} {#3 kill viewer %i}
trigger如下:
1、class---fight_escape
pattern:{看来该找机会逃跑了...}
commands:{#T- fight_escape;#T+ hole1;surrender;s;s;n;e;xrd1;n;n;shui}
2、class---hole1
pattern:{大理钱庄}
commands:{#T- hole1;#T+ hole2;#WA 2000;s;w;w;u;#WA 5000;d;xrd2;n;n;shui}
3、class---hole2
pattern:{大理钱庄}
commands:{#T- hole2;#T+ hole3;#WA 2000;s;w;w;u;#WA 5000;d;xrd3;n;n;shui}
4、class---hole3
pattern:{大理钱庄}
commands:{#T- hole3;#T+ hole4;#WA 2000;s;w;w;u;#WA 10000;d;xrd4;n;n;shui}
5、class---hole4
pattern:{大理钱庄}
commands:{#T- hole4;#T+ hole1;#WA 2000;s;w;w;u;#WA 10000;d;xrd1;n;n;shui}
6、class---hole_wake
pattern:{你一觉醒来,觉得身体完全恢复了!}
commands:{#T- hole_wake;#T- hole1;#T+ fight_escape;#WA 4000;e;w;n;killall}
这样,就可以实现选洞了,如果1洞有人,就选第二个,直到第四个若仍有人,那就再从第一个试起,直到
睡上为止。需要注意的是,因为去仙人洞的路比较远,所以在选洞之间要加比较长的延时,而且越往后越长,
我只是做个例子,具体加多少合适,大家自己摸索吧。
上面这套trigger基本上把#T+、#T-的用法发挥得淋漓尽致了,但这仍不是最高级的trigger,光一个选
洞就用了4套才完成,如果再把我前面讲的变量知识用上,那就更简单了,请看:
1、class---fight_escape
pattern:{看来该找机会逃跑了...}
commands:{#T- fight_escape;#T+ hole;#VAR a 1;surrender;s;s;n;e;xrd@a;n;n;shui}
2、class---hole
pattern:{大理钱庄}
commands:{#ADD a 1;#IF {@a=5} {#VAR a 1};#WA 2000;s;w;w;u;#WA 5000;xrd@a;n;n;shui}
3、class---hole_wake
pattern:{你一觉醒来,觉得身体完全恢复了!}
commands:{#T- hole_wake;#T- hole;#T+ fight_escape;#WA 4000;e;w;n;killall}
:P,这样就简化为三个trigger了,试试吧!
在此,我想再重申一遍,我讲的是一种思路和方法,真正玩mud时会出现千奇百怪的变化,而且pig wiz们
也都在挖空心思琢磨怎么抓robot,所以请大家不要牵强附会的套用我做的trigger,也许你做得更好更实用呢
,别忘了给我发封mail,也教教我啊。 :)
这次主要说的是#T+、#T-,也许大家注意到了,我的trigger里面多了个#IF语句,这是一个更有意思
的指令了,下次,我专门给大家讲这个,OK?
无论任何时候,大家都可以给我发mail(wanq@163.net),来一起探讨trigger问题,我在文章中尽量把tri
gger写得详尽,但我希望大家别要求我把trigger做好mail给你,好么?
|