Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Gamsa on February 02, 2017, 02:41:15 PM
-
Добрый день. Есть скрипт который иногда глючит. Т.к. я совсем начинающий в данных вопросах человек прощу помощи у более опытных.
Скрипт спокойно себе работает и его не трогают, в какой-то момент (отловить не могу пока, но вижу что проблема где-то вот тут)
sub(диалог)
//поиск цвета диалогового окна
$_xd=1052
$_yd=100
$_xd2=1834
$_yd2=500
$_colord=14146270
Getscreen($_xd,$_yd,$_xd2,$_yd2)
If_pixel_in($_xd,$_yd,$_xd2,$_yd2,$_colord)
Lclick($_return1,$_return2)
print("нашел кому продать")
Wait(1)
//окно торговли
$ms=$_ms+30000
While($ms>$_ms)
Getscreen
If_pixel_in(1601,550,1693,585,3355596)//отмена
$check=1
$otx=$_return1
$oty=$_return2
$ms=-1
Else
Waitms(100)
End_if
End_cyc
If($ms=-1)
Skip:
Getscreen
If_pixel_in(1581,325,1720,410,16531877)//наценка
Lclick($_return1,$_return2)
print("Больше денег")
Wait(1)
Getscreen
If_pixel_in(1577,640,1753,730,9357352)//продать
Lclick($_return1,$_return2)
print("Продать")
Wait(1)
End_if
Else
//Кусок проверки замены
//поиск цвета предложить/поменять товар
$_xd=1404
$_yd=375
$_xd2=1414
$_yd2=403
$_colord=6931710
Getscreen($_xd,$_yd,$_xd2,$_yd2)
If_pixel_in($_xd,$_yd,$_xd2,$_yd2,$_colord)
Lclick($_return1,$_return2)
print("Поменяем")
Wait(2)
goto(skip)
Else
Waitms(100)
Lclick($otx,$oty)
print("Не купили")
Wait(2)
End_if
End_if
End_if
Else
Waitms(100)
End_if
//диалоговые окна желтый цвет
Getscreen
If_pixel_in(1052,100,1834,500,7722472)
Lclick($_return1,$_return2)
Wait(2)
$check2=0
While($check2=0)
Getscreen
If_pixel_in(1577,640,1753,730,9357352)//продать
$k_x=$_return1
$k_y=$_return2
$check2=1
$check3=0
While($check3=0)
Getscreen
If_pixel_in(1580,287,1713,349,16531877)//наценка
Lclick($_return1,$_return2)
Wait(1)
Else
$check3=1
End_if
End_cyc
Lclick($k_x,$k_y)
Wait(1)
Else
Waitms(300)
End_if
End_cyc
End_if
end_sub
Собственно вопрос такого плана в скрипте несколько sub запускаются они все просто вызовом в конце, можно как-то сделать чтобы к примеру раз в пол часа все останавливалось и запускалось независимо от основного скрипта?
-
THREAD(main, 1)
// здесь весь основной скрипт
END_THREAD
WAIT(1800) // 30 мин
SETTHREAD(main, 2)
WAIT(5)
SETTHREAD(main, 1)
Версия Clickermann от 4.12
-
Большое спасибо.
-
Скрипт работает в потоке, в какой-то момент повисает и на перезапуск потока не реагирует.
-
Последняя версия программы
THREAD(main, 1)
//=============================================
//=============================================
//=============================================
//сбор ресурсов
sub(ресурсы)
LCLICK(1886,205)
WAIT(1)
LCLICK(1886,245)
WAIT(1)
LCLICK(1886,295)
WAIT(1)
LCLICK(1886,340)
WAIT(1)
LCLICK(1886,385)
WAIT(1)
LCLICK(1886,430)
WAIT(1)
LCLICK(1886,475)
WAIT(1)
LCLICK(1886,535)
WAIT(1)
LCLICK(1886,590)
WAIT(1)
LCLICK(1886,620)
WAIT(1)
end_sub
//=============================================
//=============================================
//=============================================
//крафт
//третий крафт
sub(крафт3)
Lclick(779,400) //координаты "1" (779,400) - левый квадрат (973,327) - второй квадрат
print("начинаем крафт 3")
Wait(1)
else
Getscreen //стандартное окно крафта
If_pixel_in(1749,650,1770,670,10004917) //серый - иди жать на крестик
lclick(1774,190)
print ("хочу крафт 2")
WAIT(1)
else
If_pixel_in(1749,646,1778,690,9357352) //зеленый - можно крафтить
lclick($_return1, $_return2)
print("крафт с 1го окна зеленый")
WAIT(1)
else
Getscreen // ресурсы другого качества
If_pixel_in(1484,560,1510,605,9357352) //зеленый - можно крафтить
lclick($_return1, $_return2)
WAIT(2)
//проверим может нужно закрыть окно вообще т.к. часто глюки возникают
else
Getscreen
If_pixel_in(766,707,775,725,12378352)
lclick($_return1, $_return2)
WAIT(2)
else
Getscreen
If_pixel_in(1859,59,1876,73,7370883)
lclick($_return1, $_return2)
WAIT(1)
End_if
End_if
End_if
End_if
End_if
end_sub
//=============================================
//второй крафт
sub(крафт2)
Lclick(973,400) //координаты "2"
print("начинаем крафт 2")
Wait(1)
else
Getscreen //стандартное окно крафта
If_pixel_in(1749,650,1770,670,10004917) //серый - иди жать на крестик
lclick(1774,190)
print ("хочу крафт 2")
WAIT(1)
крафт3()
else
If_pixel_in(1749,646,1778,690,9357352) //зеленый - можно крафтить
lclick($_return1, $_return2)
print("крафт с 1го окна зеленый")
WAIT(1)
else
Getscreen // ресурсы другого качества
If_pixel_in(1484,560,1510,605,9357352) //зеленый - можно крафтить
lclick($_return1, $_return2)
WAIT(1)
//проверим может нужно закрыть окно вообще т.к. часто глюки возникают
else
Getscreen
If_pixel_in(766,707,775,725,12378352)
lclick($_return1, $_return2)
WAIT(2)
else
Getscreen
If_pixel_in(1859,59,1876,73,7370883)
lclick($_return1, $_return2)
WAIT(1)
End_if
End_if
End_if
End_if
End_if
end_sub
//=============================================
//первый крафт
sub(крафт)
Lclick(1196,400) //координаты "1" (779,400) - левый квадрат (973,400) - второй квадрат (1196,400) - 3ий Квадрат (1420,400) - 4ый квадрат
print("начинаем крафт 1")
Wait(1)
else
Getscreen //стандартное окно крафта
If_pixel_in(1749,650,1770,670,10004917) //серый - иди жать на крестик
lclick(1774,190)
print ("хочу крафт 2")
WAIT(1)
крафт2()
else
If_pixel_in(1749,646,1778,690,9357352) //зеленый - можно крафтить
lclick($_return1, $_return2)
print("крафт с 1го окна зеленый")
WAIT(1)
else
Getscreen // ресурсы другого качества
If_pixel_in(1484,560,1510,605,9357352) //зеленый - можно крафтить
lclick($_return1, $_return2)
WAIT(1)
//проверим может нужно закрыть окно вообще т.к. часто глюки возникают
else
Getscreen
If_pixel_in(766,707,775,725,12378352)
lclick($_return1, $_return2)
WAIT(2)
else
Getscreen
If_pixel_in(1859,59,1876,73,7370883)
lclick($_return1, $_return2)
WAIT(1)
End_if
End_if
End_if
End_if
End_if
end_sub
//=============================================
//=============================================
//=============================================
// торговля
// торговля
// торговля
sub(диалог)
//поиск цвета диалогового окна
$_xd=1052
$_yd=100
$_xd2=1834
$_yd2=500
$_colord=14146270
Getscreen($_xd,$_yd,$_xd2,$_yd2)
If_pixel_in($_xd,$_yd,$_xd2,$_yd2,$_colord)
Lclick($_return1,$_return2)
print("нашел кому продать")
Wait(1)
//окно торговли
$ms=$_ms+30000
While($ms>$_ms)
Getscreen
If_pixel_in(1601,550,1693,585,3355596)//отмена
$check=1
$otx=$_return1
$oty=$_return2
$ms=-1
Else
Waitms(100)
End_if
End_cyc
If($ms=-1)
Skip:
Getscreen
If_pixel_in(1581,325,1720,410,16531877)//наценка
Lclick($_return1,$_return2)
print("Больше денег")
Wait(1)
Getscreen
If_pixel_in(1577,640,1753,730,9357352)//продать
Lclick($_return1,$_return2)
print("Продать")
Wait(1)
End_if
Else
//Кусок проверки замены
//поиск цвета предложить/поменять товар
$_xd=1404
$_yd=375
$_xd2=1414
$_yd2=403
$_colord=6931710
Getscreen($_xd,$_yd,$_xd2,$_yd2)
If_pixel_in($_xd,$_yd,$_xd2,$_yd2,$_colord)
Lclick($_return1,$_return2)
print("Поменяем")
Wait(2)
goto(skip)
Else
Waitms(100)
Lclick($otx,$oty)
print("Не купили")
Wait(2)
End_if
End_if
End_if
Else
Waitms(100)
End_if
//диалоговые окна желтый цвет
Getscreen
If_pixel_in(1052,100,1834,500,7195610)
Lclick($_return1,$_return2)
Wait(2)
$check2=0
While($check2=0)
Getscreen
If_pixel_in(1577,640,1753,730,9357352)//продать
$k_x=$_return1
$k_y=$_return2
$check2=1
$check3=0
While($check3=0)
Getscreen
If_pixel_in(1580,287,1713,349,16531877)//наценка
Lclick($_return1,$_return2)
Wait(1)
Else
$check3=1
End_if
End_cyc
Lclick($k_x,$k_y)
Wait(1)
Else
Waitms(300)
End_if
End_cyc
End_if
end_sub
//=============================================
//=============================================
//=============================================
//сбор крафта
sub(сборкрафт)
//поиск законченного крафта
GETSCREEN
if_pixel_in(790,700,1764,820,7401471)
lclick($_return1, $_return2)
print("Снял крафт")
wait(1)
else
//проверка на необходимость кликнуть по крафту
GETSCREEN
if_pixel_in(1068,728,1086,751,9357352)
lclick(1188,728)
WAIT(1)
else
GETSCREEN
//поиск возможности покрафтить
if_pixel_in(790,715,1764,730,16777215)
lclick($_return1, $_return2)
print ("нашел пустую ячейку")
WAIT(1)
крафт()
end_if
end_if
end_if
end_sub
if($_ms>$ms1)
ресурсы()
Print("Собираем ресурсы")
$ms1=$_ms+100000
end_if
сборкрафт()
диалог()
END_THREAD
WAIT(600) //
SETTHREAD(main, 2)
WAIT(5)
SETTHREAD(main, 1)
-
Спс щас поставлю, а из-за чего скрипт так виснуть может?
-
Хм ... неа, сразу подвис на первом же запуске, протупил 13 минут и не ушел на перезапуск потока.
-
Последняя версия программы
Что за "else" в строках 38, 77, 117?
В GETSCREEN желательно указывать область.
Зачем лишние GETSCREEN? Пример:
sub(сборкрафт)
//поиск законченного крафта
GETSCREEN
if_pixel_in(790,700,1764,820,7401471)
lclick($_return1, $_return2)
print("Снял крафт")
wait(1)
else
//проверка на необходимость кликнуть по крафту
GETSCREEN //----после прошлого GETSCREEN ничего не произошло, IF не сработал перешли на ELSE
if_pixel_in(1068,728,1086,751,9357352)
lclick(1188,728)
WAIT(1)
else
GETSCREEN //----после прошлого GETSCREEN ничего не произошло, IF не сработал перешли на ELSE
//поиск возможности покрафтить
if_pixel_in(790,715,1764,730,16777215)
lclick($_return1, $_return2)
print ("нашел пустую ячейку")
WAIT(1)
крафт()
end_if
end_if
end_if
end_sub
сделать наверно так:
sub(сборкрафт)
//поиск законченного крафта
GETSCREEN(790,700,1764,820)
if_pixel_in(790,700,1764,820,7401471)
lclick($_return1, $_return2)
print("Снял крафт")
wait(1)
else
//проверка на необходимость кликнуть по крафту
if_pixel_in(1068,728,1086,751,9357352)
lclick(1188,728)
WAIT(1)
else
//поиск возможности покрафтить
if_pixel_in(790,715,1764,730,16777215)
lclick($_return1, $_return2)
print ("нашел пустую ячейку")
WAIT(1)
крафт()
ELSE
WAITMS(50)
end_if
end_if
end_if
end_sub
Ну и во всех аналогичных местах тоже.
-
Последняя версия программы
Что за "else" в строках 38, 77, 117?
В GETSCREEN желательно указывать область.
Зачем лишние GETSCREEN?
Спс else лишние убрал. Области тоже указал (для чего кстати указывать их так явно?). Все GETSCREEN сделаны только на смене картинки.
Но в данной части скрипта зависаний замечено не было.
Всегда виснет когда связанно с:
sub(диалог)
//поиск цвета диалогового окна
$_xd=1052
$_yd=100
$_xd2=1834
$_yd2=500
$_colord=14146270
Getscreen($_xd,$_yd,$_xd2,$_yd2)
If_pixel_in($_xd,$_yd,$_xd2,$_yd2,$_colord)
Lclick($_return1,$_return2)
print("нашел кому продать")
Wait(1)
//окно торговли
$ms=$_ms+30000
While($ms>$_ms)
Getscreen(1601,550,1693,585)
If_pixel_in(1601,550,1693,585,3355596)//отмена
$check=1
$otx=$_return1
$oty=$_return2
$ms=-1
Else
Waitms(100)
End_if
End_cyc
If($ms=-1)
Skip:
Getscreen(1581,325,1720,410)
If_pixel_in(1581,325,1720,410,16531877)//наценка
Lclick($_return1,$_return2)
print("Больше денег")
Wait(1)
Getscreen(1577,640,1753,730)
If_pixel_in(1577,640,1753,730,9357352)//продать
Lclick($_return1,$_return2)
print("Продать")
Wait(1)
End_if
Else
//Кусок проверки замены
//поиск цвета предложить/поменять товар
$_xd=1404
$_yd=375
$_xd2=1414
$_yd2=403
$_colord=6931710
Getscreen($_xd,$_yd,$_xd2,$_yd2)
If_pixel_in($_xd,$_yd,$_xd2,$_yd2,$_colord)
Lclick($_return1,$_return2)
print("Поменяем")
Wait(2)
goto(skip)
Else
Waitms(100)
Lclick($otx,$oty)
print("Не купили")
Wait(2)
End_if
End_if
End_if
Else
Waitms(100)
End_if
//диалоговые окна желтый цвет
Getscreen(1052,100,1834,500)
If_pixel_in(1052,100,1834,500,7195610)
Lclick($_return1,$_return2)
Wait(2)
$check2=0
While($check2=0)
Getscreen(1577,640,1753,730)
If_pixel_in(1577,640,1753,730,9357352)//продать
$k_x=$_return1
$k_y=$_return2
$check2=1
$check3=0
While($check3=0)
Getscreen(1580,287,1713,349)
If_pixel_in(1580,287,1713,349,16531877)//наценка
Lclick($_return1,$_return2)
Wait(1)
Else
$check3=1
End_if
End_cyc
Lclick($k_x,$k_y)
Wait(1)
Else
Waitms(300)
End_if
End_cyc
End_if
end_sub
-
Спасибо, щас посмотрю. Я сам не могу понять как возникает, просто по тому что отследил могу судить в каком месте они возникают.
-
Там, вроде, только в одном месте может застрять
print("Поменяем")
goto(skip)
-
Подпрограммы выполняющиеся один раз, это не подпрограммы вовсе, а даже не знаю как назвать.
Вот для примера пишу ваш код с нормальными подпрограммами, полностью не изменяю, чтоб могли внести изменения самостоятельно.
Вылезает ошибка POP()
Можно ее как-то понять сразу где она? Я просто только начинаю осваивать Clickermann, поэтому такие корявые коды.
Vint
А в $ms не может возникать ошибки?
-
А в $ms не может возникать ошибки?
нет
Вылезает ошибка POP()
Можно ее как-то понять сразу где она? Я просто только начинаю осваивать Clickermann, поэтому такие корявые коды.
ошибка POP() почти всегда означает ошибку при вызове подпрограммы. Или ПП нет или расположена ниже вызова.
Конкретно здесь просто опечатка по запаре, строка 7 вызов самой себя
SUB(клик, $par10,$par11,$par12) // подпрограмма делает клик и задержку после него
клик($par10,$par11)
должно быть
SUB(клик, $par10,$par11,$par12) // подпрограмма делает клик и задержку после него
LCLICK($par10,$par11)
-
Спс пойду изучать новую вариацию скрипта))) как раз разберусь почему алгоритм отличается от моего скрипта.
-
Собственно вопрос такого плана в скрипте несколько sub запускаются они все просто вызовом в конце, можно как-то сделать чтобы к примеру раз в пол часа все останавливалось и запускалось независимо от основного скрипта?
//в начале скрипта прописываем
#autorun
define($tb1,$_time_t+1800) //+Время в сек
THREAD(restrt,1)
if (($tb1-$_time_t) < 0) // Если вышло время-перезапуск
EXECUTE("d:\cmann\Clickermann.exe", "d:\cmann\some_script.cms")
halt(1)
end_if
wait(1)
END_THREAD
//ваш код
-
kiril, большое спасибо, но в вашем скрипте нормально разобраться мне не позволяет опыт, он сбивается причем я не могу понять почему.
quant13, мне кажется в данной вариации работать не будет т.к. вызов скрипта просто из файла не дает его запуска.
-
quant13, мне кажется в данной вариации работать не будет т.к. вызов скрипта просто из файла не дает его запуска.
А строка
#autorun
зачем?
У всех даёт, почему у тебя не должно давать.
Если включена ассоцияция файлов, то запуск можно делать указывая только скрипт
EXECUTE("d:\cmann\some_script.cms")
У меня там, кстати, всплывает ошибка первой строки потока. Поэтому чтоб условие работало пришлось добавить лишнюю команду
#autorun
$tb1 = $_time_t + 5
THREAD(restrt, 1)
WAITMS(5)
IF($tb1 < $_time_t)
EXECUTE("d:\Яндекс Диск\Clickermann v4.11 build 003\projects\Тесты\Самоперезапуск.cms")
HALT(1)
END_IF
WAITMS(500)
END_THREAD
HINTPOPUP("Перезапуск")
wait(3)
HINTPOPUP("")
wait(10)
HALT
-
quant13, мне кажется в данной вариации работать не будет т.к. вызов скрипта просто из файла не дает его запуска.
У всех даёт, почему у тебя не должно давать.
В том виде в котором дал quant13 файл открывался вообще пустым.
С вашим решением, но без Halt все работает как часы, Halt вырубает все после 1го цикла.
-
Хм, скрипт подвис, по таймеру перегрузился, но продолжал висеть ... как такое может быть?
Во, еще вешает что-то таймер на перезапуск скрипта о-О.
-
с $tb1 = $_time_t + 5 работать не будет (т.к постоянно обновляется переменная и условие не будет достигнуто. только define($tb1,$_time_t+8) (ну и 5сек маловато. хоть то детали)
EXECUTE ("путь к ЕХЕ кликера","путь к скрипту") , как писали если стоит ассоциация то можно писать сразу путь к скрипту.
HALT(1) - это чтоб выгрузился текущий кликер, мы ж запустили новый, зачем нам накапливать в памяти лишние проги
ну и разумеется мой скрипт подразумевает что он дописывается в начале рабочего скрипта, и там есть задержки хоть какие (как в примере винта), ато выйдет что загружается новый и начнут работать оба без задержек до выгрузки старой версии, может делов наделать.
-
но без Halt все работает как часы, Halt вырубает все после 1го цикла.
с $tb1 = $_time_t + 5 работать не будет (т.к постоянно обновляется переменная и условие не будет достигнуто. только define($tb1,$_time_t+8) (ну и 5сек маловато. хоть то детали)
Само собой. Это же тестовый пример.