我正在为一个在线RPG制作一个imacros脚本,我最后写了这个:
var i;
for(var i=1;i<=9999;i++) {
iimDisplay(i);
var macro;
var retcode, macro2;
macro = "CODE:";
macro += "SET !ERRORIGNORE YES\n";
macro += "URL GOTO=http://coolsite.com/bttle.php?page=map\n";
macro += "TAG POS=1 TYPE=INPUT:IMAGE FORM=NAME:Cave ATTR=SRC:http://coolsite.com/images/maps/cave.gif\n";
macro += "TAG POS=1 TYPE=STRONG ATTR=TXT:Magby EXTRACT=TXT\n";
retcode = iimPlay(macro);
if (iimGetLastExtract(1)=='Marty'){
G_Extract = "CODE:";
G_Extract=G_Extract+"TAG POS=1 TYPE=SELECT ATTR=ID:item CONTENT=%Kill<SP>him\n";
G_Extract+=G_Extract+"TAG POS=1 TYPE=BUTTON ATTR=ID:use_item\n";
iimPlay(G_Extract);
}
else if (iimGetLastExtract(1)!=="Marty")
{
macro2 = "CODE:";
macro2 += "TAG POS=1 TYPE=BUTTON ATTR=ID:run\n";
macro2 += "SET !EXTRACT NULL\n";
macro2 +="Wait seconds=2.5\n";
iimPlay(macro2);
}
}
它的作用是,如果敌人“马蒂”被发现,那么我们需要杀死他,否则如果发现的敌人不是马蒂,那么我们需要跑。现在,第一部分完成它的工作,它总是点击地图来搜索敌人,然后它在屏幕上搜索文本“Marty”。但是,即使它找到它并选择它,它仍然认为页面上没有Marty,所以继续运行,从不战斗。 请帮助我们。
答案 0 :(得分:1)
可能它找不到它。 尝试使用以下方法调试找到的值:
alert(iimGetLastExtract(1));
答案 1 :(得分:0)
macro += "TAG POS=1 TYPE=STRONG ATTR=TXT:Magby EXTRACT=TXT\n";
我在这里看到&#34; Magby&#34;所以这个iMacros代码将提取值为#34; Magby&#34;的文本。尝试将此更改为Marty并查看它是否有效。
var i;
for(var i=1;i<=9999;i++) {
iimDisplay(i);
var macro;
var retcode, macro2;
macro = "CODE:";
macro += "SET !ERRORIGNORE YES\n";
macro += "URL GOTO=http://coolsite.com/bttle.php?page=map\n";
macro += "TAG POS=1 TYPE=INPUT:IMAGE FORM=NAME:Cave ATTR=SRC:http://coolsite.com/images/maps/cave.gif\n";
macro += "TAG POS=1 TYPE=STRONG ATTR=TXT:Magby EXTRACT=TXT\n";
retcode = iimPlay(macro);
var extracted=iimGetLastExtract();
extracted=extracted.trim();
if (iimGetLastExtract(1)=='Marty'){
G_Extract = "CODE:";
G_Extract=G_Extract+"TAG POS=1 TYPE=SELECT ATTR=ID:item CONTENT=%Kill<SP>him\n";
G_Extract+=G_Extract+"TAG POS=1 TYPE=BUTTON ATTR=ID:use_item\n";
iimPlay(G_Extract);
}
else if (iimGetLastExtract(1)!=="Marty")
{
macro2 = "CODE:";
macro2 += "TAG POS=1 TYPE=BUTTON ATTR=ID:run\n";
macro2 += "SET !EXTRACT NULL\n";
macro2 +="Wait seconds=2.5\n";
iimPlay(macro2);
}
}
我不喜欢将extract和if子句放在一起。所以改了一下。我还修剪了弦以从侧面移除任何空白区域。如果这不起作用,请使用alert来检查值,toLowerCase()方法可以帮助你。