Архив: Технология создания плагинов

Здесь обсуждаются технические аспекты создания дополнений.
Maxim Mirgorodsky
Администратор
Сообщения: 6871
Зарегистрирован: 09:56, 27.06.2005

Re: Технология создания плагинов

Сообщение Maxim Mirgorodsky »

KGB писал(а):
Maxim Mirgorodsky писал(а):
KGB писал(а):Maxim Mirgorodsky,
Что может привести к

Код: Выделить всё

[21.09.2010 17:23:55] Ошибка при обработке программой сообщения от плагина "Mafia.cfplug" c ID=0. Плагин остановлен.
? Что нужно передать программе, чтобы вызвать такую ошибку?
Не должно быть такого, разве что в памяти какие-то ошибки. Это проявилось один раз?
У меня не проявлялось ни разу, иногда проявляется у пользователей, как я заметил, при нескольких действиях плагина подряд (закрытие всех открытых приватов, отправка большого количества приватов и т.п)
Попытаемся разобраться.
dr1v3 писал(а):Поковырял тут api для серверного плагина и возникло два вопроса: как обрабатывать приглашения в каналы и как зайти в "закрытый" канал, т.е. тот, куда можно только пригласить? И ещё: когда пытаюсь зайти в канал по 1026, не пускает с кодом 1091.1 P.S. Не пускает в уже созданные каналы, а создавать и заходить получается.

Код: Выделить всё

var aDataToSend : AnsiString;
    uText : String;
begin
aDataToSend :=fTextToAnsiString(frm_Settings.lbledt_nick.text)+ 
fIntegerToAnsiString(1)+
fTextToAnsiString(frm_Settings.edt1.text)+
fIntegerToAnsiString(0); 
CommFortProcess(dwPluginID, 1026, PAnsiChar(aDataToSend), Length(aDataToSend));
end;
В блоке данных 1091 есть еще код причины, по которому можно определить причину.
@serg@ писал(а):
Maxim Mirgorodsky писал(а):
@serg@ писал(а):Есть предположение о некорректном распознании режима для ID=67.
Если кто может перепроверьте
Посмотрели - вроде нет проблем.

Опишите подробнее что именно не получается с режимом.

Обращаем внимание, что если канал уже создан, то производится только вход, а значение режима игнорируется.
Создаю каналы (имена флудовские. чтоб точно до этого такого канала не было создано):
выавыававыавы=0
авпавпаввыав=1
цукуцкуцкуцкуц=2
мсимсимимимс=3
прилагаю скрины
1.jpg
2.jpg
4.jpg
А какой режим при этом указывается?
$teelR@t писал(а):Maxim Mirgorodsky, а я так вижу для плагинов отдельные потоки не выделяются? То есть если плагин зависнет, то и сервак вместе с ним...
На текущий момент да.
Аватара пользователя
dr1v3
Сообщения: 23
Зарегистрирован: 00:38, 18.09.2010

Re: Технология создания плагинов

Сообщение dr1v3 »

Maxim Mirgorodsky писал(а): Поковырял тут api для серверного плагина и возникло два вопроса: как обрабатывать приглашения в каналы и как зайти в "закрытый" канал, т.е. тот, куда можно только пригласить? И ещё: когда пытаюсь зайти в канал по 1026, не пускает с кодом 1091.1 P.S. Не пускает в уже созданные каналы, а создавать и заходить получается.

В блоке данных 1091 есть еще код причины, по которому можно определить причину.
Я указал, 1091.1, код причины 1. Непонятно получилось :)
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

Re: Технология создания плагинов

Сообщение @serg@ »

Maxim Mirgorodsky писал(а):
А какой режим при этом указывается?
написал-же:
выавыававыавы=0
авпавпаввыав=1
цукуцкуцкуцкуц=2
мсимсимимимс=3
LIT
Сообщения: 251
Зарегистрирован: 08:32, 28.06.2007

Re: Технология создания плагинов

Сообщение LIT »

Уважаемые программисты, в некоторых Ваших плагинах "жестко зашиты смайлы".
Под каждый плагин не подстроишь установленный пакет смайлов, поэтому желательно иметь возможность их редактировать или вообще не использовать (что более рационально).
ZigZagkms
Сообщения: 109
Зарегистрирован: 08:23, 11.12.2008
Откуда: Комсомольск-на-Амуре
Контактная информация:

Re: Технология создания плагинов

Сообщение ZigZagkms »

Maxim Mirgorodsky

Скажите пожалуйста, так и должно быть что не отсылается событие "Отключение от канала стороннего или виртуального пользователя" (ID = 1073) когда выходит виртуальный пользователь с канала и на канале нету другого виртуального пользователя.

ID 1073 Блок данных: текст(имя виртуального пользователя, который присутствует в данном канале) + текст(канал) + пользователь(отключающийся пользователь)

Почему не приходит такое событие когда имя виртуального пользователя и отключающийся пользователь равны? Получается чтобы отслеживать выход виртуального пользователя необходимо наличие в канале еще одного виртуального пользователя, что очень не удобно.
p.s. проверил не приходит при самовольном выходе и при наложении ограничения.
Забросил, всем спасибо, исходники раздаю кому надо https://github.com/ZigZagkms
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

Re: Технология создания плагинов

Сообщение @serg@ »

LIT писал(а):Уважаемые программисты, в некоторых Ваших плагинах "жестко зашиты смайлы".
Под каждый плагин не подстроишь установленный пакет смайлов, поэтому желательно иметь возможность их редактировать или вообще не использовать (что более рационально).
Твой запрос сильно повышает сложность плагина, многие начинающие программисты не способны организовать данный вариант, подобный способ есть в боте от Skif'а, там в базе данных хранится половина фраз, но более простые проекты идут обычно без баз, а записывать тупо в текстовый файл с индексацией по номеру строки себе дороже (стоит сбить хоть одну строку и все фразы будут лезть не туда где нужны). Остаётся только делать языковые листинги, что не каждый умеет.
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Технология создания плагинов

Сообщение supermet »

Уважаемые программисты, в некоторых Ваших плагинах "жестко зашиты смайлы".
Под каждый плагин не подстроишь установленный пакет смайлов, поэтому желательно иметь возможность их редактировать или вообще не использовать (что более рационально).
Проще всего подключить к проекту какой-нибудь легкий движок базы данных (например SQLite), и в ней создать индексированную таблицу с текстом и смайлами.
Maxim Mirgorodsky
Администратор
Сообщения: 6871
Зарегистрирован: 09:56, 27.06.2005

Re: Технология создания плагинов

Сообщение Maxim Mirgorodsky »

dr1v3 писал(а):
Maxim Mirgorodsky писал(а): Поковырял тут api для серверного плагина и возникло два вопроса: как обрабатывать приглашения в каналы и как зайти в "закрытый" канал, т.е. тот, куда можно только пригласить? И ещё: когда пытаюсь зайти в канал по 1026, не пускает с кодом 1091.1 P.S. Не пускает в уже созданные каналы, а создавать и заходить получается.

В блоке данных 1091 есть еще код причины, по которому можно определить причину.
Я указал, 1091.1, код причины 1. Непонятно получилось :)
Несоответствие требованиям к названию канала. Если уверены что соответствует, то, возможно, как-то некорректно передаете программе название канала?
ZigZagkms писал(а):Maxim Mirgorodsky

Скажите пожалуйста, так и должно быть что не отсылается событие "Отключение от канала стороннего или виртуального пользователя" (ID = 1073) когда выходит виртуальный пользователь с канала и на канале нету другого виртуального пользователя.

ID 1073 Блок данных: текст(имя виртуального пользователя, который присутствует в данном канале) + текст(канал) + пользователь(отключающийся пользователь)

Почему не приходит такое событие когда имя виртуального пользователя и отключающийся пользователь равны? Получается чтобы отслеживать выход виртуального пользователя необходимо наличие в канале еще одного виртуального пользователя, что очень не удобно.
p.s. проверил не приходит при самовольном выходе и при наложении ограничения.
Спасибо за информацию, проверим, если проблема подтвердится - исправим.
@serg@ писал(а):
Maxim Mirgorodsky писал(а):
А какой режим при этом указывается?
написал-же:
выавыававыавы=0
авпавпаввыав=1
цукуцкуцкуцкуц=2
мсимсимимимс=3
Проверили - проблем нет с этой функцией.
Плагин, который при авторизации пользователя создает 4 канала с разными режимами (с исходником на C++ Builder):
http://www.commfort.com/tmp/plugin_channels_mode.rar
$teelR@t
Сообщения: 348
Зарегистрирован: 19:14, 30.03.2008
Откуда: Украина
Контактная информация:

Re: Технология создания плагинов

Сообщение $teelR@t »

Maxim Mirgorodsky писал(а):
$teelR@t писал(а):Maxim Mirgorodsky, а я так вижу для плагинов отдельные потоки не выделяются? То есть если плагин зависнет, то и сервак вместе с ним...
На текущий момент да.
Ну тогда, пожалуйста, подскажите как реализовать загрузку в dll в отдельном потоке :)
Maxim Mirgorodsky
Администратор
Сообщения: 6871
Зарегистрирован: 09:56, 27.06.2005

Re: Технология создания плагинов

Сообщение Maxim Mirgorodsky »

> загрузку в dll

Непонятен вопрос.
$teelR@t
Сообщения: 348
Зарегистрирован: 19:14, 30.03.2008
Откуда: Украина
Контактная информация:

Re: Технология создания плагинов

Сообщение $teelR@t »

Maxim Mirgorodsky писал(а):> загрузку в dll

Непонятен вопрос.
Ошибся "загрузку dll в отдельном потоке", чтобы все функции выполнялись отдельно и не тормозили сервак
Аватара пользователя
dr1v3
Сообщения: 23
Зарегистрирован: 00:38, 18.09.2010

Re: Технология создания плагинов

Сообщение dr1v3 »

$teelR@t писал(а): Ошибся "загрузку dll в отдельном потоке", чтобы все функции выполнялись отдельно и не тормозили сервак
Да как обычно, создаётся поток и там выполняются все свои функции и процедуры. Если что, гуглить про TThread.
Аватара пользователя
dr1v3
Сообщения: 23
Зарегистрирован: 00:38, 18.09.2010

Re: Технология создания плагинов

Сообщение dr1v3 »

Сколько максимально можно подключить виртуальных пользователей к серверу через плагин?
$teelR@t
Сообщения: 348
Зарегистрирован: 19:14, 30.03.2008
Откуда: Украина
Контактная информация:

Re: Технология создания плагинов

Сообщение $teelR@t »

dr1v3 писал(а):Сколько максимально можно подключить виртуальных пользователей к серверу через плагин?
Читайте внимательно API:

Код: Выделить всё

Плагин может подключать неограниченное количество виртуальных пользователей.
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

Re: Технология создания плагинов

Сообщение @serg@ »

Maxim Mirgorodsky писал(а): Проверили - проблем нет с этой функцией.
Плагин, который при авторизации пользователя создает 4 канала с разными режимами (с исходником на C++ Builder):
http://www.commfort.com/tmp/plugin_channels_mode.rar
Сегодня ещё раз перепроверил с полными правами, по прежнему не делает каналы, отображаемые в списке каналов,
версия клиента 5e, права, как уже писал, полные.

Продолжение в следующем сообщении :arrow:
Вложения
2.jpg
(67.28 КБ) 40 скачиваний
1.jpg
(66.58 КБ) 35 скачиваний
0.jpg
(67.31 КБ) 44 скачивания
Последний раз редактировалось @serg@ 18:29, 28.09.2010, всего редактировалось 1 раз.
Закрыто