美文网首页
武神传说wsmud辅助脚本开发(3)

武神传说wsmud辅助脚本开发(3)

作者: laputa19 | 来源:发表于2018-10-24 10:16 被阅读259次

    再来处理师门任务的脚本,
    先简单处理,就是假定需要上交的东西身上都有了(可以先把醉仙楼的东西都买好)
    没有的就放弃.
    主要是为了省时间,想要追求连续完成度的同学可以无视了
    先看看初级版本的,以峨眉为例

    function shimen(){
        //需要提前买好物品
        //进入师门(峨眉)
        cmd("jh fam 4 start")
        cmd("go west");
        //请求任务
        cmd("task sm al332ef82fa")  //待改进,师父的id可能会变
        //交任务
        cmd("task sm al332ef82fa")
        //tt=setTimeout(function(){   //一次性延时
        tt=setInterval(function(){    //循环等待
              if(wsdata["cmds"]){
                console.log(wsdata["cmds"].items[0]);
                c=wsdata["cmds"].items[0].cmd;  //每次都执行第一个命令
                cmd(c);
                wsdata["cmds"]=null;
                window.clearInterval(tt);
              }
        }
        , 1000);   
    }
    

    这里有个问题,就是师父的id是一个变量,每次游戏重置会变化.
    当然可以每次先用开发者工具查看一下,再修改脚本,但是这样也太麻烦了
    所以改进一下

    clear=0
    cid=''
    function sm(){  //第一次用这个函数
        //需要提前买好物品
        cmd("stopstate")  //停止当前工作
        //进入师门(峨眉)
        cmd("jh fam 4 start")
        cmd("go west")
        _getsmid("峨嵋派第五代弟子 苏梦清")
    }
    
    function _getsmid(name){
            tt=setInterval(function(){    //循环等待
            if(clear ==1 )  {window.clearInterval(tt);return}
              if(wsdata["items"]){
                console.log(wsdata["items"].items[0]);
                cname=wsdata["items"].items[0].name;
                cid=wsdata["items"].items[0].id;
                if (cname == name){
                 //console.log(cid);
                 wsdata["items"]=null;
                 window.clearInterval(tt);
                 sm2()
                }
              }
        }
        , 1000); 
    }
    
    function sm2(){//cid已经获得,用这个就可以了,不用每次都重新进
        //请求任务
        cmd("task sm "+cid)
        //交任务
        cmd("task sm "+cid)
       _getsmcmd()  
    }
    function _getsmcmd(){
            tt=setInterval(function(){    //循环等待
              if(clear ==1 )  {window.clearInterval(tt);return}
              if(wsdata["cmds"]){
                console.log(wsdata["cmds"].items[0]);
                c=wsdata["cmds"].items[0].cmd;
                wsdata["cmds"]=null;
                window.clearInterval(tt);
                cmd(c)
              }
        }
        , 1000);  
    }
    
    

    js这种语言是基于异步事件的,所以搞不好就会出现一些想象不到的异常.
    比如象setInterval这种无限运行的定时器,一个不小心就会陷入死循环了
    所以加一个clear,万一死循环了,可以通过输入clear=1来停止

    相关文章

      网友评论

          本文标题:武神传说wsmud辅助脚本开发(3)

          本文链接:https://www.haomeiwen.com/subject/znrttqtx.html