Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

Парсинг системных сообщений

Рег
17 Мар 2016
Сообщения
51
Реакции
0
Возможно ли спарсить сообщения типа: "начата регистрация на 40-50 tvt"?

ChatMessage не ловит подобные сообщения
 
@AmonRay, приведу пример куска кода из скрипта Krickt

while (true) do
begin
Engine.WaitAction([laSysMsg], p1, p2);
print(p1);
case p1 of
2088: begin print('10 минут до осады'); Engine.BlinkWindow(true); PlaySound('Sounds/hp.wav'); end;
2090: begin print('Осада началась'); Engine.BlinkWindow(true); PlaySound('Sounds/hp.wav'); end;
end;
end;

Думаю дальше сам разберешься
 
Есть прога которой можно вскрыть файлик чата и там найти поиском текста код сообщения =) И думаю подставить на его место и вроде как что-то выйдет =)
 
Онлайн-редактор systemmsg, для быстрого поиска ид самое то - тыц
 
magogs, Donny это вовсе не systemmsg. Такие сообщения приходят с сервера и их быть не может в папке с клиентом.

Спасибо savant за подсказку. Обязательно попробую и спасибо Krickt за исходники



savant, боюсь, что одним этим не обойтись. Уровень ТВТ нужно дополнительно определять скорее всего.
не думаю что в этом может возникнуть проблема. Я планирую такую логику вложить:

идет сообщение об регистрации на твт 20-29 лвл, окна быстренько релогаются и заходят на персонажа 20 лвла (логин происходит по ячейкам), после чего принимают диалог и улетают на эвент. После эвента (проверка по событию телепорт дистанц) запускается sendMail (отправляем награду с эвента на основу). И зацикливаем это дело под разные уровни. Прийдется ввести небольшой switch/case, но уже уже другой разговор :)
 
Код:
38 1 u,Эвент TGS2002 начинается!\0 0 FF FF 0 FF a, a, 0 0 0 0 0 a, a,none\0
39 1 u,Эвент TGS2002 закончен. Всем большое спасибо.\0 0 FF FF 0 FF a, a, 0 0 0 0 0 a, a,none\0

Вот что я нашел у себя в патче systemmsg
Где TGS2002 Єто скорее всего и есть сис сообщение
 
@magogs, id сообщения о начале ивента в данном случае = 38
 
@SARCAZM, я не про то , я про серверноее сообщение которое выводит текст, начата регистрация на TGS2002
ТГС как бы переменая корторая выводит текст отправлиный по ИД.

AmonRay написал(а):
Такие сообщения приходят с сервера и их быть не может в папке с клиентом.
 
@magogs, у меня нет такого там :) На сервере это обычный ГМ анонс
 
Вот что я нашел в мануале =) Думаю решит твою проблемку =)
Безымянный.jpg
Код:
 if (ChatMessage.ChatType = mtSystem) and ChatMessage.Unread then 
      begin
            Index:=Pos('TVT',ChatMessage.Text);
            if index>0 then begin
            end;
      end;
 
@magogs, не отлавливает такое :( Пробовал в print'e отловить, просто 0 реакции

var Index:integer;
p1:integer;
p2:integer;

begin
while true do begin
begin
print(Engine.WaitAction([laChat], p1, p2));
if(ChatMessage.Unread) then begin
print(ChatMessage.ChatType);
print(ChatMessage.Text);

if (ChatMessage.ChatType = mtSystem) and ChatMessage.Unread then
begin
Index:=Pos('CtF',ChatMessage.Text);
if index>0 then begin
print('CtF');
end;

Index:=Pos('TVT',ChatMessage.Text);
if index>0 then begin
print('TVT');
end;
end;
end;

end;
end;
end.

мой код уже похож на помойку :))
 
@AmonRay, Зачем тебе ?

print(Engine.WaitAction([laChat], p1, p2));
if(ChatMessage.Unread) then begin
print(ChatMessage.ChatType);
print(ChatMessage.Text);
Если у тебя есть

if (ChatMessage.ChatType = mtSystem) and ChatMessage.Unread then
А вообще на тебе норм код =)

var Index:integer;

begin
while true do begin
if (ChatMessage.ChatType = mtSystem) and ChatMessage.Unread then
begin
Index:=Pos('CtF',ChatMessage.Text);
if index>0 then begin
print('CtF');
end;

Index:=Pos('TVT',ChatMessage.Text);
if index>0 then begin
print('TVT');
end;
end;
end;
end.

Теперь проверь и запели в отдельную функцию. После там где принт твт всталяй свою на авто релог =)
 
print'ы были для попытки поймать сообщение об начале TvT, запихнул всё что нашел в документации. Ничего не находит этот GM annonce (хотя я уже не знаю что это такое). Спасибо за желание помочь :)
 
ChatMessage.ChatType = mtSystem у тебя ловит сюда анонс?



AmonRay написал(а):
запихнул всё что нашел в документации. Ничего не находит этот GM annonce (хотя я уже не знаю что это такое). Спасибо за желание помочь
вообще работает то что я тебе отписал ?
 
версия бота какая?
 
@AmonRay, в нем и проблема, так как он обрабатывает только общий и крик чат
Можешь потестить на клан чате, тоже ни чего не выйдет
 
Я вот не так познателен в этой всей фиче =)
 
Назад
Сверху