1

Тема: Плагин: Морковка для всех версий

Задача плагина: Лечиться в даже за счет эликов. Лечить болезни в грибнице.
Совместимость: 8.4+
Установка:
Создайте(или запустите редактирование) файл(а) Morkovka.js в папке Plugins.
Содержание файла:

var temp_inf = "";
var temp_inf_razdel = 0;
 
function Morkovka(enabled)
{
    if(enabled)
    {
        PluginsOnLoad["Morkovka"] = "MorkovkaHandler";
 
    }
    else
    {
        PluginsOnLoad["Morkovka"] = "";
    }
}
 
 
function MorkovkaHandler(url)
{
    if (top.Battle.bInBattle)return;
 
    var hpRemain = parseInt(maxHP - tkHP);
    var manaRemain = 0;
    if(window.tkMana)
        manaRemain = parseInt(maxMana - tkMana);
    var morkovkaName = [];
 
    if(external.room_name=='Грибница' && top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/(?:Слабость к (?:Воде|Огню|Воздуху))|(?:Дрожь в коленях)/i))
    {
        temp_inf = doLoad("http://" + external.SCity.Text + ".combats.com/main.pl?edit=3&rnd=" + Math.random());
        temp_inf_razdel = 3;
    }
 
    if(temp_inf && (temp_inf.match(/Слабость к (?:Воде|Огню|Воздуху)/i) || temp_inf.match(/Дрожь в коленях/i)))
    {   
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Печень Гусеница");
        morkovkaName[morkovkaName.length-1].push(3);
    }
 
    if(tkHP < 100){
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Сосуд жизненных сил");
        morkovkaName[morkovkaName.length-1].push(4);                   //Раздел инвентаря, где лежит элексир. 2- раздел "Элексиры", 3 - "Прочее"
    }
 
    if(hpRemain > 300){
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Заживляющий Эликсир");
        morkovkaName[morkovkaName.length-1].push(3);                   //Раздел инвентаря, где лежит элексир. 3- раздел "Элексиры", 4 - "Прочее"
        }
 
    if(hpRemain > 150){
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Заживляющая Настойка");
        morkovkaName[morkovkaName.length-1].push(3);                   //Раздел инвентаря, где лежит элексир. 3- раздел "Элексиры", 4 - "Прочее"
        }
 
 
    if(morkovkaName.length > 0)
    for(x=0;x<=(morkovkaName.length-1);x++){
        if(Morkovka2Handler(morkovkaName[x][0],morkovkaName[x][1]))
            break;
    }
}
 
function Morkovka2Handler(elikName,razdel)
{
    if(temp_inf_razdel != razdel)
        temp_inf = doLoad("http://" + external.SCity.Text + ".combats.com/main.pl?edit="+razdel+"&rnd=" + Math.random());
 
    temp_inf_razdel = razdel;
    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];
    if(elikName == "Печень Гусеница" || elikName == "Почки Палочника")
        temp_inf = "";
        temp_inf_razdel = 0;
        return true;
    }
    return false;
}
 
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;
}

Примечания:
1) Здесь прописано 3 условия:
1.0 От дрожи в ногах - почки. От Слабостей - печень. Эти услвия не трогать.
1.1 Если текущее ХП(tkHP) < 100 - пьём настойку(оответственно стоит название "Настойка на грибах" и цифра 4, т.к. 4 - раздел инвентаря Прочее, гдя настойка и лежит)
1.2 Если разница между максимальным и текущим ХП(hpRemain) превышает 300, то выпивается "Заживляющий Эликсир". Цифра 3, т.к. 3 - это раздел инвентаря "Элексиры", где хранится он.
1.3 Если разница между максимальным и текущим ХП(hpRemain) превышает 150, то выпивается "Заживляющая Настойка".
2) Добавлять/убирать условия можно. Одно условие целиком выглядит именно так:

if(hpRemain > 300){ //условие применения
        morkovkaName[morkovkaName.length]=[];
        morkovkaName[morkovkaName.length-1].push("Заживляющий Эликсир");
        morkovkaName[morkovkaName.length-1].push(3);//Раздел инвентаря, где лежит элексир. 3- раздел "Элексиры", 4 - "Прочее"
        }

Все эти строки являются одним условием. Прошу не добавлять/удалять частично, оставив какую-нибудь строку одну и кричать о том, что не работает ничего - обижусь ведь smile
3) Условия добавлять или прописывать надо именно так. Т.е. в самом начале условие на то, что даёт больше всего ХП. Самое последнее - то, что даёт меньше всего ХП.

Отдельная благодарность Петро за неоценимую помощь с тесированием smile

Отредактировано anahronik (2010-12-09 10:35:36)

Software is like sex: it's better when it's free! © LinusTorvalds

2

Re: Плагин: Морковка для всех версий

Плагин обновлен.
Существенно уменьшено количество запросов при определении болезней/ослаблений и при поиске элексиров.
Исправлена неработоспособность у людей, использующий приём "ослабляющее острие".

Плагин существенно переработан, а протестирован только одним человеком. Но протестирован успешно.

Software is like sex: it's better when it's free! © LinusTorvalds

3

Re: Плагин: Морковка для всех версий

Минерал пишет:

hyppo как полет?

Вернулся к официальной версии, подставив нужное мне значение HP smile "1300" вместо "maxHP". Тюнинг под себя.

Пещера пройдена, следующие тесты через два часа будут.

Тестируйте, делайте замечания, если заметите. Всё равно всё потру потом.

(Please log in or register to see this URL)

4

Re: Плагин: Морковка для всех версий

Тестирую, полёт проходит хорошо:)

Re: Плагин: Морковка для всех версий

hyppo пишет:
Минерал пишет:

hyppo как полет?

Вернулся к официальной версии, подставив нужное мне значение HP smile "1300" вместо "maxHP". Тюнинг под себя.

Пещера пройдена, следующие тесты через два часа будут.

Тестируйте, делайте замечания, если заметите. Всё равно всё потру потом.

Я правильно тебя понял, все "maxHP" меняю на цифру до которой мне надо чтоб бот хилял морковкой и в путь?

Are you ku ku?

6

Re: Плагин: Морковка для всех версий

Минерал пишет:
hyppo пишет:
Минерал пишет:

hyppo как полет?

Вернулся к официальной версии, подставив нужное мне значение HP smile "1300" вместо "maxHP". Тюнинг под себя.

Пещера пройдена, следующие тесты через два часа будут.

Тестируйте, делайте замечания, если заметите. Всё равно всё потру потом.

Я правильно тебя понял, все "maxHP" меняю на цифру до которой мне надо чтоб бот хилял морковкой и в путь?

ну да, както оно так получается:)

7

Re: Плагин: Морковка для всех версий

В плагине начал проявляться баг sad
Когда переходит на этаж или умерает, перестаёт юзать морковь, а тупа сам отхиливается не зависимо от уровня хп.
При этом продолжает движение по маршруту.

У кого проявлялась тажа проблема?

Пока временно вернулся к старому плагину, с надеждой, что с этот после доработки можно будет использовать.

8

Re: Плагин: Морковка для всех версий

Умирать не знаю,а при переходе на этажи юзает исправно.

Вранье.Вранье.Вранье.Правда.(с)Rand

9

Re: Плагин: Морковка для всех версий

Минерал пишет:

Я правильно тебя понял, все "maxHP" меняю на цифру до которой мне надо чтоб бот хилял морковкой и в путь?

Не все, но те кто хочет чтобы морковки расходовались максимально эффективно.
Это нужно не всем. Есть те кому пофиг на морковки, им нужнее пустые бутылки, для сдачи в гос wink

Выявлен небольшой косяк. В Сане получил "Дрожь в коленях", которая лечится не "Почками палочника", а "Печенью гусеница". По-моему это всегда и было так. Или я что-то путаю?

(Please log in or register to see this URL)

10

Re: Плагин: Морковка для всех версий

печенью дрожь всегда лечилась

11

Re: Плагин: Морковка для всех версий

Когда-то лечилась почками.Совсем недавно заметил,что теперь лечится печенью.

Вранье.Вранье.Вранье.Правда.(с)Rand

12

Re: Плагин: Морковка для всех версий

Когда бот выходит из боя и перед ним кто-то стоит, морковка не срабатывает.
Так же если стоит галочка "Ждать восстановления на каждом шагу" морковь тоже не работает.
Т.е. если нападут, сразу же выносят...
Но если вручную нажать "обновить", то сразу же срабатывает.

Отредактировано uniken1 (2011-06-19 21:29:39)

13

Re: Плагин: Морковка для всех версий

uniken1 пишет:

Когда бот выходит из боя и перед ним кто-то стоит, морковка не срабатывает.
Так же если стоит галочка "Ждать восстановления на каждом шагу" морковь тоже не работает.
Т.е. если нападут, сразу же выносят...
Но если вручную нажать "обновить", то сразу же срабатывает.

Да, мною тоже была замечена такая проблемка, из-за чего хз... Со старой версией такого небыло замечено.

14

Re: Плагин: Морковка для всех версий

Как вариант - отвязать плагин от обновления фрейма и повесить таймер

Оставь надежду всяк сюда входящий ©

15

Re: Плагин: Морковка для всех версий

тогда уже лучше после выхода из боя поставить автообновление бота.

У меня все работает, что я делаю не так ?

16

Re: Плагин: Морковка для всех версий

Не туда у вас мысли полезли smile
Найдите причину, осознайте, придумайте  выход smile

Если лень - сам напишу...одну строку поменять smile

Software is like sex: it's better when it's free! © LinusTorvalds

17

Re: Плагин: Морковка для всех версий

anahronik пишет:

Не туда у вас мысли полезли smile
Найдите причину, осознайте, придумайте  выход smile

Если лень - сам напишу...одну строку поменять smile

Да причём тут лень:), ума не хватает:(

18

Re: Плагин: Морковка для всех версий

У Exile и Жеки точно хватает smile

Software is like sex: it's better when it's free! © LinusTorvalds

19

Re: Плагин: Морковка для всех версий

Есть такие кто поменял строку, про которую писал anahronik?

Отредактировано Минерал (2011-06-20 16:20:47)

Are you ku ku?

20

Re: Плагин: Морковка для всех версий

Минерал пишет:

Есть такие кто поменял строку, про которую писал anahronik?

У меня не хватило ума понять о какой строке речь smile
С печенью баг поменял, а вот с рефрешем не понял где это.

(Please log in or register to see this URL)

21

Re: Плагин: Морковка для всех версий

И еще вопрос: как у тебя осуществлялалсь проверка на ослабления? Зачем в основном методе две проверки на дрожь\слабость?

Оставь надежду всяк сюда входящий ©

22

Re: Плагин: Морковка для всех версий

Первой строяко в плагин добавил
external.AddToChat("Вход морква");
Поставил галочку Хил на каждой клетке, и вот что вижу:
19:00:16 Вход морква
19:00:31 Вход морква
19:00:46 Вход морква
19:01:01 Вход морква
19:01:06 Вход морква
19:01 Внимание! Бой закончен.
19:02:40 Вход морква

Плагин и так работает по таймеру каждые 15 секунд. Но после боя таймер останавливается до перврго обновления.
Есть еще странное срабатвание 19:01:06 видимо это в момент окончания боя, но статус боя еще стоит и видимо строка if (external.inBattle)return; выбрасывает.
А на что ее можно заменить я не представляю.

Хотя я эту строчку удалил и все заработало.
А зачем она вообще?

Отредактировано uniken1 (2011-06-20 18:23:26)

23

Re: Плагин: Морковка для всех версий

видимо это в момент окончания боя, но статус боя еще стоит

Кстати, вполне возможно.
Помнится, анахроник не советовал юзать external, в т.ч. external.inBattle. Вместо него предлагал юзать такую конструкцию:

if(top.Battle.bInBattle) return;

Попробуй подставить это.

Оставь надежду всяк сюда входящий ©

24

Re: Плагин: Морковка для всех версий

Хотя я эту строчку удалил и все заработало.
А зачем она вообще?

Затем, чтобы бот в бою не пытался лечиться.

Оставь надежду всяк сюда входящий ©

25

Re: Плагин: Морковка для всех версий

у меня нормально после боя лечится, не знаю что там у вас не так