Загрузка данных
; ============================================================
; Админ-тул для Grand Mobile (эмулятор на ПК)
; Версия 3.1
; Работает через чтение лога чата и отправку готовых команд
; ============================================================
#NoEnv
#SingleInstance, Force
SetWorkingDir %A_ScriptDir%
SetTitleMatchMode, 2
; ========== НАСТРОЙКИ (ОБЯЗАТЕЛЬНО ПРОВЕРЬТЕ!) ==========
; 1. Путь к файлу лога чата (chatlog.txt)
; Обычно для SAMP/CRMP он лежит в Документах.
; Для эмулятора – найдите папку с данными игры внутри эмулятора.
; Пример для BlueStacks: C:\ProgramData\BlueStacks\Engine\...
; Поставьте свой реальный путь.
Global LogPath := A_MyDocuments "\GTA San Andreas User Files\chatlog.txt"
; 2. Точное название окна вашего эмулятора (как написано в заголовке)
; Например: "BlueStacks App Player", "LDPlayer", "MEmu", "NoxPlayer"
EmulatorWinTitle := "BlueStacks App Player"
; ========== СЛУЖЕБНЫЕ ФУНКЦИИ ==========
Global LastID := "" ; запоминает ID последнего нарушителя
; Активировать окно эмулятора
ActivateEmulator() {
WinActivate, %EmulatorWinTitle%
Sleep, 200
}
; Отправить команду в чат (открывает чат, вводит команду, нажимает Enter)
SendCommand(command) {
ActivateEmulator()
SendInput, t
Sleep, 50
SendInput, %command%
Sleep, 50
SendInput, {Enter}
}
; Показать всплывающую подсказку на 2.5 секунды
ShowTip(text) {
ToolTip, %text%
SetTimer, RemoveTip, -2500
}
RemoveTip:
ToolTip
Return
; ========== ОБРАБОТКА РЕПОРТА (F2) ==========
; Читает лог, находит последний репорт формата ||NewReport|| ... (ID нарушителя)
; Запоминает ID и отправляет /sp {ID}
F2::
ActivateEmulator()
FileRead, LogContent, %LogPath%
if ErrorLevel {
ShowTip("ОШИБКА: Не удалось прочитать лог. Проверьте путь: " LogPath)
return
}
; Ищем ID нарушителя – берём второй ID в строке репорта (обычно это ID того, на кого жалуются)
RegExMatch(LogContent, "U)\|\|NewReport\|\|.*?(\d+).*?(\d+)", Match)
if (Match2 != "") {
LastID := Match2
SendCommand("/sp " LastID)
ShowTip("Слежка за ID: " LastID " (репорт обработан)")
} else {
; Если не нашли второй, берём первый (на всякий случай)
RegExMatch(LogContent, "U)\|\|NewReport\|\|.*?(\d+)", Match)
if (Match1 != "") {
LastID := Match1
SendCommand("/sp " LastID)
ShowTip("Слежка за ID: " LastID " (репорт обработан, ID из первого)")
} else {
ShowTip("Новых репортов в логе не найдено")
}
}
Return
; ========== ГОРЯЧИЕ КЛАВИШИ ДЛЯ КОМАНД ==========
; F3 – Телепорт к игроку (/goto {ID})
F3::
if (LastID = "") {
ShowTip("Сначала обработайте репорт (F2)")
return
}
SendCommand("/goto " LastID)
ShowTip("Телепорт к игроку " LastID)
Return
; F4 – Притянуть игрока к себе (/gethere {ID})
F4::
if (LastID = "") {
ShowTip("Сначала обработайте репорт (F2)")
return
}
SendCommand("/gethere " LastID)
ShowTip("Игрок " LastID " притянут к вам")
Return
; Ctrl+F4 – Телепорт машины к себе (/getcar {ID машины})
^F4::
ActivateEmulator()
InputBox, CarID, Введите ID машины, Введите числовой ID машины для /getcar, , 200, 130
if ErrorLevel
return
if CarID is not number
{
ShowTip("Ошибка: введите число!")
return
}
SendCommand("/getcar " CarID)
ShowTip("Машина с ID " CarID " притянута")
Return
; F5 – Быстрый ответ на репорт (1) – /pm {ID} Приветствую, иду
F5::
if (LastID = "") {
ShowTip("Сначала обработайте репорт (F2)")
return
}
SendCommand("/pm " LastID " Приветствую, иду")
ShowTip("Отправлено 'Приветствую, иду' игроку " LastID)
Return
; F6 – Быстрый ответ на репорт (2) – /pm {ID} Приветствую, можете сами помочь себе...
F6::
if (LastID = "") {
ShowTip("Сначала обработайте репорт (F2)")
return
}
SendCommand("/pm " LastID " Приветствую, можете сами помочь себе - кнопка эвакуатора на спидометре.")
ShowTip("Отправлен второй ответ игроку " LastID)
Return
; F7 – Бан (/ban {ID} 31 5.2 op)
F7::
if (LastID = "") {
ShowTip("Сначала обработайте репорт (F2)")
return
}
SendCommand("/ban " LastID " 31 5.2 op")
ShowTip("Игрок " LastID " забанен (31 5.2 op)")
Return
; F8 – Заморозка (/freeze {ID})
F8::
if (LastID = "") {
ShowTip("Сначала обработайте репорт (F2)")
return
}
SendCommand("/freeze " LastID)
ShowTip("Игрок " LastID " заморожен")
Return
; F9 – Разморозка (/unfreeze {ID})
F9::
if (LastID = "") {
ShowTip("Сначала обработайте репорт (F2)")
return
}
SendCommand("/unfreeze " LastID)
ShowTip("Игрок " LastID " разморожен")
Return
; F10 – Кик (/skick {ID})
F10::
if (LastID = "") {
ShowTip("Сначала обработайте репорт (F2)")
return
}
SendCommand("/skick " LastID)
ShowTip("Игрок " LastID " кикнут")
Return
; F11 – Мут (/mute {ID} 30 2.1 op)
F11::
if (LastID = "") {
ShowTip("Сначала обработайте репорт (F2)")
return
}
SendCommand("/mute " LastID " 30 2.1 op")
ShowTip("Игрок " LastID " замучен (30 2.1 op)")
Return
; F12 – Размут (/unmute {ID})
F12::
if (LastID = "") {
ShowTip("Сначала обработайте репорт (F2)")
return
}
SendCommand("/unmute " LastID)
ShowTip("Игрок " LastID " размучен")
Return