找回密码
 注册
搜索
查看: 2911|回复: 21

机器人学堂(二)

[复制链接]
门派:不明
发表于 2011-2-28 13:03:32 | 显示全部楼层 |阅读模式
我本人研究这个机器人底层实现并没有花太多时间,所以难免有疏漏,欢迎了解的朋友补充。
为了方便理解,我先给大家都在用的机器人进行分层:
所谓底层,所有robot的基础,包括一些指令完善类型的别名:
 1、寻址,或者说全球定位,根据给定地名找到去或者回的路径
 2、busy和长指令处理
 3、全路径alias

在此基础上构建第一层基础模块,用于辅助任务robot:
 1、集中中转:可以简单理解为在当铺的中转,从一个任务转到下一个任务
 2、渡河渡江:这里包括坐船
 3、任务busy处理:可选打坐和吐纳
 4、很多边边角角的辅助功能,比如战斗系统,发呆重启,各种状态记录等等,不详细说了

再在此基础上扩展各种任务的robot。一个任务robot的基本由下面两个部分组成:
 1、从中转系统接受机器人控制权,触发任务的执行。这一般是由一个别名(alias)和若干变量承担。
 2、执行任务:这一般由一个或者多个触发类完成,视任务复杂度而定
 3、完成任务后回到中转地点,并把控制权交回到中转系统手中。这一般是一个别名。

基本上,可以认为我开的这个机器人课堂是属于让大家了解底层和第一层模块,然后在此基础上构建或者修改原有的任务robot。

评分

1

查看全部评分

门派:不明
 楼主| 发表于 2011-2-28 13:04:30 | 显示全部楼层
这堂课讲一个学习szj的robot就是一个搭建在第一层模块上的任务robot。

好,那么下面介绍我们学习szj的robot的流程:
 1、在完成任务后,中转时根据pot的情况进入学习szj任务,这块现有系统是有跟师傅学习以及跟顾炎武学习lit的,所以连入系统的方式很明确。
 2、我们要从襄阳当铺到长江北,然后过江
 3、从长江南到丁典的监狱,其间需要杀守门的赵良栋,同时要考虑赵可能已经被杀的情况。
 4、看到丁典后开始学习,主要是ask,ask时会有busy
 5、当pot不够学习时,会有提示,需要根据提示结束学习,回到当铺,然后交回控制权。

根据我们上面讲的任务robot基本结构,我们做一个简单的划分:1、2、3 应该属于任务开始的alias,而5则是任务结束的alias,4是任务执行过程,其中3中杀赵的部分可以考虑作为任务执行过程的一个部分。

下面上代码:
开始执行任务的alias,我们遵循学习类任务的命名规则,做一个startszj的alias:

#ALIAS startszj {gcj;dj do;setdo {s;se;s;w;#t+ xuexiszj;#alias time1 {kill zhao liangdong;pfmpfm};#ts 3}}

注解一:gcj这个别名是属于底层模块的,和我们多数人熟悉的wgcj,wgwd等路径别名不同,这个机器人的路径别名都是g+目的地缩写,回来的别名是b+目的地缩写,比如到长江,是gcj,从长江回襄阳当铺,是bcj。这块有很多东西需要讲,我们找时间另开篇幅介绍。
注解二:dj do;setdo {....},这是渡江模块的调用别名组合,大家可以看到,和我们第一堂课讲的ta:setdo {....} 雷同。这里也不展开讲了。
注解三:#alias time1 {...}; #ts 3,这个是设置一个定时器,每3秒触发一次time1这个alias,定时器触发time1这个别名是机器人内部的一个默认设置,大家可以打开菜单”操作-定时器“看到
注解四:为什么用定时器,没有特殊理由,保险起见,一旦被人拦住,就一定是他,所以是不停下kill,这样有时候可能你杀死他之后刚好刷新出来一个,你仍然会下kill。至于下kill之后的处理,则属于任务执行部分了,我们做几个触发来确保杀完后去见丁典。其中的pfmpfm是大家机器人中常用的pfm alias,也可以根据个人喜好改下。

下面是我们处理杀赵的一个触发:

#TRIGGER {^???这里没有这个人} {#ts 0;w;l ding dian} {xuexiszj} 548

这里利用了我们上面不停杀赵的定时器机制,不管赵的死活,只要出现“这里没有这个人”,就行了,这是你下kill的目标不存在时出现的提示,结合定时器我们的触发是停止定时器,然后w,接着是look下ding dian以便执行下一个触发,不look直接ask开始学习也行的。
很显然,下个触发是:

#TRIGGER {^???这人满脸虬髯,头发长长的直垂至颈,衣衫破烂不堪,简直如同荒山中的野人} {#wa 2000;unwield @fight_weapon;unwield @myweapon;wield @wxweapon;ask ding about 神照经} {xuexiszj} 548

注解:里面unwield和wield部分第一堂课有说到。开始ask就是进入正题了。

下面是ask完,可以继续ask的触发:

#TRIGGER {^???你听了丁典的指点,对神照经的奥妙似乎有些心得。} {#wa 1100;yun jing;hp;ask ding dian about 神照经} {xuexiszj} 548

这里大家看到,我没有用 bbb 别名来过busy,实际上用 bbb {yun jing;hp;ask ding dian about 神照经} 机器人更稳定,但是,由于ask的过程非常慢,我想精确定时来保证速度,所以我专门测试了等待时间,最后得到1100是最短时间,然后用了等待,而不是 bbb 。大家可以根据自己的实际情况和测试结果采取合适的策略。最后一句继续ask是就进入了循环。

下面是ask完不能继续ask的触发:

#TRIGGER {^???你听了丁典的指点,可是还是不能理解} {bbb{#t- xuexiszj;unwield @wxweapon;finishxuexiszj}} {xuexiszj} 548

接着是结束学习的alias:

#ALIAS finishxuexiszj {ta;setdo {e;e;n;nw;n;ta;setdo {dj do;setdo {bcj;check_time}}}}

注解:这个alias多数内容我们都讲过了,唯一的一个是check_time,这个别名是在襄阳当铺输入的,将控制权从你的任务robot交回到中转系统的手中。

评分

1

查看全部评分

门派:不明
 楼主| 发表于 2011-2-28 13:04:55 | 显示全部楼层
最后,如果大家有wuchi版的机器人,那么那个机器人是有加入szj robot的能力的,只是没有我们上面做的机器人内容而已,而且它开始学习szj的alias刚好就是我们上面的那个名字:startszj。
对于没有的同学,我来简单讲下你怎么加入到你的机器人中,这涉及到中转系统,足够另外开堂课的:请查看 check_pot 和 setusepot 这个两个别名。
 1、check_pot 别名根据 flagpot 这个变量值判断是否需要去学习,还是继续做任务攒pot,你看跟师傅学习是怎么做的就知道了,加个变量 flagszj ,和其他学习任务一样加上 #if(@flagszj) {startszj} 即可
 2、setusepot 这个别名是和按钮“潜能”关联的,你要修改下“潜能”按钮,加入初始化 flagszj=0,然后在 setusepot 这个别名里面依样画葫芦。
门派:不明
 楼主| 发表于 2011-2-28 13:06:50 | 显示全部楼层
注意:我所用的这些触发器和alias虽然都来自我自己的robot,但是都经过少许改动以适应教学,主体部分代码经过实践检验,但是如果大家要直接使用,请做下测试,可能会因为我的改动有小问题。
门派:不明
发表于 2011-2-28 14:33:07 | 显示全部楼层
大手一挥,三分!顶起!哇哈哈~
门派:不明
发表于 2011-2-28 16:20:06 | 显示全部楼层
我可不可以说我真的很笨            
门派:不明
发表于 2011-2-28 16:43:31 | 显示全部楼层
原帖由 huolin@ts 于 2011-2-28 16:20 发表
我可不可以说我真的很笨            

可以,我们早就发现了                  
门派:不明
发表于 2011-2-28 16:59:08 | 显示全部楼层
#ts 3这个代表什么意思啊           
门派:不明
发表于 2011-2-28 17:42:44 | 显示全部楼层
哈 看了看 没怎么看懂
门派:不明
发表于 2011-2-28 18:00:10 | 显示全部楼层
机器人的基本模式总是很简单,但在享受robot便捷任务的我们要懂得每个robto都是他们机器人制造者的辛苦付出.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-7-26 00:20 , Processed in 0.050704 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表