Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Hool on November 30, 2016, 08:13:00 AM

Title: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on November 30, 2016, 08:13:00 AM
В игре присутствует динамическое освещение (в зависимости от времени суток) + очень мрачная палитра, мало ярких цветов. Пытались искать участки экрана по сохраненному изображению - не находит. Пытались упрощать цвета буфера и искомых скриншотов colormode (6) и ставить currency аж до 30%, все равно не находит ничего. При этом если открыть сохраненные картинки в любом редакторе, скрипт находит их на ура, но только не в игре. Что с этим делать?
Пытались перекрашивать некотрые обьекты в однотонный (255), выяснили что в зависимости от времени суток значение этого красного может упасть до (132).

Привязка к окну:
Если привязать кликер к окну игры, перестает работать часть скрипта отетственная за нажатие виртуальных клавиш. Пробовал перед каждой коммандой нажатия прописывать #ps2_keyboard, результат тот же. В компе клава ps/2. При этом если кликер не привязывать к окну игры то в игре срабатывает нажатие виртуальных клавиш.
И  если сделать скриншот с привязкой к игре - на скрине белая картинка, без привязки адекватная.
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Луций on November 30, 2016, 11:02:27 AM
чо за игра то?
уникальные пиксели софтиной пробовал искать?
браузеры разные для привязки пробовал?
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Oraven on November 30, 2016, 11:02:53 AM
Очевидно что в твоем случаи привязка не применима. Графику может не видеть из за аппаратного ускорения.
Директиву #ps2_keyboard пишут в начале скрипта 1 раз и она действует сразу на весь скрипт.
В оконном режиме ps2 не работает так как команды шлются окну через POSTMESSAGE.
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on November 30, 2016, 11:26:49 AM
чо за игра то?
уникальные пиксели софтиной пробовал искать?
браузеры разные для привязки пробовал?
Она не браузерная, там свой клиент.
Еще нет, попробую. Правда естъ сомнения, уж больно там палитра бедная.
Вот эта, мод к православному фоллауту:
[spoiler](http://s8.hostingkartinok.com/uploads/images/2016/11/ab1a0e869ae6274e420b131753024f5d.jpg)[/spoiler]
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on November 30, 2016, 11:48:22 AM
к примеру нужно найти кактус, или кочан капусты, как это сделать?
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Луций on November 30, 2016, 01:30:26 PM
хорошо находится, кроме случаев, когда каждая модель может быть направлена в 8 сторон и стоять к тебе 8 разными частями, и нужно делать 8 поисков, ага

есть мнение, что автору нужно поискать модификацию графики ля игры (подобную находили для таймзеро) там все 8 картинок заменяются одной и все ок
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Vint on November 30, 2016, 03:00:30 PM
Глядя на "капусту" кажется, что её там всего 2 вида.
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on November 30, 2016, 07:13:21 PM
скрины без сжатия покажи с этими кочанами. Поллитра нормальная, да и маркеры в игре довольно контрастные. Вообще в 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). Ан нет. Черный обьектов меняет свой оттенок. Непонятно
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: dramster on November 30, 2016, 09:39:12 PM
А может следует найти ту зависимость изменения цветов от времени? Возможно, каждый канал ргб цвета пикселя просто статично уменьшается/увеличивается в зависимости от времени.

Ты изменил цвет каких-то объектов на черный 0 , а ты взгляни на какой цвет изменился этот объект, и раскинь его на цвета ргб, если все каналы ргб равны, то ищи зависимость увеличения уменьшения от времени.
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on December 01, 2016, 10:28:52 PM
Неужели так часто меняется яркость? обычно утро- день- вечер- ночь, большего юзеры не потерпят и в такую игру играть не будут которая заставляет  постоянно напрягать глаза.
 Не закрашивать все одним цветом, а ставить метки цветные например 4 пикселя красный- синий-зелёный- зелёный - метка на капусте после COLORMODE(7) всё упростится до 8 цветов, без всяких оттенков весь красный сведётся например к цвету 8355839.
Да яркость цветов меняется часто и нелинейно, в определенный момент ночи каждую секунду. Это некомерческий проект, там может быть все что угодно.
А может следует найти ту зависимость изменения цветов от времени? Возможно, каждый канал ргб цвета пикселя просто статично уменьшается/увеличивается в зависимости от времени.

Ты изменил цвет каких-то объектов на черный 0 , а ты взгляни на какой цвет изменился этот объект, и раскинь его на цвета ргб, если все каналы ргб равны, то ищи зависимость увеличения уменьшения от времени.
Обьясните пожалуйста подробнo, как это сделать
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on December 02, 2016, 12:25:27 AM
Code: [Select]
// 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()?
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Oraven on December 02, 2016, 07:09:53 AM
У тебя в конце end if а надо end_if
halt в конце остановит выполнение.
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on December 02, 2016, 04:39:26 PM
Спасибо.
Возможны ли вложенные циклы с выходом из цикла вида
FOR ($а, $а<5)
FOR ($b, $b<5)
IF (условие)
$а=5
else
END_IF
END_CYC
END_CYC
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Vint on December 02, 2016, 05:21:11 PM
Возможно.
Если нужно и и прерывать, тогда и $b приравнивать.
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on December 02, 2016, 06:23:03 PM
спасибо
Code: [Select]
#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

И такими они и остаются?
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Oraven on December 02, 2016, 07:20:00 PM
Добавь параметр начального значения переменной цикла.
Code: (clickermann) [Select]
#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

Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on December 02, 2016, 07:58:56 PM
Добавь параметр начального значения переменной цикла.
Спасибо огромное! :) В каких случаях обязательно задавать начальное значение для переменной цикла
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Oraven on December 02, 2016, 08:08:23 PM
Quote
В каких случаях обязательно задавать начальное значение для переменной цикла
Сам цикл FOR не обнуляет переменную в конце цикла. Если переменной $a нигде больше в скрипте не задается новое значение то в большинстве.

Обычный вид цикла
Code: (clickermann) [Select]
FOR($a=0,$a<5) // цикл на 5 повторов

END_CYC

Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on December 09, 2016, 05:19:23 PM
День добрый. Как сделать чтоб скрипт считывал PID процесса?
Да и возможна ли такая конструкция:
IF_PICTURE_IN
else
IF_PICTURE_IN
else
END_IF
END_IF
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: dramster on December 09, 2016, 11:29:14 PM
Подскажите  зачем вам нужно это считывание, если никаких действий с процессами данная программа делать не умеет?
Как это не умеет, очень даже умеет, читать из памяти умеет, и писать в память умеет. И как раз для этих функций и требуется ид процесса, с которым в кликермане проблемы, вроде как он показан в окошке кликермана при наведении курсора на нужное окно, а вот достать его программно не умеет. Давно уже просили в предложениях. Пока вписывать приходится вручную при каждом перезапуске процесса с которым требуется работа.
 
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Oraven on December 10, 2016, 09:11:31 AM
День добрый. Как сделать чтоб скрипт считывал PID процесса?

Сам кликер этого не умеет, но можно написать стороннюю программку.
Набросал на AutoIt простой код
Code: [Select]
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 значит процесс не найден.

В архиве скомпилированная программа и пример для кликермана.
Title: Re: if_picture_in не работает в приложении и прочие нубовопросы
Post by: Hool on December 10, 2016, 02:59:58 PM
Спасибо большое