1

Тема: Действие после диалога с ботом

Всем привет!
Проблема в следующем. После диалога, бот не поворачивается и не двигается ни куда, а с ново начинает диалог.

Макропус - тут после диалога бот должен поворачиваться на право

02787d7598daf2ff787fcc20004da31e : top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?dialog=gg3_macropus_welcome&use=" + top.frames[external.mainFrameIndex].arrLayers[1][0]["l"].arrUnits[0].id; UseObjects(); Walk("rr");
if(get_mainframe().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";
}
else

Озеро - тут после того как поговорил должен поварачиваться на лево

60613dd8e2ecf241e1c9a30fc3a4d883 : OrderedObjects("Заросший пруд"); Walk("rl"); if(!external.SetVal("isTokenTraderClicked"))
if(get_mainframe().document.all[0].innerHTML.match(/Положить предмет/))
external.ClickLink("Положить предмет",2);  external.SetVal("isTokenTraderClicked",true);}
else
 
if(get_mainframe().document.all[0].innerHTML.match(/И это отлично/))
{external.ClickLink("И это отлично",2); external.SetVal("isTokenTraderClicked",true);}
else

Подскажите куда копать) Заранее спасибо!!!

2

Re: Действие после диалога с ботом

разницу вижу хотя бы в UseObjects();
предлагаю убрать в первом случае

(Please log in or register to see this URL)

3

Re: Действие после диалога с ботом

otherway пишет:

разницу вижу хотя бы в UseObjects();
предлагаю убрать в первом случае

спасибо! но убирал и добавлял, все одно!

вроде с Макропусом разобрался, а вот с Озером не в какую не хочет

60613dd8e2ecf241e1c9a30fc3a4d883 : OrderedObjects("Заросший пруд"); Walk("rl"); if(!external.SetVal("isTokenTraderClicked"))
if(get_mainframe().document.all[0].innerHTML.match(/Положить предмет/))
external.ClickLink("Положить предмет",2);  external.SetVal("isTokenTraderClicked",true);}
else
 
if(get_mainframe().document.all[0].innerHTML.match(/И это отлично/))
{external.ClickLink("И это отлично",2); external.SetVal("isTokenTraderClicked",true);}
else

4

Re: Действие после диалога с ботом

up!

бот не хочет идти после диалога

5

Re: Действие после диалога с ботом

1) проверь нет ли в том же файле ещё одной строки с идентификатором 60613dd8e2ecf241e1c9a30fc3a4d883
2) посмотри что пишет БК, когда ты стоит возле пруда - предполагаю, что перс постоянно клацает на пруд (в этом случае предлагаю вместо ОрдерОбджект переделать диалог на разовый колик (скажем, по аналогии с диалоговыми ботами)
3) расскажи, зачем у тебя после Walk("rl"); стоит ИФ?

(Please log in or register to see this URL)

6

Re: Действие после диалога с ботом

otherway пишет:

1) проверь нет ли в том же файле ещё одной строки с идентификатором 60613dd8e2ecf241e1c9a30fc3a4d883
2) посмотри что пишет БК, когда ты стоит возле пруда - предполагаю, что перс постоянно клацает на пруд (в этом случае предлагаю вместо ОрдерОбджект переделать диалог на разовый колик (скажем, по аналогии с диалоговыми ботами)
3) расскажи, зачем у тебя после Walk("rl"); стоит ИФ?

Привет,
1. Нет, только одна
2. Да клацает постоянно по озеру и все) т.е. сделать на подобие с макропусом типо этого

02787d7598daf2ff787fcc20004da31e : top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?dialog=gg3_macropus_welcome&use=" + top.frames[external.mainFrameIndex].arrLayers[1][0]["l"].arrUnits[0].id; UseObjects(); Walk("rr");

3. if это я взял с форума, писали что проверка идет, если обращался к объекту то больше не будет

60613dd8e2ecf241e1c9a30fc3a4d883 : OrderedObjects("Заросший пруд"); Walk("rl"); if(!external.SetVal("isTokenTraderClicked"))
if(get_mainframe().document.all[0].innerHTML.match(/Положить предмет/))
external.ClickLink("Положить предмет",2);  external.SetVal("isTokenTraderClicked",true);}
else
 
if(get_mainframe().document.all[0].innerHTML.match(/И это отлично/))
{external.ClickLink("И это отлично",2); external.SetVal("isTokenTraderClicked",true);}
else

7

Re: Действие после диалога с ботом

Я честно попытался понять, что написано в маршруте и что написано в плагине с диалогами...не понял.
Точнее про маршрут я понял, что есть главная ошибка в том, что у тебя написано:
"Нажми на пруд; Поверни налево; Если(неНажат)"
Должно быть:
"Если(неНажат)Нажми на пруд; Поверни налево;"
или
"Если(неНажат)Нажми на пруд; Иначе Поверни налево;"

Давно хотел спросить, а что пишется при первом и последующих нажатиях на пруд?

Software is like sex: it's better when it's free! © LinusTorvalds

8

Re: Действие после диалога с ботом

anahronik пишет:

Я честно попытался понять, что написано в маршруте и что написано в плагине с диалогами...не понял.
Точнее про маршрут я понял, что есть главная ошибка в том, что у тебя написано:
"Нажми на пруд; Поверни налево; Если(неНажат)"
Должно быть:
"Если(неНажат)Нажми на пруд; Поверни налево;"
или
"Если(неНажат)Нажми на пруд; Иначе Поверни налево;"

Давно хотел спросить, а что пишется при первом и последующих нажатиях на пруд?

Спасибо сча попробую переделать маршрут.

if(get_mainframe().document.all[0].innerHTML.match(/Положить предмет/))
external.ClickLink("Положить предмет",2);  external.SetVal("isTokenTraderClicked",true);}
else
 
if(get_mainframe().document.all[0].innerHTML.match(/И это отлично/))
{external.ClickLink("И это отлично",2); external.SetVal("isTokenTraderClicked",true);}
else

Этот кусок нашел на форуме! я так понял это обычный диалог, с  external.SetVal("isTokenTraderClicked",true, как писали что идет проверка, если был диалог то больше диалога не будет) я сам не очень понял что за проверка такая. удалю из плагина external.SetVal("isTokenTraderClicked",true и попробую пройти маршрут заново.

9

Re: Действие после диалога с ботом

Эээ...
Не надо удалять из плагина ничего, если он работает.
Смотри, у тебя есть маршрут и плагин.
В маршруте за одну клетку до пруда должно стоять external.SetVal("isTokenTraderClicked",false); (хотя я бы для пруда вместо isTokenTrader писал isPond)
Эта команда запоминает, что по пруду ты ещё не нажимал.
На клетке пруда должна стоять проверка, "Если(неНажат)Нажми на пруд; Иначе Поверни налево;"
И единственное место, где ты можешь однозначно сказать, что на пруд ты успешно нажал/поговорил - это в плагине диалога.

Software is like sex: it's better when it's free! © LinusTorvalds

10

Re: Действие после диалога с ботом

anahronik пишет:

Эээ...
Не надо удалять из плагина ничего, если он работает.
Смотри, у тебя есть маршрут и плагин.
В маршруте за одну клетку до пруда должно стоять external.SetVal("isTokenTraderClicked",false); (хотя я бы для пруда вместо isTokenTrader писал isPond)
Эта команда запоминает, что по пруду ты ещё не нажимал.
На клетке пруда должна стоять проверка, "Если(неНажат)Нажми на пруд; Иначе Поверни налево;"
И единственное место, где ты можешь однозначно сказать, что на пруд ты успешно нажал/поговорил - это в плагине диалога.

Спасибо!!! буду пробовать)

11

Re: Действие после диалога с ботом

anahronik пишет:

Спасибо! ничего не получается к сожалению(((
Завтра попробую еще, если не получится выложу код, надеюсь на помощь)

12

Re: Действие после диалога с ботом

Привет!
В общем сделал как ты писал, ну точнее как до меня доперло)

57d3f3e51cb5e77f07090ceff9894de8 - клетка  за одну клетку до пруда
60613dd8e2ecf241e1c9a30fc3a4d883 - клетка с прудом, куда нужно положить штуковину

я прописал следующее

57d3f3e51cb5e77f07090ceff9894de8 : external.SetVal("isTokenTraderClicked",false); AttackMobs(); Walk("rl");
60613dd8e2ecf241e1c9a30fc3a4d883 : if(!external.SetVal("isTokenTraderClicked")); OrderedObjects("Заросший пруд"); Walk("rl");

Игрался с перестановкой слагаемых, ничего не помогло. Перс поварачивается к пруду и все, не нажимает на него, просто стоит.

Подскажи пожалуйста что пишу не так.

Сам диалог в плагине следующий

if(get_mainframe().document.all[0].innerHTML.match(/Положить предмет/))
{external.ClickLink("Положить предмет",2);  external.SetVal("isTokenTraderClicked",true);}
else
 
if(get_mainframe().document.all[0].innerHTML.match(/И это отлично/))
{external.ClickLink("И это отлично",2); external.SetVal("isTokenTraderClicked",true);}
else
 
if(get_mainframe().document.all[0].innerHTML.match(/Я уже достаточно увидел./))
{external.ClickLink("Я уже достаточно увидел.",2); external.SetVal("isTokenTraderClicked",true);}
else

13

Re: Действие после диалога с ботом

57d3f3e51cb5e77f07090ceff9894de8 : external.SetVal("isTokenTraderClicked",false); AttackMobs(); Walk("rl");
60613dd8e2ecf241e1c9a30fc3a4d883 : if(!external.GetVal("isTokenTraderClicked")) OrderedObjects("Заросший пруд"); else Walk("rl");

Set и Get перепутаны во второй строке были + else не хватало + лишняя ; после if

Software is like sex: it's better when it's free! © LinusTorvalds

14

Re: Действие после диалога с ботом

Все забываю спросить. В плагине propusk с форума не срабатывает одна строка при осомтре дверей в низинах

else if(s.match(/• Постучаться в дверь/))
    external.ClickLink("• Постучаться в дверь",2);

Все остальное работает, эта нет. Сокращал-изменял повсякому. Знаю, что некоторые символы килилицы неправильно интрепретируются в джаве. Может мягкий занк мешает, но вроде и без него пробовал, не пашет

Отредактировано Cookie (2014-12-26 12:16:46)

15

Re: Действие после диалога с ботом

Убрать надо точку и пробел.  wink

else if(s.match(/Постучаться в дверь/))
    external.ClickLink("Постучаться в дверь",2);

16

Re: Действие после диалога с ботом

Огромное спасибо!!! все получилось)

17

Re: Действие после диалога с ботом

anahronik пишет:
57d3f3e51cb5e77f07090ceff9894de8 : external.SetVal("isTokenTraderClicked",false); AttackMobs(); Walk("rl");
60613dd8e2ecf241e1c9a30fc3a4d883 : if(!external.GetVal("isTokenTraderClicked")) OrderedObjects("Заросший пруд"); else Walk("rl");

Set и Get перепутаны во второй строке были + else не хватало + лишняя ; после if


Огромное спасибо!!! все работает)

Скоро все квесты на благо такими темпами сделаем)))

18

Re: Действие после диалога с ботом

anahronik пишет:

Привет, подскажи пожалуйста как решить следующею проблему.
Есть плагин на диалог на Благо. Весь диалог засунул в один файл

function Makropus(enabled)
{
if(enabled)
{
//должна быть одна из двух строк
PluginsOnLoad["Makropus"] = "MakropusHandler"; // работать по обновлению верхнего фрейма
}
else
{
//должна быть одна из двух строк
PluginsOnLoad["Makropus"] = ""; // выключить обработку по обновлению верхнего фрейма
}
}
function blago()
{
if(top.Battle.bInBattle) return;
 
//Макропус-1
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);
else
 
if(get_mainframe().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";
}
 
 
//Макропус-2
if(get_mainframe().document.all[0].innerHTML.match(/Да! Конечно! Всегда вперед/))
external.ClickLink("Да! Конечно! Всегда вперед",2);
else
 
if(get_mainframe().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";
}
 
//Макропус-3
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);
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?rnd=" + Math.random() +"&path=rr";
}
 
//Макропус-2
if(get_mainframe().document.all[0].innerHTML.match(/Это мы еще посмотрим/))
external.ClickLink("Это мы еще посмотрим",2);
else
 
if(get_mainframe().document.all[0].innerHTML.match(/Выйти/))
{
external.ClickLink("Выйти",2);
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?rnd=" + Math.random() +"&path=m1";
}
 
//Хищен
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);
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?rnd=" + Math.random() +"&path=m7";
}
 
//Жук
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);
else
 
if(get_mainframe().document.all[0].innerHTML.match(/Какая Грибница? Какой кристалл/))
external.ClickLink("Какая Грибница? Какой кристалл",2);
else
 
if(get_mainframe().document.all[0].innerHTML.match(/Ну хорошо./))
{
external.ClickLink("Ну хорошо.",2);
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?rnd=" + Math.random() +"&path=rl";
}
 
 
}
function MakropusHandler()
{
try
{
blago();
}
 
catch(err)
{
//alert(err.description); // выводит сообщение, если в результате выполнения кода была получена ошибка. Если сообщения не нужна - удалить эту строку, оставив конструкцию try{}catch(err){}
}
}

Тут получается три диалога с Макропусам, один с Рогачем, один с Шизожуков и когда бот начинает диалог то ответы не совпадают с прописанными в плагине. Короче он хаотично отвечает, я так подозреваю что ответы у многих схожы и он не правильно отвечает.
У каждого диалога-ответа есть уникальная ссылка в виде

http://suncity.combats.com/main.pl?move_dialog=3&0.504439939534969
http://suncity.combats.com/main.pl?move_dialog=0&0.194365678492826
http://suncity.combats.com/main.pl?move_dialog=0&0.065782565842035

Подскажи пожалуйста как мне указать эти ссылки в плагине за место слов

if(get_mainframe().document.all[0].innerHTML.match(/И вам хорошего дня/))
external.ClickLink("И вам хорошего дня",2);
else

Заранее спасибо!!!

19

Re: Действие после диалога с ботом

Ссылки являются ещё менее уникальными, чем слова.
get_mainframe().document.all[0].innerHTML.match(/И вам хорошего дня/) - в этой части должны быть слова, которые однозначно говорят о том, какой диалог/с кем и прочее. Если они встречаются в нескольких диалогах - значит плохо подобраны и надо их менять на более уникальный набор.
Это не текст ответа - это может быть фраза из текста самого диалога.

Software is like sex: it's better when it's free! © LinusTorvalds

20

Re: Действие после диалога с ботом

anahronik пишет:

Ссылки являются ещё менее уникальными, чем слова.
get_mainframe().document.all[0].innerHTML.match(/И вам хорошего дня/) - в этой части должны быть слова, которые однозначно говорят о том, какой диалог/с кем и прочее. Если они встречаются в нескольких диалогах - значит плохо подобраны и надо их менять на более уникальный набор.
Это не текст ответа - это может быть фраза из текста самого диалога.

Спасибо за ответ.

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

21

Re: Действие после диалога с ботом

Нашел на форуме плагин обмена грибов

if(get_mainframe().document.all[0].innerHTML.match(/Я бы хотел обменять/))
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=1&" + Math.random();
else
if(get_mainframe().document.all[0].innerHTML.match(/Давайте/))
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=0&" + Math.random();
else
if(get_mainframe().document.all[0].innerHTML.match(/У меня есть еще/))
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=0&" + Math.random();
else
if(get_mainframe().document.all[0].innerHTML.match(/Благодарю за общение. (завершить разговор)/))
top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=2&" + Math.random();

Правильно я понял что в нем используется грубо говоря двойная проверка по тексту и ссылке?
Хотя ссылки в виде http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=2&" + Math.random();
Получается только начало ссылки диалога  сombats.com/main.pl?move_dialog=2&.
А если указать вот так например

top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=23&0.504439939534969;

т.е. вбиваем полностью ссылку!!!

Такой вариант имеет право на жизнь или меня несет не туда)))

22

Re: Действие после диалога с ботом

Так.
Ещё раз: проверка делается только внутри if().
Она должна делаться только по тексту.
Не существует такой проверки "по ссылке" по одной простой причине: в ссылке нет информации о том, к какому диалогу она относится. Там прямым текстом написано: move_dialog=23 - это "Выбрать ответ 23 для текущего диалога", а ты не знаешь, какой является текущим...а move_dialog=2 так вообще чуть ли не на каждый шаг диалога будет подходить.

Никаких top.frames[external.mainFrameIndex].location быть не должно - я написал external.ClickLink для ухода от этого механизма специально. Он лучше, он надёжнее и он проще.

В общем: несёт не туда.
Рекомендую пройтись по условиям в if.
Например вот эта строка вызывает у меня странные чувства:

if(get_mainframe().document.all[0].innerHTML.match(/Да./))

Она сработает при наличии любого слова "Да" (Д заглавная и а прописная подряд) на всей странице с диалогом (т.е. и имена персонажей, участвующих в диалоге, и текст диалога, и текст ответов - всё будет проверено на наличие "Да").
Кстати, точка внутри match(//) обозначает один любой символ, поэтому разницы между "Да" и "Да." нет
Вопросительный знак - ещё веселее. "Да?" будет подходить даже для текста, содержащего только "Д"(т.е. он говорит, что символ перед ? может быть, а может не быть...используется в более сложных масках, например маска "а-?10" подходит и для текста "а10", и для "а-10").

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

Software is like sex: it's better when it's free! © LinusTorvalds

23

Re: Действие после диалога с ботом

anahronik пишет:

Никаких top.frames[external.mainFrameIndex].location быть не должно - я написал external.ClickLink для ухода от этого механизма специально. Он лучше, он надёжнее и он проще.

у меня что в маршруте прописано

top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?dialog=gg3_shizo_welcome&use=" + top.frames[external.mainFrameIndex].arrLayers[1][0]["l"].arrUnits[0].id;

Это для вызова диалога
и в плагине

top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/" + dungName + "?rnd=" + Math.random() +"&path=rl";

Это куда пойдет бот после диалога

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

Или тут речь о замене mainFrameIndex на ClickLink

anahronik пишет:

Например вот эта строка вызывает у меня странные чувства:

if(get_mainframe().document.all[0].innerHTML.match(/Да./))

Она сработает при наличии любого слова "Да" (Д заглавная и а прописная подряд) на всей странице с диалогом (т.е. и имена персонажей, участвующих в диалоге, и текст диалога, и текст ответов - всё будет проверено на наличие "Да").

Ну тут понятно что искать будет Да, только вот ответ в диалоге только "ДА") и больше нет никаких слов.

24

Re: Действие после диалога с ботом

anahronik пишет:

Кстати, точка внутри match(//) обозначает один любой символ, поэтому разницы между "Да" и "Да." нет
Вопросительный знак - ещё веселее. "Да?" будет подходить даже для текста, содержащего только "Д"(т.е. он говорит, что символ перед ? может быть, а может не быть...используется в более сложных масках, например маска "а-?10" подходит и для текста "а10", и для "а-10").

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

Спасибо за подсказку, нужно все пересмотреть и убрать все знаки с точками, оставить только слова.

Вот только не могу понять почему у меня бот не всегда начинает диалог? Можно сказать через раз.
Может начать, а может развернуться на клетке начало диалога и пройти мимо. хотя ничего не менял)

25

Re: Действие после диалога с ботом

Ок. Продолжаем smile
1) Ссылки на старт диалога работает нормально и написана только потому, что никто не мог (точнее не умел) писать короткую команду на поиск ссылки для запуска диалога - поэтому вместо нажатия ссылки на странице отправлялась прямая команда на запуск диалога. В целом использовать можно, но можно и красивее (но не с ClickLink).

2) Ссылка на то, что делать бот после диалога будет - эта ссылка тоже на странице в момент диалога отсутствует полностью, поэтому её нельзя найти и кликнуть. Её вообще заменить нечем smile

3) "Ну тут понятно что искать будет Да, только вот ответ в диалоге только "ДА") и больше нет никаких слов."
Отлично Этим ответом ты обосновал external.ClickLink("Да",2); - это найти на странице ссылку с текстом "Да" и нажать на неё.
А при чем тут "if(get_mainframe().document.all[0].innerHTML.match(/Да./))"?

Пример:

if(top.frames[external.mainFrameIndex].document.all[0].innerHTML.match(/Мастер что-то внимательно и сосредоточенно делает/))
{
     external.ClickLink("подождать немного",2);
}

Update:

Может начать, а может развернуться на клетке начало диалога и пройти мимо. хотя ничего не менял)

На клетке начала диалога в маршруте можешь Walk(); убрать, раз он у тебя всё равно в плагине диалога выполняется

Software is like sex: it's better when it's free! © LinusTorvalds