(续1)
今天有点小空,接着再讲点我的心得~~又说得不对的地方也希望有高手可以批评指正,毕竟俺是资深新手哈~~
今天想说说怎么自动学平技能。在xyj2000里灭妖是获得武学的重要途径,而妖怪的技能等级是由玩家的最高技能等级决定的,为了让灭妖容易些,一般大家在请教时都尽量让技能等级比较平均,免得某些技能等级过高导致妖怪难杀。为方便请教,借鉴了另一个帖子里的思路,我最近改进了一下自己的练功读书机器人,增加了自动学平技能的功能
自动学平技能的机器人就稍微复杂一点了,要实现这一目的光靠trigger解决不了,要用到zmud的其他功能,主要有 a.变量的引入 b.激活/关闭某个类别的triggers c.利用通配符抓取屏幕上的数据
我的这个自动学平技能的机器人思路如下:
/首先,我把上面3)的所有triggers统一把类别改为learn,这样子,#t+ learn就可以把这个类别的triggers统统激活,而#t- learn就可以把这个类别的triggers统统关闭
/建立三个变量: #VAR clv (current level,现在某项技能的等级) #VAR tlv (target level,希望学到的目标等级) #VAR skill (某项技能)
/建立一个alias:
#alias sd learn @skill from xxx for xx,并把类别learn里面有关请教的命令都用sd来代替,这样子,每次键入sd,就会请教变量skill所赋值的技能,比如说skill=literate时,sd就是请教读书识字;skill=spells时,sd就是请教基本法术。。。
/在类别learn里添加一个trigger:
pattern:你的*进步了!
command: skills
在你请教某项技能进步的时候打开技能菜单察看当前技能等级
/
/建立triggers类别learn1,添加一个trigger, 用来判断学习的第一项技能的等级是否学到了目标等级。假设你要学的第一项技能为读书识字,则
Pattern: *读书识字*%s(%d)/*
Command: skill=literate; clv=%1; #if (@clv+1)>@tlv {#t- learn1; #t+ learn2;skills}
在这里,*, %s, %d都是通配符,其中%d用来把读书识字的当前等级赋值给系统变量%1,在通过clv=%1赋值给clv.
用上面这个trigger,就可以在察看技能菜单时把literate赋值给skill,把读书识字的当前等级赋值给clv,然后判断clv是否大于tlv;如果当前等级比目标等级高,就关闭类别learn1,激活类别learn2,并打开技能菜单再次进行察看
/建立triggers类别learn2,添加一个trigger, 用来判断学习的第二项技能的等级是否学到了目标等级。假设你要学的第二项技能为基本法术,则
Pattern: *基本法术*%s(%d)/*
Command: skill=spells; clv=%1; #if (@clv+1)>@tlv {#t- learn2; #t+ learn3;skills}
同理,在类别learn2被激活时,用上面这个trigger,就可以在察看技能菜单时把spells赋值给skill,把基本法术的当前等级赋值给clv,然后判断clv是否大于tlv;如果当前等级比目标等级高,就关闭类别learn2,激活类别learn3,并打开技能菜单再次进行察看
/就这样,我们可以接着建立类别3,4。。。把需要学习的技能都以此类推建好,假设我要学10项技能,那类别learn10就稍微有点不一样如下:
Pattern: *筋斗云*%s(%d)/*
Command: skill=jindouyun; clv=%1; #if (@clv+1)>@tlv {#t- learn10; #t- learn;say 技能请教完啦}
这样子,当我们学完最后一个技能时,就会自动停止请教,并告诉你技能都请教完了
好啦,到现在我们的自动学平技能机器人就大功告成了,其中类别learn是自动学技能的机器人,而类别learn1-10则用来控制当前所学技能种类并在当前等级大于目标等级时自动将当前所学技能改为下一项技能
现在我们要做的就是,激活类别learn和learn1, 关闭类别learn2-10,定义目标等级(想学到40级就tlv=40),打个skills察看技能菜单(千万别忘了),开始自动学平技能吧! :)
PS:如果担心潜能不够用的,就自己再加条trigger在潜能不够时停止学习吧...