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