Здесь вы можете задать любые вопросы по MyChat, по работе программы, её настройке, лицензированию и т.д.
BiSYSergey
Здравствуйте, подскажите почему на сервере не происходит протоколирование приват сообщений пользователей. Галочка "протоколы приватов" стоит, и стоит "древовидная структура папок". версия сервера 4.8 FREE
Аватара пользователя
Алексей Пикуров
Добрый день!

Протоколирование приватных разговоров на сервере доступно только в полной версии MyChat Server. В бесплатной версии протоколирование приватов не ведётся.

Ссылка для закачки полной версии с 30-идневным испытательным сроком использования: http://www.nsoft-s.com/downloadmychat.html
BiSYSergey
а возможно реализовать такую функцию через скрипты тогда???
Аватара пользователя
Алексей Пикуров
А зачем? Чтобы обойти ограничение бесплатной версии и иметь функционал платной? :)

Формально - можно :) Используя скриптовый движок на сервере. Документация в справке, можете попробовать. Но создавать такой скрипт мы не будем, думаю Вы понимаете, почему :)
BiSYSergey
в бесплатной версии и так много ограничений. можно было эту возможность и оставить.
я примерно понял как это сделать скриптом. сейчас сижу реализовываю данную функцию.
BiSYSergey
ну вот скрипт готов, если правила не запрещают могу выложить его здесь для ознакомления
Аватара пользователя
Алексей Пикуров
Не запрещают, у нас демократия :)

Выкладывайте, конечно. Людям, думаю, будет интересно почитать.
BiSYSergey
OnChatServerStart
------------------------
begin
If FolderExists('D:\Program Files\MyChatServerFree\PrivateLogs')=False
Then CreateFolder('D:\Program Files\MyChatServerFree\PrivateLogs');
end.



OnPrivateMessage
------------------------
var i, j: Integer;
Hour, Min, Sec, mSec :Word;
Year, Month, Day :Word;
str, strTime, strDir, strFile: String;

begin
strDir:='D:\Program Files\MyChatServerFree\PrivateLogs\';

str:=''; strFile:=''; i:=0; j:=0;
GetSystemTime(Hour, Min, Sec, mSec);
GetSystemDate(Year, Month, Day);
strTime:=IntToStr(Hour)+':'+IntToStr(Min)+':'+IntToStr(Sec);
str:=mGetLastPrivateMessage(i,j);
If i<j then strFile:=IntToStr(Day)+IntToStr(Month)+IntToStr(Year)+'_'+mGetNickFromUIN(i)+'-'+mGetNickFromUIN(j)+'.txt'
else strFile:=IntToStr(Day)+IntToStr(Month)+IntToStr(Year)+'_'+mGetNickFromUIN(j)+'-'+mGetNickFromUIN(i)+'.txt';
AddLineToFile(strDir+strFile,strTime+' '+mGetNickFromUIN(i)+'...'+mGetNickFromUIN(j)+'->'+str);
end.

Логи создаются каждый день один для двух пользователей которые переписываются.
походу mGetLastPrivateMessage(i,j) возвращает значения первого и второго пользователя, хотя в описании это не указанно.
Немного громоздка, так как функций намного меньше чем в Delphi ну это уже не важно, главное результат
Аватара пользователя
Алексей Пикуров
Неплохо. Каких функций в скриптовом движке Вам не хаватало? Постараемся добавить в следующей версии. Мы расширяем скриптовый движок в соответствии с пожеланиями людей, которые пишут скрипты.
BiSYSergey
тогда расскажу о проблемах с которыми столкнулся при написании скрипта.
1. сервер не знает функции mDBGetUINFromNick, хотя она есть в описаниях. Это меня удивило :)
2. при отправки пользователями сообщений одновременно в одно и тоже время, сообщение одного пользователя теряется, а в окне высвечивается одинаковое сообщения от того и другого
3. ну и по функциям, мне не хватило функций Time(Now), Date(Now), TimeToStr, DateToStr
Аватара пользователя
Алексей Пикуров
Благодарю за подробный ответ.
BiSYSergey писал(а):тогда расскажу о проблемах с которыми столкнулся при написании скрипта.
1. сервер не знает функции mDBGetUINFromNick, хотя она есть в описаниях. Это меня удивило :)

Эта функция запланирована к удалению, из-за того, что могут быть одинаковые ники. Поправим.
2. при отправки пользователями сообщений одновременно в одно и тоже время, сообщение одного пользователя теряется, а в окне высвечивается одинаковое сообщения от того и другого

Да, есть такой глюк, будет исправлено.
3. ну и по функциям, мне не хватило функций Time(Now), Date(Now), TimeToStr, DateToStr

Ок, добавим в новой версии, 4.9. Следите за новостями.