Amnesia

Больше
15 года 8 мес. назад #81 от ObServeR
ObServeR ответил в теме RE: Amnesia
Молодца! Добил-таки зверюгу! :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 8 мес. назад - 15 года 8 мес. назад #82 от xternalx
xternalx ответил в теме RE: Amnesia
аха, сижу прусь вот =))

ps:// нашел баг, он заключается в том, что не сохраняются состояния аддонов, т.е. разрешены ли они, или нет. Они сохраняются только если перетащить аддоны по списку.. :D

upd***
еще один баг нашел. Через скрипты нельзя контролировать отладочные сообщения - включать или отключать их. в версии 0.3.1 обещаю попробовать пофиксить это. Если убрать отладочные сообщения, скрипты выполняются мгновенно, если оставить их - выполняются за 15 - 50 миллисекунд =))

Немножечко переделал логирование аргументов функций. Теперь все аргументы выводятся в логе в одну строчку, а не как раньше - на один аргумент одна строка :)

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

ps:// кстати, если кто хочет ГУЙ к скриптам прикрутить, обратите внимание на проект wxlua =)
Последнее редактирование: 15 года 8 мес. назад пользователем xternalx.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 8 мес. назад #83 от xternalx
xternalx ответил в теме RE: Amnesia
Классный мануал по языку LUA. Очень краткий, но зато очень понятный, и с огромным количеством примером. В мануале описываются все основные операторы, конструкции, и типы данных языка. Найди я этот мануал раньше - сэкономил бы кучу собственного времени, когда только-только задался целью написания плагина :)

Вложение lua_examples.7z не найдено

Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 8 мес. назад #84 от Authorised
Authorised ответил в теме RE: Amnesia
Хотелось бы иметь возможность отключать запись лога в текстовый файл...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 8 мес. назад #85 от xternalx
xternalx ответил в теме RE: Amnesia
я просто забыл это убрать :D

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 8 мес. назад - 15 года 8 мес. назад #86 от xternalx
xternalx ответил в теме RE: Amnesia
хотелось бы рассказать про возможность взаимодействия амнезии с веб сервисами.
Раньше я хотел прикрутить или xml, или json парсер к плагину, но некоторое время назад задумался, а почему бы не использовать "родные" возможности lua. И начал эксперементировать.

плагин может получать содержимое веб страниц используя get и post запросы.
Допустим, мы хотим чтобы наш бот по обращению к нему выдавал какой нибудь анекдот пользователю.
Анекдоты можно хранить в ini файлах, но это изврат :D
Допустим, у нас в интернете есть сервер - база данных анекдотов.
Чтобы выуживать анекдоты, у нас написан 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
Последнее редактирование: 15 года 8 мес. назад пользователем xternalx.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 3 мес. назад #87 от Authorised
Authorised ответил в теме RE: Amnesia
Где же обещанная 0.3.1? Проекту нужно совсем чуть-чуть - избавится от пары фичь ;) Тем более что функционал вполне достойный и у 0.3.0b

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 3 мес. назад #88 от xternalx
xternalx ответил в теме RE: Amnesia
проект загнулся. Когда разогнется - не знаю. :D

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 2 мес. назад #89 от xternalx
xternalx ответил в теме RE: Amnesia
Установил багтрекер. Туда можно постить найденные баги, ошибки, и т.п.
ссылка: bugtraq.xternalx.com/

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад - 15 года 1 мес. назад #90 от agmt
agmt ответил в теме RE: Amnesia
Хм. Забавная штучка)))
Как я понял, это некий фреймворк для Lua для работы с RnQ? И весь код прогоняет через Lua5.1.dll. Хм, неужели в этом маленьком файле всё поместилось? По-крайней мере, скачав с сайта, я увидел, что там есть ещё куча других библиотек.
К сожалению, я пока слишком плохо знаю Lua, по-этому вопрос к разработчику: поможет ли закидка всяких библиотек socket, zlib и т.д., возможности написать скрипт с поддержкой всего этого?
P.S. залил новую Lua5.1.dll, вроде работает - это уже хорошо)))
P.P.S. в ответ на самый 1 пост: для увеличения популярности рнк посредством скриптов, можно добавить заметку об этом на википедии))) ru.wikipedia.org/wiki/Lua
Последнее редактирование: 15 года 1 мес. назад пользователем agmt.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #91 от xternalx
xternalx ответил в теме RE: Amnesia
можно дописать автозагрузочный скрипт таким образом, чтобы он все дополнения, которые лежат в папке bin позгружал автоматически при старте.

А вообще, мне не интересно этот плагин писать для рнку, я все больше смотрю в сторону миранды

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #92 от xternalx
xternalx ответил в теме RE: Amnesia
Я тут такую штуку заметил. Скрипты можно отлаживать в рантайме без перезапускаплагина. Просто открываете консоль, купируете туда обработчики событий, модицифируете их, получаете результат. Если он вас устраивает - копируете этот код в текстовый файл и вуаля :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #93 от xternalx
xternalx ответил в теме RE: Amnesia
Обновил амнезию до версии 0.3.1. В этой версии немножко изменено поведение окна лога, и отныне логи не пишутся в файл.
Теперь отлаживать свои скрипты станет еще легче... В одной из следующих версий все таки прикручу редактор с подсветкой кода...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #94 от LittLe
LittLe ответил в теме RE: Amnesia
Спасибо :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #95 от xternalx
xternalx ответил в теме RE: Amnesia
чо спасиба то, лучше бы о багах мне рассказывали... я тут баг нашел, событие при загрузке плагина не работало... :Е
через пару часов выложу версию с посветкой синтаксиса и списком переменных и методов...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад - 15 года 1 мес. назад #96 от xternalx
xternalx ответил в теме RE: Amnesia
Как и обещал - долгожданное обновление :)

Вложение 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, и текущий вариант скрипта сохранится в файл :)
Вложения:
Последнее редактирование: 15 года 1 мес. назад пользователем xternalx.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #97 от divizer
divizer ответил в теме RE: Amnesia
Наконец-то решил попробовать этот замечательный плагин.

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

Не знаю, то ли я такой тупой, то ли документация скудная, но я так и не понял, что делают пункты меню в окне "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! :D", а попытка вызвать "Addons" -> "Change Addons Order" вызывает ошибку: ""Access violation at address 03D73D66 in module 'rqAmnesia.dll'. Read of address C08B1372." со всеми вытекающими...

Короче говоря, то ли я такой дурак, защиту от которого еще не придумали, то ли интерфейс требует некоторой доработки в сторону интуитивности и безбажности.

чо спасиба то, лучше бы о багах мне рассказывали...

xternalx, в общем получилось как раз то, о чём Вы и просили. Так что уж не обессудьте. Но за плагин всё равно огромное спасибо! Вот только реально полезных скриптиков бы ему в коплект, да побольше! А то сразу не очень понятно, как же его использовать с пользой для дела.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад - 15 года 1 мес. назад #98 от xternalx
xternalx ответил в теме RE: Amnesia
divizer писал(а):

большое спасибо за багрепорт. Будет время - проверю :)

А теперь опишу все как задумано. В главном меню в окошке лога ничего не работает. Релоад аддонс вроде как работает, но через попу. Я забыл поправить его. Меню с аддонами не работает вообще - я еще не делал таких мегаудобных штук как добавление новых аддонов автоматически, или экспорт существующих :)

Change Addons order - позволяет определить очередность выполнения аддонов. Первый сверху аддон выполнится первым, второй - вторым, и т.д.
Галочки нужны для того чтобы отключать аддоны. Они из памяти вроде не выгружаются, но управление им не передается. Там кстати с сохранением тоже был какой то глюк. Если тупо перетащить один аддон за другой, в общем, поменять порядок, то изменения сохранятся :D

А создать свой аддон можно таким образом:
в папке с твоим профилем есть папка Amnesia. В ней создаешь какой нибудь каталог, например, "preved". В него пихаешь 2 файла - amnesia.inf, его описываешь так как это сделано в примерах, идущих с плагином.
Второй файл - amnesia.lua(это имя ты должен в inf файле указать), а можешь как нибудь иначе обозвать.... Вот в нем и пишется скрипт. Чтобы проще писать скрипт перезагрузи крысу или плагин, и в окне лога в списке аддонов появится созданный тобой аддон. Выбираешь его, тыкаешь кнопку Load, и он загрузится в редактор. Как напишишь какой то скрипт, тыкаешь F9 и в логе увидешь результат выполнения скрипта. Если тебя этот результат устроит - нажми Save - это сохранит все изменения которые ты внес в скрипт аддона :)

***UPD сейчас проверил Reload Addons, у меня перезагрулились они без проблем, и эксепшн при Change Addons Order Тоже не было....
Последнее редактирование: 15 года 1 мес. назад пользователем xternalx.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #99 от divizer
divizer ответил в теме RE: Amnesia
xternalx писал(а):

***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! :D" в окне лога.
6. Addons -> Change Addons Order. Получаем "Access violation at address 03D73D66 in module 'rqAmnesia.dll'. Read of address C08B1372."

Воспроизводится в 10 случаях из 10. Система Windows XP SP3. Остальные плагины отключил для чистоты эксперимента.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
15 года 1 мес. назад #100 от xternalx
xternalx ответил в теме RE: Amnesia
только что проверил на домашнем компе, до этого проверял на работе - все ок, никаких ошибок, все перезагружается :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: bassvazoozaDelphukdekRapid D
Время создания страницы: 0.523 секунд
Работает на Kunena форум