1

Тема: Плагин диалог

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

2

Re: Плагин диалог

Смотри, как мне Анахроник объяснял:
1) Макет пустого плагина выглядит вот так

function PluginName(enabled)
{
    if(enabled)
    {
        //должна быть одна из двух строк
        PluginsOnLoad["PluginName"] = "PluginNameHandler"; // работать по обновлению верхнего фрейма
        PluginNameTimer = setInterval("PluginNameHandler()", 2000); // работать по таймеру(2секунды)
    }
    else
    {
        //должна быть одна из двух строк
        PluginsOnLoad["PluginName"] = ""; // выключить обработку по обновлению верхнего фрейма
        clearInterval(PluginNameTimer); // выключить таймер
    }
}
 
function PluginNameHandler(){
        try{
                *сюда код*
        }
        catch(err)
        {
                alert(err.description); // выводит сообщение, если в результате выполнения кода была получена ошибка. Если сообщения не нужна - удалить эту строку, оставив конструкцию try{}catch(err){}
        }
}

Зеленым там все предельно просто откомментировано, разберешься. PluginName - название плагина, если название плагина будет другое, то и в коде нужно PluginName заменить на соответствующее название. Причем менять нужно и PluginNameHandler и PluginNameTimer.
Пример:
Плагин называется XXXXX.js, значит в коде меняем все PluginName на XXXXX. А PluginNameHandler будет выглядеть как XXXXXXHandler и тд.
2) Когда находишься в диалоге, записываешь себе интернет адреса нужных диалогов (по нужному ответу правой кнопкой--свойства---адрес url)
Пример:

строка: какие вещи ты обмениваешь?
адрес: http://mooncity.combats.com/main.pl?move_dialog=0&0.8546485275

3) Переделываешь строку адреса под бота:
пример

адрес: http://mooncity.combats.com/main.pl?move_dialog=0&0.8546485275
строка в боте: top.frames[external.mainFrameIndex].location = "http://" + external.SCity.Text + ".combats.com/main.pl?move_dialog=0&" + Math.random();

Для облегчения задачи скажу, что меняется в строке только вот эта часть main.pl?move_dialog=0&
4) Создаешь функцию ответа по диалогам dialog вида:

function dialog()
{
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=4&" + Math.random();
}

Обязательно все условия должны идти через else, иначе в бк будет писать "это невозможно"
5) Вставляешь функцию в плагин и, чтоб она начала работать, делаешь строку ее вызова в плагине.
Пример готового плагина по вышесказанному:
я выбрал работу плагина по обновлению фрейма, т.к. так уже делал себе плагин:

function PluginName(enabled)
{
    if(enabled)
    {
        //должна быть одна из двух строк
        PluginsOnLoad["PluginName"] = "PluginNameHandler"; // работать по обновлению верхнего фрейма
    }
    else
    {
        //должна быть одна из двух строк
        PluginsOnLoad["PluginName"] = ""; // выключить обработку по обновлению верхнего фрейма
    }
}
 
function dialog()
{
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=4&" + Math.random();
}
 
function PluginNameHandler(){
        try{
setTimeout("dialog()", 1500);  // вызов нашей функции с задержкой в полторы секунды
        }
        catch(err)
        {
                alert(err.description); // выводит сообщение, если в результате выполнения кода была получена ошибка. Если сообщения не нужна - удалить эту строку, оставив конструкцию try{}catch(err){}
        }
}
У меня все работает, что я делаю не так ?

3

Re: Плагин диалог

класс спасибо) пофег на зачет завтра, буду тут разбираться

4

Re: Плагин диалог

Да, бот затягивает. У самого скоро защита диплома, а все оторваться никак не могу  big_smile

У меня все работает, что я делаю не так ?

5

Re: Плагин диалог

Ну для порядка спрошу: Жека, а зачем ты привязал к обновлению фрэйма, а потом ещё и интервал поставил на 1,5секунды? smile

P.S.
Мне безусловно нравится, что функция диалога вынесена как самостоятельная, а PluginNameHandler() используется в качестве контроля того, что будет запущено(т.е. если было бы 3 самостоятельных функции ещё, то в этой функции по каким-то условиям определялось, какая из них должна быть сейчас запущена или определен порядок их запуска...т.е. логика программы отделена от самого выполнения)...если мне память не изменяет, то я этого не объяснял никому smile

P.P.S.
Основную часть того, что я писал, я писал во время диплома тоже smile

P.P.P.S.
Это 2000-ое сообщение на форуме... smile

Отредактировано anahronik (2011-01-19 10:54:39)

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

6

Re: Плагин диалог

О, мой бото-сенсей отписался  smile
Ну во 1х поздравляю с 2000м сообщением smile
Привязал я к обновлнеию фрейма, а потом интервал поставил, т.к. без него бот сильно быстро по диалогам клацает, и бывает сервер не успевает отзывы давать, а сменить сам принцип работы плагина чет в голову не пришло smile
Логику программы специально отделял от выполнения, как по мне, так удобнее и красивее smile

У меня все работает, что я делаю не так ?

7

Re: Плагин диалог

Хм...если я правильно понимаю, то PluginsOnLoad - это когда страница загрузится...т.е. не должно быть такого, что не успевает ответ выдать smile

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

8

Re: Плагин диалог

anahronik, поздравляю с 2000м сообщением)))

Отредактировано drsn (2011-01-19 22:55:21)

9

Re: Плагин диалог

может у кого есть разговор с грибоедом для обмена грибов ?
прочитал 2 раза так и не въехал как сделать  neutral

Искать в реале smile

10

Re: Плагин диалог

lLOrDl пишет:

может у кого есть разговор с грибоедом для обмена грибов ?
прочитал 2 раза так и не въехал как сделать  neutral

Тугодоходум ) big_smile  big_smile  big_smile  big_smile  big_smile  big_smile

!!!!!!!

11

Re: Плагин диалог

Евгений Ваганович пишет:
lLOrDl пишет:

может у кого есть разговор с грибоедом для обмена грибов ?
прочитал 2 раза так и не въехал как сделать  neutral

Тугодоходум ) big_smile  big_smile  big_smile  big_smile  big_smile  big_smile

лучше б помог бы )

Искать в реале smile

12

Re: Плагин диалог

lLOrDl пишет:
Евгений Ваганович пишет:
lLOrDl пишет:

может у кого есть разговор с грибоедом для обмена грибов ?
прочитал 2 раза так и не въехал как сделать  neutral

Тугодоходум ) big_smile  big_smile  big_smile  big_smile  big_smile  big_smile

лучше б помог бы )

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

!!!!!!!