分享机器人请务必遵守北侠机器人守则。
简单的学习机器人很简单,就只要一行代码:
#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 {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 可能会有很多种不同的答复,可以酌情自行完善。