На
#Persistent
; Путь к лог-файлу
logFilePath := "C:\путь\к\лог-файлу.txt"
; Горячие клавиши для действий
Hotkey, !B, RespondToReport
Hotkey, !X, TrackPlayer
; Переменные для хранения информации о последнем репорте
global playerNick, playerID, reportText
; Таймер для проверки лога
SetTimer, CheckLog, 1000
Return
CheckLog:
if !FileExist(logFilePath) ; Проверка существования файла
{
MsgBox, 48, Ошибка, Лог-файл не найден. Проверьте путь: %logFilePath%
Return
}
FileReadLine, lastLine, %logFilePath%, -1 ; Чтение последней строки лога
if (lastLine != prevLine) ; Проверка, отличается ли она от предыдущей
{
prevLine := lastLine
; Проверка на соответствие формату репорта
if RegExMatch(lastLine, "\[RADMIR\] (\w+)_(\w+)\[(\d+)\]: (.+)", match)
{
playerNick := match1 . "_" . match2
playerID := match3
reportText := match4
; Отображение уведомления
MsgBox, 64, Новый репорт, `nИгрок: %playerNick%[%playerID%]`nТекст: %reportText%`n`nНажмите Alt+B для ответа.`nНажмите Alt+X для слежки.
}
}
Return
RespondToReport:
; Код для ответа на репорт
if (playerNick != "")
{
SendInput, {Enter}/ответ на репорт {Enter}
MsgBox, 64, Ответ отправлен, Вы ответили на репорт игрока %playerNick%.
}
else
{
MsgBox, 48, Ошибка, Нет активного репорта для ответа.
}
Return
TrackPlayer:
; Код для слежения за игроком
if (playerID != "")
{
SendInput, {Enter}/sp %playerID%{Enter}
MsgBox, 64, Слежка активирована, Вы следите за игроком %playerNick%.
}
else
{
MsgBox, 48, Ошибка, Нет активного игрока для слежки.
}
Return
Функциональные требования к скрипту:
Слежка за игроками:
Скрипт должен реагировать на сообщения с текстом формата:
[RADMIR] Nick_Player[ID]: (Текст репорта)
где ID – это идентификатор игрока, на которого поступила жалоба.
Оповещения:
Если в чат приходит репорт, скрипт должен выводить уведомление в чате с предложением ответить на репорт, нажав сочетание клавиш (Alt+B).
Если в репорте содержится жалоба на конкретного игрока, скрипт должен предлагать проследить за нарушителем, используя команду /sp [ID], при этом предлагая нажать сочетание клавиш (Alt+X).
Формат сообщений:
Скрипт должен обрабатывать только последнюю строку лога, чтобы избежать ложных срабатываний на старые сообщения.