Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: DRYIDid on March 22, 2013, 10:11:26 AM
-
ДОбрый день.Хотелось создать тему именно на эту игру так как с неё и начал играть в онлайн игры да и пользоваться Кликерменом (Clickermann), но как я не крутил рунет так вообщем и не нашел нармальных примеров по BS-ке связанные с Clickermann.
-
Например мне надо 10 картинок открыть последовательно или от большего к меньшему в цикле.
Как сделать чтоб в
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
добавлялись разные картинки из папки в ЦИКЛЕ например 10 раз и не повторялось с предыдущей картинкой. Никак не додумал .мозг разрываеться))
Конечно я знаю как это сделать без цикла 10 раз писать
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile1.bmp")
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile2.bmp")
END_IF
........................................................................
но это грамадина получится.Есть более рациональный метод?
-
Ещё один наболевший вопрос).Как я понел
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
ищет первую попавшуюся картинку и устанавливает коодинату в первый пиксель этой картики.Вопрос как определить конец (х,у) этой картинки?
Кажись я понел как это сделать посчитать самостоятельно растояние между точками :D ;D.
К примеру руда .В каждой стопке руды 100 шт.Этих стопок может быть больше 1.
Как найти последнюю стопку и если возможно посчитать общее количество стопок?
-
Всё про тот ;Dже IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
Если я сделал картинку под экран 1024х768,
то на другом компе ( ) при другом разрешении экана используеться
эта же картинка сделанная при разрешении 1024х768.
какие будут последствия?
Или придёться делать картинки для каждого разрешения или
всё будет и так сидеть работать и определять картинку сделанную один раз
и использовать при разных разрешениях или будут различия и не определит координаты? ???
-
Всё про тот ;Dже IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
Если я сделал картинку под экран 1024х768,
то на другом компе ( ) при другом разрешении экана используеться
эта же картинка сделанная при разрешении 1024х768.
какие будут последствия?
Или придёться делать картинки для каждого разрешения или
всё будет и так сидеть работать и определять картинку сделанную один раз
и использовать при разных разрешениях или будут различия и не определит координаты? ???
Картинка будет находится, ведь она определённого размера в пикселах. А пиксел он и в Африке пиксел. Количество пикселов на экране и их размер не повлияют.
От другого разрешения может поменяться положение картинки.
Например мне надо 10 картинок открыть последовательно или от большего к меньшему в цикле.
Как сделать чтоб в
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
добавлялись разные картинки из папки в ЦИКЛЕ например 10 раз и не повторялось с предыдущей картинкой. Никак не додумал .мозг разрываеться))
Конечно я знаю как это сделать без цикла 10 раз писать
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile1.bmp")
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile2.bmp")
END_IF
........................................................................
но это грамадина получится.Есть более рациональный метод?
только подставив вместо "somefile1.bmp" переменную. Значение переменной текстовая строка формируемая из частей. Если имена создаёшь сам то примерно так:
$i=0
FOR ($i, $i<10)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("somefile",$i,".bmp"))
// обработка
END_IF
END_CYC
-
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("somefile",$i,".bmp"))
"somefile" - что лучше в файл текстовый с названиями картинок прописать
или просто прописать переменные в коде и не париться?
-
Если имена уникальные, можно в текстовый прописать. Но тогда при добавлении нужно следить.
Второй вариант это переименовать файлы, задать им одно имя+числовой идинтификатор. Так можно на лету в скрипте имена перебирать, как указано в примере.
По мне второй проще, не нужно возиться с текстовиком. Хотя использую оба варианта.
-
Да второй пример попроще.И всё на полочках как положено.
Единственно это не запутаться какая картинка somefile1,
а какая somefile10.Но в принципе я не лентяй не запутаюсь
и каментариями поясню.Спасибо. ;D
-
Как преостановить этот цикл?
например Вкладка1.bmp ищем руду в заданном диапазоне не находим идём дальше
Вкладка2.bmp нашли в заданном диапазоне Руду и остановили цикл .
А то у меня получаеться он нашел руду и пошел дальше по вкладкам)0гггг
до конца вкладка5.bmp
Пытался цикл в условие запихнуть .
Если нет руды для создания миф железа то прыгаем по вкладкам
и ищем руду,но чтот не врублюсь как будет проверяться в цикле?
т.е. один раз проверился,а во время цикла игнорируеться.
Знаю про Брейк , но он требует моего согласия продолжить или нет.
ниже в коде, тот случай который я здесь расписал))
-
getscreen
GOSUB(Записываем рабочее место Инвенторя)
GOSUB(Читаем рабочее место Инвенторя)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Нет руды для стали.bmp")
$maxx=5
$i=0
FOR ($i, $i<$maxx)
// I...V Вкладка инвентаря
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Вкладка",$i,".bmp"))
MOVE($_return1, $_return2) //наводим на верхний координату вкладки инвенторя
waitms(500)
MOVE($_return1+45, $_return2+17)/наводим на нижнию координату вкладки инвенторя
waitms(500)
dbLCLICK($_return1+23, $_return2+6)// нажимаем в середину вкладки инвенторя
waitms(500)
GOSUB (Найти кристалы)
GOsUB (Найти Руду)
//если нашли кристалы в какой-то вкладке то остановить цикл
END_IF
END_CYC
END_IF
-
//если нашли кристалы в какой-то вкладке то остановить цикл
Имеено в этом месте я и запутался как выйти из цикла.
Вот конкретная картинка для наглядности .
Руда по 100 шт- в двух последних строчках.
Кристалы 1430 в третьей строке.
Сверху вкладки римскими цифрами (I,II,III,IV,V) которые мне над нажимать .
Спасибо заранее.
-
//если нашли кристалы в какой-то вкладке то остановить цикл
Имеено в этом месте я и запутался как выйти из цикла.
Вот конкретная картинка для наглядности .
Руда по 100 шт- в двух последних строчках.
Кристалы 1430 в третьей строке.
Сверху вкладки римскими цифрами (I,II,III,IV,V) которые мне над нажимать .
Спасибо заранее.
задай флаг, если что-то нашёл, то
$flag=1 //это в сабах
выйти из цикла:
//если нашли кристалы в какой-то вкладке то остановить цикл
IF ($flag=1)
$i=$maxx
END_IF
-
getscreen
GOSUB(Записываем рабочее место Инвенторя)
GOSUB(Читаем рабочее место Инвенторя)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Нет руды для стали.bmp")
$maxx=5
$i=0
FOR ($i, $i<$maxx)
// I...V Вкладка инвентаря
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Вкладка",$i,".bmp"))
MOVE($_return1, $_return2) //наводим на верхний координату вкладки инвенторя
waitms(500)
MOVE($_return1+45, $_return2+17)/наводим на нижнию координату вкладки инвенторя
waitms(500)
dbLCLICK($_return1+23, $_return2+6)// нажимаем в середину вкладки инвенторя
waitms(500)
GOSUB (Найти кристалы)
GOsUB (Найти Руду)
//если нашли кристалы в какой-то вкладке то остановить цикл
END_IF
END_CYC
END_IF
Если нужно выйти из цикла, сделай так чтобы условие не выполнялось.
Если тебе не важно на каком этапе прервались, присвой переменной цикла значение не подходящее под условие.
getscreen
GOSUB(Записываем рабочее место Инвенторя)
GOSUB(Читаем рабочее место Инвенторя)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Нет руды для стали.bmp")
$maxx=5
$i=0
FOR ($i, $i<$maxx)
// I...V Вкладка инвентаря
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Вкладка",$i,".bmp"))
MOVE($_return1, $_return2) //наводим на верхний координату вкладки инвенторя
waitms(500)
MOVE($_return1+45, $_return2+17)/наводим на нижнию координату вкладки инвенторя
waitms(500)
dbLCLICK($_return1+23, $_return2+6)// нажимаем в середину вкладки инвенторя
waitms(500)
GOSUB (Найти кристалы)
GOsUB (Найти Руду)
//если нашли кристалы в какой-то вкладке то остановить цикл
$i=$maxx
END_IF
END_CYC
END_IF
-
Дело в том что мне надо остановить когда он найдёт Кристалы,
а затем чтоб поновой начал искать с первой вкладки,
но уже другое(руду) и тоже чтоб остановился найдя необходимое
именно в таком порядке,потому что руда всегда впереди будет,
а кристалы позади и возможно что даже в разных вкладках.
Пробывал всё в одном цикле прописать получилось что находит
руду и останавливаеться))),а дело до кристалов не доходит и наоборот).
Подумал что наверно придёться делать
1.цикл - поиска кристалов по вкладкам в сабы и
2.цикл -поиска руды по вкладкам в сабы.
-------------------------------------------------------------------------
-
:)Помучившись с эксперементами в итоге сделал то что хотел!
Вот рабочий Бот по переработке руды в сталь 1 уровня))оцените и если возможно упросить то помогите осуществить)Спасибо зарание.
-
Ну как, работает?
$_xmax и $_ymax задавать не надо, это системные переменные.
Ну опечатка в операторах (строки 117,132) это понятно, а что делает строка 22 ?
-
Так писать неправильно
Print(x_sortirovka=$_return1, " ",y_sortirovka = $_return2)
А вот так правильно
Print("x_sortirovka= ",$_return1, " ","y_sortirovka= ",$_return2)
Проверь логику SUB (Запись Координат Сортировка) и SUB (Запись Координат Начать) не уверен что я правильно написал
В общем подправил грубые ошибки...
///////////////////////////////////////////
getscreen
GoSUB (Запись Координат Количество)
GOSUB (Запись Координат Сортировка)
GOSUB (Запись Координат Начать)
GOSUB (Записываем рабочее место Инвенторя)
GOSUB (Читаем рабочее место Инвенторя)
GOSUB (Проверка попали ли туда кристалы и руда)
GOSUB (Прочесть координаты РУСорКолНа)
//HINTPOPUP("Теперь можно Остановить Код нажав ALT+S затем нажать ALT+W а потом ALT+А ", "Сообщение")
SOUND ("1.wav")
GOSUB (Наконец само волшебство)
///////////////////////////////////////////
//--------------------------------
HALT
///* * Смотрим есть ли кристалы в в РЕмесле если нет то ищим их инвенторе нажимем 1-ую вкладку и вставляем их в Ремесло* *
//--------------------------------
SUB (Запись Координат Количество)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Количество.bmp")
INIWRITE("config.ini", "x_kolichestvo",$_return1)
INIWRITE("config.ini", "y_kolichestvo",$_return2)
Print("Зпаписал координаты КОЛИЧЕСТВО I")
Print("x_kolichestvo= ",$_return1," ","y_kolichestvo= ",$_return2)
END_IF
END_SUB
//--------------------------------
SUB (Запись Координат Сортировка)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Сортировка.bmp")
INIWRITE("config.ini", "x_sortirovka",$_return1 )
INIWRITE("config.ini", "y_sortirovka",$_return2)
Print("Зпаписал координаты СОРТИРОВКА II")
Print("x_sortirovka= ",$_return1, " ","y_sortirovka= ", $_return2)
END_If
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Сортировка Выделена.bmp")
INIWRITE("config.ini", "x_sortirovka",$_return1 )
INIWRITE("config.ini", "y_sortirovka",$_return2)
Print("Зпаписал/\ координаты/\ СОРТИРОВКА II")
Print("x_sortirovka= "$_return1, " ","y_sortirovka= ", $_return2)
END_IF
END_SUB
//--------------------------------
SUB (Запись Координат Начать)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Начать.bmp")
INIWRITE("config.ini", "x_Go",$_return1 )
INIWRITE("config.ini", "y_Go",$_return2)
Print("Зпаписал координаты НАЧАТЬ III")
Print("x_Go= ", $_return1, " ","y_Go= ", $_return2)
else
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "НАчать выделенно.bmp")
INIWRITE("config.ini", "x_Go",$_return1 )
INIWRITE("config.ini", "y_Go",$_return2)
Print("Зпаписал/\ координаты/\ НАЧАТЬ III")
Print("x_Go= ",$_return1, " ","y_Go= ", $_return2)
END_IF
END_IF
END_SUB
//--------------------------------
SUB (Прочесть координаты РУСорКолНа)
$x_rydi_1 = INIREAD("config.ini", "x_rydi_1")
$y_rydi_1 = INIREAD("config.ini", "y_rydi_1")
Print("Прочитал координаты РУДЫ 1")
Print("x_rydi_1= ",$x_rydi_1, " ","y_rydi_1= ", $y_rydi_1)
$x_rydi_2 = INIREAD("config.ini", "x_rydi_1")+ 67
$y_rydi_2 = INIREAD("config.ini", "y_rydi_1")
Print("Прочитал координаты РУДЫ 2")
Print("x_rydi_2= ",$x_rydi_2, " ","y_rydi_2= ",$y_rydi_2)
$x_sortirovka = INIREAD("config.ini", "x_sortirovka")
$y_sortirovka = INIREAD("config.ini", "y_sortirovka")
Print("Прочитал координаты СОРТИРОВКА")
Print("x_sortirovka= ",$x_sortirovka," ","y_sortirovka= ",$y_sortirovka)
$x_kolichestvo = INIREAD("config.ini", "x_kolichestvo")
$y_kolichestvo = INIREAD("config.ini", "y_kolichestvo")
Print("Прочитал координаты КОЛИЧЕТВО")
Print("x_kolichestvo= ",$x_kolichestvo," ","y_kolichestvo= ",$y_kolichestvo)
$x_GO = INIREAD("config.ini", "x_GO")
$y_GO = INIREAD("config.ini", "y_GO")
Print("Прочитал координаты Начать")
Print("x_GO= ",$x_GO," ","y_GO= ",$y_GO)
END_SUB
//--------------------------------
SUB (Записываем рабочее место Инвенторя)
$koordinata_maxx = 2
$koordinata = 0
print ("Запись координат инвенторя")
FOR ($koordinata, $koordinata < $koordinata_maxx)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Координата Инвенторя",$koordinata,".bmp"))
// print (STRCONCAT(X,$koordinata) = $_return1," ",STRCONCAT(y,$koordinata) = $_return2 )
INIWRITE("config.ini", STRCONCAT(x,$koordinata),$_return1)
INIWRITE("config.ini", STRCONCAT(y,$koordinata),$_return2)
END_IF
END_CYC
END_SUB
//--------------------------------
SUB (Читаем рабочее место Инвенторя)
$_x1 = INIREAD("config.ini","X1" )
$_y1 = INIREAD("config.ini","Y1" )
$_x2 = INIREAD("config.ini","X2" ) +28
$_y2 = INIREAD("config.ini","Y2" )
END_SUB
//--------------------------------
SUB (Найти кристалы)
getscreen
IF_PICTURE_IN ($_x1,$_y1, $_x2,$_y2, "Кристалы.bmp")
rclick($_return1, $_return2)
$flag=1
END_IF
END_SUB
//--------------------------------
sUB (Найти Руду)
getscreen
IF_PICTURE_IN ($_x1,$_y1, $_x2,$_y2, "Руда.bmp")
rclick($_return1, $_return2)
INIWRITE("config.ini", "x_rydi_1",$_return1)
INIWRITE("config.ini", "y_rydi_1",$_return2)
print("Нашли и вставили РУДУ IV")
Print("x_rydi_1= ",$_return1, " ","y_rydi_1= ",$_return2)
$flag2=1
END_IF
END_SUB
//------------1--------------------
SUB (Найдя Кристалы вставляем из вкладки)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Кристал нет для 1 ур стали.bmp")
$maxx=10
$i=0
FOR ($i, $i<$maxx)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Вкладка",$i,".bmp"))
MOVE($_return1, $_return2) // I...V Вкладка инвентаря
waitms(500)
MOVE($_return1+45, $_return2+17)
waitms(500)
dbLCLICK($_return1+23, $_return2+6)
waitms(500)
GOSUB (Найти кристалы)
IF ($flag=1)
$i=$maxx
//если нашли кристалы в какой-то вкладке то остановить цикл
print( "Нашли Кристалы и вставили.")
END_IF
END_IF
END_CYC
END_IF
END_SUB
//------------2--------------------
SUB (Найдя Руду вставляем из вкладки)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Руды нет для 1 ур стали.bmp")
$maxxx=10
$ii=0
FOR ($ii, $ii<$maxxx)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Вкладка",$ii,".bmp"))
MOVE($_return1, $_return2) // I...V Вкладка инвентаря
waitms(500)
MOVE($_return1+45, $_return2+17)
waitms(500)
dbLCLICK($_return1+23, $_return2+6)
waitms(500)
GOSUB (Найти Руду)
//если нашли руду в какой-то вкладке то остановить цикл
IF ($flag2=1)
$ii=$maxx
END_IF
END_IF
END_CYC
END_IF
END_SUB
//--------------1------------------
SUB (Проверка попали ли туда кристалы и руда)
$maxaa=1
$qq=0
FOR ($qq, $qq<$maxaa)
getscreen
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Кристал 12 для 1 ур Стали вналичии.bmp")
else
GOSUB(Найдя Кристалы вставляем из вкладки)
END_IF
end_cyc
//-------------2-------------------
$maxa=1
$q=0
FOR ($q, $q<$maxa)
getscreen
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Руда 24 для 1 ур Стали вналичии.bmp")
else
GOSUB(Найдя Руду вставляем из вкладки)
END_IF
end_cyc
END_SUB
//--------------------------------
SUB (Наконец само волшебство)
$Skoka_povtorit=15
$povtor=0
for($povtor, $povtor<$Skoka_povtorit)
//Вводим 100 сделать стали
dbLCLICK($x_kolichestvo,$y_kolichestvo)
WAITMS(150)
KEYSTRING("100")
WAITMS(50)
//Стартуем и ждём 14 сек
LCLICK($x_sortirovka,$y_sortirovka) // кнопка Сортировка
WAIT(2)
RCLICK($x_rydi_2,$y_rydi_2) //кордината 2-0й ячейки
WAITMS(25)
LCLICK($x_GO,$y_GO) //кордината старта
WAITMS(25)
LCLICK($x_GO,$y_GO)
HINTPOPUP("Теперь можно Остановить Код нажав ALT+S затем нажать ALT+W а потом ALT+А ", "Сообщение")
wait(14)
//остаток от 2 ячейки добавляем к 1 ячейке
LCLICK($x_rydi_2,$y_rydi_2) //кордината 2-0й ячейки
WAIT(1)
dbLCLICK($x_rydi_1,$y_rydi_1) // кордината 1-0й ячейки
wait(2)
// кнопка Сортировка
dbLCLICK ($x_sortirovka,$y_sortirovka)
wait(1)
print( "Начал делать Сталь 1 уровня =",$povtor,"раз")
end_cyc
END_SUB
-
комментарии тоже сразу заметил, но решил проверить. Ошибок не выдало и вроде выводит павильно, поэтому промолчал.
-
Ну как, работает?
$_xmax и $_ymax задавать не надо, это системные переменные.
Ну опечатка в операторах (строки 117,132) это понятно, а что делает строка 22 ?
Да работает вроде нармально постоянно использую )).
Бывает глюк когда уже сам кристалы положил и запустил Кликермен он и начинает руду бесконечно искать и перекладывать.но это не беда,закрыть ремесло и снова открыть и будет счастье.
Открываешь Инвентарь и Ремесло.В ремесле выбераешь сталь 1 уровня и запускаешь Кликермен. Если картинки такие же как и у меня то пашет .если же нет то пишет такая то переменная ошибка. Могу дать с картинками код .
если это картинка нашлась > Сортировка
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Сортировка.bmp")
то запишим координаты сортировки
иначе
сортировка выделена и запишем координаты выделеной сортировки .
Вроде это означает 22 сторока.
$_xmax и $_ymax почему нельзя задовать? у всех же разрешение экрана разное.
-
$_xmax и $_ymax почему нельзя задовать? у всех же разрешение экрана разное.
Это системные переменные, которые, как сказал Джонни, вовсе даже не переменные. Кликер сам узнает разрешение экрана и выводит его посредством этих $_xmax и $_ymax. Так что они универсальны для всех. Записывать же в них противопоказано! Так как при этом будет создана уже не системная переменная с таким же именем, и она уже не изменится пока не перезапустишь кликер!
-
Так писать неправильно
1 Print(x_sortirovka=$_return1, " ",y_sortirovka = $_return2)
А вот так правильно
2 Print("x_sortirovka= ",$_return1, " ","y_sortirovka= ",$_return2)
а вроде всё выводиться в 1 варианте. ну раз не правильно буду исправлять.
-
SUB (Запись Координат Сортировка)
Получше чем у меня. Забыл что если нет 1-0й картинки, то он продолжит искать 2-ую и наоборот :) Полюбому одну из них да и найдёт.
-----------------------------------------------------------------------------------------------
SUB (Запись Координат Сортировка)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Сортировка.bmp")
INIWRITE("config.ini", "x_sortirovka",$_return1 )
INIWRITE("config.ini", "y_sortirovka",$_return2)
Print("Зпаписал координаты СОРТИРОВКА II")
Print("x_sortirovka= ",$_return1, " ","y_sortirovka= ", $_return2)
END_If
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Сортировка Выделена.bmp")
INIWRITE("config.ini", "x_sortirovka",$_return1 )
INIWRITE("config.ini", "y_sortirovka",$_return2)
Print("Зпаписал/\ координаты/\ СОРТИРОВКА II")
Print("x_sortirovka= "$_return1, " ","y_sortirovka= ", $_return2)
END_IF
END_SUB
----------------------------------------------------------------------------------------------
Наверно так же сделать надо и (Запись Координат Начать).
Пока не тестировал ).