Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Riversong on August 03, 2019, 06:51:40 PM
-
Здравствуйте. Я пишу код для кликера, который обходит n-ное количество аккаунтов одной онлайн игры. Зайдя на аккаунт кликер делает определенные операции, после чего выходит убив процессы игры, меняет номер аккаунта (+1) в цикле и приступает ко входу на другой аккаунт. И так до тех пор, пока не пройдется по всем аккаунтам. Однако в игре может произойти вылет. В случае вылета игра выдаёт табличку. Для отлова вылета я написал поток, в котором происходит поиск этой таблички по цвету. В случае нахождения - поток выключает игру и должен зайти заново на тот же аккаунт, на котором произошел вылет. Я смог написать в потоке код, который отлавливает табличку и убивает процесс, но не смог написать код чтобы кликер запускал аккаунт повторно на котором произошел вылет. Подскажите пожалуйста как написать код?
$S_CORR = 0
THREAD(proverka,1)//поток который отлавливает табличку гласящую об вылете
$find=0
WHILE($find = 0)
GETSCREEN
IF_PIXEL_IN(635,400, 730,425,2049638)
print("Вылет")//677 416
EXECUTE("TASKKILL","/F /IM процессИгры.exe")
WAIT(2)
ELSE
WAIT(2)
END_IF
END_CYC
END_THREAD
$numAkk = 1 //номер аккаунта с которого начинаем обход
WHILE($numAkk <= 10) //всего к примеру 10 аккаунтов
//основной блок кода, который обеспечивает действия по входу в определенный аккаунт
$numPers = $numPers +1 //пройдя по аккаунту и совершив в нём все необходимые действия прибавляем +1 к номеру аккаунта, убиваю процесс игры и цикл обеспечивает заход на след.аккаунт.
END_CYC
HALT
Например произошел вылет на аккаунте номер 5. Необходимо, чтобы отлавливающий ошибку поток перезапустил цикл с аккаунтами именно с аккаунта 5 (на котором был вылет).
-
Если тебе нужен доп. поток, то разумнее всего будет поместить в него код, который обходит аккаунты
GETSCREEN
IF_PIXEL_IN(635,400, 730,425,2049638)
print("Вылет") // 677 416
SETTHREAD(TH_PROFILES_VISIT, 2) // Поток ставится на паузу, при этом при дальнейшем снятии с паузы он начинает выполняться с начала
EXECUTE("TASKKILL","/F /IM процессИгры.exe")
ELSE
SETTHREAD(TH_PROFILES_VISIT, 1) // Снятие с паузы
WAITMS(250)
END_IF
THREAD(TH_PROFILES_VISIT, 0)
// Тут обходишь аккаунты
END_THREAD
-
Я обернул основной код в поток и в случае вылета кликер перезапускает игру, но заходит на тот аккаунт с которого начинал. Например если в переменной номера аккаунта указанно $numAkk = 1, то получив вылет на аккаунте 5 кликер перезапустит игру, но не с 5 аккаунта, а с 1го не смотря на то, что переменная $numAkk должна была равняться 5 (др. словами на момент вылета она равна 5, но при перезапуске потока возвращается к исходному значению). Как перезапустить поток сначала, но при этом сохранив в переменной $numAkk номер именно того аккаунта, на котором произошел вылет?
-
Можно использовать однократное (объявление) инициализацию
DEFINE($numAkk, 1)
или сделать что то вроде такого
IF($i > 9)
HALT
END_IF
FOR($i = $i - 10*($i > 9), $i < 11)
WAITMS(250)
END_CYC
-
Спасибо Космич. Попробовал использовать DEFINE и кажется всё работает корректно :)