目录

PaoTin++ 机器人范例

分享机器人请务必遵守北侠机器人守则

1. 简易学习机器人

简单的学习机器人很简单,就只要一行代码:

#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。

2. 钓鱼机器人

#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;
};

3. 打坐机器人

#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;

4. 接任务时,如何防止误触发

不说废话,有时候接任务的时候会被别人的对话信息误触发,这是因为机器人不能正确区分 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 可能会有很多种不同的答复,可以酌情自行完善。