分享机器人请务必遵守北侠机器人守则。
简单的学习机器人很简单,就只要一行代码:
#tick xx {#if { @char.IsBusy{} } {#return}; yun regenerate; #if { $char[HP][内力百分比] < 5 } {dazuo max} {xue zhang sanfeng for @default{$skill;force} 10}} 3
如果想换技能,就用这个命令:
#var skill taiji-shengong
当然了,这里默认是跟张三丰学,你可以换成你师父的 ID。
#alias {diaoyu.Diao} {
#class diaoyu.Diao open;
#alias {diaoyu.Diao.do} {gua er; diao yu};
#action {^你一提杆,钓到了一条%*,恭喜,恭喜。} {diaoyu.Diao.do};
#action {^你连声叫到:晦气,晦气。} {diaoyu.Diao.do};
#action {^你看着破草帽不由的发呆了。} {diaoyu.Diao.do};
#action {^你猛一提杆,钓到了%*,晦气,晦气。} {diaoyu.Diao.do};
#action {^你猛的一提杆,扯的太急了,线断了} {diaoyu.Diao.do};
#action {^你太累了,歇会再钓吧!} {diaoyu.dine};
#action {^你要挂什么?} {diaoyu.sell};
#class diaoyu.Diao close;
diaoyu.Diao.do;
};
#alias {diaoyu.Cancel} {
#class diaoyu.Diao kill;
};
#alias pingdiao.do {pingdiao; busy.Wait pingdiao.do};
然后输入 pingdiao.do 就开始凭吊了。想要停止的时候,输入 #alias pingdiao.do #0,然后等这次凭吊完就不会再继续了。
#alias dazuo.do {eat liang; drink; dazuo max; dazuo 10; busy.Wait dazuo.do};
然后输入 dazuo.do 就开始打坐了。想要停止的时候,输入 #alias dazuo.do #0,然后等这次打坐完就不会再继续了。
#alias xiulian.do {xiulian taiji-shengong; busy.Wait xiulian.do};
然后输入 xiulian.do 就开始修炼了。想要停止的时候,输入 #alias xiulian.do #0,然后等这次修炼完就不会再继续了。
#alias {dazuo.dazuo} {
#local allow-recover {@default{%1;false}};
#if { @char.IsBusy{} } {
#return;
};
#if { $char[HP][食物] < 200 } {
eat $char[favorite][food];
};
#if { $char[HP][饮水] < 200 } {
eat $char[favorite][water];
};
#if { $char[HP][精神百分比] < 75 } {
yun regenerate;
};
#else {
#if { @char.SkillLevel{英雄剑法} < 170 } {
#local times {@math.Eval{$char[HP][最大精神] * ($char[HP][精神百分比] - 75) / 100 / 25}};
#local times {@math.Min{$times;50}};
study yingxiong book for $times;
};
};
#if { $char[HP][当前内力] > $char[HP][最大内力] * 2 - 11 } {
dazuo 10;
};
#elseif { $char[HP][气血百分比] < 2 && $char[HP][内力百分比] < 50 } {
sleep;
};
#elseif { $char[HP][当前气血] > 50 && $char[HP][气血百分比] > 20 } {
dazuo max;
};
#elseif { $char[Skills][@char.GetJifaSkill{基本内功}][multiple] > 1.2 && $char[HP][内力百分比] < 80 } {
#if { @isTrue{$allow-recover} } {
yun recover;
dazuo max;
};
};
};
#tick dz {dazuo.dazuo} 1;
不说废话,有时候接任务的时候会被别人的对话信息误触发,这是因为机器人不能正确区分 NPC 说的话是不是对自己说的。 解决的思路是,只有自己问完之后,NPC 说的话,才是对自己说的,可以用下面的方法实现这一点:
#alias {wudang.volunteer.Job} {
#class wudang.volunteer.job open;
#action {^你向谷虚道长打听有关『守山门』的消息。$} {
#class wudang.volunteer.job open;
#action {^谷虚道长说道:「已经有人在守山门了,$PLAYER请稍后再来。」$} {
wudang.volunteer.job.done;
#delay wudang.volunteer.job {wudang.volunteer.Job} 10;
};
#action {^谷虚道长说道:「既然$PLAYER有意,就代贫道看守(volunteer)一下山门吧。」$} {
wudang.volunteer.job.done;
wudang.volunteer.goto.wdsm;
};
#action {^谷虚道长说道:「$PLAYER今日已经守过山门了。」$} {
wudang.volunteer.job.done;
};
ga.ClassWait wudang.volunteer.job.done;
#class wudang.volunteer.job close;
};
#alias {wudang.volunteer.job.done} {
#class wudang.volunteer.job kill;
};
ask guxu daozhang about 守山门;
sync.ClassWait {wudang.volunteer.job.done};
#class wudang.volunteer.job close;
};
上面的例子实际上也是一个常用的接任务机器人框架。之所以举这个例子是因为这个任务的 NPC 答复没那么多花样,别的 NPC 可能会有很多种不同的答复,可以酌情自行完善。