MUSHclient应用实例:如何用mush做简单的炼丹机器人
2021/3/18 10:56:32

目前来说,炼丹机器人大家应该都有了,一般都是zmud的,zmud有个缺点,遇到断线或者发呆什么的,比较难重新连接,当然以前胖胖包这位世外高人,也指点了一下如何克服zmud机器人发呆的方法,可以通过发呆自动断线(unset keep_idle),然后重连以后启动机器人的方法。喜欢zmud的朋友可以继续钻研zmud,让机器人更加完美,当然本文只是对喜欢mush做机器人的朋友做一些抛砖引玉的功能。
首先做mush的炼丹机器人,首先要考虑通过什么快捷键让机器人启动,一般的qm机器人是通过start让机器人启动,所以参考start的写法,大家可以写一个炼丹机器人的启动指令。下面是qm机器人start的写法,具体可以查找脚本中的on_alias函数。
case "start":
            world.note("7");
            start_time();
            set("room/id", -1);
            set("next_step/flag", "");
            set("quest/flag", "liandan");
            send("#t+ pk_kill;#t+ ks;hp;#t+ im_special1;l budai of me;l baoguo of me;i;quest;special");
            do_prepare();
            break;
1. 所以我们可以根据上面的模式,写一个炼丹启动的指令,在脚本的on_alias函数中添加如下代码:
case "ld":
            world.EnableTriggerGroup("ldd", true); 
            set("next_step/flag", "");
            set("quest/flag", "liandan");
            set("next_step/flag", "COMMANDS");
            set("next_step/cmds","ask yao chun about 炼丹;set no_teach liandan");
            goto(1388);
            break;

然后按ctrl+alt+9,打开aliases这个栏位,点add按钮,新增一个命令ld,如下图片:

 
这样添加的意思,就是当你在游戏中输入ld并按回车,这个机器人会自动走动到1388个坐标,并ask yao chun about 炼丹,然后设定环境参数为liandan。
3.写一个函数,
function on_ld(name,output,wildcards)
{
    var wcs = VBArray(wildcards).toArray();
    switch (name) {
          case "ld_start":
          stopall();
          world.EnableTriggerGroup("ldd", true);
          set("next_step/flag", "");
          set("next_step/flag", "COMMANDS");
          set("next_step/cmds","ask xiao tong about 草药");
          goto(1387);
          break; 

        }   
}
注意:在脚本文件中函数的格式都是上面的类型, 如果对函数和case有不明白的地方,建议参考JavaScript 对象简介的文章,http://www.w3school.com.cn/js/js_obj_intro.asp     

2.写一个触发,如下图片:

这个是机器人比较关键的部分,以后你所有的机器人必须通过类似的触发进行制作。label就是指触发器的名字ld_start,这个要与脚本文件中的case "ld_start"的一致。script是指这个label所在函数的名称,这里写on_ld,而group是指一个组别,可以定义也可以不写,主要是为了可以管理触发器群组的,举个例子world.EnableTriggerGroup("lds",true); 这个命令的意思就是打开group名为lds下面的所有触发器。
4.然后就是进入机器人的调试阶段,你先输入ld,看机器人是不是自动走到姚春那里问炼丹的事情,问完炼丹是不是去问小童采药的事情。
5.再后面,就是自己写炼丹过程的一些触发了,我把我的触发和一些case公布给大家参考,大家可以自己写写,写的比较凌乱,大家多多见谅。

 
下面是炼丹函数:(其中world.GetVariable("liandan_loc"),这个是采药的地点,自己可以在ctr+alt+7的参数中自己add一个参数liandan_loc)
function on_ld(name,output,wildcards)
{
    var wcs = VBArray(wildcards).toArray();
    swit

下一页
返回列表
返回首页
©2024 MUD游戏网_文字mud 电脑版
Powered by iwms