226

(12 ответов, оставленных в Подземелье / Маршруты)

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

227

(38 ответов, оставленных в Общий)

Boriska69,
хм... точняк... экстернал поломался... надо думать...
код

external.AddToChat("Lvl соперника = "+top.Battle.oBattle.oEnemySlot.nLevel);

выдает

20:30:34 Lvl соперника = undefined

228

(29 ответов, оставленных в JavaScript)

что то пропустил в списке... smile

229

(29 ответов, оставленных в JavaScript)

есть ли external на интервал действий "вне боя/в бою/в пещере"?

230

(51 ответов, оставленных в Настройки / Плагины)

vad802, создаешь текстовый фаил в блокноте.
Забиваешь в него код.
Жмешь "Фаил" -> "Сохранить как... " -> в поле "Имя файла" вводишь -> Melter.js -> Кнопка "Сохранить".

231

(1 ответов, оставленных в Разное)

подсчет кастов не корректно работает...
так сказать ошибка в идеологии кода...
по коду

SPOILER Show

if (kast == 'undefined') {var kast = 0;}
  if (kast == 0) {
 
}
if (kast == 4){ kast = 0;} else { kast = kast + 1; } // подсчет циклов -> 4


переменная kast плюсуется при прогоне ботом приемов, т.е. после каждого нажатия ботом кнопки удара (или вперед... забыл уже).
А задержка на использование свитка считается в разменах (ответах соперника).
Так что данный код работает корректно только с 1 соперником (так как твой удар и ответ соперника совпадут) и на ботах в пещерах, т.к. они отвечают почти мгновенно.

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

232

(1 ответов, оставленных в Разное)

Евжений,

if(top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[1].sList.split(", ").length > 2)
{
_name = "wis_air_speed";
_target = top.Battle.oBattle.sEnemyLogin;_name = "wis_air_chainlight12";
_break = true;
}

Уверен, что нет ошибки?
В приеме идет два приема в подряд...

_name = "wis_air_speed";

и

_name = "wis_air_chainlight12";

по моему бот не использует два приема в одном слоте?

{_target = top.Battle.oBattle.sEnemyLogin;_name = "wis_air_shaft12";
_break = true;}

Зачем {} скобки?
или это какая то часть кода, а не готовый прием для слота?

233

(38 ответов, оставленных в Общий)

Boriska69,

SPOILER Show
распишу построчно для понимая:
top.Battle.oBattle.oEnemySlot.nLevel - уровень противника напротив
if - оператор "если", проверяет выполнение условия в скобках, если оно верно выполняет код в {}, если нет... то нет.
&& - и (грубо говоря объединяет два условия >9 и <12)
() - скобки как в математике 
Это срока

if((top.Battle.oBattle.oEnemySlot.nLevel > 9) && (top.Battle.oBattle.oEnemySlot.nLevel < 12)) { _name = "pet_unleash"; }

на простом языке зчанчит

если ( уровень противника > 9 и уровень противника < 12) выпускаем зверя

В вашем случае надо просто больше 10 wink

if(top.Battle.oBattle.oEnemySlot.nLevel > 10) { _name = "pet_unleash"; }

234

(38 ответов, оставленных в Общий)

Евжений,
ааа.... ну тогда так smile

if((top.Battle.oBattle.oEnemySlot.nLevel > 9) && (top.Battle.oBattle.oEnemySlot.nLevel < 12)) { _name = "pet_unleash"; }

235

(7 ответов, оставленных в Настройки / Плагины)

Евжений,
как вариант через экстернал - external.SCity.Text

SPOILER Show

function AllDialog(enabled) {
    if(enabled) {
        PluginsOnLoad["AllDialog"] = "AllFunctionDialog";
    }else{
        PluginsOnLoad["AllDialog"] = "";
    }
}
 
function AllFunctionDialog(){
  if (external.SCity.Text == "dreamscity"){
 
  // <- код для Дриамсити
 
  }else if(external.SCity.Text == "devilscity"){
 
  // <- код для Девилсити
 
  }else{
 
  // <- и т.д.
 
  }
}


или как вариант по названию комнаты

external.room_name == "ХХХХХ"

236

(38 ответов, оставленных в Общий)

JustLui пишет:

Как сделать что бы зверя бот вызывал только на 10-11 ботов ?
Я вот так написал , но не сработало
if(top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[1].sList.split(", ").length > 9)
  _name = "pet_unleash"

как то так

if((EnemiesCount > 9) && (EnemiesCount < 12)) { _name = "pet_unleash"; }

Евжений,
в строке

.each(function();


не надо ";" после function()  - вроде
и я правильно понимаю, что после  function() идет код функции в { ... } ?

+ еще ошибка в последней строке... со скобками намудрили и у оператора if должна идти проверка "==" , а не присвоение значения "=" wink

if (say == 0) {each(function(Razgovor_1)); say = say + 1; } else {each(function(Razgovor_2))}

и честно скажу не видел я что то отдельного вызова как у вас...

each(function(Razgovor_1))

может в этом и косяк

И я бы попробовал бы такой вариант...

if (typeof(say) == "undefined") {var say = 0;} if (say == 0) { say = say + 1; $('area[title="..."]',get_mainframe().document).each(function() { ...... } ) } else { $('area[title="..."]',get_mainframe().document).each(function() { ...... } ) }

З.Ы. Чуть чуть код поправил... скобку потерял... в последней строке

238

(58 ответов, оставленных в Подземелье / Маршруты)

*обшибся мальца* smile

239

(348 ответов, оставленных в Подземелье / Маршруты)

Эльдар пишет:

378f623a6ffd92a4219d1d25a6836e12 : if (say == 1) { Walk("rr"); var say = 0; } else { say = 1; $('area

[title="Оборванец"]',get_mainframe().document).each(function() { this.click(); $('a

[onclick*="tn3_poors_default_2"]',get_mainframe().document).each(function(){this.click()})}); }


а у меня что тут неверно ,стоит перед ботом и некакой реакции

Это условие выполнили?

Andy_SPB пишет:

В клетке предыдущей 378f623a6ffd92a4219d1d25a6836e12, необходимо перед функцией Walk() задать переменную

var say = 0;
warriorrr пишет:

подскажите пожалуйста или скиньте ссылку как прописывать одевание шмота... после ремонта бот заходит в хаоты голым...

боевой комплект сохранен в настойках?

Евжений пишет:

Какой выход? в самом начале пещеры? да и заход то в гору 1 раз в сутки )

ну там не был... не знаю smile
подумаю как быть smile

тут вся беда, я не знаю как привязаться к изменению верхнего фрейма...

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

Но надо проверить.

П.Р. наверное поставить отсечку: сдача задания -> выход -> повторный вход.

243

(80 ответов, оставленных в Настройки / Плагины)

Slafkin пишет:

Так насчет моей просьбы кто нибудь поможет?

так я ж поправил код?
()

что то не понял сути проблемы? smile

245

(80 ответов, оставленных в Настройки / Плагины)

Евжений,
честно скажу, сложных комбинаций стараюсь не использовать...
Бот использует принцип... 1 слот - 1 прием... т.е. он может в слоте с кодом вызвать только один прием...
по этому есть смысл прописывать приемы связанные с друг с другом по логике - либо первый... либо второй...

По твоему коду...

if((!top.Battle.oBattle.arrMethods["wis_air_chainlight12"].oMethod.bEnable) ||  (!top.Battle.oBattle.arrMethods["wis_air_shaft12"].oMethod.bEnable)) _name ="wis_gray_meditation";  else DoHit();
if(!top.Battle.oBattle.arrMethods["wis_water_strike"].oMethod.bEnable && !top.Battle.oBattle.arrMethods["wis_water_frost12"].oMethod.bEnable && !top.Battle.oBattle.arrMethods["wis_water_cloud12"].oMethod.bEnable  && !top.Battle.oBattle.arrMethods["wis_gray_meditation"].oMethod.bEnable)
{
DoHit();
_break = true;
}

Это должны быть два разных слота с кодами... иначе на запашет

{if(typeof(top.Battle.oBattle.oEnemySlot.arrEffects["wis_water_frost12"]) == "object" && (top.Battle.oBattle.oEnemySlot.nHP * 100 / top.Battle.oBattle.oEnemySlot.nMaxHP) < 30) _target = top.Battle.oBattle.sEnemyLogin; _name = "wis_water_break";} || { if(typeof(top.Battle.oBattle.oMySlot.arrEffects["wis_water_poison12"]) != "object") _target = top.Battle.oBattle.sEnemyLogin; _name = "wis_water_poison12";_name = "wis_water_strike";}||{_name = "wis_water_frost12";}|| {_name = "wis_water_cloud12";}|| {_name = "wis_white_meditation";}|| {DoHit();}

тут неверен синтаксис... да и в общем беда smile

1. У тебя не верно используются {}, они описывают границы цикла или функции

if (условие) {код если условие верно} else {код если условие не верно}

2. Беда с перечислением приемов?!

{_name = "wis_water_cloud12";}|| {_name = "wis_white_meditation";}

так не запашет...
в одном слоте кода, должен выполняться 1 прием... перечислить можешь 10, но по условиям они не должны пересекаться... а у тебя просто без условия либо тот... либо этот... как определить какой?
по логике должны быть как то так:

if (мои больше хп 90%) {супер удар} else if (у меня хп больше 50% и меньше 90%) {супер защита} else {готовимся к смерти}

как то так...
а у тебя получается по нескольку приемов в подряд... в одном условии... бот так не работает...

Евжений пишет:

Насчет фигурных незнал, а внутри круглых скобок фигурные могут быть?

нет.
у круглых принцип действия как в математики, {} - границы кода цикла/функции

246

(80 ответов, оставленных в Настройки / Плагины)

Slafkin пишет:

Не работает  sad Qwerty помоги с этим вопросом

ошибка в коде или опечатка...
оператор if идет с круглыми скобками, а не с фигуристыми скобками...

if((EnemiesCount < 2) && ((top.Battle.oBattle.sEnemyLogin.nHP * 100 / top.Battle.oBattle.sEnemyLogin.nMaxHP) < 33)) 
_name="pet_unleash";

так то по логике все вроде как верно...

Новичок пишет:

Нет, как и в обычном варианте стоит и постоянно в диалоги заходит

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

Понял в чем косяк, обнуление почему работает не корректно...
Данный код рабочий.

if (typeof(say) == "undefined") {var say = 0;} if (say < 2) { say = say + 1; $('area[title="Оборванец"]',get_mainframe().document).each(function() {  this.click(); $('a[onclick*="tn3_poors_default_2"]',get_mainframe().document).each(function(){this.click()})}); } else { Walk (XX); }

единственное не будет сбрасываться переменная say, отвечающая за количество совершенных диалогов. Т.е. если за один поход тебе надо будет только один подход сделать (пришел поговорил с ботом 5 раз и больше к нему не приходишь), то конструкция будет работать на ура... если надо больше одно подхода (т.е. пришел поговорил 5 раз, ушел... потом еще раз пришел и еще 5 раз поговорил)... то надо обнулять количество совершенных разговоров (переменную say)
Можно как в ссылке выше, добавить в предыдущей клетке значение (или в следующей клетке за ботом)...

Конструкцию

if (typeof(say) == "undefined") {var say = 0;}

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

как то так...

248

(1 ответов, оставленных в Подземелье / Маршруты)

external.DungeonLoadPath("Название маршрута без расширения .path");

вот тут можно найти примеры
()

249

(27 ответов, оставленных в Настройки / Плагины)

Одним словом вот черновик скрипта...

SPOILER Show

// Черновик покупки ключей
// Info
var name = "Черновик Покупки ключей от Склепа"; 
var ver =  "0.0";
var test_ver_bot = "9.2.8.31";
var delay_id = '';
 
// меняем по месту
var nameShop = /Этаж 1 - Каморка Луки/;
var nameSection = /Отдел \"Амуниция: Странные предметы\"/;
var nameLinkSection = "Амуниция: Странные предметы";
var nameItem = /Кристалл Знаний/;
var buttomCoords = "40,64,8";
 
function BuyKey(enabled) {
    if(enabled) {
        PluginsOnLoad["BuyKey"] = "BuyKeyFun";
        external.AddToChat("Плагин: "+name+" - <font color='green'>Включен!</font>");
        external.AddToChat("Версия: "+ver+". Тестировалася на Combots версии "+test_ver_bot);
    }else{
        PluginsOnLoad["BuyKey"] = "";
        external.AddToChat("Плагин: "+name+" - <font color='red'>Выключен!</font>");
        clearInterval(delay_id);
    }
}
 
function BuyKeyFun(){
  if (get_mainframe().document.all[0].innerHTML.match(nameShop)){
      if (!get_mainframe().document.all[0].innerHTML.match(nameSection)){
          external.AddToChat("Не в разделе Амуниция");
          external.ClickLink(nameLinkSection,2);
      }else{
          external.AddToChat("В разделе Амуниция");
          if (get_mainframe().document.all[0].innerHTML.match(nameItem)){
              external.AddToChat("тут надо купить");
              // !!!!!! ВАЖНО !!!!!!
              external.ClickLink("купить",2); // в случае если на странице только один предмет для покупки!!!! Иначе надо мутить поиск
              clearInterval(delay_id);
              if(top.frames[external.mainFrameIndex].check_access()){
                  external.AddToChat("Вызываем функцию выхода!");
                  exitShop();
              }else{
                  external.AddToChat("Ожидаем и вызываем функцию выхода!");
                  delay_id = setInterval("exitShop()", 10000);
 
              }
          }
      }
  } else {
      clearInterval(delay_id);
  }
}
 
function exitShop(){
  external.AddToChat("Вызвали!");
  $('area[coords="'+buttomCoords+'"]',get_mainframe().document).each(function() {  this.click(); } )
  clearInterval(delay_id);
}

Проверял в каморке у луки на кристалле знаний. Соответственно все метки настроены под луку...
Важно сейчас скрипт написан исходя из того, что в разделе амуниция 1 единственны предмет... и мы тупо его покупаем не глядя...
По коду найдешь сроку покупки...

Фаил назовешь BuyKey.js
Дальше думаю сам по месту настроишь...

фраза "Вы получили...." где прописывается в чате или в главном фрейме?

попробуй заменить строки

var itemlog1 = top.frames[external.mainFrameIndex].document.documentElement.outerHTML.match(/Вы подняли \'(.+)\'/);
var itemlog2 = top.frames[external.mainFrameIndex].document.documentElement.outerHTML.match(/Вы получили \'(.+)\'/);

или попробовать так:

var itemlog1 = get_mainframe().document.all[0].innerHTML.match(/Вы подняли \'(.+)\'/);
var itemlog2 = get_mainframe().document.all[0].innerHTML.match(/Вы получили \'(.+)\'/);