Тема: Плагин диалог
кто может помочь с написанием плагина для выбора правильного ответа в пещере? было раньше такое, но тогда Main.js редактировался( а как засунуть все это в плагин я не знаю( спасибо кто поможет хоть чемто
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны вход или регистрация
кто может помочь с написанием плагина для выбора правильного ответа в пещере? было раньше такое, но тогда Main.js редактировался( а как засунуть все это в плагин я не знаю( спасибо кто поможет хоть чемто
Смотри, как мне Анахроник объяснял:
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){}
}
}
класс спасибо) пофег на зачет завтра, буду тут разбираться
Да, бот затягивает. У самого скоро защита диплома, а все оторваться никак не могу
Ну для порядка спрошу: Жека, а зачем ты привязал к обновлению фрэйма, а потом ещё и интервал поставил на 1,5секунды?
P.S.
Мне безусловно нравится, что функция диалога вынесена как самостоятельная, а PluginNameHandler() используется в качестве контроля того, что будет запущено(т.е. если было бы 3 самостоятельных функции ещё, то в этой функции по каким-то условиям определялось, какая из них должна быть сейчас запущена или определен порядок их запуска...т.е. логика программы отделена от самого выполнения)...если мне память не изменяет, то я этого не объяснял никому
P.P.S.
Основную часть того, что я писал, я писал во время диплома тоже
P.P.P.S.
Это 2000-ое сообщение на форуме...
Отредактировано anahronik (2011-01-19 10:54:39)
О, мой бото-сенсей отписался
Ну во 1х поздравляю с 2000м сообщением
Привязал я к обновлнеию фрейма, а потом интервал поставил, т.к. без него бот сильно быстро по диалогам клацает, и бывает сервер не успевает отзывы давать, а сменить сам принцип работы плагина чет в голову не пришло
Логику программы специально отделял от выполнения, как по мне, так удобнее и красивее
Хм...если я правильно понимаю, то PluginsOnLoad - это когда страница загрузится...т.е. не должно быть такого, что не успевает ответ выдать
anahronik, поздравляю с 2000м сообщением)))
Отредактировано drsn (2011-01-19 22:55:21)
может у кого есть разговор с грибоедом для обмена грибов ?
прочитал 2 раза так и не въехал как сделать
может у кого есть разговор с грибоедом для обмена грибов ?
прочитал 2 раза так и не въехал как сделать
Тугодоходум )
lLOrDl пишет:может у кого есть разговор с грибоедом для обмена грибов ?
прочитал 2 раза так и не въехал как сделатьТугодоходум )
лучше б помог бы )
Евгений Ваганович пишет:lLOrDl пишет:может у кого есть разговор с грибоедом для обмена грибов ?
прочитал 2 раза так и не въехал как сделатьТугодоходум )
лучше б помог бы )
пардон.не вникал в суть.времени сейчас нет
Страницы 1
Чтобы отправить ответ, вы должны вход или регистрация