Страница 21 из 26

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

Добавлено: 13:56, 19.12.2010
ОреЛ
Вопрос ко всем, ибо вы намного умнее и опытнее меня:
почему в С++ можно считывать таким образом:

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

int len;
memcpy(&len, bInBuffer, 4);
bInBuffer += 4;
UnicodeString User;
User.SetLenght(len);
memcpy(&User.c_str(), bInBuffer, len * 2);
bInBuffer += len * 2;
.........
но нельзя записать так же:
memcpy(bOutBuffer, &len, 4);
bOutBuffer += 4;
memcpy(bOutBuffer, User.c_str(), len * 2);
bOutBuffer += len * 2;
.........
?
Пришлось в цитату заносить второй код, ибо в тегах Code игнорируется цвет(

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

Добавлено: 14:10, 19.12.2010
KGB
ОреЛ писал(а):почему в С++ можно считывать таким образом:

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

int len;
memcpy(&len, bInBuffer, 4);
bInBuffer += 4;
UnicodeString User;
User.SetLenght(len);
memcpy(&User.c_str(), bInBuffer, len * 2);
bInBuffer += len * 2;
.........
но нельзя записать так же:
memcpy(bOutBuffer, &len, 4);
bOutBuffer += 4;
memcpy(bOutBuffer, User.c_str(), len * 2);
bOutBuffer += len * 2;
.........
?
Указатель останется на последнем добавленном элементе буфера, а не в начале этого буфера, и, поэтому, неправильно передаётся серверу/клиенту чата для обработки:

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

Данные???????
    ^
    |
 bOutBuffer
Сервер/клиент при этом получают:

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

ые????
^
|
bOutBuffer
Изменение bInBuffer ни на что не влияет, потому что передавать его клиенту/серверу не нужно. Думаю, можно использовать дополнительный указатель, объявленный внутри функции, чтобы не изменять bOutBuffer.

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

Добавлено: 16:53, 19.12.2010
@serg@
Нашел ошибку в системе сообщений серверных плагинов. Инициирование событий:
Создать общий канал или подключиться к уже существующему
ID: 1026
Изменить иконку
ID: 1026

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

Добавлено: 07:57, 21.12.2010
Maxim Mirgorodsky
cilvay писал(а):Уважаемые разработчики, нельзя ли сделать чтобы код, выполняющийся в функции PluginProcess был независим от чата и комфорт не ждал пока он выполниться. Если я туда запихну sleep(20000) то чат будет 20 секунд висеть. А как реализовать это без использования многопоточности?
Нельзя, так как это уже и будет многопоточность и защитить ее не представляется возможности (плагин синхронно запрашивает данные у программы).
@serg@ писал(а):Нашел ошибку в системе сообщений серверных плагинов. Инициирование событий:
Создать общий канал или подключиться к уже существующему
ID: 1026
Изменить иконку
ID: 1026
Да, в этой теме уже о ней сообщали. Исправим в следующей версии.

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

Добавлено: 11:08, 21.12.2010
@serg@
Maxim Mirgorodsky писал(а):Да, в этой теме уже о ней сообщали. Исправим в следующей версии.
Значит я забыл, что о таковом писали...Прошу прощения за повторение.

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

Добавлено: 02:23, 27.12.2010
yaotzin
Maxim Mirgorodsky здравствуйте =) у вас нет случайно примера на C# плагина клиентского ? =)

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

Добавлено: 16:39, 27.12.2010
Maxim Mirgorodsky
На C# нет.

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

Добавлено: 22:41, 27.12.2010
Zka
Здравствуйте! Я сам ещё ни одного плагина не написал...Понятия не имею, как их писать. :mrgreen:. Можно мне как-то объяснить: как можно скомпилировать проект в Delphi 2007 в *.cflpug если компилирует только в *.exe?

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

Добавлено: 23:28, 27.12.2010
KGB
Как я уже говорил, нужно посмотреть пример плагина на Delphi, это поможет. А насчёт разработки DLL - смотрите тут. Но лучше разберитесь в плагине, многое сразу станет ясно :)

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

Добавлено: 01:24, 28.12.2010
Zka
Спасибо. Скачал плагин (пример плагина (Repeater Plugin). В Delphi прокрутил. Разобрался.

А теперь у меня новый вопрос: а как вставить изображение в пункт "О программе"? Как я не корчал код своими фантазиями ничего нового не было. Можно рассказать как вставить изображение в данной части кодировки (описание раздела "О программе" )

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

Добавлено: 15:44, 29.12.2010
minlexx
..... Сервер при этом пишет в логах:
E25 [29.12.2010 2:58:05.358] (10.38.7.84): подозрение на атаку (тип 2248)
... Рано пытаюсь что-то слать в чат ещё до авторизации?) (поиском что-то нашел) но все жё если есть инфа что значит именно этот номер ошибки....
:lol: сам понял

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

Добавлено: 17:22, 29.12.2010
Cilvay
Действительно, ув. разработчики чата, сделайте пожалуйста какую нить табличку со значениями кодов этих. А то появляются непонятные сообщения типа "подозрения на атаку (тип ххх)" или "Modul 1(xx) is activated" и т.д.

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

Добавлено: 18:10, 29.12.2010
Maxim Mirgorodsky
На самом деле это проблема системы плагинов, что она позволяет плагину недопустимые с точки зрения протокола действия. Будет исправлено.

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

Добавлено: 17:55, 04.01.2011
SV
Пытаюсь забанить пользователя,но не чего не получается

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

		
aDataToSend := fTextToAnsiString('Repeater')+  //имя виртуального пользователя
fIntegerToAnsiString(0)+  //тип идентификации
fTextToAnsiString(uSenderLogin)+ //объект идентификации
fIntegerToAnsiString(2)+ //тип ограничения
fTextToAnsiString(uChannel)+ //канал ограничения
fIntegerToAnsiString(1)+ //срок
fTextToAnsiString('123')+//Причина
fIntegerToAnsiString(1);//тип анонимности
CommFortProcess(dwPluginID, 1040, PAnsiChar(aDataToSend), Length(aDataToSend))
Что не так?

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

Добавлено: 18:38, 04.01.2011
KGB
anonim писал(а): aDataToSend := fTextToAnsiString('Repeater')+ //имя виртуального пользователя
fIntegerToAnsiString(0)+ //тип идентификации
fTextToAnsiString(uSenderLogin)+ //объект идентификации
fIntegerToAnsiString(2)+ //тип ограничения
fTextToAnsiString(uChannel)+ //канал ограничения
fIntegerToAnsiString(1)+ //срок
fTextToAnsiString('123')+//Причина
fIntegerToAnsiString(1);//тип анонимности
CommFortProcess(dwPluginID, 1040, PAnsiChar(aDataToSend), Length(aDataToSend))
Срок - тип Double, а не целое число. Было тут