1

Тема: Плагин одевания свитков восстановления 45ХП+

Плагин: Одевания свитков Восстановления. (любых)
Название файла: SetScrollHP.js
Размещение: \Combots\Plugins

Описание:
Подбирает и одевает любые свитки Восстановления ХП в пещере.
В случае подбора хотя бы одного свитка оденет все свитки ХП, которые найдет в инвентаре.

Код плагина:

SPOILER Show

// Одевание свитков Восстановление энергии
 
var Pause = false;
var setTimer = {};
var timePLmin = 2000; // default
var timePLmax = 3000; // default
var stepClick = 0;
var colScroll = 0;
 
function SetScrollHP(enabled) {
    if(enabled) {
        PluginsOnLoad["SetScrollHP"] = "TakeDropScroll";
    } else {
        PluginsOnLoad["SetScrollHP"] = "";
        clearInterval(setTimer[mylogin]);
        stepClick = 0;
        if (Pause){
           ChangeTime();
        }
    }
}
 
function TakeDropScroll() {
  if (top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i)){
     if (external.inBattle){
         clearInterval(setTimer[mylogin]);
         if (Pause) { ChangeTime(); }
     } else {
         var ParsDrop = top.frames[external.mainFrameIndex].document.documentElement.outerHTML;
         if (ParsDrop.indexOf("подняли 'Восстановление энергии") > 0){
             colScroll = colScroll + 1;
             external.AddToChat("Подняли свиток! Свитков на руках = "+colScroll+" шт.");
         }
         var itemDrop = $('h4',get_mainframe().document).text();
         if (!(itemDrop.indexOf("разбросаны")+1) && colScroll > 0){
             setTimer[mylogin] = setInterval('setScroll()', getRndTime(timePLmin, timePLmax));
         }
    }
  }
}
 
function setScroll(){
  if (!Pause) { ChangeTime(); }
  if (stepClick == 0){
      $('img[title="Настройки/Инвентарь"]',top.frames["bottom"].document).each(function() {  this.click(); } )
      stepClick = 1;
  } else if (stepClick == 1){
      external.ClickLink("Фильтр",2);
      stepClick = 2;
  } else if (stepClick == 2) {
      var filterText = top.frames[external.mainFrameIndex].document.getElementsByName("filter");
      stepClick = 3;
      if (filterText[0].value != "восс"){
          filterText[0].value = "восс";
      }
   } else if (stepClick == 3){
      $('input[name="subfilter"]',get_mainframe().document).each(function() { this.click(); });   
      stepClick = 4;
   } else if (stepClick == 4){
      if (get_mainframe().document.all[0].innerHTML.indexOf('main.pl?set=cureHP') > -1){
          external.ClickLink("надеть",2);
      } else {
          stepClick = 5;
      }
   } else {
      $('input[value="Вернуться"]',get_mainframe().document).each(function() { this.click(); });
      clearInterval(setTimer[mylogin]);
      stepClick = 0;
      colScroll = 0;
      if(Pause) { ChangeTime(); }
   }
}
 
function ChangeTime(){
  if (!Pause){
     // тормозим бота
     external.Stop();
     Pause = true;
  }else{
     // возвращаем бота в нормальное состояни
     external.Start();
     Pause = false;
  }
}
 
function getRndTime(timePLmin, timePLmax){
   return Math.floor(Math.random() * (timePLmax - timePLmin + 1)) + timePLmin;
}

Update 1:
Код плагина переработан полностью.
Update 2:
Исправлен программный недочет.

SPOILER Show
В коде организованна проверка наличие дропа по наличию текста в теге h4

$('h4',get_mainframe().document).text();

с точки зрения кода (строка выше) фразы:

В комнате разбросаны вещи:
Кол-во смертей: Х

одинаковы(текс то есть и там и там) и соответственно при хотя бы одной смерти, скрипт думал, что в клетке есть дроп и ждал пока бот его подберет, что бы в дальнейшем его одеть. А бот шел дальше, так как дропа нет.
Проще говоря в ситуации с наличием смертей - свитки собирались, но не одевались.


Доработано:

  • Подбирает/одевает все свитки

  • Исправлена схема подбора свитка (теперь вначале собирает весь дроп в клетке, а потом одевает).

  • Исправлена схема одевания (убраны прямые ссылки, теперь делает все последовательно, как "живой")

  • Теперь есть задержка между действиями (Random).

  • Организованна функция, продолжения процесса одевания свитков, если оно было прервано нападением моба.

Update 3: v.2.0
Добавлен парсинг чата на получение Свитков Восстановления по суточному заданию.
Важно: После парсинга свитка, в случае его обнаружения, идет очистка чата (целиком)

Update 4: v.2.1
Переписал парсилку чата, теперь нет необходимости в очистке чата и соответственно плагин не чистит чат.
Код v 2.1

SPOILER Show

// Одевание свитков Восстановление энергии  v.2.1
 
var Pause = false;
var setTimer = {};
var timePLmin = 1500; // default
var timePLmax = 2500; // default
var stepClick = 0;
var colScroll = 0;
var messChat = 0;
var messArray = [];
var filterText;
 
function SetScrollHP(enabled) {
    if (enabled) {
        PluginsOnLoad["SetScrollHP"] = "TakeDropScroll";
    } else {
        PluginsOnLoad["SetScrollHP"] = "";
        clearInterval(setTimer[mylogin]);
        stepClick = 0;
        if (Pause) { ChangeTime(); }
    }
}
 
function TakeDropScroll() {
  if (top.frames[external.mainFrameIndex].location.toString().match(/dungeon\d+\.pl/i)) {
     if (external.inBattle) {
         clearInterval(setTimer[mylogin]);
         if (Pause) { ChangeTime(); }
     } else {
         var ParsDrop = top.frames[external.mainFrameIndex].document.documentElement.outerHTML;
         if (ParsDrop.indexOf("подняли 'Восстановление энергии") > 0) {
             colScroll = colScroll + 1;
             external.AddToChat("Подняли свиток! Свитков на руках = "+colScroll+" шт.");
         }
         var itemDrop = $('h4',get_mainframe().document).text();
         if (!(itemDrop.indexOf("разбросаны")+1) && colScroll > 0) {
             setTimer[mylogin] = setInterval('setScroll()', getRndTime(timePLmin, timePLmax));
         }
    }
  } else {
    if (!external.inBattle && messChat == 0) {
        // < - Парсилка чата - >
        $(".Chat",top.Chat.Self.arrLogs.oChat.oFrame).each(function(){ var messTMP = this.innerText; if (messTMP.indexOf("Восст") > -1) { FindMess(messTMP); } });
    }
  }
}
 
function FindMess(messTMP){
  if (messArray.indexOf(messTMP) < 0) {
    messArray = messArray + messTMP+" // ";
    setTimer[mylogin] = setInterval('setScroll()', getRndTime(timePLmin, timePLmax));
    messChat = 1;
  }
}
 
function setScroll(){
  if (!Pause) { ChangeTime(); }
  if (stepClick == 0) {
      $('img[title="Настройки/Инвентарь"]',top.frames["bottom"].document).each(function(){ this.click(); });
      stepClick = 1;
  } else if (stepClick == 1) {
      external.ClickLink("Фильтр",2);
      stepClick = 2;
  } else if (stepClick == 2) {
      filterText = top.frames[external.mainFrameIndex].document.getElementsByName("filter");
      if (filterText[0].value != "восс") {
          filterText[0].value = "восс";
      }
      stepClick = 3;
  } else if (stepClick == 3) {
      $('input[name="subfilter"]',get_mainframe().document).each(function(){ this.click(); });   
      stepClick = 4;
  } else if (stepClick == 4) {
      if (get_mainframe().document.all[0].innerHTML.indexOf('main.pl?set=cureHP') > -1) {
          external.ClickLink("надеть",2);
      } else {
          stepClick = 5;
      }
  } else {
      $('input[value="Вернуться"]',get_mainframe().document).each(function(){ this.click(); });
      clearInterval(setTimer[mylogin]);
      stepClick = 0;
      colScroll = 0;
      messChat = 0;
      if(Pause) { ChangeTime(); }
  }
}
 
function ChangeTime(){
  if (!Pause) {
     external.Stop();
     Pause = true;
  } else {
     external.Start();
     Pause = false;
  }
}
 
function getRndTime(timePLmin, timePLmax){
   return Math.floor(Math.random() * (timePLmax - timePLmin + 1)) + timePLmin;
}


Доработано:

  • Организованна функция, одевания свитков полученных за выполнение суточного Задания

Отредактировано Andy_SPB (2015-07-23 16:46:04)

(Please log in or register to see this URL), лучше (Please log in or register to see this URL) (с)
Помощь приходит быстрее если:
1. Понятно сформулирован вопрос.
2. Использованы нужный (Please log in or register to see this URL).

2

Re: Плагин одевания свитков восстановления 45ХП+

Единственно не проверена ситуация, если в момент одевания свитка проходит нападение Моба.
Пока тестирую обкаткой.

(Please log in or register to see this URL), лучше (Please log in or register to see this URL) (с)
Помощь приходит быстрее если:
1. Понятно сформулирован вопрос.
2. Использованы нужный (Please log in or register to see this URL).

Re: Плагин одевания свитков восстановления 45ХП+

А куда он их одевать будет? в пустые слоты при налии, и в последствии замена 1 слота будет происходить? и как будет реагировать,если вся линейка уже заполнена, одевает свиток, при этом из слота падает другой замещаемый? smile

Ответы на многие вопросы по приемам (Please log in or register to see this URL)

4

Re: Плагин одевания свитков восстановления 45ХП+

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

(Please log in or register to see this URL), лучше (Please log in or register to see this URL) (с)
Помощь приходит быстрее если:
1. Понятно сформулирован вопрос.
2. Использованы нужный (Please log in or register to see this URL).

5

Re: Плагин одевания свитков восстановления 45ХП+

Andy_SPB пишет:

Единственно не проверена ситуация, если в момент одевания свитка проходит нападение Моба.

Функция работоспособна.

Update 2:
Исправлен программный недочет(подробности в шапке).
Обновите плагин.

Отредактировано Andy_SPB (2015-07-10 18:54:18)

(Please log in or register to see this URL), лучше (Please log in or register to see this URL) (с)
Помощь приходит быстрее если:
1. Понятно сформулирован вопрос.
2. Использованы нужный (Please log in or register to see this URL).

6

Re: Плагин одевания свитков восстановления 45ХП+

Update 3: v.2.0
Добавлен парсинг чата на получение Свитков Восстановления по суточному заданию.
Важно: После парсинга свитка, в случае его обнаружения, идет очистка чата (целиком)
Код добавлен в шапку.

Отредактировано Andy_SPB (2015-07-21 15:05:09)

(Please log in or register to see this URL), лучше (Please log in or register to see this URL) (с)
Помощь приходит быстрее если:
1. Понятно сформулирован вопрос.
2. Использованы нужный (Please log in or register to see this URL).

7

Re: Плагин одевания свитков восстановления 45ХП+

Update 4: v.2.1
Переписал парсилку чата, теперь нет необходимости в очистке чата и соответственно плагин не чистит чат.
Код добавлен в шапку.

(Please log in or register to see this URL), лучше (Please log in or register to see this URL) (с)
Помощь приходит быстрее если:
1. Понятно сформулирован вопрос.
2. Использованы нужный (Please log in or register to see this URL).

8

Re: Плагин одевания свитков восстановления 45ХП+

чет стал сбоить зараза...
после первого одевания свита раздел сбрасывается на элексиры, раньше оставался в фильтрах и продолжал одевать.
у всех так?

(Please log in or register to see this URL), лучше (Please log in or register to see this URL) (с)
Помощь приходит быстрее если:
1. Понятно сформулирован вопрос.
2. Использованы нужный (Please log in or register to see this URL).