Тема: Плагин одевания свитков восстановления 45ХП+
Плагин: Одевания свитков Восстановления. (любых)
Название файла: SetScrollHP.js
Размещение: \Combots\Plugins
Описание:
Подбирает и одевает любые свитки Восстановления ХП в пещере.
В случае подбора хотя бы одного свитка оденет все свитки ХП, которые найдет в инвентаре.
Код плагина:
// Одевание свитков Восстановление энергии
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:
Исправлен программный недочет.
$('h4',get_mainframe().document).text();
с точки зрения кода (строка выше) фразы:
В комнате разбросаны вещи:
Кол-во смертей: Х
одинаковы(текс то есть и там и там) и соответственно при хотя бы одной смерти, скрипт думал, что в клетке есть дроп и ждал пока бот его подберет, что бы в дальнейшем его одеть. А бот шел дальше, так как дропа нет.
Проще говоря в ситуации с наличием смертей - свитки собирались, но не одевались.
Доработано:
Подбирает/одевает все свитки
Исправлена схема подбора свитка (теперь вначале собирает весь дроп в клетке, а потом одевает).
Исправлена схема одевания (убраны прямые ссылки, теперь делает все последовательно, как "живой")
Теперь есть задержка между действиями (Random).
Организованна функция, продолжения процесса одевания свитков, если оно было прервано нападением моба.
Update 3: v.2.0
Добавлен парсинг чата на получение Свитков Восстановления по суточному заданию.
Важно: После парсинга свитка, в случае его обнаружения, идет очистка чата (целиком)
Update 4: v.2.1
Переписал парсилку чата, теперь нет необходимости в очистке чата и соответственно плагин не чистит чат.
Код v 2.1
// Одевание свитков Восстановление энергии 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)