Инструкции по написанию плагинов
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
В настоящее время исчерпывающий документации по написанию плагинов нет. Надо это устранять.
Предлагаю в данной теме собирать общие знания и выкладывать ссылки на
- Описания
- Инструкции
- Документацию
- Исходники плагинов
- SDK
От меня пока два вклада
1) R&Q mini SDK v4:
rnq.ru/component/option,com_remository/func,fileinfo/id,80/
Содержание:
- краткое введение в систему плагинов
- описание пакетов, включая нововведения до 1073 (на английском)
- заголовочные файлы с константами, а также вспомогательные функции для сбора/разбора пакетов для C/C++ и Delphi
Перечень нововведений (по сравнению с 3 версией - описания от rejetto):
PG_CHAT_UIN
PG_CHAT_XYZ
PG_TRANSLATE
PG_THEME_PIC
PG_STATUS
PG_XSTATUS
PG_RNQ_BUILD
PE_AUTHREQ_SENT
PE_AUTH_GOT
PE_AUTHDENIED_GOT
PE_SELECTTAB
PE_DESELECTTAB
PE_CLOSETAB
PE_QUIT
PE_XSTATUSMSG_SENDING
PE_XSTATUS_REQ_GOT
PC_ADDBUTTON
PC_MODIFY_BUTTON
PC_DELBUTTON
PC_TAB_ADD
PC_TAB_MODIFY
PC_TAB_DELETE
PC_PLAYSOUND
PC_PLAYSOUNDFN
PC_RELOAD_THEME
PC_RELOAD_LANG
PC_ADD_MSG
PC_ADD_TO_INPUT
PC_SET_XSTATUS
Описания нововведений составлено со слов и исходников, за точность ручаться не могу, лично не проверял.
Замечания, предложения, добавления и исправления - всё приветствуется.
2) Выложенный ещё в мае плагин
AwayByLock 0.8 с исходниками (Visual C):
rnq.ru/component/option,com_remository/I.../func,fileinfo/id,2/
Общий принцип создания плагина и разбора пакетов представлен, мне кажется.
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Headless
- Не в сети
- Premium Member
- Сообщений: 95
- Спасибо получено: 0
Еще неплохо бы было добавить описания неочевидных вещей. Вот я например не понял что такое PE_EMAILEXP_GOT(честно говоря первый раз это вижу )
PS:
Спасибо OverQuantum'у и ObServeR'у за работу, которую должен был сделать Рапид <br /><br />Post edited by: Headless, at: 2007/09/02 05:23
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Dolphin
- Не в сети
- Premium Member
- Сообщений: 105
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- PRO
- Не в сети
- Elite Member
- Сообщений: 300
- Спасибо получено: 0
[code:1]
if event = PE_MSG_GOT
INT sender uin
INT flags
TIME when
ISTRING text
possible replies:
1) PM_ABORT
if event = PE_MSG_SENT
INT dest uin
INT flags
ISTRING text
[/code:1]
надо бы заменить на
[code:1]
if event = PE_MSG_GOT
INT sender uin
INT flags
TIME when
ISTRING text
possible replies:
1) PM_ABORT
2) PM_DATA
ISTRING message for history
if event = PE_MSG_SENT
INT dest uin
INT flags
ISTRING text
possible replies:
1) PM_DATA
ISTRING message for sending
2) PM_DATA
ISTRING message for sending
ISTRING message for history
[/code:1]
Вышеописанные ответы на уведомления плагина крысой обрабатываются корректно, проверил только что)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
Если б я знал...Еще неплохо бы было добавить описания неочевидных вещей. Вот я например не понял что такое PE_EMAILEXP_GOT(честно говоря первый раз это вижу )
Это одно из событий, оставших с древних времён:
- PE_GCARD_GOT
- PE_EMAILEXP_GOT
- PE_WEBPAGER_GOT
- PE_FROM_MIRABILIS_GOT
Их них сейчас вроде только PE_WEBPAGER_GOT можно кое-как протестить - надо отправить мессагу с сайта icq.com
К следующей версии попробую набросать описания.
PRO писал:
О, вот это ценная информация, не знал. Внесу обязательно.Нашел небольшую ошибку в api4.txt:
...
надо бы заменить на
...
Проверь ещё, пожалуйста, PM_ABORT на PE_MSG_SENT приведёт к отмене отправки?
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- PRO
- Не в сети
- Elite Member
- Сообщений: 300
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- PRO
- Не в сети
- Elite Member
- Сообщений: 300
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Fr0st
- Не в сети
- Platinum Member
- Сообщений: 360
- Спасибо получено: 0
А еще лучше - на основе этого модуля забацать интерфейс Крысы, чтобы можно было нормально заюзать ООП без всяких там callback-функций, раскиданных по нескольким модулям.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Rapid D
- Не в сети
- Administrator
- Сообщений: 1995
- Спасибо получено: 35
А вот отладить апи - не помешало бы, а то у семи няник, R&Q не выключаеца и зависает от плагинов
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
Я на Delphi не пишу, мне довольно трудно разбираться в Delphi-шном коде. Давайте кто-нибудь другой займётся сборкой Delphi-шных функций, особенно высокого уровня.Неплохо было бы включить в дистриб АПИ модуль CallExec, который все копируют друг у друга и выкидывают все ненужное. Функции-то действительно полезные, намного упрощают взаимодействие с Крысой, а единого стандарта нету.
Ох и весело отлаживать ООП-код, когда нет исходников одного модуля...А еще лучше - на основе этого модуля забацать интерфейс Крысы, чтобы можно было нормально заюзать ООП без всяких там callback-функций, раскиданных по нескольким модулям.
Нет, я считаю межмодульный интерфейс при runtime-связывании должен быть такой же, какой использует операционная система в своей основе. Винда сейчас основана на обычных DLL - такой и должен быть интерфейс.
Но ты можешь написать плагин-хост, который будет подключать к себе плагины другого формата - через ООП.
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Fr0st
- Не в сети
- Platinum Member
- Сообщений: 360
- Спасибо получено: 0
Плагины на основе ООП - фтопку!
OverQuantum писал:
Нет, я считаю межмодульный интерфейс при runtime-связывании должен быть такой же, какой использует операционная система в своей основе. Винда сейчас основана на обычных DLL - такой и должен быть интерфейс.
Наверно, тут небольшая недопонятость... я имел в виду объединить все функции из CallExec в один класс, например, TRnQApp, ну и уже с ним выполнять действия. Фактически это лишь удобная обёртка над апи-шными функциями, чтобы не заморачиваться с преобразованием чисел в строку, сбором параметрических строк и т.п. Принцип взаимодействия с программой всё равно останется прежним.
P.S. Не понял насчёт отладки и отсутствия сорсов модуля...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- CowBrat
- Не в сети
- Elite Member
- Сообщений: 201
- Спасибо получено: 0
Хочется попробовать свои силы, но пока даже с чего начать не знаю
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
погляди эти:
old.rnq.ru/modules/wfdownloads/singlefile.php?cid=4&lid=34
old.rnq.ru/modules/wfdownloads/singlefile.php?cid=6&lid=21
Вроде, довольно простые.
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.