Amnesia

Больше
15 года 6 мес. назад #61 от tirpir
tirpir ответил в теме RE: Amnesia
Я настолько далек от програмирования, что мне это ничего не говорит :(
Может кто напишет такой скрипт?

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

Больше
15 года 5 мес. назад #62 от xrayman64
xrayman64 ответил в теме RE: Amnesia
Неужели плагин заглох?

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

Больше
15 года 5 мес. назад #63 от xternalx
xternalx ответил в теме RE: Amnesia
нет, не заглох, надеюсь в ближайшее время всетаки дойдет дело до него ;))

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

Больше
15 года 5 мес. назад #64 от x_T
x_T ответил в теме RE: Amnesia
можно чтобы getcontactinfo(int uin) возвращало "Ник", а не только "Отображаемое имя"?

да бы исключить ситуации с "унылым гавно" и т.п. %)

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

Больше
15 года 5 мес. назад #65 от xternalx
xternalx ответил в теме RE: Amnesia
а что за унылое гавно? вы о чем? :)

ждите, недолго осталось вроде бы.... как только пройдет душевный кризис - обещаю зарелизить новую версию плагина с возможностью создавать обработчики событий клавиатуры, таймеры, и еще что то(забыл, что именно :D)

x_T, посмотрим... если средствами API можно такое сделать - конечно сделаю :)

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

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

а что за унылое гавно? вы о чем? :)

допустим человек имеет ник "Nick", а у меня в кл он переименован как "унылое гавно" =)

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

Больше
15 года 4 мес. назад #67 от x_T
x_T ответил в теме RE: Amnesia
а еще неплохо было бы иметь функцию возвращающую true/false в зависимости от того, есть ли данный в КЛ или нет

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

Больше
15 года 4 мес. назад #68 от Fr0st
Fr0st ответил в теме RE: Amnesia
Это мегатруЪ штука! Сейчас натравил на друга, который тестит мирандовского бота, там такая битва началась )))
А есть ли возможность "отменить" входящее сообщение, чтобы оно не всплывало?

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

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

Это мегатруЪ штука! Сейчас натравил на друга, который тестит мирандовского бота, там такая битва началась )))
А есть ли возможность "отменить" входящее сообщение, чтобы оно не всплывало?

метод RnQIncomingMessage
в нем делай return false и ничего не всплывет :)

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

Больше
15 года 3 мес. назад #70 от Fr0st
Fr0st ответил в теме RE: Amnesia
Понял, благодарствую)

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

Больше
15 года 2 мес. назад #71 от OverQuantum
OverQuantum ответил в теме RE: Amnesia
Итак, скрипт АнтиБлондинка, попытка первая.
-- section:global
   listAntiCapsIn = {"333333333","444444444" } -- список номеров для "АнтиБлондинка", входящие сообщения с которых подвергаются понижению регистра
   listForceCapsOut = {"333333333","444444444"} -- список номеров для "яБлондинка", исходящие сообщения на которые подвергаются повышению регистра
-- end:global

function RnQIncomingMessage(uin,flags,datetime,msg)
  -- используя метод sendmessage мы сообщаем плагину что текст, который был передан в эту функцию
  -- был модифицирован
  
  -- Модуль "АнтиБлондинка" - сообщения с определённых номеров подвергаются де-капс-изации - всегда превращаются в строчные
  for i,v in ipairs(listAntiCapsIn) do
  	if v == uin then
  	  -- номер в списке, понижаем регистр
  	  sendmessage(string.lower(msg))
  	  break
  	end
  end
  return true
end

function RnQSendMessage(uin,flags,msg)
  -- используя метод sendmessage мы сообщаем плагину что текст, который был передан в эту функцию
  -- был модифицирован

  -- Модуль "яБлондинка" - сообщения на определённые номера всегда отправляются капсом
  for i,v in ipairs(listForceCapsOut) do
  	if v == uin then
  	  -- номер в списке, повышаем регистр
  	  sendmessage(string.upper(msg))
  	  break
  	end
  end
  return true
end

Недостатки:
1) Для русских букв string.lower() и string.upper() не срабатывают.
2) Отправляемые сообщения, прошедшие через "яБлондинка", отображаются капсом в хистори R&Q.
3) Списки номеров задаются пока в скрипте, в глобальных массивах.
4) (некоторые) Другие плагины получают сообщения до Amnesia - например, мой плагин HistoryLog записывает в логи исходные сообщения, до правки регистра.

Вопросы:
1) Можно ли добиться работы string.lower() и string.upper() с русскими буквами? Или может какие-то обходные пути есть?
2) Нет ли способа поиска в массиве (table) быстрее/проще применённого for in ipairs() do if ... ?
3) Скрипт должен быть в main.lua или какая схема скриптов рекомендуется?

Questions are plentiful. Answers are few.

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

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

Вопросы:
1) Можно ли добиться работы string.lower() и string.upper() с русскими буквами? Или может какие-то обходные пути есть?
2) Нет ли способа поиска в массиве (table) быстрее/проще применённого for in ipairs() do if ... ?
3) Скрипт должен быть в main.lua или какая схема скриптов рекомендуется?


1. теоретически можно, для этого судя по слухам необходимо перевести плагин в юникод. Мне это делать лень(сорри за откровение, у меня просто с этим даже опыта не было, да и времени особо нету :)). Вариант номер 2. Можно написать отдельные функции, вынести их в отдельную библиотеку, и инклудить ее в свои скрипты. Я так написал перекодировщик из cp866 - to win1251 =).

2. Если у тебя в таблице в качестве названий полей цифры, т.е. обычный массив, то можно сделать так:
for i=1,#tableName do
  print(tableName[i])
end

3. Сейчас можно пихать все в main.lua, ибо в текущей версии нет механизма коллекций скриптов, или как это там называется? В общем, нельзя скрипты использовать просто копируя их в какую либо папочку...

Всвязи с п.3. у меня обострился давно назревший вопрос - есть ли смысл продолжать развивать Амнезию?

ps:// кстати, для задания номеров ICQ, сообщения от которых требуется фильтровать, не обязательно править скрипт. Amnesia умеет читать и писать ini файлы, а в скрипте можно создать какие нибудь команды типа /addFilterTo 555333 - добавить номер в список для фильтрования номеров, /rmFilterFrom 555333 - удалит уин из списка фильтруемых...

pps:// все таки, доделаю возможность включать/отключать скрипты галочками

ppps:// для того, чтобы подогреть мой интерес к развитию плагина, пишите здесь идеи по развитию, что бы вы в нем хотели видеть, и так далее :)
Последнее редактирование: 15 года 2 мес. назад пользователем xternalx.

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

Больше
15 года 2 мес. назад - 15 года 2 мес. назад #73 от xternalx
xternalx ответил в теме RE: Amnesia
OverQuantum, держи библиотеку мою с переопределенными методами string.lower, string.upper - они сейчас работают и с русским языком. Кроме того, там есть метод getword, который возвращает n-ное слово из строки. думаю, разберешься :)

кидаешь его в %rnqexedir%/lualib/
создаешь файлик %rnqexedir%/amnesia.lua
в нее пишишь следующий текст:
print("...amnesia.lua")
package.path = './lualib/?.lua'
package.cpath = './lualib/bin/?.dll'
print("...amnesia.lua end")
это заставит искать бинарные, и текстовые модули в папках %rnqexedir%/lualib/ - для простых скриптов, и %rnqexedir%/lualib/bin/ - для бинариков, т.е. dll модулей для lua.

и в main.lua
пишишь:
dofile('amnesia.lua') -- выполняет файл amnesia.lua, который лежит в той же директории, что и R&Q.exe
и инклудишь мою библиотеку так:
require('xternalx') -- подключить библиотеку xternalx

после этого можно спокойно переводить в верхний или в нижний регистр абсолютно любой текст, будь то русский, либо английский =)

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

Вложения:
Последнее редактирование: 15 года 2 мес. назад пользователем xternalx.

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

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

OverQuantum, держи библиотеку мою с переопределенными методами string.lower, string.upper

Спасибо, посмотрю.

Questions are plentiful. Answers are few.

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

Больше
15 года 2 мес. назад #75 от Authorised
Authorised ответил в теме RE: Amnesia
Было бы неплохо увидеть в этом плагине консоль. B)

И оформление дебагера, как лог плагина RnQ Eye(В отдельном табе, вызываемом по нажатию кнопки плагина на панели).
Ну и консоль(если вы возьмётесь :) ) тудаже.

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

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

Было бы неплохо увидеть в этом плагине консоль. B)

что вы хотите с консолью делать? какой функционал?

И оформление дебагера, как лог плагина RnQ Eye(В отдельном табе, вызываемом по нажатию кнопки плагина на панели).
Ну и консоль(если вы возьмётесь :) ) тудаже.

в отдельном табе не буду делать =)

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

Больше
15 года 1 мес. назад - 15 года 1 мес. назад #77 от Authorised
Authorised ответил в теме RE: Amnesia
Мультистроковая консоль, с исполнением скрипта по нажатию кнопки, и сохранением его в лог. :)

Возможности - моментальный доступ к тем же функциям языка которые возможны в простом скрипте, отладка (написал - сразу посмотрел результат).


Кстате замечено что функция rnq.getstatus() всегда возвращает 0(online).
(R&Q 1107.2, Lua и плагин те что висят здесь(свежайшие из всех выложеных), плагинов манипулирующих статусами - не установлено)
Последнее редактирование: 15 года 1 мес. назад пользователем Authorised.

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

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

Мультистроковая консоль, с исполнением скрипта по нажатию кнопки, и сохранением его в лог. :)

Возможности - моментальный доступ к тем же функциям языка которые возможны в простом скрипте, отладка (написал - сразу посмотрел результат),

в одном из следующих релизов сделаю.

управление Крысой через шелл - было бы мажорно! :laugh:

по подробней здесь можно?

Кстате замечено что функция rnq.getstatus() всегда возвращает 0(online).
(R&Q 1107.2, Lua и плагин те что висят здесь(свежайшие из всех выложеных), плагинов манипулирующих статусами - не установлено)

посмотрю, что там... если не ошибаюсь - это давно уже так =D

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

Больше
15 года 1 мес. назад #79 от xternalx
xternalx ответил в теме RE: Amnesia
немножко вестей с фронта.
сегодня таки осуществил 90% задуманного - следующий релиз плагина появится на этой, или на следующей неделе, и он как минимум будет уметь выполнять "сборки скриптов", прошу прощения за сумбурность, но это то, о чем меня спросили вот здесь . Кроме того, почти полностью переписано ядро плагина, хорошо это или плохо - не знаю. Сейчас плагин будет есть памяти побольше, чем раньше(оно и понятно :)). Далее, сделаю возможность подгружать ресурсы как из открытых источников(банально bmp, png, и т.д.), так и из ресурсных dll(не спрашивайте зачем, просто хочется извратиться :D).

Теперь структура каждого скрипта будет такой.
Скрипт состоит из как минимум 2х файлов - конфиг, и сам скрипт.
В конфиге указываются, о том, как называется плагин, кто его сделал, копирайты, и так далее. Кроме того, там указывается имя файла скрипта.

наглядно это выглядит так
%RnQ-USERPATH%/Amnesia/
                       Antiblond/
                                 amnesia.inf
                                 scriptfile.lua
                       Ignore/
                              amnesia.inf
                              ignore.lua
                              rqButtonLogo.ico
теперь в каждом скрипте будет определена таблица addon, одно из полей которй - scriptroot. Это поле содержит в себе путь до папки, в которой лежит конфиг и файл скрипта. Сделано для удобства, например, вместе со своим скриптом вы положили иконку, и хотите ее прикрутить к кнопке, которую создает Ваш скрипт. Вместо гемора с определением пути вручную, можно будет просто заюзать что то типа такого button.create('buttonName',addon.scriptroot..'rqButtonLogo.ico',luaFunction)
этот код создаст в окне чата кнопку, и забиндит на нее функцию luaFunction, которая тоже заранее должна будет быть определена.

Кроме того, можно будет менять порядок выполнения скриптов, а так же отключать ненужные скрипты(эта возможность будет доступна в свойствах плагина).

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

Больше
15 года 1 мес. назад - 15 года 1 мес. назад #80 от xternalx
xternalx ответил в теме RE: Amnesia
Как и обещал, выкладываю долгожданное обновление, версия 0.3.0b

В комплекте с архивом идет сам плагин, а так же небольшой sdk, в который входит 2 примера скриптов, ну и естественно, 2 библиотеки, 1 - xternalx.lua с переопределенными методами string.lower, string.upper, которые могут переводить в нижний и верхний регистр соответственно как русский, так и нерусский текст. Вторая - xternalx-ignore.lua, который предоставляет api для организации системы игноров...

Authorised, я сделал то что ты просил, наслаждайся :)
OverQuantum, ты тоже радуйся, я сделал возможность отключать ненужные плагины, кроме того, добавил возможность изменять порядок работы скриптов интуитивно понятным способом - простым перетаскиванием. Никаких кнопок :)

ссылка на файлег в первом сообщении
Вложения:
Последнее редактирование: 15 года 1 мес. назад пользователем xternalx.

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

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