Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Auto HotKey создание скрипта

Jafar Astrov Ученик (96), открыт 5 дней назад
Я хотел бы обратиться с просьбой о помощи в создании скрипта на языке AutoHotkey (AHK) для игры RADMIR RP. Основная цель скрипта – автоматизация процесса слежения за игроками на основании текстовых репортов, получаемых в чат-логах игры.
Функциональные требования к скрипту:
Слежка за игроками:
Скрипт должен реагировать на сообщения с текстом формата:
[RADMIR] Nick_Player[ID]: (Текст репорта)
где ID – это идентификатор игрока, на которого поступила жалоба.
Оповещения:
Если в чат приходит репорт, скрипт должен выводить уведомление в чате с предложением ответить на репорт, нажав сочетание клавиш (Alt+B).
Если в репорте содержится жалоба на конкретного игрока, скрипт должен предлагать проследить за нарушителем, используя команду /sp [ID], при этом предлагая нажать сочетание клавиш (Alt+X).



Формат сообщений:



Скрипт должен обрабатывать только последнюю строку лога, чтобы избежать ложных срабатываний на старые сообщения.
1 ответ
Рустам Абдрашитов Мыслитель (9508) 5 дней назад
На
 #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
Jafar AstrovУченик (96) 5 дней назад
чет не работает
Похожие вопросы