Author Topic: Как сократить код при одинаковых действиях ?  (Read 2906 times)

0 Members and 1 Guest are viewing this topic.

moon27

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Добрый день. Есть кусок кода.

Code: [Select]
WAITMS(100 * $K_SPEED)
KEYDOWN(8)
WAITMS(18 * $K_SPEED)
KEYUP(8)

WAITMS(100 * $K_SPEED)
KEYDOWN(8)
WAITMS(18 * $K_SPEED)
KEYUP(8)

WAITMS(100 * $K_SPEED)
KEYDOWN(8)
WAITMS(18 * $K_SPEED)
KEYUP(8)

Как мы видим - это три нажатия на Backspace.

Как можно сократить этот кусок кода ? Что-то краткое, чтобы поставить где-нибудь число 8 и 8 раз нажалась кнопка Backspace или другое кол-во раз. И чтоб это действовало для других клавиш.

Можно конечно дублировать куски по кол-ву нажатий, но хочется красивого кода - эстетики.

И второе. В последней версии Clickermann v4.12. я назначил запись сценария сочетанию Ctrl +1, но программа виснет при этом. Назначал запись Ctrl +Q и Ctrl +Z, все равно не реагирует.
Но, если назначить Ctrl +1 остановке или воспроизведению, то все работает. С чем связано зависание записи при сочетаниях?

Пользуясь случаем, хочу выразить большое  человеческое спасибо, всем разработчикам и участникам отвечающим на вопросы таких же дилетантов как я.

С искренним уважением.
« Last Edit: April 13, 2017, 05:40:33 AM by moon27 »

Oraven

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

Code: (clickermann) [Select]
FOR($a=0,$a<8)
   KEYPRESS(#BACKSPACE)
   WAITMS(100)
END_CYC

В 4.12 присутствует баг горячих клавиш на запись. Нужно назначить одну клавишу, например F3 тогда виснуть не будет.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Если просто сократить троекратное действие в коде, то цикл
Code: (clickermann) [Select]
FOR($i=0, $i < 3)
    KEYDOWN(8)
    WAITMS(20)
    KEYUP(8)
    WAITMS(100)
END_CYC

Если нужно вызывать с разным количеством повторений и для разных клавиш - подпрограмма с параметрами. В подпрограмме тоже цикл.
Code: (clickermann) [Select]
SUB(n_key, $key, $count)
    FOR($i=0, $i < $count)
        KEYDOWN($key)
        WAITMS(20)
        KEYUP($key)
        WAITMS(100)
    END_CYC
END_SUB

// так вызываем в коде в нужных местах
n_key(8, 3)    // BACKSPACE  3 раза

n_key(40, 10)  // DOWN      10 раз

И раз уж код пишется руками, то нужно уходить от записи и всяких $K_SPEED.
Лишняя цепочка действий получается, запись, потом чистка от мусора, правка задержек (как было здесь WAITMS(100 * $K_SPEED)).
Проще сразу вставлять команды . Можно из меню команд и шаблонов.


И второе. В последней версии Clickermann v4.12. я назначил запись сценария сочетанию Ctrl +1, но программа виснет при этом. Назначал запись Ctrl +Q и Ctrl +Z, все равно не реагирует.

В версии v4.12 есть баг с горячими кнопками. Нужно назначить одиночную кнопку, а не сочетание, тогда всё будет нормально.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile

Блин. Ты что, не спишь?  :D


VGK

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
SUB(n_key, $key, $count)
Красиво...
Автор темы просил эстетики, поэтому подпрограмму нужно переименовать на
key_n  :)  :)  :)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile

Блин. Ты что, не спишь?  :D

В 9 утра? Конечно нет, я просыпаюсь в 7-8

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
В 9 утра? Конечно нет, я просыпаюсь в 7-8

Часовые пояса, часовые пояса. Забываю я про вас.


Vint

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

Не поверишь, после задания параметров так и хотелось поменять на key_n. Но было лень. Не код из проекта, а одноразовый  пример. Поэтому было забито.


moon27

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Большое спасибо. Теперь новая проблема. Не могу выбрать). Выбирать из двух красивых решений это все равно выбирать одну из двух красивых девушек)