zgbl 发表于 2011-6-5 23:06:23

Zmud4.62版新手机器人技术解读

机器人地址:
Zmud4.62版新手机器人
此贴送给对462机器人有兴趣的朋友们



一、按钮

按钮的作用是简化操作,同时可以很好的控制各个机器人模块的运转。
但是同样,作为简化操作,别名也能起到相同的作用,所以能使用别名的,建议多使用别名,按钮只作为控制模块的运转。如有的人机器人喜欢把所有路径用别名表示,这样其实很难熟悉使用,而且即使熟悉了,也未必比直接打拼音的路径来得快。

本机器人按钮解析如下
————————————————————
————————————————————
初始化

按钮用处:
这个按钮不可开关,点击生效,负责初始化机器人。建议凡是写发出来共享的机器人,都添加这么一个按钮,方便机器人设置按钮指令:
#pr yourname "请输入你的角色中文名:    ";#pr yourid "请输入你的角色id:    ";#pr yourpassword "请输入你的角色密码:    ";#pr weapon_left "请输入你的左手兵器id:    ";#pr weapon_right "请输入你的右手兵器id:    "小技巧:
#pr 变量名 "描述",会弹出对话框显示描述,让你输入变量值。由于zmud4.62本身的原因,显示的描述会吞掉几个字符,所以请在描述后面多输几个空格,使得描述语句能完全显示
————————————————————
————————————————————
领取装备

按钮用处:
用来登录后,去领取新手套装的。同样,新手期过后,可以修改指令,来一键穿上autoload的装备按钮指令:
d;drop cloth;drop boots;drop ma xie;out;draw sword;draw blade;draw armor;draw head;draw cloth;draw surcoat;draw boots;wear all;wield ww;#wa 5000;enter;u————————————————————
————————————————————
开始慕容/开始学习/开始打坐/开始吐纳/开始练习/开始读书

按钮用处:
这是按钮最主要的用处,用于控制机器人各模块的运行

按钮指令(开始慕容):变量——flag_murong
开启——chufa;#say ;#say ;#say ========================================;#say 你即将开始慕容叛徒任务;#say 请输入你需要使用的战斗pfm,然后便可自动领取任务;#say ========================================;#say ;#say ;#t+ gag;#pr pfm "请输入你需要使用的pfm指令:    ";#t+ murong;#t- gag;mr
关闭——#t- murong小技巧:
1、通过修改按钮变量的值,可以控制按钮的开关,1为开,0为关。用于触发器控制模块运转,如功夫练满后停止练功,那么关闭触发后,将变量修改为0,可使按钮弹起。
2、#say可以在mud窗口中显示语句,颜色是“颜色”设置中的“讯息颜色”。
3、#t+ gag打开gag触发,我设置的gag触发是以*为触发语句,触发指令是#gag,作用是屏蔽所有信息,避免提示信息被刷没。


二、定时器

我的定时器设置是60s,指令是exert powerup;save;backup,建议再加入eat liang;drink jiudai指令

作用:
防止发呆
简易机器人中用于挂机操作,如练功、打坐、领悟等,通过定时器直接进行循环工作,或通过定时器检查发呆状况,配合触发使机器人回归运转

适用指令:
1、防止发呆的指令,如save和backup
2、buff指令,适合内力过1000后,有足够的内力供powerup消耗
3、吃喝指令
4、检查发呆状况,配合触发器使机器人发呆时能回归运转
5、简易的循环直接实现某些功能(使用完后可以改回去,不建议作为综合机器人的定时器,因为综合机器人可以针对各种功能设计完整的高效触发。其实直接用定时器做某些简单的工作也挺不错,属于暴力流机器人)


三、状态栏/状态窗口

1、状态栏

作用:
显示状态监控

使用方式:
右键点击状态栏进行设置

推荐指令:
经验:@exp | 潜能:@pot | 玉玺在@murong附近 | 出口:@exit | 技能@skill等级:@skill_level
等等状态监控指令

适用情况:
能在一行文字中显示的东西,如状态监控,如某个主打任务的任务信息记录
————————————————————
————————————————————
2、状态窗口

作用:
显示多项状态

使用方式:
设置方式同状态栏
可通过#menu {window|status}指令开关

推荐指令:胡一刀:第@daobaonumber个盗宝人 @tasknpc (@daobao)位于 @where,pp位置 @weizhi
护镖:护镖给@zone,伙计@place,第@times趟,第@times_lun轮,剩余@time_left秒
萧峰:蒙面杀手位于@xf_place,任务是@xf_task
慕容玉玺:玉玺在 @murong 附近
你现在位于 @position,出口为 @exit等等任务信息记录

使用情况:
综合性机器人的超过一行的状态记录,比如各个任务的信息


四、别名

别名作用:
简化指令,用一个指令替代一个指令序列

使用情况:
1、快速行走
2、某些指令序列
3、简化战斗操作

下面介绍下一些简化战斗操作的alias

yr=exert recover
yg=exert regenerate
不用解释了吧
————————————————————
ww=unwield all;wield my sword;wield my blade
战斗时用于装武器
————————————————————
wb=unwield all
卸兵器
————————————————————
cc=perform sword.chan
等等,用于战斗时快速pfm
————————————————————
ge=gan che to east
等等,推车专用


五、宏键

作用:
宏键,其实就是自定义快捷键,用来简化操作的

推荐定义:
小键盘1-9:southwest到northeast的八个方向,5为look
ctrl+小键盘2、4、6、8、5、0:southup,westup,eastup,northup,up,enter
alt+小键盘2、4、6、8、5、0:southdown,westdown,eastdown,northdown,down,out
小键盘/、*:exert heal,exert inspire
F1-F8:各种pfm指令序列


六、触发器与变量设置、相关别名

这是本篇文字的重点,现从机器人每一个触发器模块来对一个机器人的设计思路进行解释

本机器人统一使用行首触发,以避免误触发

特殊别名:
chufa=关闭所有触发器模块,所有按钮弹起,用于停止触发
————————————————————
————————————————————
dushu分类:

1、考虑到读书有多种描述方式,故设置别名dushu,别名内容为@book;exert regenerate,使用吸气触发来进行读书循环
2、内力不够时触发休息,考虑到有发呆和sleep两种休息方式,故使用#if语句分类处理
3、睡觉回复需要吃喝,所以睡醒后有吃喝指令
4、发呆完有busy,因此针对busy增加触发“^??你的动作还没有完成”
5、考虑到若网速快时,循环读书部分会因触发过快而形成刷屏,因此增加#wa 100的延时
————————————————————
————————————————————
dz分类:(tuna分类同理)

1、使用打坐完毕的描述来触发下次打坐,进行主体循环
2、考虑到发呆和sleep两种休息方式,打坐完毕后使用#if判断,若发呆则不吸气,若sleep则用吸气继续
3、为提高打坐效率,每次打坐完后更新hp信息,重新计算打坐量。由于内力低时打坐快,zmud会因hp刷新过快出现bug而卡死,故用#if设置当@maxneili<250时,不进行hp更新,而是直接继续打坐。由于发呆打坐无需重复吸气循环,故直接发呆,不进行hp,而是在发呆后再hp
4、使用多行触发“【%s状态%s】%s%x$≡━━━━━━━━━━━━━━━━━━━━━━━◎北大侠客行◎”匹配hp信息,触发打坐
5、内力增加后hp更新数值
6、使用气太少了来触发休息。用#t+,#t-避免重复触发
7、本分类核心在于打坐数值算法,算法分析如下

别名:- neili
#math a @maxneili*2-@neili+1;#math b @qi*4/5;#if (@maxneili<1000) {#math a @a/2+1};#if (@a<@b) {#if (@a<10) {#math dz 10} {#math dz @a}} {#if (@force<10) {#math dz 10} {#math dz @force}};dazuo @dz算法分析:
1、a为直接打坐到内力+1需要的内力,b为当前气血的80%(因为不允许一次打坐完所有气血,所以留有余地)
2、如果最大内力小于1000,则打坐效率翻倍,所以a值减半
3、对比b和a,若a足够打坐,则打坐a,否则打坐有效内功@force
4、打坐a时,如果a<10,则小于最小打坐数目,于是dz=10(dz即最终打坐数值),否则dz=a
5、打坐有效内功force时,若force<10,则dz=10,否则dz=force
6、执行打坐指令

小技巧:
关于按钮变量,若触发器中涉及#t- xxx;command;#t+ xxx方式以避免重复触发,则#t+时需要用#if判断按钮状态,因为有时触发器停止运行,或者手动停止运行后,却又会因为延时后的#t+指令又导致触发器重新启动。
凡是停止循环动作的,请用#t-,#t+指令,使得触发器暂时关闭,以免重复触发

经过实际测试,重复dazuo 100比dazuo 1000效率高,虽然不符合常理,但是事实如此,有兴趣的可以用此原理改写触发
————————————————————
————————————————————
fight分类:

战斗触发,用于战斗相关

1、^??~(%s你看起来可能有些累了。%s~)
指令:exert recover此类触发为战斗吸气,注意转义符~的使用

2、^??~(%s你已经陷入半昏迷状态,随时都可能摔倒晕去。%s~)
指令:do 10 halt;quit伤势过重时,需要quit保命,同时考虑到可能有多个敌人,所以do 10 halt
经过本人使用经验,若网速给力,此触发经常可在晕倒甚至直接死亡前一瞬间退出,重新登录后直接晕倒,但是不会死亡

3、^??慢慢地你终于又有了知觉....
指令:#mess 醒来了!晕倒的时间经常很长,所以可以设置一个指令,没醒来前尽管切到别处做别的

4、^??你的*运行完毕,将内力收回丹田
指令:exert powerup保持powerup状态,初期之后很有用

5、看起来*想杀死你
指令:exert powerup被叫杀后做出相应反应,建议加上busy类指令
————————————————————
————————————————————
gag分类:

触发信息:*
触发指令:#gag
作用:在点下按钮后,进行初始化操作时,启动此触发,屏蔽一切信息,避免提示信息被刷没。初始化结束后再关闭此触发
————————————————————
————————————————————
hp分类:

负责所有个人状态捕捉^??%s内功%s~(force~)%s:%s%x%s有效等级:%s(%d)
^??%s内功%s~(force~)%s:%s%x%s有效等级:(%d)
指令:force=%1针对内功高低时不同的描述,捕捉有效内功^http://pkuxkx.com/antirobot/robot.php?filename=(%*)
指令:#url %copy(%trigger,8,%len(%trigger)-7)使用#url指令直接命令浏览器打开fullme图片【%s精神%s】%s(%d)%s/%s(%d)%s~[*~%~]%s【%s精力%s】%s(%d)%s/%s(%d)%s~(*~)$【%s气血%s】%s(%d)%s/%s(%d)%s~[*~%~]%s【%s内力%s】%s(%d)%s/%s(%d)%s~(*~)$【%s食物%s】%s(%d)%s/%s(%d)%s~[%x~]%s【%s潜能%s】%s(%x)%s$【%s饮水%s】%s(%d)%s/%s(%x)%s~[%x~]%s【%s经验%s】%s(%x)%s
指令:jing=%1;maxjing=%2;jingli=%3;maxjingli=%4;qi=%5;maxqi=%6;neili=%7;maxneili=%8;food=%9;maxfood=%10;pot=%11;water=%12;maxwater=%13;exp=%14;#if (@tuna_judge=y) {#if (@maxjingli>990) {chufa;#mess 最大精力已到990!}};#if (@dazuo_judge=y) {#if (@maxneili>90) {chufa;#mess 最大内力已到990!}}最华丽最完美的hp信息提取触发,同时使用#if指令,判断内力精力超过990后是否停止打坐/吐纳你的「*」进步了
指令:skills武功进步时更新skill信息你的眼前一黑,接著什么也不知道了....
你现在不忙。
指令:halted=1忘了啥时候留下的烂尾了ttk_27
————————————————————
————————————————————
level分类:^??~│{□|}%x%s~(@skill~)%s-%s*%s(%d)/
指令:skill_level=%1;#if (%1>=@level) {#mess @skill已经到达@level级!;chufa};#if (%1>@level) {#mess @skill已经到达@level级!;chufa}负责侦测skill状态,监视练功触发执行状况
————————————————————
————————————————————
lianxi分类:

1、考虑到练习有耗费气血和精神,所以不用吸气触发
2、考虑到练习描述基本相同,所以用练习描述进行循环触发,lianxi指令为lian @skill 50;exert recover;exert regenerate
3、考虑到所有情况都有的是吸气,所以用内力不足来触发休息。用#t+,#t-避免重复触发,使用#if判断按钮状态以免错误执行#t+
4、发呆后避免busy的触发,睡醒后吃喝的指令就不说了
————————————————————
————————————————————
murong分类:

负责慕容复任务

相关别名:
mr=ct到慕容复;look murong fu
mrb=慕容复到ct

触发器:
1、^??他就是有「南慕容」之称的慕容复
指令:give murong yu xi^??由于你成功的找回大燕传国玉玺,被奖励:
指令:ask murong about job慕容复忙着呢,等会吧
指令:give yu xi to murong你身上没有 yu xi 这样东西
指令:fail(ask murong about fail;ask murong about job){你向慕容复打听有关『job』的消息。}$慕容复对着你摇了摇头说:「你刚做过任务,先去休息休息吧。」
指令:murong="没有任务";#wa 5000;ask murong about job(大括号多余了)作用:不管任何情况,只需要l fu一个指令就可完成交任务/放弃-领任务操作


2、你向慕容复打听有关『job』的消息。$*$慕容复说道:大燕传国玉玺在『(*)』附近出现,快去吧!
指令:murong=%1你向慕容复打听有关『job』的消息。$*$慕容复说道:大燕传国玉玺在『{紫禁城|日月神教成德殿|神龙岛|江南梅庄|姑苏慕容|丐帮暗道|不明区域0|古墓地下河|星宿沙漠绿洲|平西王府秘室|岳王墓挖的地道|白驼山储藏室|古墓墓道}
指令:l fu你向慕容复打听有关『job』的消息。$*$慕容复说道:大燕传国玉玺在『杭州湖边路
指令:mrb;hangzhou;mrarrive
以及所有类似的触发mrarrive=#untr +5;#alarm +5 {#say ;#say ;#say ========================================;#say 即将到达任务区域,若在坐船,请稍后;#say 到达后请手动在区域行走,寻找慕容复叛徒;#say 遭遇叛徒后会自动开战;#say 查看本区域地图,请输入localmaps;#say ========================================;#say ;#say }作用:
领任务后记录任务信息
使用选择触发,对不划算的任务自动放弃
使用多行触发避免错误触发
使用#say提示到达地点,并且用#alarm +5延时五秒执行,留给走路的时间(不使用#wa是因为#wa会覆盖坐船路径中的#wa 1000000)


3、@yourname发现的 姑苏慕容叛徒
指令:follow pantu;killall pantu;@pfm姑苏慕容叛徒*走了过来
指令:l pantu作用:战斗触发


4、^??姑苏慕容叛徒死了
指令:g yu xi from corpse;g gold from corpse;g silver from corpse;#wa 2000;g yu xi from corpse;g gold from corpse;g silver from corpse;fullme;murong="没有任务";#say ;#say ;#say ========================================;#say 慕容复叛徒已经死亡;#say 请回到区域起点,使用路径返回扬州交任务;#say ========================================;#say ;#say 作用:搜尸触发,并且进行后续提示
————————————————————
————————————————————
place分类:

用于对应不同地点执行不同操作,比如走到日月自动杀童百熊等遮雨廊---殿前广场---遮雨廊
指令:pull gate大轮寺开门指令
————————————————————
————————————————————
sleep分类:^??你刚在三分钟内睡过一觉
指令:#t- sleep;#wa 5000;#t+ sleep;sleep用于所有使用sleep指令的触发
————————————————————
————————————————————
talk分类:*告诉*
*回答*
指令:#cap talk_newbie【%x】
指令:#cap chat_newbie作用:使用#cap指令捕捉聊天内容

注意:尽量减少#cap指令在触发器中的出现次数,因为zmud打开时会每个#cap指令打开一个窗口,甚至是多个,因此会刷出海量无用窗口
————————————————————
————————————————————
xue分类:
1、由于学习需要精神,因此触发exert regenerate
2、吸气触发学习
3、由于12轮流触发,起到了延时效果,故不需要#wa 100
4、潜能用尽需要有相应提示,并停止机器人
5、内力不足时休息,统一使用path_a和path_b路径往返于师傅和休息点。同时使用#t+,#t-避免误触发,同理需要#if判断按钮状态
6、发呆后,由于path_a是一串指令,可能会由于busy而只执行一半而导致跑错路,所以发呆后一次#wa足够的时间才行动
————————————————————
————————————————————
yell分类:

引自家熊的路径,是配套过河使用的触发器。

原理:
1、yell指令后#wa 10000000,通过yell触发来实现重复yell直到上船
2、下船时#wa 1,利用zmud4.62中短时间#wa取代长时间#wa的特点,继续过河后的行走
————————————————————
————————————————————
无分类触发器

用于一些杂项信息,比如捡破烂,捕捉天色等

北大侠客行MUD,中国最好的MUD

[ 本帖最后由 zgbl 于 2011-6-13 06:12 PM 编辑 ]

[ 本帖最后由 zgbl 于 2011-8-8 09:52 PM 编辑 ]

bluse 发表于 2011-6-5 23:21:07

好吧,我承认,烂尾是我的慕容机器人里的

zgbl 发表于 2011-6-5 23:36:28

回复 2楼 的帖子

ttk_27 我咋不记得啥时候用过你的机器人了,蛋疼死了

zgbl 发表于 2011-6-5 23:52:10

打坐触发增加提示

经过实际测试,重复dazuo 100比dazuo 1000效率高,虽然不符合常理,但是事实如此,有兴趣的可以用此原理改写触发

shuigd 发表于 2011-6-13 17:15:44

收藏了,下来仔细拜读。
不亮太牛了,因为有你们的存在,北侠更精彩。

alucar 发表于 2011-6-13 17:23:50

mark之,考完试慢慢看

suifengl 发表于 2011-7-2 18:00:23

不是说重复dazuo 有效内功/10+1 是效率最高的吗?

zgbl 发表于 2011-7-2 18:17:01

回复 7楼 的帖子

因为mud每个时间单位是增加force/10的内力,所以dazuo force/10不会造成时间上的浪费
但是直接打坐到最大内力+1,不也没有时间浪费么?

guanshen 发表于 2011-7-2 19:31:10

ttk_00
页: [1]
查看完整版本: Zmud4.62版新手机器人技术解读