Не стал сливать все в один скрипт, хоть это и несложно. (Не очень красиво, но работает)
Оставил два скрипта - управляющий с постоянным циклом и подчиненный ему parse.ahk, производящий подсчет.
Главный управляет подчиненным - одновременно со сворачиванием/разворачиванием окна игры посылает ему хоткей на стоп/пуск (Ctrl+Shift+F12)
Главный скрипт main.ahk:
Run, C:\Skript's\Anti [AFK]\parse.ahk ; Загрузка скрипта, производящий операции над текстовым файлом - изначально на паузе
F12:: ; Запуск главного скрипта
loop {
Send ^+{F12} ; запуск parse.ahk
SetKeyDelay, rand(500, 1000), rand(500, 1000)
waiting := rand(5000, 10000) ; интервал между повторами 5-10 cек.
loop % rand(3,5) { ; количество повторов
Send,{vk57}{vk53}{vk41}{vk44}{vk57}{vk53}{vk41}{vk44}{vk57}{vk53} ;wsad
sleep waiting
}
Send ^+{F12} ; ; стоп parse.ahk
WinWait, GTA:SA:MP
WinMinimize
sleep % rand(60000, 150000)
WinWait, GTA:SA:MP
WinMaximize
sleep 200 ; даем окну развернуться
}
return
rand(A, B)
{
Random, r, A, B
return r
}
~#F12:: ExitApp ; Win+F12 - выход
Подчиненный скрипт parse.ahk:
Name = example.txt
SetFormat, float, 0.0
pos := 1
pause
loop {
FileRead, F, %Name%
loop {
RegExMatch(F, "O)(\d+)(\+|-|\*|/)(\d+)\=\?", rez, pos)
if !rez.Count()
break
sign := rez[2]
ans := sign = "+" ? rez[1]+rez[3]
: sign = "-" ? rez[1]-rez[3]
: sign = "*" ? rez[1]*rez[3]
: rez[1]/rez[3]
pos := rez.pos(1)+5
Send, {F6}%ans%{Enter}
}
FileGetSize, old_s, %Name%
new_s := old_s
while old_s = new_s {
sleep 5000
FileGetSize, new_s, %Name%
}
}
#F12:: ExitApp ; Win+F12 - выход
^+F12:: pause, toggle