机器人小技巧
首先声明,我对编机器人不是很在行。以前自己用过的机器人基本上是靠打着“拿来主意”的招牌共产过来的
。这篇文章主要是写给一些新手看的,希望对他们今后编机器人能够有所帮助。用一句比较流行的话来结束这
段开场白吧:兄弟抛块砖,有玉的尽管砸过来!
一:关于应付pk。
1,自动提示 你是否有过这样的经历:挂上一个机器人,然后去做别的事情(比如上BBS),过了一会回去一
看,竟然被别人PK了。为了防止这种情况,我们可以做一个自动提示的trigger。只要一句话就可以实现:
#TRIGGER {^看起来(*)想杀死你!} {pker=%1;#mess 救命呀,@pker要杀我啦 !} {} 519
(直接在zmud的命令栏中输入即可,下同)
这样,当有人要杀你的时候。zmud就会自动弹出一个对话窗进行提示。顺便说一下,这里还需要考虑到一些特
殊的pk方法,例如冰刀,瞌睡虫,迷魂,蚀月之类。原理同上,不再赘述。
2,自动保护 首先,可以在受重伤的情况下quit。这也是大家经常使用的方法。例如:
#TRIGGER {^( 你受伤过重,已经有如风中残烛,随时都可能断气。 )} {quit} {quit} 519
#TRIGGER {^( 你已经陷入半昏迷状态,随时都可能摔倒晕去。 )} {quit} {quit} 519
#TRIGGER {^( 你受伤过重,已经奄奄一息,命在旦夕了。 )} {quit} {quit} 519
#TRIGGER {^( 你上一个动作还没有完成,不能退出。)} {#wa 500;quit} {quit} 519
注意最后一句话一定不能少,以防止你在busy的状态下遭到pk。顺便说一个命令:#di,输入后,zmud就会自动断
线。在一些mud中,是不能对断线的玩家进行攻击的,所以可以利用这个命令进行断线保护。:))
3,自动记录 如何知道你不在的时候,是谁PK了或者试图PK你呢?这里有两种方法可以实现。
第一种:使用zmud的自动记录功能。只要在zmud的file菜单中选择new log,指定保存目录和保存文件名。或者
直接使用#log命令,例如,输入#log abc.txt,即可生成abc.txt的记录文件。想停止输入时输入#log即可。这样
,zmud就可以将所有的内容都储存成为txt文件。这样,只要打开该文件,你就可以看到自己不在的时候发生的
所有事情了。
第二种:通过trigger将pker的id,中文名字记录下来,推荐使用。方法为:
#TRIGGER {^看起来(*)想杀死你!} {pker=%1;id here;alias pker @pker} {} 519
#TRIGGER {(@pker)(%s)= (%x)} {pkid=%1;alias pkid @pkid;#case %random(1,4) {chat @pkid,我会
报仇的} {chat @pkid,我记住你了} {chat @pkid,为什么要杀我?} {chat @pkid,走着瞧!} } {1} 519
#TRIGGER {^你死了。} {#t+ rumor} {die} 519
#TRIGGER {【谣言】某人:洒水车被(*)吃掉} {pker=%1;alias pker @pker;#t- rumor} {rumor} 518
} {rumor} 518
这样就可以把最后一个要杀你的玩家的id设为alias中的pkid,中文名字为alias中的pker,并且随机给他一个警
告(玩家可以根据自己的喜好更改这些警告)。如果你不幸被杀,它还可以把系统的谣言记录下来,即使pker变成
别的玩家也无所遁形。这样,不管你下一次使用的是不是同一台机器。只要进入游戏,看一下自己设定的alia
s中的pker和pkid。就可以知道仇家是谁了。
4,防止误触发
先举两个误触发的例子。例如,我在chat中谈道自己被妖怪打得不行,随便说了一句
“【闲聊】洒水车(Sanfeng):( 你已经陷入半昏迷状态,随时都可能摔倒晕去。 )”。
这就有可能触发你的自动保护trigger,导致你quit。这是无意的误触发。还有一些恶意的误触发更令人讨厌。
举个例子,我和你在一起打山妖或者是水蛭精。你的trigger是当潜能为100时就飞回去和师父学武功。我就可
以在你身边“say 潜能: 100”,把你赶走。嘿嘿,够阴险吧?
解决误触发也很简单在。首先,可以在需要触发的语句前加一个^(shift+6)符号。这就是用来防止误触发的,
可以强制pattern从每行的开头开始匹配。其次,可以通过#t+和#t-命令来开启或关闭一类trigger,从而避免误
触发。例如上面通过记录谣言来确认pker的trigger就是使用的这个方法:先将记录谣言的trigger起个名字(我
用的是rumor)。当系统出现“你死了”的提示后,用#t+ rumor命令打开rumor类trigger。而rumor这个trigge
r本身,可以在记录完pker的名字以后将自己关闭(#t- rumor)。这样,就不
会再被触发了。顺便介绍一个命令:#ig,这是一个很有用的命令,它使zmud禁用所有的trigger.(就是在zmud右
下角的枪形图标上打叉的效果)
二,关于全自动机器人。
所谓的“全自动机器人”是指能够长时间运行,无须人看管的机器人。
长时间运行,首先就需要解决食物和饮水的问题。这里以西游记450为例:
可以做一个自动判断食物的trigger,当食物小于某一固定数值(例如100)的时候,就去天竺买一颗
“养身丹”补充。具体方法为:
#TRIGGER {食物:%s(%d)/ 400%s} {food=%1;#if (@food<100) {fly tianzhu;#8 w;s
;s;e;buy dan from hou;eat dan}} {food} 519
(这里的数值400为食物最大值,因人而异)
无人看管,就需要自动连线来应付断线。自动连线主要有两种方法。
第一种是设置alias,方法为:
#ALIAS atconnect {gb;no;YOURNAME;YOURPASSWORD}
这种方法比较简单,易用,推荐使用。不过需要注意的是,这样一来,你的PASSWORD就被储存在ALI
AS之中了。如果不是在自己的机器上的话,最好不要SAVE,这样ZMUD被关闭后就找不到你的trigger
了。或者干脆及时删除。
第二种是用trigger。
第一句:#TRIGGER {您的英文名字:} {%char} { autolog} 963
第二句:#TRIGGER {请输入密码:} {%pass;#T- autolog} { autolog} 963
其实,当你的character第一次连线进入的时候,zmud都会提问你是否设置自动连线的。只要选择“YES”即
可。此时,你的PASSWORD将会以*****的形式被储存下来。这也是极不安全的,只要使用一些黑客软件
(例如snadboy)就可以轻松破解,从而获得你的密码。
还有一种特殊情况:mudos重启或者你由于发生意外被迫quit。此时,你重新连进游戏后,进入的是南城客栈或
者其它你save的地方,而且身上除了法宝和钱之外一无所有。这种情况,可以用一些特殊的语句来触发。所谓
特殊的语句,就是指只有当你第一次连线进入的时候才会出现的提示的话。例如: “目前权限:(*)”等等。
如果因为遇到pker或者其它情况而不想自动连线。可以通过更改密码的方法来破坏自动连线。
要想实现机器人的全自动,需要考虑到非常多的情况。但是,无论如何仔细,也没有绝对的把握保证你的机器
人不出问题。一般来讲,越是复杂的机器人就越容易出错,越容易停下来。万一出现这种情况,该怎么办呢?
这就需要用到finger命令了。finger 某人,就可以得知有关该玩家的连线,权限等资料。例如:finger sanfe
ng就可以看到:
英文代号: sanfeng
姓 名: 洒水车
权限等级: (player)
电子邮件地址: 不告诉你
上次连线: Fri Aug 25 10:35:34 2000
洒水车目前正在连线中。
当该玩家连续60秒以上未输入任何命令时,就会出现如下的话:
洒水车目前正在连线,已发呆 100 秒钟。
利用finger命令,我们就可以应付机器人停止的意外情况了。先找一个 dummy,放在南城客栈,set no_accept
(防止别人用毒刀暗算)。每隔60秒就finger你的主id,如果出现发呆的情况下就tell他一句话。而当主ID接
收到dummy发送的信息后就可以继续运行了。
5 关于自动升级。
很多自动的机器人都是打架长潜能,然后去和师父学武功的。当你的武功比师父低的时候,机器人很好做。但
是,到了后期,你的武功高于师父,就需要判断是否学够了。否则,将会浪费大量的潜能。
下面这个trigger可以进行自动判断(这个是针对xyj450的原码的)
#TRIGGER {基本轻功*%s(%d)/(*)$ } {#if %eval((%1+1)*(%1+1)-%trim(%2))<0 {...} {...} } {} 519
上面是以基本轻功为例的。
三,杂七杂八
先说说一个简单的命令:#cap。这个命令 可以把你想要的信息抓下来,在另外一个窗口储存下来,从而方便浏
览。例如,你想把所有聊天的内容放到talk窗口中去,就可以用下面这个trigger来实现。
#TRIGGER {【} {#cap talk} {} 519
一些人气很旺的站点,由于在线玩家比较多,所以聊天内容也很多,从而导致聊还动速度过快。既然我们已经
用#cap命令将聊天内容抓到talk窗口中,就可以用#gag命令把主窗口中的聊天内容摒闭掉。方法为:
#TRIGGER {【} {#gag} {} 519
这样,即使打开聊天频道,聊天的内容也不会出现在你的主窗口中了。
#gag命令还可以摒闭掉你不想看到的内容,例如某某人走了过来什么的。
对一些重要的或者是敏感的字符,例如你要杀的妖怪,仇家,黄金什么的,可以用#cw或#co来改变颜色,达到便
于识别的目的。。#cw可以使一个字符串改变颜色,#co可以使字符串所在的整行改变颜色。
#TRIGGER {洒水车} {#cw 10} {} 519
如果想让一个颜色更亮丽一些,就在它原来的值上加8,比如9就表示更亮的兰色;如果是想改变背景的颜色,
就将它原来的值乘16;比如要想得到红色的背景则使用的颜色代码为64;改变前景的字体要再加上128。
比如:
#co 159 设置最后接受的一行文本是蓝底粗黑白体(1*16+15+128)
其中的10代表亮绿色。至于具体哪个数字对应什么颜色嘛,大家自己慢慢试验吧,呵呵@_@
最后,再简单说说zmud中的button,key,status以及paths,也就是按钮,宏键,状态条和自动行走。
我们可以把一些常用的命令做成按钮。只要在Action菜单中选择Make button即可(或者直接ctrl+b)。可以设
置button的位置,种类,尺寸,颜色,开启或者关闭时的显示等等。至于具体的做法则很简单,不再多说。如
果你看不太懂英语的话,可以下载一个中文版的zmud。
keys就是用某一个键值代替具体的命令。例如,可以用F12代替quit(方便逃命的说)。zmud提供了一些默认的
宏键。小键盘区的方向键就分别表示south,north,east,west等。可以用如下的方法设置宏键:按ctrl+k键,zm
ud会提示你“Press key combination to define/edit”,按下你想要定义的键(例如F12),这时zmud又会提
示你“Enter definat ion for this key”,输入你想要用宏键代替的命令(例如quit)。
状态条还是蛮有用处的。它可以提示你要做的任务或者是要灭的妖怪的名字,更可以帮你计算做任务或者是灭
妖的速度和效率。比如用状态条来记录要灭的妖,灭妖次数以及奖励。先定义一个trigger来提取相应的变量(
假设@yaoguai和@jiangli分别为灭妖对象和奖励数目)。再用鼠标右击状态条,选Define status bar,在sta
tus line里输入“要灭的妖:@yaoguai”和“奖励:@jiangli”。至于次数统计,先在变量中定义“jiang”的数
的settings选项中还可以设置更改每走一步的时间间隔。默认数值为五秒,太长了。开始自动行走也很简单,
比如先做一个走遍长安城的paths,并命名为changan,这时只要输入#slow changan(这是慢速行走,如果想快速
行走,使中间没有时间间隔,输入“.changan”),就可以按照既定的路径行走了,当你想停下来的时候,输入
#stop即可。如果你走错了方向,你可以用#BACKUP 来走回去。#REVERSE还可以让你反方向行走
。
自动行走是建立在定义好的方向上的,如north 等,可以增加这些定义做更多的事,比如增加o 作为open doo
r;那么你就可以在走动中开门入房了了.
|