Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Hool on November 30, 2016, 08:13:00 AM
-
В игре присутствует динамическое освещение (в зависимости от времени суток) + очень мрачная палитра, мало ярких цветов. Пытались искать участки экрана по сохраненному изображению - не находит. Пытались упрощать цвета буфера и искомых скриншотов colormode (6) и ставить currency аж до 30%, все равно не находит ничего. При этом если открыть сохраненные картинки в любом редакторе, скрипт находит их на ура, но только не в игре. Что с этим делать?
Пытались перекрашивать некотрые обьекты в однотонный (255), выяснили что в зависимости от времени суток значение этого красного может упасть до (132).
Привязка к окну:
Если привязать кликер к окну игры, перестает работать часть скрипта отетственная за нажатие виртуальных клавиш. Пробовал перед каждой коммандой нажатия прописывать #ps2_keyboard, результат тот же. В компе клава ps/2. При этом если кликер не привязывать к окну игры то в игре срабатывает нажатие виртуальных клавиш.
И если сделать скриншот с привязкой к игре - на скрине белая картинка, без привязки адекватная.
-
чо за игра то?
уникальные пиксели софтиной пробовал искать?
браузеры разные для привязки пробовал?
-
Очевидно что в твоем случаи привязка не применима. Графику может не видеть из за аппаратного ускорения.
Директиву #ps2_keyboard пишут в начале скрипта 1 раз и она действует сразу на весь скрипт.
В оконном режиме ps2 не работает так как команды шлются окну через POSTMESSAGE.
-
чо за игра то?
уникальные пиксели софтиной пробовал искать?
браузеры разные для привязки пробовал?
Она не браузерная, там свой клиент.
Еще нет, попробую. Правда естъ сомнения, уж больно там палитра бедная.
Вот эта, мод к православному фоллауту:
[spoiler](http://s8.hostingkartinok.com/uploads/images/2016/11/ab1a0e869ae6274e420b131753024f5d.jpg)[/spoiler]
-
к примеру нужно найти кактус, или кочан капусты, как это сделать?
-
хорошо находится, кроме случаев, когда каждая модель может быть направлена в 8 сторон и стоять к тебе 8 разными частями, и нужно делать 8 поисков, ага
есть мнение, что автору нужно поискать модификацию графики ля игры (подобную находили для таймзеро) там все 8 картинок заменяются одной и все ок
-
Глядя на "капусту" кажется, что её там всего 2 вида.
-
скрины без сжатия покажи с этими кочанами. Поллитра нормальная, да и маркеры в игре довольно контрастные. Вообще в 2D играх всё хорошо находится.
Там можно взаимодействовать почти с любыми обьектами на карте. Вот скрины куска экрана с билбордом в разное время суток:
[spoiler](http://s8.hostingkartinok.com/uploads/images/2016/11/36a5128bfe57243cddfc29d9385a6e73.bmp)(http://s8.hostingkartinok.com/uploads/images/2016/11/57ae190b72a0bcea0f0f00de02cf8752.bmp)(http://s8.hostingkartinok.com/uploads/images/2016/11/efe6ab8426890fdfa0911836a9230125.bmp)(http://s8.hostingkartinok.com/uploads/images/2016/11/efe6ab8426890fdfa0911836a9230125.bmp)(http://s8.hostingkartinok.com/uploads/images/2016/11/3c18d9388f072ea22be514093defe628.bmp)[/spoiler]
В игре поиском по картинке ни одну из его частей я найти его не могу.
ЧЯДТ?
есть мнение, что автору нужно поискать модификацию графики ля игры (подобную находили для таймзеро) там все 8 картинок заменяются одной и все ок
К графике есть доступ. Перекрасили часть обьектов в черный (0). Идея была такая, черный есть черный, он не изменится, искать обьекты подсчетом количества пикселей цвета (0). Ан нет. Черный обьектов меняет свой оттенок. Непонятно
-
А может следует найти ту зависимость изменения цветов от времени? Возможно, каждый канал ргб цвета пикселя просто статично уменьшается/увеличивается в зависимости от времени.
Ты изменил цвет каких-то объектов на черный 0 , а ты взгляни на какой цвет изменился этот объект, и раскинь его на цвета ргб, если все каналы ргб равны, то ищи зависимость увеличения уменьшения от времени.
-
Неужели так часто меняется яркость? обычно утро- день- вечер- ночь, большего юзеры не потерпят и в такую игру играть не будут которая заставляет постоянно напрягать глаза.
Не закрашивать все одним цветом, а ставить метки цветные например 4 пикселя красный- синий-зелёный- зелёный - метка на капусте после COLORMODE(7) всё упростится до 8 цветов, без всяких оттенков весь красный сведётся например к цвету 8355839.
Да яркость цветов меняется часто и нелинейно, в определенный момент ночи каждую секунду. Это некомерческий проект, там может быть все что угодно.
А может следует найти ту зависимость изменения цветов от времени? Возможно, каждый канал ргб цвета пикселя просто статично уменьшается/увеличивается в зависимости от времени.
Ты изменил цвет каких-то объектов на черный 0 , а ты взгляни на какой цвет изменился этот объект, и раскинь его на цвета ргб, если все каналы ргб равны, то ищи зависимость увеличения уменьшения от времени.
Обьясните пожалуйста подробнo, как это сделать
-
// RECORDED SCRIPT 28.11.2016
// waitms correction
$S_CORR = 0
waitms(100 + $S_CORR)
keyDown(39)
waitms(500 + $S_CORR)
keyUp(39)
waitms(100 + $S_CORR)
keyDown(38)
waitms(500 + $S_CORR)
keyUp(38)
waitms(100 + $S_CORR)
RCLICK(849,525)
waitms(100 + $S_CORR)
LCLICK(849,525)
waitms(2000 + $S_CORR)
GETSCREEN
$count=PXLCOUNT(204,25, 1475,1007, 255)
LOGWRITE("pixel: ", $count)
//pathfinder
if ($count=15077)
$S_CORR = 0
waitms(2345 + $S_CORR)
keyDown(56)
waitms(188 + $S_CORR)
keyUp(56)
waitms(795 + $S_CORR)
lDown(723,558)
waitms(121 + $S_CORR)
lUp(723,558)
waitms(3454 + $S_CORR)
keyDown(56)
waitms(157 + $S_CORR)
keyUp(56)
waitms(316 + $S_CORR)
lDown(755,587)
waitms(136 + $S_CORR)
lUp(755,587)
waitms(2193 + $S_CORR)
keyDown(55)
waitms(158 + $S_CORR)
keyUp(55)
waitms(601 + $S_CORR)
lDown(967,918)
waitms(103 + $S_CORR)
lUp(967,918)
waitms(5238 + $S_CORR)
keyDown(40)
waitms(280 + $S_CORR)
keyUp(40)
waitms(2495 + $S_CORR)
keyDown(37)
waitms(218 + $S_CORR)
keyUp(37)
waitms(4069 + $S_CORR)
keyDown(55)
waitms(158 + $S_CORR)
keyUp(55)
waitms(704 + $S_CORR)
lDown(1211,583)
waitms(118 + $S_CORR)
lUp(1211,583)
waitms(7307 + $S_CORR)
keyDown(37)
waitms(371 + $S_CORR)
keyUp(37)
waitms(2184 + $S_CORR)
keyDown(55)
waitms(126 + $S_CORR)
keyUp(55)
waitms(636 + $S_CORR)
lDown(732,760)
waitms(121 + $S_CORR)
lUp(732,760)
waitms(9556 + $S_CORR)
keyDown(56)
waitms(156 + $S_CORR)
keyUp(56)
waitms(400 + $S_CORR)
lDown(1094,643)
waitms(119 + $S_CORR)
lUp(1094,643)
waitms(5022 + $S_CORR)
keyDown(56)
waitms(158 + $S_CORR)
keyUp(56)
waitms(541 + $S_CORR)
lDown(525,455)
waitms(119 + $S_CORR)
lUp(525,455)
waitms(10977 + $S_CORR)
keyDown(40)
waitms(96 + $S_CORR)
keyUp(40)
waitms(616 + $S_CORR)
keyDown(38)
waitms(218 + $S_CORR)
keyUp(38)
waitms(615 + $S_CORR)
keyDown(40)
waitms(96 + $S_CORR)
keyUp(40)
waitms(1659 + $S_CORR)
keyDown(55)
waitms(97 + $S_CORR)
keyUp(55)
waitms(955 + $S_CORR)
lDown(373,757)
waitms(111 + $S_CORR)
lUp(373,757)
waitms(1081 + $S_CORR)
rDown(453,827)
waitms(56 + $S_CORR)
rUp(453,829)
waitms(144 + $S_CORR)
lDown(455,829)
waitms(128 + $S_CORR)
lUp(455,829)
waitms(944 + $S_CORR)
lDown(334,832)
waitms(104 + $S_CORR)
lUp(334,832)
waitms(847 + $S_CORR)
lDown(362,795)
waitms(144 + $S_CORR)
lUp(362,795)
waitms(840 + $S_CORR)
lDown(354,798)
waitms(120 + $S_CORR)
lUp(354,798)
waitms(1696 + $S_CORR)
keyDown(55)
waitms(128 + $S_CORR)
keyUp(55)
waitms(577 + $S_CORR)
lDown(373,750)
waitms(143 + $S_CORR)
lUp(373,750)
waitms(1817 + $S_CORR)
rDown(727,824)
waitms(88 + $S_CORR)
rUp(727,824)
waitms(560 + $S_CORR)
lDown(731,827)
waitms(103 + $S_CORR)
lUp(731,827)
waitms(712 + $S_CORR)
lDown(779,765)
waitms(112 + $S_CORR)
lUp(779,765)
waitms(760 + $S_CORR)
lDown(809,738)
waitms(121 + $S_CORR)
lUp(809,738)
waitms(679 + $S_CORR)
lDown(815,567)
waitms(120 + $S_CORR)
lUp(815,567)
waitms(801 + $S_CORR)
lDown(831,523)
waitms(95 + $S_CORR)
lUp(831,523)
waitms(1316 + $S_CORR)
keyDown(38)
waitms(282 + $S_CORR)
keyUp(38)
waitms(1627 + $S_CORR)
keyDown(56)
waitms(127 + $S_CORR)
keyUp(56)
waitms(1664 + $S_CORR)
lDown(451,116)
waitms(128 + $S_CORR)
lUp(451,116)
waitms(13329 + $S_CORR)
rDown(608,98)
waitms(54 + $S_CORR)
rUp(608,98)
waitms(537 + $S_CORR)
lDown(616,74)
waitms(144 + $S_CORR)
lUp(616,74)
waitms(3970 + $S_CORR)
waitms(399 + $S_CORR)
waitms(12 + $S_CORR)
keyUp(18)
waitms(0 + $S_CORR)
keyUp(83)
waitms(0 + $S_CORR)
keyUp(164)
end if
halt
Почему начинает исполняться код //pathfinder, когда $count не равно 15077?
UPD. Приписал else, стало работать как надо. Т.е. else обязательно для if()?
-
У тебя в конце end if а надо end_if
halt в конце остановит выполнение.
-
Спасибо.
Возможны ли вложенные циклы с выходом из цикла вида
FOR ($а, $а<5)
FOR ($b, $b<5)
IF (условие)
$а=5
else
END_IF
END_CYC
END_CYC
-
Возможно.
Если нужно и и прерывать, тогда и $b приравнивать.
-
спасибо
#logfile
// upper right
$S_CORR = 0
waitms(100 + $S_CORR)
keyDown(39)
waitms(1000 + $S_CORR)
keyUp(39)
waitms(100 + $S_CORR)
keyDown(38)
waitms(1000 + $S_CORR)
keyUp(38)
waitms(100 + $S_CORR)
RCLICK(849,525)
waitms(100 + $S_CORR)
LCLICK(849,525)
waitms(2000 + $S_CORR)
//colors
$arr[0]=263172
$arr[1]=197636
$arr[2]=197380
$arr[3]=197379
$arr[4]=131843
$arr[5]=131587
$arr[6]=131586
$arr[7]=197122
$arr[8]=262915
//black staff
$x[0]=930
$y[0]=449
$x1[0]=1323
$y1[0]=519
$x[1]=790
$y[1]=795
$x1[1]=828
$y1[1]=887
$x[2]=1089
$y[2]=342
$x1[2]=1229
$y1[2]=401
$x[3]=1217
$y[3]=142
$x1[3]=1267
$y1[3]=245
$x[4]=853
$y[4]=234
$x1[4]=935
$y1[4]=291
$x[5]=931
$y[5]=528
$x1[5]=1028
$y1[5]=627
$x[6]=652
$y[6]=93
$x1[6]=753
$y1[6]=165
$x[7]=1173
$y[7]=636
$x1[7]=1211
$y1[7]=755
GETSCREEN
FOR($c, $c < 8)
FOR($a, $a < 8)
$i[$a]=PXLCOUNT($x[$c],$y[$c], $x1[$c],$y1[$c], $arr[$a] )
LOGWRITE ($i[$a])
IF($i[$a]>0 )
$b=$i[$a]
$a=8
$c=7
else
end_if
END_CYC
END_CYC
LOGWRITE ("Ñîîáùåíèå",$b)
SCREENSHOTEX(0,0, $_xmax,$_ymax, $b, 0)
halt
Почему код не изменяет кординаты в функции $i[$a]=PXLCOUNT($x[$c],$y[$c], $x1[$c],$y1[$c], $arr[$a] )? Он берет координаты из
$x[0]=930
$y[0]=449
$x1[0]=1323
$y1[0]=519
И такими они и остаются?
-
Добавь параметр начального значения переменной цикла.
#logfile
// upper right
$S_CORR = 0
waitms(100 + $S_CORR)
keyDown(39)
waitms(1000 + $S_CORR)
keyUp(39)
waitms(100 + $S_CORR)
keyDown(38)
waitms(1000 + $S_CORR)
keyUp(38)
waitms(100 + $S_CORR)
RCLICK(849,525)
waitms(100 + $S_CORR)
LCLICK(849,525)
waitms(2000 + $S_CORR)
//colors
$arr[0]=263172
$arr[1]=197636
$arr[2]=197380
$arr[3]=197379
$arr[4]=131843
$arr[5]=131587
$arr[6]=131586
$arr[7]=197122
$arr[8]=262915
//black staff
$x[0]=930
$y[0]=449
$x1[0]=1323
$y1[0]=519
$x[1]=790
$y[1]=795
$x1[1]=828
$y1[1]=887
$x[2]=1089
$y[2]=342
$x1[2]=1229
$y1[2]=401
$x[3]=1217
$y[3]=142
$x1[3]=1267
$y1[3]=245
$x[4]=853
$y[4]=234
$x1[4]=935
$y1[4]=291
$x[5]=931
$y[5]=528
$x1[5]=1028
$y1[5]=627
$x[6]=652
$y[6]=93
$x1[6]=753
$y1[6]=165
$x[7]=1173
$y[7]=636
$x1[7]=1211
$y1[7]=755
GETSCREEN
FOR($c=0, $c < 8)
FOR($a=0, $a < 8)
$i[$a]=PXLCOUNT($x[$c],$y[$c], $x1[$c],$y1[$c], $arr[$a])
LOGWRITE ($i[$a])
IF($i[$a] > 0)
$b=$i[$a]
$a=8
$c=7
end_if
END_CYC
END_CYC
LOGWRITE ("Сообщение ",$b)
SCREENSHOTEX(0,0, $_xmax,$_ymax, $b, 0)
halt
-
Добавь параметр начального значения переменной цикла.
Спасибо огромное! :) В каких случаях обязательно задавать начальное значение для переменной цикла
-
В каких случаях обязательно задавать начальное значение для переменной цикла
Сам цикл FOR не обнуляет переменную в конце цикла. Если переменной $a нигде больше в скрипте не задается новое значение то в большинстве.
Обычный вид цикла
FOR($a=0,$a<5) // цикл на 5 повторов
END_CYC
-
День добрый. Как сделать чтоб скрипт считывал PID процесса?
Да и возможна ли такая конструкция:
IF_PICTURE_IN
else
IF_PICTURE_IN
else
END_IF
END_IF
-
Подскажите зачем вам нужно это считывание, если никаких действий с процессами данная программа делать не умеет?
Как это не умеет, очень даже умеет, читать из памяти умеет, и писать в память умеет. И как раз для этих функций и требуется ид процесса, с которым в кликермане проблемы, вроде как он показан в окошке кликермана при наведении курсора на нужное окно, а вот достать его программно не умеет. Давно уже просили в предложениях. Пока вписывать приходится вручную при каждом перезапуске процесса с которым требуется работа.
-
День добрый. Как сделать чтоб скрипт считывал PID процесса?
Сам кликер этого не умеет, но можно написать стороннюю программку.
Набросал на AutoIt простой код
If $cmdline[0] > 0 Then
$Pid = ProcessExists($cmdline[1])
IniWrite("Find_PID.ini", "default", "PID", $Pid)
EndIf
Запускаем программку Find_PID.exe с параметром имени процесса.
Пример:
Find_PID.exe notepad.exe
Результат возвращается рядом в INI файл. Если вернет 0 значит процесс не найден.
В архиве скомпилированная программа и пример для кликермана.
-
Спасибо большое