326

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

А что вам для этого требуется с моей стороны?
есть

external.DungeonLoadPath("канализация")

загружает маршрутный файл "канализация.path" из папки "Dungeon"

327

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

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

328

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

Да как бы оба ваши плагина по сути не отличаются вообще ничем smile
Разве что КликЛинк на прямую ссылку заменём...но я не рекомендую пользоваться прямыми ссылками, если КликЛинк с этим успешно справляется....

329

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

Эм...парни, вы сравните два первых сообщения в теме.
Точнее два написания пагина.

Так сказать, почувствуйте разницу.
Я плагин не переписывал, я его привёл в нормальный вид.
Просто посмотрите два варианта и сравните "Было так, а стало так...мммм...."

330

(30 ответов, оставленных в Проблемы / Баги / Неполадки)

Тут такое дело...
В общем мы тебе врятли поможем, если фидбэк будет "Раньше работало, а сейчас - нет".
Предположения сделаны - твоё дело проверить, верны ли они. И только после того, как окажется, что они не верны - тогда дальше думать и надо.

Народ по 5 ботов на компе держит, в том числе на win8. Проблем не возникало.
Вывод: проблема в твоих настроках.
Какие настройки у бота есть? Да всего ничего: настройки самого бота из файла ca2 и плагины.

Рекомендую, как минимум, интервалы действий увеличить, как советовал qwerty.

Не ну простой без бота пару часов/дней - это вроде так себе повод не апгрейдить комп  big_smile

332

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

С твоего позволения, я его в человеческий вид приведу smile

function NapadenieNaVozhda(enabled)
{
    if(enabled)
    {
        //должна быть одна из двух строк
        PluginsOnLoad["NapadenieNaVozhda"] = "NapadenieNaVozhdaHandler"; // работать по обновлению верхнего фрейма
    }
    else
    {
        //должна быть одна из двух строк
        PluginsOnLoad["NapadenieNaVozhda"] = ""; // выключить обработку по обновлению верхнего фрейма
    }
}
 
function NapadenieNaVozhdaHandler()
{
    try
    {
        if(top.Battle.bInBattle) return;
        var doc = get_mainframe().document.all[0].innerHTML;
 
        if(doc.indexOf("Откуда ты знаешь, как меня зовут") > -1)
            external.ClickLink("Откуда ты знаешь, как меня зовут",2);
        else if(doc.indexOf("Ну, если так, то конечно, все понятно. Ну и что ты от меня хочешь?") > -1)
            external.ClickLink("Ну, если так, то конечно, все понятно. Ну и что ты от меня хочешь?",2);
        else if(doc.indexOf("Услуги? Что это за услуги?") > -1)
            external.ClickLink("Услуги? Что это за услуги?",2);
        else if(doc.indexOf("Хорошо! Согласен на твое предложение. Что нужно делать?") > -1)
            external.ClickLink("Хорошо! Согласен на твое предложение. Что нужно делать?",2);
        else if(doc.indexOf("Да.") > -1)
        {   
            external.ClickLink("Да.",2);
            top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName  + "?rnd=" + Math.random() +"&path=rl";
        }
    }
    catch(err)
    {
        //alert(err.description); // выводит сообщение, если в результате выполнения кода была получена ошибка. Если сообщения не нужна - удалить эту строку, оставив конструкцию try{}catch(err){}
    }
}

1) Не Джава, а джаваскрипт. Это разные языки.
2) Основная проблема была в том, что ты пытался использовать match(//) там, где он не особо нужен.

Ну вот для примера, надо мне найти кусок текста "Стоимость: ??кр.", где ?? - цифры, которых я заранее не знаю.
Вот в этом случае мне нужен match, т.к. он умеер работать с регулярными выражениями(RegExp), которые можно назвать просто "маской". И будет это выглядеть так:
match(/Стоимость: \d+кр./), где \d - это спецсимвол, обозначающий любую цифру, а + после \d говорит, что \d должно быть в этой маске 1 и более раз подряд.
Символ точки в маске - это один любой символ.
Символ вопросительного знака сложен для объяснения, но это тоже спец-символ и именно из-за него у тебя зависало на услугах. надо было маску писать с экранированием: match(/Услуги\? Что это за услуги\?/).

Регулярки - тема не простая, но весьма занятная. Для тестирования есть сайты вроде ()

Вот, о чем я тут...короче, надо было обойтись простым indexOf() - возвращает индекс буквы, начиная с которой найдено совпадение строк.
Т.е. "Привет, как дела".indexOf("Привет") будет равен 0.
"Привет, как дела".indexOf("как") будет равен 8.
"Привет, как дела".indexOf("нормально") будет равен -1, т.к. последовательности символов такой в исходной строке встречено не было.

Перенесу ка я эту тему в ветку Javascript...

333

(2 ответов, оставленных в Помойка)

neutral

Добавляй, переставляй, а думать будем потом.

335

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

Нда.
Есть ещё фразы, на которых стопорится?
Про "пустой сундук" я у себя добавил - в следующем обновлении не будет стопориться.

336

(30 ответов, оставленных в Проблемы / Баги / Неполадки)

На win8 бот работает без нареканий.
На IE10 бот работает без нареканий.
Не один человек уже проверял.

Где-то на форуме была инструкция по перезапуску ботов по интервалу времени... hmm

337

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

Это вы сейчас о чем?
UseObjects(); не жмёт на сундук какой-то?

338

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

itemsToMelt.push("item"); - 5-ая строка в плагине

339

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

У тебя UseObjects(); AttackMobs(); повторялись два раза.
я твое сообщение отредактировал.

340

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

Первая строка твоя была верной.
Мой косяк - исправил в обновлении.  big_smile

341

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

Обновление
Обновил в связи с обнаруженной проблемой выполнений external-функций из маршрутов пещер.
Для удобства выложил обновление в двух видах:
1) Старый-добрый установщик
2) Отдельный файл Program.exe, которым можно просто подменить ваш текущий файл.

342

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

Я вот то же мысль хочу высказать, а то функции без дела простаивают smile

Есть такой набор функций:
•external.InitVal(key,val) - если не существует переменной с именем key, то она создается и ей присваивается значение val. Если переменная уже есть - оставляет её значение без изменения
•external.SetVal(key,val) - как и InitVal, но присваивает значение в любом случае
•external.GetVal(key) - возвращает значение переменной key

Я их какрас и создавал для удобного обмена и хранения значений между разными аспектами бота: плагины, маршруты, приёмы.

Как я вижу использование.
Берём мою редакцию плагина. Я в неё добавил строку

external.SetVal("isTokenTraderClicked",true);

isTokenTraderClicked - просто набор букв.

Дальше маршрут:
1) В ячейку до обменника

координата  : external.SetVal("isTokenTraderClicked",false); UseObjects(); AttackMobs(); Walk("куда-то");

2) В ячейку с обменником(вроде это та ячейка...не уверен)

1c5a3f3164a09ff92d3c9c517452bd1b  : if(!external.GetVal("isTokenTraderClicked"))  UseObjects(); AttackMobs(); Walk("rl");

Что должно получиться:
1) За одну ячейку до обменника мы говорим, что ещё не обменивались
2) На ячейке с обменником мы делаем UseObjects(); только если ещё не обменивались
3) Когда срабатывает плагин и нажимает Завершить диалог, устанавливается значение, что уже обменялись и повторного клика по обменнику быть не должно.

343

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

Ну логично.
Я в торопях за 5 минут до ухода с работы в условии вместо == написал = в двух строках.
Исправил.

И отвечайте, пожалуйста, без цитирования кода.

344

(30 ответов, оставленных в Проблемы / Баги / Неполадки)

А я всё равно думаю, что плагин какой-нибудь виноват.
Чего-нить в БК поменялось - они и работают криво.

345

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

Попробуй так:

var _obmenFinished = false;
 
function Obmennik(enabled)
{
    if(enabled)
    {
        PluginsOnLoad["Obmennik"] = "ObmennikHandler"; // работать по обновлению верхнего фрейма
    }
    else
    {
        PluginsOnLoad["Obmennik"] = ""; // выключить обработку по обновлению верхнего фрейма
    }
}
function ObmennikHandler()
{
    try
    {
        var _document = get_mainframe().document.all[0].innerHTML;
        var _path = "empty";
        if(_document.indexOf("Активировать устройство") > -1 && _obmenFinished == false)
            _path = "Активировать устройство";
        else if(_document.indexOf("Положить в устройство") > -1)
            _path = "Обменять все";
        else if(_document.indexOf("Устройство активировано") > -1)
            { _path = "Деактивировать"; _obmenFinished = true; }
        else if(_document.indexOf("Активировать устройство") > -1 && _obmenFinished == true)
            { _path = "завершить разговор"; _obmenFinished = false; external.SetVal("isTokenTraderClicked",true); }
 
        if(_path != "empty")
            external.ClickLink(_path,2);
    }
    catch(err)
    {
        //alert(err.description); // выводит сообщение, если в результате выполнения кода была получена ошибка. Если сообщения не нужна - удалить эту строку, оставив конструкцию try{}catch(err){}
    }
}

Код копировать через кнопку Цитировать!

346

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

Что-то тут не так.

Как бы начал писать я:

function Obmennik(enabled)
{
    if(enabled)
    {
        PluginsOnLoad["Obmennik"] = "ObmennikHandler"; // работать по обновлению верхнего фрейма
    }
    else
    {
        PluginsOnLoad["Obmennik"] = ""; // выключить обработку по обновлению верхнего фрейма
    }
}
function ObmennikHandler()
{
    try
    {
        var _document = get_mainframe().document.all[0].innerHTML;
        var _path = "empty";
        if(_document.indexOf("Активировать устройство") > -1)
            _path = "Активировать устройство";
        else if(_document.indexOf("Обменять все фракционные предметы на жетоны.") > -1)
            _path = "Обменять все";
        else if(_document.indexOf("Деактивировать устройство.") > -1)
            _path = "Деактивировать";
        else if(_document.indexOf("Отойти от устройства. (завершить разговор)") > -1)
            _path = "завершить разговор";
 
        if(_path != "empty")
            external.ClickLink(_path,2);
    }
    catch(err)
    {
        //alert(err.description);
    }
}

Описание для external.ClickLink:
1) Первый параметр в скобках - что искать
2) Второй параметр в скобках - где искать

Второй параметр бывает:

// type: 
// 1 - переход по картинке(поиск именно функции перехода), не чувствителен к регистру;
// 2 - поиск по текстовой ссылке,чувствителен к регистру;
// 3 - по найденному в картинке тексту(outerHTML), не чувствителен к регистру;
// 4 - поиск по value среди input-элементов,чувствителен к регистру;
// не задано - поиск во всех.

Плагин НЕ РАБОЧИЙ.
В нём не правильно было понято, что надо писать в if.
В условии должен быть однозначный признак того, что пора нажимать конкретную кнопку. Не то, что кнопка есть, а именно то, что её надо нажать.
Сделайте описание диалогов всех целиком, вот как в последних сообщениях. Тогда станет ясно, что можно искать на экране в качестве однозначного признака.

347

(30 ответов, оставленных в Проблемы / Баги / Неполадки)

Или плагин какой-нибудь ушёл в бесконечный цикл.

348

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

Обновились до 9.2.8.10.

349

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

Есть планшеты от Acer с процессорами от intel и полноценной windows.
Но я их крааайне не рекомендую: ну не заточены они под пальцы + тормозные. Всёравно что дешёвский ноут без клавиатуры, но в два раза дороже.

Недавно Microsoft свой Surface Pro выпустила за ~1000$ и то трудно достать. Именно Pro версия сделана под полноценную Windows 8. Обычный Surface имеет Windows RT, а она уже ну совсем никакая.

350

(8 ответов, оставленных в Торговля / Коммерческие дела)

211277,
твоё поведение негативно сказывается на данном ресурсе, поэтому я рацениваю данный поступок как направленное против меня действие.