再來處理師門任務(wù)的腳本,
先簡單處理,就是假定需要上交的東西身上都有了(可以先把醉仙樓的東西都買好)
沒有的就放棄.
主要是為了省時(shí)間,想要追求連續(xù)完成度的同學(xué)可以無視了
先看看初級版本的,以峨眉為例
function shimen(){
//需要提前買好物品
//進(jìn)入師門(峨眉)
cmd("jh fam 4 start")
cmd("go west");
//請求任務(wù)
cmd("task sm al332ef82fa") //待改進(jìn),師父的id可能會變
//交任務(wù)
cmd("task sm al332ef82fa")
//tt=setTimeout(function(){ //一次性延時(shí)
tt=setInterval(function(){ //循環(huán)等待
if(wsdata["cmds"]){
console.log(wsdata["cmds"].items[0]);
c=wsdata["cmds"].items[0].cmd; //每次都執(zhí)行第一個(gè)命令
cmd(c);
wsdata["cmds"]=null;
window.clearInterval(tt);
}
}
, 1000);
}
這里有個(gè)問題,就是師父的id是一個(gè)變量,每次游戲重置會變化.
當(dāng)然可以每次先用開發(fā)者工具查看一下,再修改腳本,但是這樣也太麻煩了
所以改進(jìn)一下
clear=0
cid=''
function sm(){ //第一次用這個(gè)函數(shù)
//需要提前買好物品
cmd("stopstate") //停止當(dāng)前工作
//進(jìn)入師門(峨眉)
cmd("jh fam 4 start")
cmd("go west")
_getsmid("峨嵋派第五代弟子 蘇夢清")
}
function _getsmid(name){
tt=setInterval(function(){ //循環(huán)等待
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已經(jīng)獲得,用這個(gè)就可以了,不用每次都重新進(jìn)
//請求任務(wù)
cmd("task sm "+cid)
//交任務(wù)
cmd("task sm "+cid)
_getsmcmd()
}
function _getsmcmd(){
tt=setInterval(function(){ //循環(huán)等待
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這種語言是基于異步事件的,所以搞不好就會出現(xiàn)一些想象不到的異常.
比如象setInterval這種無限運(yùn)行的定時(shí)器,一個(gè)不小心就會陷入死循環(huán)了
所以加一個(gè)clear,萬一死循環(huán)了,可以通過輸入clear=1來停止