Author Topic: Мои странности Кликерманна (список пополнен 06.11.2016)  (Read 6795 times)

0 Members and 1 Guest are viewing this topic.

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Только начал пользоваться КЛМН, но некоторые вещи уже сразу режут глаз:
  • (14.09.16) Программа не запоминает режим "Поверх всех окон", то есть после перезапуска приходится самому включать его
  • Если включён "Поверх всех" (у кого-то он отключен?), то все окна настроек (которые достаточно часто приходится вызывать из-за того, что даже основных настроек нет на экране) появляются на месте основного окна и прямо за ним, а не поверх него. То есть постоянно приходится смещать окна, чтобы попасть в настройки. Даже больше: зашёл в Редактор, что-то поделал там (кажется, ничего не изменял), но при выходе из Редактора вылетело маленькое окошко с вопросом о применении настроек, которое было также ПОЗАДИ большого окна Редактора, и появление этого окошка мне стало заметно не сразу, сначала мне показалось, что Редактор просто висит, я даже попробовал закрыть его, но это не помогало, потому что фокус был на вылетевшем маленьком диалоговом окошке. Почесав репу, нажал Alt-space и перетащил незадачливое окошко из зоны недосягаемости.
  • Окошко настроек "Режим выполнения" не закрывается после нажатия "Применить", приходится закрывать крестиком. Чяднт?
  • Скриншоты сохраняются в BMP либо JPG? Причём на форуме идут споры, какой лучше. PNG -- относительно новый формат, объединяющий преимущества двух предыдущих (имеет компрессию, не имеет потерь качества).
  • Только что записал пробный скрипт, открыл в Редакторе -- а там куча этих waitms. Почему в настройках есть "Записывать движения мыши", но нет галочки "Записывать задержки"? Зачем мне ваши вейты, если у меня delay_between_lines = 200?!
  • Многие интересные настройки не представлены в GUI, а ваще вынесены в текстовый файл... Защита дилеев от ламеров?
  • На попадавшихся мне кликерах запуск и остановка совмещены в одну кнопку, при этом если про полезность дополнительной кнопки ещё можно поспорить, то зачем делать два разных хоткея для управления одним скриптом?
  • Для каждого окна настроек почему-то сделан раздельный режим "Поверх всех", то есть если в главном окне он включён, то в подокне придётся запускать его отдельно. Зачем? Ведь в случае ненадобности окна его можно просто закрыть.
  • (15.09.16) В самом Редакторе скриптов есть зачем-то сразу две сходные кнопки: Применить и Сохранить. То есть получается, что Применить не сохраняет, а когда спрашивается о применении изменений при выходе, то они не сохраняются, а только задействуются для текущего сеанса?
    PS. Позже понял, что Применить не сохраняет скрипт, оно только вылетает постоянно, когда выходишь из редактора, даже если скрипт уже сохранён..
  • Если, как мы видим выше, в Редакторе сразу две кнопки для сохранения и ещё хоткей, то в главном окно нет ни то что хоткея для сохранения свежезаписанного скрипта, но там даже и кнопки для этого нет.
  • Записал наконец свой пробный простейший скрипт без привязки, элементарно переносящий строки между двумя открытыми блокнотами. Если отсеять дилейную шелуху, которую так любит логить КЛМН, останется следующее: [spoiler]
    // RECORDED SCRIPT Чт 15.09.16
    // waitms correction
    $S_CORR = 0
      keyDown(17)
      keyDown(163)
      keyDown(36)
      keyUp(36)
      keyUp(163)
      keyUp(17)
      keyDown(16)
      keyDown(161)
      keyDown(35)
      keyUp(35)
      keyUp(161)
      keyUp(16)
      keyDown(162)
      keyDown(17)
      keyDown(88)
      keyUp(88)
      keyUp(162)
      keyUp(17)
      keyDown(46)
      keyUp(46)
      lDown(1759,44)
      lUp(1759,44)
      keyDown(17)
      keyDown(163)
      keyDown(35)
      keyUp(35)
      keyUp(17)
      keyUp(163)
      keyDown(161)
      keyDown(16)
      keyDown(45)
      keyUp(45)
      keyUp(16)
      keyUp(161)
      keyDown(13)
      keyUp(13)
      lDown(1328,446)
      lUp(1328,446)
    // FINISH AT 13:29:29
    [/spoiler] Шта, кей-коды? Мне мало учить четыре хоткея для двух команд в КЛМН, пойду подучу ещё эту азбуку Морзе. Сразу вспоминается забота о пользователе:
    [spoiler]
    Коды клавиш в буквенный вид не переводятся, вывод результата только в лог, чтоб не облегчать жизнь ламерам. ;)
    [/spoiler]
  • Помимо сюрприза выше с интерпретацией введённых клавиш, сей скрыпт из пункта 11 (код под первым спойлером) добавил ещё больше вопросов к адекватности рекордера. Я молчу про распаровку keyUp'ов и keyDown'ов не по порядку, а как бы вперемешку. Но я посчитал сколько нажатий и кликов было сделано для тестового скрипта: вышло 11 и 2 соответственно, то есть для нажатий 22 оператора keyUp/keyDown + 4 оператора lUp/iDown. Что же записал наш рекордер? В исходнике я насчитал целых 17 нажатий вместо 11 нужных, да и с кликами вышел двойной факап: во-первых, рекордер не записал первый мой клик. Во-вторых, рекордер записал один лишний клик (так сказать, классика жанра) -- тот клик, которым я его, рекордера и пытался остановить. Оправдать ситуацию с этим классическим багом кликеров может лишь тот факт, что такой баг присутствует во многих других аналогах. Но бороться с ним очень просто: на записывать хоткеи/нажатия в течение примерно 400 миллисекунд от начала конца скрипта и тем более совпадающие с его личными рекордерскими хоткеями/местами расположения клавиш управления записью скрипта. Очевидно, разве нет? Иначе в результате получаются при записи скрипты, которые сами себя брейчат либо же паузят. 
  • (16.09.16) После нажатия Очистить в Редакторе уже не работает история операций/отмен.
  • В окне Редактора невозможно перемещаться по строкам кода используя стрелки Вправо/Влево, а только Вверх/Вниз (для перемещения между строками). Даже при хвалёном редактировании (а не быстрой записи через рекордер) возникают какие-то непонятные проблемы, и это в 4-ой версии-то. Фишка рекордера в том и заключается, что можно очень быстро, за пару кликов сделать то, над чем будешь сидеть целую минуту в Редакторе. Хорошо хоть стандартные вездесущие хоткеи Ctrl-Home и Shift-End не сломаны.
  • Программа не запоминает состояний своих окон (см. пункты 1 и 8 ), к тому же не может запомнить состояние Режима выполнения -- постоянно при перезапуске сбрасывает его в этот непонятно кому нужный с запуска режим Неограниченный. То есть если я перезапускаю программу и мне не нужно многократное повторение скрипта, мне надо каждый раз лезть в настройки режима и отключать бесконечные клики по кругу. Иначе, если я забуду и запущу скрипт, он может натворить немало делов, либо же мне придётся ждать и подловить конец выполнения скрипта (дай бог ещё чтоб зазор между скриптами оказался побольше, чтоб успеть отключить, но обычно так не бывает). В противном же случае (если забудешь отключить бесконечность, но всё-таки заметишь после первого прогона этот режим) придётся отключать скрипт прям посреди следующего, второго прогона (то есть если скрипт короткий и быстрый, то он может успеть выполниться несколько лишних раз).
  • Не слова про то, что в главном окне нету регулировки скорости скрипта, равно как нет и в настройках. Есть только эквиваленты $S_CORR да delay_between_lines.
  • (06.11.16) Решил разбить для наглядности несколько строк в inputbox на пару предложений, для чего сначала перепробовал искейп-подстановки, потом просто вставил знак абзаца прямо в параметр, от чего кликер завис (пришлось перезапускать Клмн).
  • В Калармоде нет выбора палитры и количества цветов, а изменение режима калармода идёт только в одну сторону (увеличивается), уместнее б смотрелся дроплист. Но это не только у меня так, так что спокойно, потерпим.
  • Где можно подредактировать по вкусу тот файл ХеллоВёлд, который открывается по дефолту? И было б не плохо иметь в папке и backup.cms-сохранёнку.
  • STRSEPARATE неожиданно регистрозависим (!!! и к сожалению нет параметра, чтоб устранить эту оплошность), а строковые функции keystring/keypress/keydown/keyup столь же неожиданно регистроНЕзависимы!11 Какая досада! К тому же они не принимают кириллицы и юникодовых символов из других алфавитов.
  • Я уже писал, что подокна каждый раз теряют позицию?
  • Если раскомментить через редактор строку, закомментированную не по стандарту (к примеру через /, а не как положено // ), то при раскаменте Клмн удалит и часть команды, а при попытке отменить этот портак через CtrlZ редактор отменяет не свой раскамент, а действие, совершённое именно пользователем до этого и никак не связанное с комментированием.
  • Экспериментировал с PS/2, моя PS/2-клава после перехода в этот режим отключилась и не захотела включаться, пока не перезапустил ОСку.
  • Директива #define принимает только одну строку, что сильно ограничивает сферу её применения, поскольку предполагает обработку только одной команды и исключает все применения с несколькими строками/командами/циклами/подпрограммами.
  • Кликерманн не различает левые и правые ctrl/alt/shift, различает только пару win (lwin+rin) не только при записи рекордером, но и при тестах запсука из рукописного скрипта.
« Last Edit: November 06, 2016, 06:36:04 PM by Cleoss »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
1. Косяк
2. С позициями - неудобняк, поддерживаю. Надо чтоб запоминал.
Даже больше: зашёл в Редактор, что-то поделал там (кажется, ничего не изменял), но при выходе из Редактора вылетело маленькое окошко с вопросом о применении настроек
Это тревожный признак, говорящий о ошибках в структуре скрипта. Давно обсуждали и на днях вспоминали.
Как только нажал "применить", но при сохранении вылазит опять окно "применить", нужно всё бросать и искать ошибку. Так можно и скрипт/последние правки потерять.
Но это тоже косяк кликера.
3. Недоглядели, недолюбили. Не пользуюсь. Это окно для совсем уж отстранённых пользователей, которые кроме записи никак кликер не используют.
Лучше всегда просто вставить цикл.
И эти настройки не сохраняются, так сделано сознательно.
4. BMP простой формат, как двери. С ним можно работать напрямую. Для PNG нужно прикручивать библиотеку. Я за PNG всё равно все скрины сразу в него сохраняю.
6. Часть нужно вынести.
7. Вопрос привычки. И на пуске висит две функции... даже три. Пуск, пауза и продолжить.
Кстати рекомендуемый вариант с старт/стоп на одной кнопке не мало крови попил в других прогах. Особенно если начинает лагать от загрузки проца.

6 пунктов из 8 уже обсуждали здесь и 5 из них просили сделать  ;D


Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Это тревожный признак, говорящий о ошибках в структуре скрипта. Давно обсуждали и на днях вспоминали.
Как только нажал "применить", но при сохранении вылазит опять окно "применить", нужно всё бросать и искать ошибку. Так можно и скрипт/последние правки потерять.
Здесь акцент не на том, что выскочило окошко, а на том что ВСЕ выскакивающие окошки открываются СЗАДИ кликера, за ним, перекрываясь его окном.

Quote
3. Недоглядели, недолюбили. Не пользуюсь. Это окно для совсем уж отстранённых пользователей, которые кроме записи никак кликер не используют.
Лучше всегда просто вставить цикл.
И эти настройки не сохраняются, так сделано сознательно.
Я просто потерял аргументы, отстранённые пользователи. Которые лазят в настройки. Чтобы настроить детали проигрывания своего скрипта. В кликере! Не в текстовом редакторе, не в игрушке, а непосредственно в кликере. А зачем тогда кликер, если в него нельзя записывать? Я понимаю, что у человека, который давным-давно записал все нужные ему скрипты и у которого со временем круг интересов не расширяется (я тоже допускаю такое), у него может и не быть необходимости записывать новые скрипты, а ему лишь изредка нужно заходить в Редактор и чуть подправлять свои древние наработки в случае изменения синтаксиса функций либо обновлений интерфейсов программ. Но как мне видится, человеку, который идёт в ногу со временем, изучает новый софт, интегрируя его в свои решения либо же просто исследуя новые возможности своего кликера, просто необходима возможность сперва записать черновой образец-прототип своего будущего полноценного скрипта, так сказать его костяк, а уже затем долго сидеть в Редакторе, отлаживая скрипт и доводя детали до совершенства. Нужно ведь увидеть потребности и новых пользователей, или что ли все пользователи КЛМН пишут начисто все скрипты сразу в Редакторе, не пользуясь записью?! Скорее, уверен, что здесь ситуация с точностью до наоборот, как я описал выше.
Меня по началу очень обрадовал целый комбайн функций, запрятанных в Редактор КЛМН. Несколько дней я потратил на перевод интерфейса (и там ещё собственно работы не мерено, переводить шаблоны/настройки/маны) и лазанье по форуму, на другую свою неотложку, руки всё не доходили полапать сам кликарь, но щас мне начинает казаться, что первое впечатление обманчиво и КЛМН ещё достаточно сырой продукт, увы. Но ещё больше меня сейчас смущает негибкость интерфейса в купе с нескорыми предпосылками к желаемым изменениям.

Quote
Я за PNG всё равно все скрины сразу в него сохраняю.

Если честно, я за экзотику, поддерживающую разные типа контента внутри, вроде SVG, PDF, SWF, считаю их прогрессивнее (но флеш естесна затухает с годами). А сам PNG привёл для примера, чтоб отличалось от канонических стандартов.


Quote
7. Вопрос привычки. И на пуске висит две функции... даже три. Пуск, пауза и продолжить.
Кстати рекомендуемый вариант с старт/стоп на одной кнопке не мало крови попил в других прогах. Особенно если начинает лагать от загрузки проца.
Я согласен, что совмещение кнопки может попить крови, именно так у меня сейчас и происходит: моя мышь щас глючит и часто жмёт два раза вместо одного, плюс у меня установлена в КЛМН пауза перед запуском скрипта. И в добавок ко всему анимация кнопки Пуск включается не сразу, а только после запуска скрипта, как я понял. Вот и выходил, запустил кликер с кнопки и сижу-смотрю/жду: то ли мышь нажала два раза (и то есть сразу же после запуска остановила скрипт), либо скрипт ещё не запустился из-за 3-секудного дилея. Но для решения этой проблемы и нужно вывести в настройки возможность пользователю выбирать, как ему удобнее и как будет реагировать прога, в результате такие более гибкие продукты на рынке всегда оказываются конкурентоспособнее, чем их тугие ненастраиваемые и нефункциональные братья.

Quote
6 пунктов из 8 уже обсуждали здесь и 5 из них просили сделать ;D
Вот это и есть самая ценная инсайдерская инфа -- о том, что уже реквестили, а до чего ещё не додумались. Но что удивительно, что получается никто не обсуждал самых интересных функций? Неужели никому не нужна галочка для отключения записи задержек меж нажатиями? Я всегда почти записываю скрипты без дилеев, а потом сам проставляю их вручную, точно где сколько нужно.
« Last Edit: September 15, 2016, 04:45:42 PM by Cleoss »

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
ну не делаем мы скрипты через "запись".
мы их в блокноте неблокноте пишем, время от времени нажимая alt-q, чтобы вставить конкретные координаты.
потому что образец-прототип – это структура и логика (которую приходится придумывать и писать ручками), а не линейная последовательность перемещений-кликов-ожиданий, которую выдаёт встроенный самописец.

возможно, новичкам был бы интересен визуальный конструктор, позволяющий накидать логику скрипта, используя готовые шаблоны-блоки, но я не знаю как это может быть красиво реализовано с точки зрения интерфейса
« Last Edit: September 15, 2016, 04:53:35 PM by i0 »

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
ну не делаем мы скрипты через "запись". мы их в блокноте неблокноте пишем, время от времени нажимая alt-q, чтобы вставить конкретные координаты.
потому что образец-прототип – это структура и логика (которую приходится придумывать и писать ручками), а не линейная последовательность перемещений-кликов-ожиданий, которую выдаёт встроенный самописец.
Возможно, я яро отстаиваю свою привычку записывать скрипты через рекордер только потому что привык там раньше делать, не исключено и что я переберусь на метод "быстрой вставки координат", но факт в том, что у этого самого рекордера (несмотря на его версию) есть свои глюки, о чём я добавлю позже пункты в начало топика. То есть это уже могло отпугнуть некоторых пользователей. Да и ты так пишешь "линейная последовательность кликов", вроде в твоём скрипте не будет тех же самых нажатий.

Quote
возможно, новичкам был бы интересен визуальный конструктор, позволяющий накидать логику скрипта, используя готовые шаблоны-блоки, но я не знаю как это может быть красиво реализовано с точки зрения интерфейса
Для этого достаточно посмотреть на то, как делают все конкуренты. Visual и Visio эт немного из другой оперы, а вот у большинства аналогов КЛМН значимые настройки вынесены в главное окно. Недавно сам нашёл весьма неплохой образчик интерфейса, вот как изящно со вкладками авторы решили проблемы нехватки места и компактного размещения элементов:
[spoiler][/spoiler]

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
А в редактор кода имеющиеся в наличии шаблоны  накидывать не красиво и не визуально?
Это конечно вариант, но согласитесь, удобнее был бы встроенный автокомплит, знающий все функции текущей сборки с их командами, и чтобы все нужные настройки доставались за меньшее количество кликов, а не в сотне дополнительных мелких отдельных окошек, которые то с глюками открываются, то не могут закрыться. Это зовут юзабилити. Но это также и не мешает накидать побольше интересных нужных шаблонов в комплект поставки, для облегчения пользования новичками и ускорения узнавания ими синтаксиса языка.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
А зачем тогда кликер, если в него нельзя записывать?
Я разве сказал, что нельзя записывать?

Но как мне видится, человеку, который идёт в ногу со временем, изучает новый софт, интегрируя его в свои решения либо же просто исследуя новые возможности своего кликера, просто необходима возможность сперва записать черновой образец-прототип своего будущего полноценного скрипта, так сказать его костяк, а уже затем долго сидеть в Редакторе, отлаживая скрипт и доводя детали до совершенства. Нужно ведь увидеть потребности и новых пользователей, или что ли все пользователи КЛМН пишут начисто все скрипты сразу в Редакторе, не пользуясь записью?! Скорее, уверен, что здесь ситуация с точностью до наоборот, как я описал выше.
Записать и подправить в паре мест это одно. Но поверь это подходит для непродолжительных и/или простых вещей. Полноценный скрипт с разветвлённой логикой так не напишешь. Поэтому и резюме - только на начальном этапе или для "разовых" пользователей (записал, покликал, забыл).
Что совсем не отменяет или не запрещает использовать запись, записывайте на здоровье. Это был просто комментарий к 3 пункту. С самим пунктом согласен.

...но щас мне начинает казаться, что первое впечатление обманчиво и КЛМН ещё достаточно сырой продукт, увы.
мелкие ошибки - это не сырость. Да, часть ошибок "вечная". А часть появилась после выпуска новых версий. Впрочем, другая часть пропала, ты просто не видишь.

Если честно, я за экзотику, поддерживающую разные типа контента внутри, вроде SVG, PDF, SWF, считаю их прогрессивнее (но флеш естесна затухает с годами). А сам PNG привёл для примера, чтоб отличалось от канонических стандартов.
:o каким боком относятся SVG и SWF к поиску картинок?

Неужели никому не нужна галочка для отключения записи задержек меж нажатиями?
Не просили. Повторюсь, многие сразу вырастают из записи. Проще написать, чем править однотипную простыню.
« Last Edit: September 15, 2016, 05:47:11 PM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Но это также и не мешает накидать побольше интересных нужных шаблонов в комплект поставки, для облегчения пользования новичками и ускорения узнавания ими синтаксиса языка.
Когда-то шаблонов совсем не было, только команды. Я правда стандартные чуть подправил под себя и перегруппировал.
Каких шаблонов тебе не хватает?


i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Да и ты так пишешь "линейная последовательность кликов", вроде в твоём скрипте не будет тех же самых нажатий.
очень редко там чистый клик или if_picture_in | _pixel_in. они есть конечно, но внутри вызываемых подпрограмм-кирпичей (шаблонов, угу), которыми оперирую. обычно выходит что-то типа:
Code: (clickermann) [Select]
кликнуть_если_дождался_картинку( x1,y2,x2,y2, максимально 5 с., периодичность 1 с., картинка, 16_цветов, игнорировать фуксию, кликнуть N раз, xКлика,yКлика)
if ($_кликнуто)
else
end_if
« Last Edit: September 15, 2016, 05:56:27 PM by i0 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
очень редко там чистый клик или if_picture_in | _pixel_in. они есть конечно, но внутри вызываемых подпрограмм-кирпичей (шаблонов, угу), которыми оперирую. обычно выходит что-то типа:...

Угу. Типа таких:
Code: (clickermann) [Select]
//==============================================================================
//===  клик смещение
//===  КЛИК 4 по координатам ===================================================
SUB(клик_смещение,$offsetX,$offsetY)
   // Пример вызова:
   // клик_смещение(30,4)
   
   IF(($mmov = 1) & ($_hwnd = 0))
      m-lclick($_return1+$offsetX,$_return2+$offsetY)
   ELSE
      MOVE($_return1+$offsetX,$_return2+$offsetY)
      WAITMS(30)
      LDOWN($_return1+$offsetX,$_return2+$offsetY)
      WAITMS(30)
      LUP($_return1+$offsetX,$_return2+$offsetY)
      WAITMS(30)
   END_IF
END_SUB

//==============================================================================
//===  FIND_PIC_NW
//===  поиск картинки без ожидания =============================================
SUB(FIND_PIC_NW, $stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y,$name_image,$percent,$colorm)
   
   // Пример вызова:
   // FIND_PIC_NW(0,0,$_xmax,$_ymax,"pic.bmp",90,6)
   //$stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y // область поиска
   //$name_image = "islands.bmp" // имя картинки
   //$percent = 100 // процент совпадения
   //$colorm = 0 // режим колормода
   
   $pic_find = 0
   $XX = $_xmouse
   $YY = $_ymouse
   MOVE($_xmax,$_ymax)  //паркуемся
   WAITMS(20)
   
   GETSCREEN
   MOVE($XX,$YY)
   
   IF($colorm ! 0)
      COLORMODE($colorm, $stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y)
   END_IF
   IF_PICTURE_IN ($stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y,STRCONCAT("textures\ ",$name_image),-1,$percent)
      $pic_find = 1
      IF($log=1)
         LOGWRITE ("Найдена картинка  ",$name_image," в X/Y ",$_return1," / ",$_return2)
      END_IF
   END_IF
END_SUB


//==============================================================================
// === FIND_PICTR_NW
//===  поиск картинки с прозрачностью без ожидания =============================
SUB(FIND_PICTR_NW, $stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y,$name_image,$percent,$colorm,$transp)
   // Пример вызова:
   // FIND_PICTR_NW(0,0,$_xmax,$_ymax,"pic.bmp",90,0,65280)
   alert()
   $pic_find = 0
   GETSCREEN
   IF($colorm ! 0)
      COLORMODE($colorm, $stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y)
   END_IF
   IF_PICTURE_IN($stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y,STRCONCAT("textures\ ",$name_image),$transp,$percent)
      $pic_find = 1
      IF($log=1)
         LOGWRITE ("Найдена картинка  ",$name_image," в X/Y ",$_return1," / ",$_return2)
      END_IF
   END_IF
END_SUB

//==============================================================================
//===  FIND_PIC
//===  поиск картинки с ожиданием 10 сек. ======================================
SUB(FIND_PIC, $stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y,$name_image,$percent,$colorm)
   
   // Пример вызова:
   //FIND_PIC(0,0,$_xmax,$_ymax,"pic.bmp",90,6)
   //$stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y // область поиска
   //$name_image = "islands.bmp" // имя картинки
   //$percent = 100 // процент совпадения
   //$colorm = 0 // режим колормода
   
   $pic_find = 0
   IF($mmov = 0)
      MOVE($_xmax,$_ymax)  //паркуемся
      WAITMS(20)
   END_IF
   
   $time_notfound = $_time_t+10 // 10 сек
   WHILE(($pic_find = 0) & ($time_notfound > $_time_t))
      GETSCREEN
      IF($colorm ! 0)
         COLORMODE($colorm, $stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y)
      END_IF
      IF_PICTURE_IN ($stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y,STRCONCAT("textures\ ",$name_image),-1,$percent)
         $pic_find = 1
         IF($log=1)
            LOGWRITE ("Найдена картинка  ",$name_image," в X/Y ",$_return1," / ",$_return2)
         END_IF
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
END_SUB

//==============================================================================
//===  FIND_PIC_PREDCLICK
//===  поиск картинки с ожиданием 20 сек. и дублированием клика ================
SUB(FIND_PIC_PREDCLICK, $stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y,$name_image,$percent,$colorm,$PCL1,$GKCL1_X,$GKCL1_Y)
   
   //$stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y // область поиска
   //$name_image = "islands.bmp" // имя картинки
   //$percent = 100 // процент совпадения
   //$colorm = 0 // режим колормода
   //$PCL1 = 1 // предклик да/нет
   //$GKCL1_X,$GKCL1_Y
   // Пример вызова:
   // FIND_PIC_PREDCLICK(0,0,$_xmax,$_ymax,"pic.bmp",90,6,1,200,200)
   $pic_find = 0
   IF($mmov = 0)
      MOVE($_xmax,$_ymax)  //паркуемся
      WAITMS(20)
   END_IF
   
   $time_notfound = $_time_t+20 // 20 сек
   $time_PCL = $_time_t+5 // 6 сек
   WHILE(($pic_find = 0) & ($time_notfound > $_time_t))
      IF(($PCL1 = 1) & ($time_PCL < $_time_t))  // предклик 1
         WAITMS(50)
         клик4($GKCL1_X,$GKCL1_Y)
         WAITMS(1000)
         $time_PCL = $_time_t+5
      END_IF
     
      GETSCREEN
      IF($colorm ! 0)
         COLORMODE($colorm, $stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y)
      END_IF
      IF_PICTURE_IN ($stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y,STRCONCAT("textures\ ",$name_image),-1,$percent)
         $pic_find = 1
         IF($log=1)
            LOGWRITE ("Найдена картинка  ",$name_image," в X/Y ",$_return1," / ",$_return2)
         END_IF
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
END_SUB

//==============================================================================
//===  FIND_ARR
//===  поиск всех картинок в массив  ===========================================
SUB(FIND_ARR, $stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y,$name_image,$percent,$colorm)
   
   // Пример вызова:
   // FIND_ARR(0,0,$_xmax,$_ymax,"pic.bmp",90,6)
   
   UNDEFINE($arr_find)
   $XX = $_xmouse
   $YY = $_ymouse
   MOVE($_xmax,$_ymax)  //паркуемся
   WAITMS(20)
   
   GETSCREEN
   MOVE($XX,$YY)
   IF($colorm ! 0)
      COLORMODE($colorm, $stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y)
   END_IF
   SCANPICTURE($arr_find,$stcoord_X,$stcoord_Y,$encoord_X,$encoord_Y,STRCONCAT("textures\ ",$name_image),-1,$percent)
   IF($log=1)
      LOGWRITE ("найдено элементов:  ", ARRSIZE($arr_find)/2)
   END_IF
END_SUB

//==============================================================================
//===  CHECK_PIX
//===  проверка пиксела  с ожиданием 7 сек. ====================================
SUB(PIX_WAIT, $stcoord_X,$stcoord_Y,$color)
   //PIX_WAIT(100,100,16777215)
   $pix_wait = 0
   $time_notfound = $_ms+7000 // 7 сек
   WHILE(($pix_wait = 0) & ($time_notfound > $_ms))
      GETSCREEN
      IF(PXL($stcoord_X,$stcoord_Y) = $color)
         $pix_wait = 1
         IF($log=1)
            LOGWRITE ("пиксел ",$color," появился в X/Y ",$stcoord_X," / ",$stcoord_Y)
         END_IF
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
   IF($pix_wait = 0)
      проверка()
   END_IF
END_SUB

//==============================================================================
« Last Edit: September 15, 2016, 05:55:46 PM by Vint »


Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Я разве сказал, что нельзя записывать?

Об том то и речь в пункте 12 моих тезисов (см. пост 1).

Quote
Записать и подправить в паре мест это одно. Но поверь это подходит для непродолжительных и/или простых вещей. Полноценный скрипт с разветвлённой логикой так не напишешь.
Да я тоже не говорю, что против правки вручную; разумеется, основная логика пишется в Редакторе. Ясно, что эту логику с помощью кликанья не пропишешь, да и ветвления множества варианта тоже не сделаешь записью всевозможных кликов) Но опять же костяк удобно подчас делать визуально, потому что так отражаются основные этапы перемещения мыши и причём сама мышь ввиду интерактивности элементов, с которыми она т.с. взаимодействует, будет менять картинку на экране, тем самым давая возможно найти новые координаты новых страничек/ впервые появившихся элементов управления, you know what i mean. Не все же координаты возможно сразу предусмотреть в логике.

Quote
мелкие ошибки - это не сырость. Да, часть ошибок "вечная". А часть появилась после выпуска новых версий. Впрочем, другая часть пропала, ты просто не видишь.
Да я ж не против наличия множества мелких недочётов, которые могут иметься в любой проге. Но хотелось бы приоритетного устранения наиболее критичных мест. Вот ведь в настройках есть же уже delay_between_lines и smart_delay, а самое логичное продолжение для этих опций -- введение возможности отключения записи задержек через настройки.

[/quote] :o каким боком относятся SVG и SWF к поиску картинок?[/quote]
В формат SWF можно внедрять и текст, и графику, и видео, и сценарии. А SVGшка это же векторный формат (а это как бы означает нехилое уменьшение объёмов картинки), также поддерживающий скриптование -- здорово б если КЛМН сразу писал текст распознанных картинок в SVG, чтоб им к примеру можно было удобно делиться прямо с возможностью просмотра в браузере или даже легко редактировать их, потому что это по сути текстовый формат, который описывает графические построения. Годен он и для дизайна, применения в качестве открыток, да хоть для офисных документов. В общем, удобный, гибкий, редактируемый налету формат.

Неужели никому не нужна галочка для отключения записи задержек меж нажатиями?
Не просили. Повторюсь, многие сразу вырастают из записи. Проще написать, чем править однотипную простыню.
[/quote]
Проще написать, скажем, если там десяток-другой кликов, но а если больше и с множеством ветвлений? А чтоб не править простыню, как раз и пишется каркас кликов визуально, то есть с помощью банального тыканья.

Quote
Когда-то шаблонов совсем не было, только команды. Я правда стандартные чуть подправил под себя и перегруппировал.
Каких шаблонов тебе не хватает?
Спасибо за помощь, Винт, ты и так много подсказываешь. Думаю, что и сам справлюсь с шаблонами, вот только если у меня заведётся рекордер после пункта 12. Ну или мож попробую действительно поюзать быструю вставку координат, как мне здесь советуют, оценю, насколько практично и быстро это по сравнению с моим прошлым простеньким кликером. В самом КЛМН меня конечно привлекают ветвления, свитчи, ифы, треды, но кусаются все эти первоначально встречаемые лаги, потому что кликер себя ведёт подчас не логично и не очевидно.
« Last Edit: September 15, 2016, 07:13:53 PM by Cleoss »

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Quote
очень редко там чистый клик или if_picture_in | _pixel_in. они есть конечно, но внутри вызываемых подпрограмм-кирпичей (шаблонов, угу), которыми оперирую. обычно выходит что-то типа:
Code: (clickermann) [Select]
кликнуть_если_дождался_картинку( x1,y2,x2,y2, максимально 5 с., периодичность 1 с., картинка, 16_цветов, игнорировать фуксию, кликнуть N раз, xКлика,yКлика)
if ($_кликнуто)
else
end_if

Да, здесь получается сканирование зоны предполагаемого клика и динамически формируемые его координаты, это конечно вкусняшка. Её-то и хочется откусить от КЛМН, потому что она мне в новинку как для пользователя простеньких кликарей. Но ведь часто бывают и скрипты, в которых все координаты известны заранее, а сам скрипт задумывается как избавление от рутины и ускорение действий временами в сотни раз, по сравнению с кликами человека. Об этих координатах в таких скиптах я тебе и говорю, и я привык пока что использовать только такие скрипты. Но разумеется, раз у меня появился инструмент, то когда малость разберусь в нём, то буду искать применение и твоим динамическим координатам, здесь по-мойму нет противоречия, это просто разные типы задач. Кстати, мой тип задач ускоряется намного быстрее, чем твой, когда нужно многовремени и ресурсов компа тратить на поиск и ожидание нужных пикселей. А в случае заранее определённых координат ускорение осуществляется на порядок быстрее.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Quote
А чтоб не править простыню, как раз и пишется каркас кликов визуально, то есть с помощью банального тыканья.

Для этого и придуман Alt+Q. В скрипт будут записываться готовые клики с текущими кординатами мыши без всяких там задержек.


Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Quote
А чтоб не править простыню, как раз и пишется каркас кликов визуально, то есть с помощью банального тыканья.

Для этого и придуман Alt+Q. В скрипт будут записываться готовые клики с текущими кординатами мыши без всяких там задержек.

Возможно, спасиб, нужно подумать и принять это. Скорее всего, ещё переназначу альты на более привычные мне функциональные Fnn. Но вы меня толпой подуговорили)
Легче запомнить, если пользоваться мнемониками хоткееев Кликерманна:
Alt-Activate = Запустить
Alt-Stop = Остановить
Alt-Record = Записать
Alt-Quick = Быстрая вставка
Alt-Window = Привязка к окну


ПС. Но вот проблема в том, что вместо тыканья по клаве доводится делать ещё больше кликам по меню команд и шаблонов, либо же набивать команды вручную. Причём, как я уже писал выше, эти тыки по шаблонам не предусатривают всех вариантов живой реакции программы на клики, поэтому и считаю этот вариант неполным без рекординга.
ППС. Мне кто-нибудь ответит, почему у меня рекордер записал 17 нажатий вместо 11 (как я написал в пункте 12 первого поста)?
« Last Edit: September 16, 2016, 10:18:46 AM by Cleoss »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Ты бросил всю свою неутомимую энергию на борьбу с ветрянными мельницами.
Не в том смысле что бестолку, а в том, что не рационально. Нужно брать и писать, обходя плохие места. Решение этих проблем - это тоже решения... из которых и состоит кодинг.
А ты начал с кнопочек и отсутствующих подсказок.
С этим тоже надо разобраться, но потом, на досуге.
Интерфейс это такая спорная вещь... Всем не угодишь. Одни требуют придерживаться стандартных решений, говоря что юзабилити от этого полностью зависит. Другим подавай подстройку под себя всего и вся. А третьим что нибудь новое в виде Риббон.
Ведь при появлении Риббон тоже все плевались. А сейчас...
« Last Edit: September 15, 2016, 11:18:44 PM by Vint »