Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - gsukhado

Pages: [1] 2
1
Общие вопросы / Переименовать окно
« on: September 05, 2021, 11:56:42 PM »
Всем привет!
Есть ли возможность средствами Кликермана переименовать окно? Т.е. например я запускаю несколько эмуляторов, и уже после их запуска хочу некоторые из них переименовать.
В Интернете нашел *.exe программки для этого, но на них антивирус ругается.
Наверняка же как-то можно Кликерманом тоже сделать?

2
День добрый.
В игрушке если шахты заняты - то над ними высвечивается тайминг, на затененном фоне. Т.е. там не просто черный фон, а именно затенение по отношению к иной картинке. Если делать Colormode - то если вокруг основная картинка темная (трава, горы) - то в итоге и основная картинка, и это затемнение будут оба черными.
Можно ли как-то обнаруживать наличие подобных затемненных участков?
Т.е. общий потенциальный алгоритм: находится шахта (наличие нужной картинки), а потом над ней проверить есть ли затененный участок или нет. Человеческий глаз эту затененность видит, а вот как эту "затененность" выявить программно? Может быть будут идеи?

3
Общие вопросы / Массив окон по заголовку
« on: September 21, 2019, 11:23:37 PM »
У меня достаточно близкий вопрос, не буду плодить тем.
Открыто несколько окон Блюстака, через его мультиоконный режим. Мне нужно получить массив из их hwnd , чтобы потом переключаться между ними.
Если запрашиваю через WNDFIND

Code: (clickermann) [Select]
$hwnd_tmp = WNDFIND("BlueStacks", 0)
IF($hwnd_tmp > 0)
   print("нашли окно = ", $hwnd_tmp)
   print(hgettext($hwnd_tmp) )
ELSE
   HINTPOPUP("Окно не найдено", "Ошибка")
   HALT
END_IF
halt

то получаю значение только для одного окна. А как найти все окна, содержащие в начале своего названия "BlueStacks"? При этом заранее ввести массив потенциальных названий окон и делать по ним перебор не вполне удобно, т.к. не все они могут быть открыты, или где-то может смениться название, которое идет после "BlueStacks"...

4
День добрый.
Предположим есть 10 переключателей. Каждый из них может принимать значения 0 или 1, причем независимо друг от друга.
Задача: выбрать только те переключатели, у которых значение =1, и расставить именно такие переключатели в случайном порядке.

Поясню исходную задачу, в рамках скрипта к игре - при заходе на поляну надо сделать 10 разных действий, причем по ряду причин некоторые надо делать на конкретной поляне, а некоторые не надо. Надо или не надо делать конкретное действие - проверяется в момент входа на поляну. Не хочется повторяться, и делать один и тот же цикл при каждом входе на поляну, а хотелось бы его рандомизировать.
Как вариант, пока приходит в голову только прописать жестко несколько стандартных циклов, и рандомно выбирать какой-то из них. Причем рандом естественно с разным весом у разных вариантов, что-то типа rnd(variant1,variant1,variant1,variant2,variant3,variant3)
Но вот можно ли сделать действительно рандомный алгоритм?...

5
День добрый.
У меня в скрипте есть строки для пересчета формул координат

Code: [Select]
#define xmul(:$x_gr_new+INT((
#define )xmul:-$x_gr_ish)*$x_peresch)
#define ymul(:$y_gr_new+INT((
#define )ymul:-$y_gr_ish)*$y_peresch)

В "настройки интерпретатора" стоит "игнорировать ошибки". Но в новой версии Кликерман постоянно мне на эти строчки тыкает, говоря что число скобок не соответствует. Но я же ему сказал "Игнорировать ошибки"! В 4.12 он отлично все игнорировал и на нервы не действовал... А тут нехорошо поступает...

6
Доброго времени суток.
Задача: сдвинуть экран в эмуляторе, для чего зажать левую кнопку мышки, сдвинуть и отпустить.
Скрипт отлично работал в Блюстаксе. Сейчас потребовалось применить в Нокс - все прочее работает отлично, в т.ч. обычные клики, а вот при сдвиге экрана - мышка как будто не нажимается, а просто по экрану перемещается.
Не подскажете, в чем тут может быть подвох? Попробовал уже ldown заменить на POSTMESSAGE - результат не изменился :(

Code: [Select]
if($emulator_vybor=0)  // для Блюстака
   ldown(INT($x_pxl_lev_verh+$x_zone_pxl/2+$x_move_fict/2),INT($y_pxl_lev_verh+$y_zone_pxl/2+$y_move_fict/2))
else   // для Нокса
   $x_nox=INT($x_pxl_lev_verh+$x_zone_pxl/2+$x_move_fict/2)
   $y_nox=INT($y_pxl_lev_verh+$y_zone_pxl/2+$y_move_fict/2)
   POSTMESSAGE($hwnd1,0x0201,0x0001,$x_nox+($y_nox*65536))   //LDOWN
end_if
         print ("---кликнули на ", 70+284+$x_move_fict/2, " на ", 400+284+$y_move_fict/2)
   waitms(800+rnd(0,100))
   m_move(INT($x_pxl_lev_verh+$x_zone_pxl/2-$x_move_fict/2), INT($y_pxl_lev_verh+$y_zone_pxl/2-$y_move_fict/2))
   //      print("---Передвинулись на дальность", $x_move_fict, " и ", $y_move_fict)
   waitms(900+rnd(0,100))
if($emulator_vybor=0)  // для Блюстака
   lup($_xmouse, $_ymouse)
else   // для Нокса
   POSTMESSAGE($hwnd1,0x0202,0x0000,$_xmouse+($_ymouse*65536))   //LUP
end_if

7
День добрый.
Нужно обнаружить, когда при применении colormode в нужной части экрана появляются пиксели, отличных от черно-белых.
Можно конечно перебором попроовать в PXLCOUNT, но цветов разных может быть много. Можно ли как-то проще посчитать число пикселей с цветом, отличных от черного или белого?
(поиском по форуму увы не нашел)

8
День добрый.
По ряду причин хочу все текущие скриншоты сохранять не в папке Кликермана, а в иной.
Если указывать такой внешний адрес, SCREENSHOT("d:\_tmp_screens\_my_analiz_")
то просто ничего не сохраняет и все

Обходной вариант с сохранением и последующим переносом работает, но это лишнее действие:
SCREENSHOT("_my_analiz_")
EXECUTE("cmd.exe", "/c move /Y screens\*.*, d:\_tmp_screens")

Можно ли как-то сразу сохранить в нужную папку?

9
Общие вопросы / Поиск гомотетичных фигур
« on: February 28, 2018, 03:11:18 PM »
День добрый.
Во многих приложениях сейчас изображения имеют разный размер, в зависимости от того, в какой части экрана они находятся (например, внизу экрана - больше, типа как "рядом", а вверху экрана меньше, типа "далеко"). В остальном изображения подобны, точнее, гомотетичны между собой.
За счет таких плавающих размеров искать по стандартному совпадению пиксел - почти не вариант, только если делать скрины в разных частях экрана и последовательно каждый из них искать.
Может быть есть алгоритмы, как находить такие гомотетически изменяющиеся картинки?

10
Всем день добрый.
Возможно простой вопрос: можно ли и как сделать рандом, но неравномерный?
Например, в интервале 1-100 чтобы чаще всего выдавало из 50-70, чуть реже в интервалах 40-50 и 70-85, еще реже 20-40 и 85-95, и совсем редко 0-20 и 95-100 ?

11
Общие вопросы / Работа с окном Excel
« on: December 28, 2017, 12:04:07 AM »
День добрый.
Делаю вроде простой скрипт скопировать из Экселя - вставить в Браузерную почту.
Но почему-то с окном Экселя возник затык, работать в нем не хочет. Причем даже на первом шаге, когда я хочу пододвинуть найденное окно. Причем полностью идентичный код для Explorer - работает, а для Excel - окно находит, на передний план перемещает, но не двигает. Не подскажете, что тут может быть?

Code: (clickermann) [Select]
   $hwnd2=0
   $hwnd2 = wndfind("Excel") // получаем HWND окна
   if ($hwnd2 > 0)
      print("нашли окно Excel = ", $hwnd2)
   else
      print("почему-то найти не смогли")
   end_if
   waitms(3400+rnd(0,20))
   WNDBUMP($hwnd2)     // Окно на передний план - срабатывает
   waitms(3400+rnd(0,20))
   
   WNDPOS($hwnd2,0,0)  // подвинули окно влево - должно вроде, но к Excel никакой реакции
   waitms(300+rnd(0,200))
   WNDGETINFO ($hwnd2, $tmp_var21, $tmp_var22, $tmp_var23, $tmp_var24)
   print("Окно размером ", $tmp_var21, "  ", $tmp_var22, " на ", $tmp_var23, "  ", $tmp_var24)
   waitms(600+rnd(0,50))
   WNDSIZE($hwnd2,750,867)
   print("изменили размер окна")
   waitms(400+rnd(0,20))

12
Общие вопросы / Виртуальная машина
« on: October 05, 2017, 10:46:01 PM »
Вообще бы хорошо создать тему с использованием виртуальной машины, потому как нубу будет трудно в этом разобраться. Не все умеют ставить виндовс, а работать в фоне нужно чуть ли не каждому. Скачать уже готовую виртуалку с портативной VirtualBox куда проще.
Сейчас тоже вышел на то, что скрипт заработал, а комп для работы нужен. Полазил здесь - хотя бы краткого введения или инструкций по виртуальной машине не нашел. Может быть что-то посоветуете или ссылочку дадите, что и как правильно применять?

13
День добрый.

Требуется задавать масштабируемые значения для переменных, т.е. чтобы координаты для формул прописывались не в явном виде, а как функция = ($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)) от координаты $x_ishodnoe

Вручную везде по тексту вводить конструкции типа
ldown($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_gr+INT(($y_ishodnoe-$y_gr)*$y_peresch))

или
if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(48*$y_peresch))=16744319))

- просто замучаешься. Наверняка есть возможность задания подобных функций, чтобы можно было сокращать до примерно
ldown(функция($x_ishodnoe),функция($y_ishodnoe))
Но увы в описаниях не нашел. Если просто через обычную подпрограмму - то надо вводить какие-то дополнительные переменные чтобы вернуть рассчитанное значение... Явно я что-то в хэлпах не обнаружил? подскажите плз...

14
Что-то уже не первый раз глюки с Кликерманом: код может не работать просто на голом месте.
Например, скопировал себе предложенный dramster код http://crapware.aidf.org/forum/index.php?topic=88.msg23101#msg23101
И он не работает. Причем не работает даже на примитивном уровне - не выдает на печать строку 78. А если ее же перенабрать вручную - то строка начинает работать нормально. Причем когда визуально перенабираю - то код полностью идентичный. Что тут не так? Неужели надо вручную перенабирать весь листинг программы, чтобы она заработала?

Еще из последних примеров, в ответ на код :
      $x1 = $tmp_x-26-5
      $y1 = $tmp_y+62-5
      $x2 = $tmp_x+6+3+5
      $y2 = $tmp_y-18+100+10+5
      print("координаты ", $x1, " ", $y1, " ", $x2, " ", $y2)
Выдает распечатку "координаты 31 84 49 28-18+100+10+5"
А после того как вручную еще раз перенабрал строку  $y2 = $tmp_y-18+100+10+5
- стало выдавать "координаты 31 84 49 125"

С чем это может быть связано?

15
Всем день добрый.
Пробую использовать вроде бы детально описанную тут команду if_picture_in
Сделал скриншот с использованием http://crapware.aidf.org/forum/index.php?topic=2778.0 (пробовал варианты цветокоррекции на 3 и на 6, итог одинаков), обрезал картинку до размера примерно 30на50, и пробую найти ее на поле игры.
Однако if_picture_in выдает в качестве результата все время (0,0). Я попробовал даже уменьшить поле в if_picture_in(11,125...) - но результат все тот же.
Хотя нужный фрагмент на экране визуально присутствует, скорее внизу экрана - но его данная функция найти никак не хочет.
В чем тут может быть подвох, как сделать?

Code: (clickermann) [Select]
//main part
print("Начинаем фармить")
// ---Поиск шахты с лесом
getscreen(0,0,513,950)
colormode(6,0,0,513,950)
if_picture_in(11,125,510,948,"st_les.bmp",-1,100)
   print("Нашел совпадение, координаты:", $_return1, " ,", $_return2)
   move($_return1+5, $_return2+5)
   wait(5)
   goto(ataka_shahty)
   print("Ничего нет")
   goto(tmp_end)
enf_if

P.S.Если это существенно: картинку ищу в игре на эмуляторе BlueStack3

Pages: [1] 2