Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: Уральский on June 13, 2015, 07:41:14 AM
-
Читал но подобного не нашёл, а может что то и есть но, видимо до меня не доходит ;)
Если можно наглядно подскажите!
Немного могу сам что то написать, Но пока не все могу понять, переделываю написанные скрипты под свои нужды и понемногу учусь.
В игре есть иконка боеприпасов на ней цифрами количество боеприпасов, они убывают когда кого-то аточишь или прибывают при покупке.
go:
getscreen
IF_PICTURE_IN (31,247, 82,310, "моб.bmp") //
WAITMS (150)
lclick($_return1+40, $_return2-55)
WAITMS (20)
KEYPRESS (17)//
Else
end_if
( дальше каждые 10 секунд нужно отслеживать эту иконку и если она не изменилась)
go:
getscreen
IF_PICTURE_IN (31,247, 82,310, "моб.bmp") //
WAITMS (150)
lclick($_return1+40, $_return2-55)
WAITMS (20)
KEYPRESS (17)//
Else
end_if
-
// снимаем два хеша с промежутком в 10 сек
GETSCREEN
$hash1 = PXLCRC(100,100, 200,200) // область цифр иконки боеприпасов
WAIT(10)
GETSCREEN
$hash2 = PXLCRC(100,100, 200,200)
//если они одинаковые значит выполняем условие
IF($hash1 = $hash2)
GETSCREEN
IF_PICTURE_IN (31,247, 82,310, "моб.bmp")
WAITMS (150)
lclick($_return1+40, $_return2-55)
WAITMS (20)
KEYPRESS (#CTRL)
end_if
WAIT(1)
END_IF
-
// снимаем два хеша с промежутком в 3 сек
2.GETSCREEN
3.$hash1 = PXLCRC(1067,975, 1081,979) // область цифр иконки боеприпасов
WAITMS(3000)
5.GETSCREEN
6.$hash2 = PXLCRC(1067,975, 1081,979)
7.//если они одинаковые значит выполняем условие
8.IF($hash1 = $hash2)
getscreen
IF_PIXEL_IN(350,150, 1910,937,204)
lclick($_return1+36, $_return2-50)
WAITMS (20)
KEYPRESS (#CTRL)
ELSE
END_IF
Работает но не совсем так как нужно.
Находит моба и атачит, через WAITMS(3000) нажимает CTRL и атака отменена через WAITMS(3000 снова ищет моба не добив предыдущего, и так собирает кучу мобов ))
(область цифр иконки боеприпасов) во время боя меняется , то есть цифры идут на убыль. он не должен делать ни каких действий пока картинка не станет не изменной
Делать длинную задержку тоже не вариант. на одного моба нужно минуту на другого 10 предугадать кого он встретит не реально
-
Вот, сделал более умную задержку. Теперь цикл анализирует область пока она перестанет изменяться в течении 3х секунд, то есть если за три секунды не произошло изменений то переходим к поиску пиксела, если же произошли изменения то снова ждем три секунды.
GETSCREEN
$hash1 = PXLCRC(1067,975, 1081,979)
$check = 0
UNDEFINE($time)
WHILE($check = 0)
WAITMS(50)
GETSCREEN
$hash2 = PXLCRC(1067,975, 1081,979)
IF($hash1 = $hash2)
DEFINE($time, $_time_t + 3) // хеш одинаковый, ждем еще 3 секунды
IF($time < $_time_t)
$check = 1
END_IF
ELSE
$hash1 = PXLCRC(1067,975, 1081,979)
$check = 0
UNDEFINE($time)
END_IF
END_CYC
GETSCREEN
IF_PIXEL_IN(350,150, 1910,937,204)
lclick($_return1+36, $_return2-50)
WAITMS (20)
KEYPRESS (#CTRL)
WAITMS (50)
end_if
-
Не работает, совсем ни чего не происходит((
пробивал изменить размер сравнения хеша до 1 пиксела, тоже тишина((
-
Добавил запись в лог, посмотри что там пишет.
GETSCREEN
$hash1 = PXLCRC(1067,975, 1081,979)
LOGWRITE ("hash1: ", $hash1)
$check = 0
UNDEFINE($time)
WHILE($check = 0)
WAITMS(50)
GETSCREEN
$hash2 = PXLCRC(1067,975, 1081,979)
IF($hash1 = $hash2)
DEFINE($time, $_time_t + 3) // хеш одинаковый, ждем еще 3 секунды
IF($time < $_time_t)
$check = 1
END_IF
ELSE
$hash1 = PXLCRC(1067,975, 1081,979)
LOGWRITE ("hash1_2: ", $hash1)
$check = 0
UNDEFINE($time)
END_IF
END_CYC
LOGWRITE ("Ищу пиксел")
GETSCREEN
IF_PIXEL_IN(350,150, 1910,937,204)
LOGWRITE ("Нашел")
lclick($_return1+36, $_return2-50)
WAITMS (20)
KEYPRESS (#CTRL)
WAITMS (50)
ELSE
LOGWRITE ("Не нашел")
end_if
-
Всё работает именно так как нужно!!!, не знал что при копировании скрипта нумерацию строк нужно удалить.
Сейчас буду кумекать как соединить то что вы дали с с моим скриптом..... Пока чтоб всё работало как нужно приходится запускать одновременно 3 кликера
Я ещё вернусь ;)
Спасибо!!!
-
//Это скрипт поиск пиксела от центра
$x=0
$y=0
$cent_x=int($_xmax/2)
$cent_y=int($_ymax/2)
GETSCREEN
SCANPXL($arr,100,100, 200,200, 1057851)
FOR($a=0,$a<ARRSIZE($arr),2)
IF(DIST($arr[$a],$arr[$a+1],$cent_x,$cent_y)<DIST($x,$y,$cent_x,$cent_y))
$x=$arr[$a]
$y=$arr[$a+1]
END_IF
END_CYC
UNDEFINE($arr)
IF(($x+$y)>0)
LDOWN ($x, $y)
WAITMS(RND(80,60))
LUP($x, $y)
WAITMS(RND(80,40))
END_IF
//Это тоже поиск пиксела со случайным кликом, но с верх левого угла: оба взяты с форума и немного переделаны под себя.
//Пользуюсь вторым. вот если бы в нем сделать поиск от центра!!!!!!!!!!!!! пробую сам , но не получается не все понимаю что тут к чему: соедините пожалуйста! ( если добавите комментарии будет замечательно! в справке не всегда все понятно.)
//Кстати первый скрипт у меня тоже не работал до сего дня из за нумерации строк ;)
SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y,$MOVE_CLICK)
$MOVE_SPEED = 2
$MOVE_Start_X = $_xmouse
$MOVE_Start_Y = $_ymouse
$MOVE_X = $MOVE_Start_X
$MOVE_Y = $MOVE_Start_Y
$dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
$MOVE_SPEEDVAR = INT((SQRT($dist))/$MOVE_SPEED)
IF($MOVE_SPEEDVAR < 1)
$MOVE_SPEEDVAR = 1
END_IF
$MOVE_step=($dist-1)/$MOVE_SPEEDVAR
$MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
$MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
FOR($MOVE_i=0, $MOVE_i<INT($MOVE_step))
$MOVE_X = $MOVE_X + $MOVE_X_step
$MOVE_Y = $MOVE_Y + $MOVE_Y_step
MOVE(ROUND($MOVE_X,0), ROUND($MOVE_Y,0))
WAITMS(1)
END_CYC
MOVE($MOVE_END_X, $MOVE_END_Y)
IF($MOVE_CLICK = 1)
LDOWN($MOVE_END_X, $MOVE_END_Y)
WAITMS(RND(80,150)
LUP($MOVE_END_X, $MOVE_END_Y)
WAITMS(RND(80,150)
END_IF
END_SUB
mouse_move (RND(85,195),RND(889,939),1)
$time = $_time_t + RND(2,3)
$check = 0
$check_out = 0
WHILE(($check_out = 0) & ($time > $_time_t))
GETSCREEN
IF_PIXEL_IN(100,100, 200,200, 1057851)
LCLICK ($_return1, $_return2)
WAITMS(RND(50,60))
ELSE
ELSE
IF($check = 1)
$check_out = 1
END_IF
WAITMS(300)
END_IF
END_CYC
WAITMS(RND(40,60))
// Есть небольшой недостаток во втором коде: Когда персонаж в движении клик промахивается кликая рядом, кликает точно когда персонаж промахнулся остановившись