1

Тема: Плагин Диалог с ботом

Привет народ, 3 дня не могу разобраться с одним нюансом( перерыл буквально всё,не нашёл..

Переделал плагин диалога - взял за основу Obmengribov - для диалога со Сторожем в Некровилле.

function Obmengribov(enabled)
{
    if(enabled)
    {
        //должна быть одна из двух строк
PluginsOnLoad["Obmengribov"] = "ObmengribovHandler"; // работать по обновлению верхнего фрейма
    }
    else
    {
        //должна быть одна из двух строк
PluginsOnLoad["Obmengribov"] = ""; // выключить обработку по обновлению верхнего фрейма
    }
}
function gribi()
{
    if(top.Battle.bInBattle) return;
 
if(get_mainframe().document.all[0].innerHTML.match(/Да, да, да. Мне нужны ответы на некоторые мои вопросы!/))
    external.ClickLink("Да, да, да. Мне нужны ответы на некоторые мои вопросы!",2);
else
if(get_mainframe().document.all[0].innerHTML.match(/А давай посмотрим, чем ты мне можешь помочь./))
    external.ClickLink("А давай посмотрим, чем ты мне можешь помочь.",2);
else
if(get_mainframe().document.all[0].innerHTML.match(/Ну, давай посмотрим, чем я могу тебе помочь. Сам то чего хочешь?/))
    external.ClickLink("Хочу получить инструменты.",2);
else
if(get_mainframe().document.all[0].innerHTML.match(/Ага, посмотрим-посмотрим/))
    external.ClickLink("Вначале ответь на некоторые вопросы.",2);
if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Да, да, да, я люблю вопросы. Я их просто обожаю. Задавай быстрее!/))
{
external.ClickLink("Пугаешь ты меня что-то",2);
top.frames[external.mainFrameIndex].location = 'http://' + external.SCity.Text + '.combats.com/' + dungName + '?rnd=' + Math.random() +'&path=rr';
}
}
function ObmengribovHandler()
 
 
{
        try
{
gribi();
}
        catch(err)
        {
//                alert(err.description); // выводит сообщение, если в результате выполнения кода была получена ошибка. Если сообщения не нужна - удалить эту строку, оставив конструкцию try{}catch(err){}
        }
}

Всё работает,вот только цикл бесконечно повторяется. Вот сам диалог:

• А давай посмотрим, чем ты мне можешь помочь.
(Перейти к магазину и получению предметов)
• Ты похож на человека, у которого есть для меня задания.
(Получить задание)
• Ты же мне задания давал? Я по поводу них...
(Поговорить по поводу взятых заданий)
• Кто ты вообще такой?
• Расскажи мне про это кладбище.
• Расскажи мне про население местное.
• Пугаешь ты меня что-то. Пойду я... (завершить разговор)

Нужно,чтобы в самом последнем условии бот нажимал "Завершить разговор". Но он опять начинает цикл сверху((

2

Re: Плагин Диалог с ботом

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

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

(Please log in or register to see this URL)

3

Re: Плагин Диалог с ботом

Tyom,
по приведенному диалогу

• А давай посмотрим, чем ты мне можешь помочь.
(Перейти к магазину и получению предметов)
• Ты похож на человека, у которого есть для меня задания.
(Получить задание)
• Ты же мне задания давал? Я по поводу них...
(Поговорить по поводу взятых заданий
• Кто ты вообще такой?
• Расскажи мне про это кладбище.
• Расскажи мне про население местное.
• Пугаешь ты меня что-то. Пойду я... (завершить разговор)

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

if(a==1) {диалог уже нажимали проходим к следующему }else {кликаем линк; a=a+1;}

как то так... единственный момент... надо продумать где переменную вводить и где обнулять...

if(typeof a == "undefined" || a == 6) {var a=0;} // 6 - это количество диалогов, которые надо перебирать...

но надо подумать в какую часть кода воткнуть обнуление... что бы не зациклить...

З.Ы. Пишу с колена... могут быть ошибки...

(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).

4

Re: Плагин Диалог с ботом

Разобрался... Взял за основу плагин Обмена жетонов в катах.

{
        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 && _obmenFinished == false)
            _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);
    }

Теперь всё ровно, если второй раз видит ссылку по которой кликал больше её не трогает.

5

Re: Плагин Диалог с ботом

Ещё вопрос по поводу покупки ключей: нашёл на форуме плагин кузни - который стряпает чарки)

//"Серьги", "Ожерелье", "Оружие", "Броню", "Пояс", "Кольцо", "Шлем", "Щит", "Перчатки", "Обувь", "Наручи", "Поножи"
var ignor_enhp = ["Оружие","Щит"];//список игнорируемых
var piora_enhp = ["Ожерелье","Броню","Перчатки","Поножи"];//список приоритета делается в том порядке как Вы укажете
 
function Stithy(enabled) {
    if ( enabled )
        PluginsOnLoad["Stithy"] = "StithyHandler";
    else
        PluginsOnLoad["Stithy"] = "";
}
 
Array.prototype.inArray = function (enhp) {
    return false;
};
 
function StithyHandler() {
    try {
        if ( !external.dungeonEnabled || !external.Started() ) return;
 
        var tmpStithy = get_mainframe().document.all[0].innerHTML;
//поиск, определение чарки для покупки
        if ( tmpStithy.match(/Отдел \"Повышение качества\"/i) ) {
            var linkColor = [];
            var numColor = [];
            var linkColorL = [];
            var numColorL = [];
            var listA = get_mainframe().document.links;
            var lineColor = tmpStithy.match(/Требуется предмет\: <B>(|<FONT color=red>)\[Зачаровать (.*?) \[(\d+)\] (\w+)\]x(\d+),/ig);
            if ( lineColor.length != null ) {
                for ( var n=0;n<lineColor.length;n++ ) {
                    lineColor[n] = lineColor[n].match(/Требуется предмет\: <B>(|<FONT color=red>)\[Зачаровать (.*?) \[(\d+)\] (\w+)\]x(\d+),/i);
                    if ( lineColor[n][1] != "<FONT color=red>" ) {
                        if ( piora_enhp.inArray(lineColor[n][2]) ) {
                            linkColorL.unshift(listA[n*2]);
                            numColorL.unshift(n);
                        }
                        if ( ignor_enhp.inArray(lineColor[n][2]) != true ) {
                            linkColor.unshift(listA[n*2]);
                            numColor.unshift(n);
                        }
                    }
                }
                var allLink = linkColorL.concat(linkColor);
                var allNum = numColorL.concat(numColor);
                if ( allLink.length>0 ) {
                    external.AddToChat(allNum[0]+" Соединили "+lineColor[allNum[0]][2]+" ["+lineColor[allNum[0]][3]+"] "+lineColor[allNum[0]][4]);
                    get_mainframe().location = allLink[0];
                }
            }
//выход
            var path;
            if ( tmpStithy.match(/Вы купили/i) || allLink.length==0 ) {
                path = tmpStithy.match(/path=(m1|m3|m5|m7)/i);
                get_mainframe().location = "http://"+external.SCity.Text+".combats.com/shop.pl?rnd="+Math.random()+"&path="+path[1];
            }
        }
    }
    catch(err) {
        external.AddToChat(err.description);
    }
}

Может кто разжевать что к чему..хочу передалать,чтобы покупал ключи у сторожа

6

Re: Плагин Диалог с ботом

Проще, наверное с нуля написать smile
Ни фига в примере не понял.
Там только один вариант покупки? Как в магазине?

(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: Плагин Диалог с ботом

Andy_SPB
Для кого-то проще - а для кого-то иероглифы))

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

8

Re: Плагин Диалог с ботом

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

(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).

9

Re: Плагин Диалог с ботом

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

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
Дальше думаю сам по месту настроишь...

Отредактировано Andy_SPB (2015-05-22 11:41:11)

(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).

10

Re: Плагин Диалог с ботом

Название :  NecrovilleDialog.js

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

11

Re: Плагин Диалог с ботом

Благодарю парни, попробую - отпишусь!

12

Re: Плагин Диалог с ботом

Andy_SPB Спасибо бро,что не безразличен)

Mr Blanco Твой скрипт работает как по маслу! Респект!+
если можешь,подскажи где торкать,чтобы покупал конкретный ключ

п.с  если есть функция продажи на серебряные монеты,тоже скинь прошу

Отредактировано Tyom (2015-05-23 18:44:55)

13

Re: Плагин Диалог с ботом

Tyom пишет:

Andy_SPB
Для кого-то проще - а для кого-то иероглифы))

Бразе, подскажи, что я делаю не так?:

function AllDialogHandler()
{
if (external.SCity.Text == "emeraldscity")
{
var pattern = "drwfl\\(\"Берт|Ализей|Король Валлуар\"";
if(!top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(pattern)) return;
if (typeof Say  == "undefined" || Say == 4) {var Say = 0;}
 
    if(s.match(/Что тебе еще нужно?/))
    {
    if (say == 0);{Say = Say + 1;
            external.ClickLink("Ты же мне задания давал? Я по поводу них...",2);}
    if (say == 1);{Say = Say + 1;
            external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);}
    if (say == 2);{Say = Say + 1;
            external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);}
    if (say == 3);{Say = Say + 1;
            external.ClickLink("Да нет, уже ничего не надо.",2);}
    }
}

Попробовал переменную загнать в конкретный диалог, тоже не пашет:

if(s.match(/Что тебе еще нужно?/))
    {
    if (typeof Say  == "undefined" || Say == 4) {var Say = 0;}
    if (say == 0) {Say = Say + 1;
            external.ClickLink("Ты же мне задания давал? Я по поводу них...",2);}
    if (say == 1) {Say = Say + 1;
            external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);}
    if (say == 2) {Say = Say + 1;
            external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);}
    if (say == 3) {Say = Say + 1;
            external.ClickLink("Да нет, уже ничего не надо.",2);}
    }

Отредактировано Евжений (2015-06-25 07:33:09)

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

14

Re: Плагин Диалог с ботом

Евжений,
в представленном коде вижу 3 ошибки
1. скобки потерял...

if (typeof(Say)  == "undefined" || Say == 4) {var Say = 0;}

2. переменная "Say" и "say" это две разных переменных
Ты определяешь есть ли переменная Say и задаешь ее равной 0

if (typeof(Say)  == "undefined" || Say == 4) {var Say = 0;}

потом проверяешь значение переменной say

if (say == 0);{Say = Say + 1;

надо

if (Say == 0);{Say = Say + 1;

3. Лишняя ; после скобок у оператора if(), правильно так

if (say == 0){Say = Say + 1;
            external.ClickLink("Ты же мне задания давал? Я по поводу них...",2);}

+ еще один момент в данной конструкции у тебя по очереди выполняются все клики за один проход кода.
наверное стоит использовать конструкцию if (...) {...} else if (...) {...} else {...}

if(s.match(/if(s.match(/Что тебе еще нужно?/))
    {
    if (typeof(Say)  == "undefined") {var Say = 0;}
    if (Say == 0) {Say = Say + 1;
            external.ClickLink("Ты же мне задания давал? Я по поводу них...",2);}
   else if (Say == 1) {Say = Say + 1;
            external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);}
    else if (Say == 2) {Say = Say + 1;
            external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);}
    else if(Say == 3) {Say = Say + 1;
            external.ClickLink("Да нет, уже ничего не надо.",2);}
    else { Say = 0; } // обнуление при любом значение кроме 0,1,2,3
    }

в данном виде у тебя за один проход кода будет выполнятся один клик

Отредактировано Andy_SPB (2015-06-25 08:54:11)

(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).

15

Re: Плагин Диалог с ботом

if(s.match(/if(s.match(/Что тебе еще нужно?/))

Насколько понимаю случайно продублировалось, попробовал конструкцию плагин на других диалогах начал работать, до этого вообще колом вставал. Но именно на этой развязке стопорится и ничего делать не хочет. Попробовал внутри конструкции еще раз ввести поиск, нефига не помогло:

if(s.match(/Что тебе еще нужно?/))
    {
    if (typeof(Say)  == "undefined") {var Say = 0;}
    if (Say == 0) {Say = Say + 1;
            if(s.match(/Ты же мне задания давал? Я по поводу них.../))
            external.ClickLink("Ты же мне задания давал? Я по поводу них...",2);}
   else if (Say == 1) {Say = Say + 1;
            if(s.match(/Ты похож на человека, у которого есть для меня задания./))
            external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);}
    else if (Say == 2) {Say = Say + 1;
            if(s.match(/Ты похож на человека, у которого есть для меня задания./))
            external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);}
    else if(Say == 3) {Say = Say + 1;
            if(s.match(/Да нет, уже ничего не надо./))
            external.ClickLink("Да нет, уже ничего не надо.",2);}
    else { Say = 0; } // обнуление при любом значение кроме 0,1,2,3
    }

Ну суть понятно, подойти сдать задание, взять задание, если задание было отменено крестиком перезайти и взять, ну и на всякий непредвиденный случай, если не выкинет из разговора после взятия задания, то выйти. Может есть другой способ как это реализовать? Просто стандартными способом не представляю как заставить работать, ведь если ввести по поиску Взять задание и Сдать задание, то будет кликаться только то что в ХТМЛ первым стоит по порядку.

Хотя вот выше посмотрел, можно попробовать реализовать на примере обменника катовского. Но сколько его смотрел структуру пока в логику не въехал, как его переделывать  smile

Отредактировано Евжений (2015-06-25 11:16:21)

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

16

Re: Плагин Диалог с ботом

Andy_SPB подсоби  smile  неккому больше поприставать кроме тебя. Есть мысль как еще отладить скрипт?
Кстати засунул обменник катовский в объединенный плагин считывающий по городу как ты предлагал, диалоги в 3-4 городах уже проверял пашут без проблем а вот катавская реализация обменника сбоит.

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

17

Re: Плагин Диалог с ботом

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

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

SPOILER Show
Вопрос бота...
1. вариант ответа 1
2. вариант ответа 2
3. и т.д.

1. вопрос бота при клике на первый вариант
1.1. Вариант ответа 1
1.2. Вариант ответа ....

2. вопрос бота при клике на 2 варинат ответа
2.1 ...
2.2 ..

и т.д.


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

(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).

18

Re: Плагин Диалог с ботом

Да там диалог не нужен много уровневый, отдельные фразы по своему пропишутся, тут только в одном месте развязка. Грубо говоря ткнул на бота у тебя варианты разговора 5, и надо заставить поговорить в 2/5 диалогов, причем один из них дважды, если поговорил и все еще в диалоге нажать на 5й (выйти из диалога):
if(s.match(/Что тебе еще нужно?/)) - значит мы в нужном месте (начало разговора)
if(s.match(/Ты же мне задания давал? Я по поводу них.../)) - сдача задания
if(s.match(/Ты похож на человека, у которого есть для меня задания./)) - взятие задания (2 раза жать, если задание бралось и было отменено по крестику из списка заданий)
if(s.match(/Да нет, уже ничего не надо./)) - выход из разговора, поидее при взятие задания выкидывает, но лучше прописать на всякий случай

Упрощенно:
Дано: 1, 2, 3, 4, 5
Надо ткнуть на: 3, 1, 1 и else 5

Отредактировано Евжений (2015-06-27 17:24:43)

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

19

Re: Плагин Диалог с ботом

Ок. Посмотрю при случае.
Какой плаги(код) брал за исходник?

(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).

20

Re: Плагин Диалог с ботом

var AllDialogTimer = {}
var s = top.frames[external.mainFrameIndex].document.documentElement.innerHTML;
 
function AllDialog(enabled)
{
    if(enabled)
    {
        AllDialogTimer[mylogin] = setInterval("AllDialogHandler()", 3000);
    }
    else
    {
        clearInterval(AllDialogTimer[mylogin]);       
    }
}
function AllDialogHandler()
{
if (external.SCity.Text == "emeraldscity")
{
var Say = 0;
var pattern = "drwfl\\(\"Берт|Ализей\"";
if(!top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(pattern)) return;
 
if(s.match(/Что тебе еще нужно?/))
    {
    if (typeof(Say)  == "undefined") {var Say = 0;}
    if (Say == 0) {Say = Say + 1;
            if(s.match(/Ты же мне задания давал? Я по поводу них.../))
            external.ClickLink("Ты же мне задания давал? Я по поводу них...",2);}
    else if (Say == 1) {Say = Say + 1;
            if(s.match(/Ты похож на человека, у которого есть для меня задания./))
            external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);}
    else if (Say == 2) {Say = Say + 1;
            if(s.match(/Ты похож на человека, у которого есть для меня задания./))
            external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);}
    else if(Say == 3) {Say = Say + 1;
            if(s.match(/Да нет, уже ничего не надо./))
            external.ClickLink("Да нет, уже ничего не надо.",2);}
    else { Say = 0; } // обнуление при любом значение кроме 0,1,2,3
    }
}
 
function ExitAllDialogHandler()
{
    top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName  + "?rnd=" + Math.random() +"&path=m3";
}
Ответы на многие вопросы по приемам (Please log in or register to see this URL)

21

Re: Плагин Диалог с ботом

Евжений,
вижу два момент
потерял }  в конце function AllDialogHandler()
второй момент скорее всего косяк таймера (времени)...
пробовал без таймера на прямую вызывать функцию function AllDialogHandler() ?
У меня не всегда корректно срабатывает время таймера плагина и время таймера бота, я в этом пока не разобрался.
и еще в первой строке поставь ;

Отредактировано Andy_SPB (2015-06-28 10:01:46)

(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).

22

Re: Плагин Диалог с ботом

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

Отредактировано Евжений (2015-06-28 11:21:46)

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

23

Re: Плагин Диалог с ботом

Евжений,
вообще этот кусок запускать отдельно пробовал?
просто по коду вроде все ок.

(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).

24

Re: Плагин Диалог с ботом

Да с таймингом пошарился, не в нем проблема. Не хочет работать именно вся логическая конструкция.
А по дефолту если диалоги засунуть то получается не так как надо. Я насколько смотрел работу понимаю, что:
1. Заходишь в диалоги и видишь 5 вариантов ответов.
2. Скрипт находит первое соответсвие и его отрабатывает. Сейчас попробую разбить на мелкие части. Но тут своя загвоздка получается.
а)Если задание выполнено поговорит, войдет в получение получит и завершится диалог.
б)Если задание не выполнено, поговорит на счдаче задания, выкинет на развилку и тут зациклится на сдаче, будет бегать пытаться сдать, а оттуда в основное будет выкидывать. Как то так.

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

25

Re: Плагин Диалог с ботом

Евжений,
попробуй так... решил переписать...

SPOILER Show

var AllDialogTimer = {};
 
function AllDialog(enabled){
    if(enabled){
        AllDialogTimer[mylogin] = setInterval("AllDialogHandler()", 3000);
    } else {
        clearInterval(AllDialogTimer[mylogin]);       
    }
}
 
function AllDialogHandler() {
   if (external.SCity.Text == "emeraldscity"){
       if (typeof(Say)  == "undefined") {
          var Say = 0;
       }
       var pattern = "drwfl\\(\"Берт|Ализей\"";
 
       if(!top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(pattern)) return;
 
 
       if((get_mainframe().document.all[0].innerHTML.indexOf("Ты же мне задания давал? Я по поводу них...") > -1) && Say == 0 ) {
         Say = Say + 1;
         external.ClickLink("Ты же мне задания давал? Я по поводу них...",2);
       } else if ((get_mainframe().document.all[0].innerHTML.indexOf("Ты похож на человека, у которого есть для меня задания.") > -1) && (Say == 1 || Say == 2)) {
         Say = Say + 1;
         external.ClickLink("Ты похож на человека, у которого есть для меня задания.",2);
       } else if ((get_mainframe().document.all[0].innerHTML.indexOf("Да нет, уже ничего не надо.") > -1) && Say == 3 ) {
         Say = Say + 1;
         external.ClickLink("Да нет, уже ничего не надо.",2);
       } else {
         Say = 0;
       }
   }
}

(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).