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