找回密码
 注册
搜索
查看: 1095|回复: 16

机器人学堂(一)

[复制链接]
门派:不明
发表于 2011-2-28 03:31:28 | 显示全部楼层 |阅读模式
没啥skills可讲的了,讲点我对现在大家用的机器人底层的一些了解,因为看到有些人想要学习神照经的机器人,我想可以教下大家怎么自己做一个,理解现有机器人底层架构后
做起来是非常简单的。

先从简单的介绍起,话说大家飞影了以后,虽然有自己的箫,但是拿着洞箫或者碧玉箫还是非常酷的,大家自己相信也能做到,
下面我来介绍下怎么利用现有机器人底层的几个别名来做这样的事情,让大家了解下这个机器人的一些基本机制,
现有的桃花岛二代是带有要软猬甲的,那个机器人我好久没用了,下面这段是我在wuchi版本里面做的:

#TRIGGER {^???你恭恭敬敬地向*磕头请安,叫道:「师父!」} {#2 unwield @myweapon %i;#2 unwield @fight_weapon %i;wield @zzwxweapon;ask huang about 软猬甲;bbb {remove cloth;wear all;bbb {ask huang about 洞箫;bbb {ask huang about 碧玉箫;bbb {get tie xiao;get biyu xiao;bbb {out;yun jing;xxx}}}}}} {xuexi} 548


我来解释下,这里主要是介绍几个底层别名,作为学习的开始:

1)触发地点,这个很容易理解,是在xuexi类别里面,在startxuexi的最后,当你找到师傅,会执行bai huang的指令,触发的你叫师父
2)一般来说,可能你用的武器和加悟性的武器不同,所以这里我们需要把战斗的武器换成加悟性的武器:
#2 unwield @myweapon %i;#2 unwield @fight_weapon %i;wield @zzwxweapon

  2.1)这里有两个知识点要解释,第一是两个变量myweapon和fight_weapon,我不知道为什么机器人会出现两个代表几乎相同意思的变量,很可能是一个代表自己打造的武器,而另一个代表在战斗时真正使用的武器,但是机器人在不断被修改的过程中有人由于不了解之前机器人的情况下做的很多触发,都是混合使用这2个变量,所以,这两个变量,根据我的观察,是在不同的时候有可能被wield的,实际上要清理它们非常容易,把机器人导出,然后查找替换掉即可,但是基本上误伤大雅,所以你不改他们也无所谓,基本上我的用法是把它们都设置成相同的名称,比如:xiao。我自己做机器人都是用的myweapon,这样一个就好了,没有必要分太多。这里还有一点是,你光设置这2个值,实际上机器人不会认为你在使用武器,因此不会触发修理武器的内容,这个在我很有用,因为我没钱没锻造,不想修武器,其它战斗的触发则不会有问题,要触发修武器还有一个变量来设置你是否使用武器的,好像是weapon,具体忘了,有兴趣的朋友可以查查,但是这个变量不会影响你job中使用武器。除了不会触发修理武器,还不会触发购买武器,所以要小心了,但是thd用箫,我试过的几个机器人都没有自动购买箫的能力,而我都是回thd拿箫,自己也有一把破箫可以在开始的时候用,所以不买也无所谓,就放弃了。回头要是有兴趣我们也可以讲下怎么做买箫。
  2.2)第二个是zmud指令,注意 # 和 %i 的应用,它基本上就是你看到它能联想到的用法,按照重复的次数执行指令时,i 即为重复的次数。这样做的目的是避免一些意外,比如,你正装备着自己的xiao,而杀完killer的时候,机器人会自动尝试从尸体里面get你的武器xiao,这是为了能够拿回被夺的武器,于是,结果是你unwield xiao的指令并不能真的把你手里的xiao放下,而是要unwield xiao 2。
3)后面接着的,是我们这堂课的重点,明白了它,你就可以给你的机器人加很多东西了:
ask huang about 软猬甲;bbb {remove cloth}

MUD是一个事件触发驱动的,我们的机器人也是在事件触发下工作的,因为在游戏中很多busy等待的限制,指令数量的限制,就必须要根据游戏的反馈信息来做出相应的动作,这这里,当你问软猬甲的时候,问完是有busy的,一般的做法,是可以在ask完加一个#wa 2000之类的等待指令,这类命令受到网速和机器速度的限制,有可能出现异常,而这里使用的 bbb 别名则是非常聪明的做法,
我先即使下这个语句的执行流程:
  3.1)问huang 要软猬甲
  3.2)busy确认:jifa jifa jifa,大家都很熟悉的,这个是 bbb 在做的事情,存储后续的指令,然后开启check_jifa类触发,然后执行jifa jifa jifa,check_jifa类会在没有busy时触发执行存储的指令,即:remove cloth....
  3.3)执行在大括号里面的后续指令
你完全可以把它看成,当busy结束后要执行的指令,它比单纯的等待更加智能,这样的指令是可以嵌套的,你可以看到我的后续指令里面包括问洞箫,问碧玉箫并拿箫

然后这里附带介绍另一个类似作用的别名(ta 和 setdo),大家也是经常看到的:alias action 休息,休息一会。。。。
ta 和 setdo 这对别名是用来避免执行一长串指令时被系统拒绝的,即,你把一段长指令,分割成两段短指令,中间加一个wait,本质上和自己加个wait一样,但是它仍然比单纯的加wait安全那么一点,而对于写程序来说则好很多,举个例子,从扬州到大理:yzwg;ta;setdo {wgdl}
在机器人中这个用得很多,特别是startxuexi 系列的别名,在这里做简单介绍,有兴趣的同学可以去看看startxuexi系列的别名,并尝试自己做xuexi szj机器人了,
下堂课我们来应用这个指令做xuexi szj机器人,但是我想有了 bbb 的介绍,大家应该已经可以用它了。

4)这段指令中最后 get tie xiao;get biyu xiao;bbb {out;yun jing;xxx},其中的 bbb 不见得真需要,我是懒得测试有没有busy,大概拿箫是不busy的,我写这些的时候就不管它了,直接加上bbb肯定没有任何问题,另外 xxx 是开始学习的指令,从来的触发指令中保留下来的。
5)最后的{xuexi} 548 是触发器类别,数字我也不知道是什么,这个是我从zmud导出的结果,估计是个唯一 id。

(没想到要写这么多,做szj的部分就下次再讲了)

评分

1

查看全部评分

门派:不明
发表于 2011-2-28 08:05:27 | 显示全部楼层

好复杂
门派:不明
发表于 2011-2-28 08:16:40 | 显示全部楼层
以我的智商是很难理解这东东了,不过还是要顶起!
门派:不明
发表于 2011-2-28 08:52:27 | 显示全部楼层
想看szj的         
门派:不明
发表于 2011-2-28 09:02:07 | 显示全部楼层
学习了
门派:不明
发表于 2011-2-28 09:31:14 | 显示全部楼层
不懂
围观
门派:不明
 楼主| 发表于 2011-2-28 09:58:19 | 显示全部楼层
原帖由 darken@ts 于 2011-2-28 08:05 发表

好复杂


看来我跑题跑多了,基础类型的东西讲得多了,下回改进,只讲一、二个点就收尾。
门派:不明
发表于 2011-2-28 10:04:19 | 显示全部楼层
估计绝大部分人还没有做robot的水平,建议xli兄讲讲怎么改robot吧
门派:不明
发表于 2011-2-28 10:15:47 | 显示全部楼层
不错 基本说明白了 也看明白了   
门派:不明
发表于 2011-2-28 10:35:10 | 显示全部楼层
基础知识不怕多,就怕需要的时候找不到
xli师兄不要藏私了,多讲解点吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-12 03:50 , Processed in 0.042240 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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