Andreykas1421
Новичок
- 47
- 0
В общем прошу помощи по соединению 2-х скриптов
1 - так называем сортировщик скриншотов.
2 - чтение чат лога
Проблема в том, что работает 1 раз и при повторном выборе чего либо не хочет сохранять скриншот. В чём может быть проблема то?
1 - так называем сортировщик скриншотов.
2 - чтение чат лога
Проблема в том, что работает 1 раз и при повторном выборе чего либо не хочет сохранять скриншот. В чём может быть проблема то?
Код:
#Persistent
#NoEnv
#IfWinActive GTA:SA:MP
#Include udf.ahk
SetTimer, read, on
global SampDirScrennShot := % A_MyDocuments . "\GTA San Andreas User Files\SAMP\screens" ; путь к папке скриншотов samp
global MoveDirScheenShot := % A_ScriptDir . "\ScreenShots\" ; путь перемещения скриншотов
global NameScreenShot := "MyScreenShot-" ; приставка скриншота
global File := % A_MyDocuments . "\GTA San Andreas User Files\SAMP\Chatlog.txt"
:?:/org::
showDialog(2, "Helper","[1]Уволить игрока`n[2]Выдать выговор`n[3]Увольнительный рапорт", "ОК")
Result := LineResult()
if (!Result)
return
Gosub, dil%Result%
return
dil1:
SendChat("/me уволил игрока")
addChatMessage("уволил игрока")
return
dil2:
SendChat("/me выдал выговор")
addChatMessage("выдал выговор")
return
dil3:
SendChat("/me рапорт")
addChatMessage("рапорт")
return
read:
FileRead, out, % File
if (RegExMatch(out, "\[.*\] уволил игрока")) {
LectioName := "Увал"
SetTimer, ScreenTakeMove, On
delLine("\[.*\] уволил игрока")
}
if (RegExMatch(out, "\[.*\] выдал выговор")) {
LectioName := "Выговор"
SetTimer, ScreenTakeMove, On
delLine("\[.*\] выдал выговор")
}
if (RegExMatch(out, "\[.*\] рапорт")) {
LectioName := "Рапорт"
SetTimer, ScreenTakeMove, On
delLine("\[.*\] рапорт")
}
return
delLine(string) {
File := A_MyDocuments "\GTA San Andreas User Files\SAMP\Chatlog.txt"
FileRead, All, % File
FileOpen(File, "w").Write(RegExReplace(All, "(^|\R)" . string . "|" . string . "(\R|$)"))
}
return
ScreenTakeMove:
SetTimer, ScreenTakeMove, Off ; отключаем таймер во избежания мульти процессов
Send {F8} ; имитирум нажатие клавиши f8
sleep 4000 ; пауза 4сек (4*1000)
Line := 0 ; сбос строки с линии чата
Loop
{
GetChatLine(Line, Chat) ; udf функция (считывание строк и чата) я хз вроде была ранше построена на основе чтения файла chatlog.txt рядом с папкой скринов
IfInString, Chat, Screenshot Taken ; если в чате есть строка делаем следующее
{
RegExMatch(Chat, "Screenshot Taken - sa-mp-(?<index>.+).png", screen_) ; берем переменную чила скриншота и сохраняем как %screen_index%
FormatTime, now_timecode, %A_Now%, dd.MM-HH.mm.ss ; создаем таймкод скрину с текущей датой на системе
IfNotExist, % MoveDirScheenShot . LectioName
FileCreateDir, % MoveDirScheenShot . LectioName
FileMove, % SampDirScrennShot . "\sa-mp-" . screen_index . ".png", % MoveDirScheenShot . LectioName . "\" . NameScreenShot . now_timecode . ".png", 1 ;перемещаем с ключем 1 (если есть такой файл то с заменой)
break ; завершаем цыкл
}
else
Line++ ; добавляем +1 к циклу тоесть новую строку для чтения и поиска
}
return
LineResult() {
if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
return false
while (isDialogOpen())
continue
if(GetKeyState("Esc", "P"))
return false
return getDialogLineNumber()
}
return