Тема: Морковка от Exile
anahronik, сдаюсь. Был бы чар, годный для пещер, то может быть и нашел ошибку, посмотрев бы работу кода в действии. А так идей нету.
Малость уменьшил код, добавил юз маны (надеюсь, правильно) и изменил принцип проверки на текущую закладку инвентаря.
var temp_inf = "";
function Morkovka(enabled)
{
if(enabled)
{
PluginsOnLoad["Morkovka"] = "MorkovkaHandler";
}
else
{
PluginsOnLoad["Morkovka"] = "";
}
}
function MorkovkaHandler(url)
{
try
{
if(top.Battle.bInBattle) return;
var hpRemain = parseInt(maxHP - tkHP);
var manaRemain = 0;
var morkovkaName = [];
if(window.tkMana)
{
manaRemain = parseInt(maxMana - tkMana);
if(manaRemain > 2000)
{
morkovkaName[morkovkaName.length] = new Array ("Бутылек маны",3); //Раздел инвентаря, где лежит элексир. 3- раздел "Элексиры", 4 - "Прочее"
}
if(manaRemain > 1500)
{
morkovkaName[morkovkaName.length] = new Array ("Флакончик маны",3); //Раздел инвентаря, где лежит элексир. 3- раздел "Элексиры", 4 - "Прочее"
}
}
if(external.room_name=='Грибница' && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/(?:Слабость к (?:Воде|Огню|Воздуху))|(?:Дрожь в коленях)/i))
{
morkovkaName[morkovkaName.length] = new Array ("Печень Гусеница",3);
}
if(hpRemain > 300)
{
morkovkaName[morkovkaName.length] = new Array ("Заживляющий Эликсир",3); //Раздел инвентаря, где лежит элексир. 3- раздел "Элексиры", 4 - "Прочее"
}
if(hpRemain > 200)
{
morkovkaName[morkovkaName.length] = new Array ("Сосуд жизненных сил",4); //Раздел инвентаря, где лежит элексир. 2- раздел "Элексиры", 3 - "Прочее"
}
if(hpRemain > 150)
{
morkovkaName[morkovkaName.length] = new Array ("Заживляющая Настойка",3); //Раздел инвентаря, где лежит элексир. 3- раздел "Элексиры", 4 - "Прочее"
}
for(x = 0; x < morkovkaName.length; x++)
{
if(Morkovka2Handler(morkovkaName[x][0],morkovkaName[x][1])) break;
}
}
catch(err)
{
alert("We've got some error!");
}
}
function Morkovka2Handler(elikName,razdel)
{
try
{
var str = "edit="+razdel;
if(top.frames[external.mainFrameIndex].location.toString().match(str) == false)
{
temp_inf = doLoad("http://" + external.SCity.Text + ".combats.com/main.pl?edit="+razdel+"&rnd=" + Math.random());
}
var m = elikName + "(\\s\\(x\\d+\\))?','main.pl',\\s'(.+?)',\\s'.*?',\\s(\\d+)";
var found = temp_inf.match(m);
if(found != null)
{
external.AddToChat("Выпиваю эликсир <b>\\\"" + elikName + "\\\"</b>");
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?use=" + found[2] + "&n=" + found[3];
temp_inf = top.frames[external.mainFrameIndex].document.all[0].innerHTML;
return true;
}
return false;
}
catch(err)
{
alert("We've got some error!");
}
}
function doLoad(url)
{
if (window.XMLHttpRequest)
req = new XMLHttpRequest();
else
req = new ActiveXObject("Microsoft.XMLHTTP");
req.open("GET", url, false); // задать параметры методу open
req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); //чтоб не кэшировались GET запросы
req.send(null); // отправить запрос
return req.responseText;
}
Отредактировано Exile (2011-06-20 22:27:02)