Amnesia
- ObServeR
- Не в сети
- Senior Member
- Сообщений: 78
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
ps:// нашел баг, он заключается в том, что не сохраняются состояния аддонов, т.е. разрешены ли они, или нет. Они сохраняются только если перетащить аддоны по списку..
upd***
еще один баг нашел. Через скрипты нельзя контролировать отладочные сообщения - включать или отключать их. в версии 0.3.1 обещаю попробовать пофиксить это. Если убрать отладочные сообщения, скрипты выполняются мгновенно, если оставить их - выполняются за 15 - 50 миллисекунд =))
Немножечко переделал логирование аргументов функций. Теперь все аргументы выводятся в логе в одну строчку, а не как раньше - на один аргумент одна строка
И теперь не могу понять, чо с этим плагином делать... написать то его написал, а вот какие скрипты писать - хрен знает... поэтому, снова жду предложений и пожеланий
ps:// кстати, если кто хочет ГУЙ к скриптам прикрутить, обратите внимание на проект wxlua =)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
Вложение lua_examples.7z не найдено
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Authorised
- Не в сети
- New Member
- Сообщений: 4
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
Раньше я хотел прикрутить или xml, или json парсер к плагину, но некоторое время назад задумался, а почему бы не использовать "родные" возможности lua. И начал эксперементировать.
плагин может получать содержимое веб страниц используя get и post запросы.
Допустим, мы хотим чтобы наш бот по обращению к нему выдавал какой нибудь анекдот пользователю.
Анекдоты можно хранить в ini файлах, но это изврат
Допустим, у нас в интернете есть сервер - база данных анекдотов.
Чтобы выуживать анекдоты, у нас написан php скрипт, который генерирует ответ в виде кода lua:
<?
// код получения данных из БД...
// ...
// ...
// генерируем ответ в виде таблицы lua
echo "
data = {anekid = $anek_id, text = '$anek_text', author = '$anek_author'}
";
?>
В нашем lua скрипте определяем функцию eval:
function eval(str)
return assert(loadstring(str))()
end
ну, и в обработчике RnQIncomingMessage пишим примерно такой код:
if msg=='анек' then
anek = http.get('http://somehost.com/anek.php?id=3') -- получаем анекдот в формате lua
eval(anek) -- выполняем его
rnq.sendmsg(uin,data.text..'\r\nposted by: '..data.author) -- отправляем. data - это та самая таблица, которая генерируется скриптом
end
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Authorised
- Не в сети
- New Member
- Сообщений: 4
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
ссылка: bugtraq.xternalx.com/
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- agmt
- Не в сети
- Premium Member
- Сообщений: 103
- Спасибо получено: 0
Как я понял, это некий фреймворк для Lua для работы с RnQ? И весь код прогоняет через Lua5.1.dll. Хм, неужели в этом маленьком файле всё поместилось? По-крайней мере, скачав с сайта, я увидел, что там есть ещё куча других библиотек.
К сожалению, я пока слишком плохо знаю Lua, по-этому вопрос к разработчику: поможет ли закидка всяких библиотек socket, zlib и т.д., возможности написать скрипт с поддержкой всего этого?
P.S. залил новую Lua5.1.dll, вроде работает - это уже хорошо)))
P.P.S. в ответ на самый 1 пост: для увеличения популярности рнк посредством скриптов, можно добавить заметку об этом на википедии))) ru.wikipedia.org/wiki/Lua
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
А вообще, мне не интересно этот плагин писать для рнку, я все больше смотрю в сторону миранды
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
Теперь отлаживать свои скрипты станет еще легче... В одной из следующих версий все таки прикручу редактор с подсветкой кода...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- LittLe
- Не в сети
- Senior Member
- Сообщений: 48
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
через пару часов выложу версию с посветкой синтаксиса и списком переменных и методов...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
Вложение Amnesia.7z не найдено
В обновлении 0.3.2 исправлена проблема, когда при использовании sys.wait и некоторых других методов вылетала ошибка.
Так же добавил подсветку синтаксиса со списком доступных методов и свойств.
Добавил возможность редактировать скрипт прямо в окне лога. Для этого добавил соответствующие кнопки - Load, Save.
По сути, теперь для того чтобы создать свой скрипт нужно просто создать папку, кинуть в нее файл с описанием скрипта, создать файл скрипта и все. В плагине в отадочном окне выбираете только что созданный плагин и нажимаете кнопку Load. Редактор кода очистится если файл скрипта был пуст, или не обнулится, или загрузится тот код, что вы уже успели написать. После того как код загружен, его можно редактировать. Посмотреть ваши измененя в работе можно нажав кнопку F9. Если никаких ошибок не произойдет, в логе будет написано что то типа:
В противном случае будет выдано сообщение об ошибке, и ее координаты в скрипте.A-0-[RMC]: ====================
A-0-[RMC]: executing script...
A-0-[RMC]: executed with result: 0 in 0 msec
После того как вы отредактировали ваш скрипт, жмите кнопку Save, и текущий вариант скрипта сохранится в файл
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- divizer
- Не в сети
- Premium Member
- Сообщений: 116
- Спасибо получено: 0
Установил без проблем. Закинул куда следует два примерчика скриптов, которые шли в архиве с плагином, и стал разбираться...
Не знаю, то ли я такой тупой, то ли документация скудная, но я так и не понял, что делают пункты меню в окне "Amnesia log": "Addons" -> "Add New..." и "Addons" -> "Create New". Нажимаешь - и ничего не происходит... Может, так и задумано... В общем, не разобрался.
Далее нажимаю "Addons" -> "Change Addons Order". Выскочило окошко "Available Addons:" и в перечне два установленных мною аддона. Уже хорошо. Попробовал снять с аддонов галочки, решив, что таким образом я их отключу. Но аддоны продолжали работать. Ладно, думаю, может надо перезагрузиться (опять же из меню): "Amnesia" -> "Reload" ..И снятые мной галочки вернулись на свои места. Короче говоря, зачем нужны галочки, я так и не понял.
Ладно, думаю. Наверное, я всё-таки что-то не так делаю. "Change Addons Order" - это же "Изменить порядок аддонов". Попробовал потаскать. Вроде получилось. Но поскольку один из двух имеющихся аддонов - dummy, т.е. ничего не делает, то и выяснить, какой же из аддонов отрабатывается первым, я сходу не смог. А писать свой мне всё же пока рановато... Но проблема таки нашлась. Драг-н-дроп работает не очень корректно. Если перетаскивать аккуратно один пункт(аддон) на другой, то всё замечательно - пункты меняются местами. Если же один из пунктов утащить чуть-чуть посильнее вниз под другой или просто в пустую область окна, то выскакивает такая ошибка: "List index out of bounds (-1)".
Но это ещё не всё. Если после сделать "Amnesia" -> "Reload", то в окне лога появится вот это: "xtDBG::ERROR: An error occurred while reloading addons! ", а попытка вызвать "Addons" -> "Change Addons Order" вызывает ошибку: ""Access violation at address 03D73D66 in module 'rqAmnesia.dll'. Read of address C08B1372." со всеми вытекающими...
Короче говоря, то ли я такой дурак, защиту от которого еще не придумали, то ли интерфейс требует некоторой доработки в сторону интуитивности и безбажности.
xternalx, в общем получилось как раз то, о чём Вы и просили. Так что уж не обессудьте. Но за плагин всё равно огромное спасибо! Вот только реально полезных скриптиков бы ему в коплект, да побольше! А то сразу не очень понятно, как же его использовать с пользой для дела.чо спасиба то, лучше бы о багах мне рассказывали...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
большое спасибо за багрепорт. Будет время - проверю
А теперь опишу все как задумано. В главном меню в окошке лога ничего не работает. Релоад аддонс вроде как работает, но через попу. Я забыл поправить его. Меню с аддонами не работает вообще - я еще не делал таких мегаудобных штук как добавление новых аддонов автоматически, или экспорт существующих
Change Addons order - позволяет определить очередность выполнения аддонов. Первый сверху аддон выполнится первым, второй - вторым, и т.д.
Галочки нужны для того чтобы отключать аддоны. Они из памяти вроде не выгружаются, но управление им не передается. Там кстати с сохранением тоже был какой то глюк. Если тупо перетащить один аддон за другой, в общем, поменять порядок, то изменения сохранятся
А создать свой аддон можно таким образом:
в папке с твоим профилем есть папка Amnesia. В ней создаешь какой нибудь каталог, например, "preved". В него пихаешь 2 файла - amnesia.inf, его описываешь так как это сделано в примерах, идущих с плагином.
Второй файл - amnesia.lua(это имя ты должен в inf файле указать), а можешь как нибудь иначе обозвать.... Вот в нем и пишется скрипт. Чтобы проще писать скрипт перезагрузи крысу или плагин, и в окне лога в списке аддонов появится созданный тобой аддон. Выбираешь его, тыкаешь кнопку Load, и он загрузится в редактор. Как напишишь какой то скрипт, тыкаешь F9 и в логе увидешь результат выполнения скрипта. Если тебя этот результат устроит - нажми Save - это сохранит все изменения которые ты внес в скрипт аддона
***UPD сейчас проверил Reload Addons, у меня перезагрулились они без проблем, и эксепшн при Change Addons Order Тоже не было....
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- divizer
- Не в сети
- Premium Member
- Сообщений: 116
- Спасибо получено: 0
Воспроизводится так:***UPD сейчас проверил Reload Addons, у меня перезагрулились они без проблем, и эксепшн при Change Addons Order Тоже не было....
1. Открываем окно чата и вызываем плагин через соответствующую кнопку.
2. Addons -> Change Addons Order
3. В окне "Available addons:" видим перечень скриптов (у меня их два). Берем, к примеру, нижний и тащим еще ниже. Получаем "List index out of bounds (-1)"
4. Закрываем окно "Available addons:"
5. Amnesia -> Reload. Получаем "xtDBG::ERROR: An error occurred while reloading addons! " в окне лога.
6. Addons -> Change Addons Order. Получаем "Access violation at address 03D73D66 in module 'rqAmnesia.dll'. Read of address C08B1372."
Воспроизводится в 10 случаях из 10. Система Windows XP SP3. Остальные плагины отключил для чистоты эксперимента.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- xternalx
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.