Author Topic: выполнение скрипта по горячим клавишам  (Read 9136 times)

0 Members and 1 Guest are viewing this topic.

tekton

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Приветствую.
Такой вопрос.
Как сделать проверку на нажатие "горячих клавиш" ?
Сейчас стоит в настройках самого кликера  (Alt+A)

Можно ли что бы в самом скрипте была проверка
типа

Code: [Select]
IF  (Alt+P )
Действие 1
End IF

IF  (Alt+L )
Действие 2
End IF

И чтоб  то или иное действие выполнялось по нажатию определённых клавиш.
Спасибо.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Можно
Code: (clickermann) [Select]
IF((ISKEYDOWN(#L) = 1) & (ISKEYDOWN(#ALT) = 1))
    LOGWRITE("Нажато Alt+L")
END_IF

Но проверка сработает если именно в момент выполнения IF кнопки будут нажаты.


i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
а можно код проверки в отдельный поток
Code: (clickermann) [Select]
THREAD(check_keyboard)
    IF((ISKEYDOWN(#L) = 1) & (ISKEYDOWN(#ALT) = 1))
        LOGWRITE("Нажато Alt+L")
    END_IF
    WAITMS(10)
END_THREAD

// дальше текст основного потока (тела скрипта)

tekton

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Можно
Code: (clickermann) [Select]
IF((ISKEYDOWN(#L) = 1) & (ISKEYDOWN(#ALT) = 1))
    LOGWRITE("Нажато Alt+L")
END_IF

Но проверка сработает если именно в момент выполнения IF кнопки будут нажаты.

Мне надо сделать типа трейнера.
Нажал во время игры горячую клавишу выполнилось одно действие, нажал другую, другое.
Попробовал, вроде работает :) 
Спасибо!

Virikidor

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: выполнение скрипта по горячим клавишам
« Reply #4 on: October 24, 2016, 09:40:54 PM »
А это что за команда ?

Code: (clickermann) [Select]
IF_KEYDOWN Не нашел по ней в справке инфу. И в списке команд её нет. А в keywords.txt она есть.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: выполнение скрипта по горячим клавишам
« Reply #5 on: October 24, 2016, 09:48:52 PM »
А это что за команда ?

Code: (clickermann) [Select]
IF_KEYDOWN Не нашел по ней в справке инфу. И в списке команд её нет. А в keywords.txt она есть.

Устаревшая функция на смену которой пришла ISKEYDOWN

Virikidor

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: выполнение скрипта по горячим клавишам
« Reply #6 on: October 25, 2016, 08:26:24 AM »
А, понятно. А вот подскажите плиз. Такая идея. Нужно сканировать нажатие левой клавиши и делать клики пока она нажата а как отпущена прекратить делать клики. Написал такое
Code: (clickermann) [Select]
FOR ($a=1, $a>0) //бесконечный цикл работы цикла

// проверка нажатия левой клавиши мышки
 if ( iskeydown(0x01)=1 )

//получаем системные координаты мыши

//делаем клик
 LCLICK($x,$y)
 WAITMS(20)

 ELSE
 //если клавиша Не нажата то ждем дольше
 WAITMS(900)

 END_IF
END_CYC


Можно наверно и без бесконечного цикла. Там же есть пункт повторять скрипт бесконечно.
Для чего это нужно. В ЗФ когда пиратишь разные объекты требуют разного количества нажатий. До 100
P.S. я понимаю что проверить минутное дело. Но я работаю по такому графику что в пять утра из дома ухожу и прихожу в десять вечера. И скрипты пишу на работе )) даже читалку chm для справки на телефон поставил ))

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: выполнение скрипта по горячим клавишам
« Reply #7 on: October 25, 2016, 10:39:06 AM »
FOR ($a=1, $a>0) //бесконечный цикл работы цикла
Лучше использовать цикл WHILE
Code: (clickermann) [Select]
WHILE(1)
  // бесконечный цикл
END_CYC
Хотя конечно здесь в зацикливании нет необходимости.

Нельзя зайти в одну и ту же реку дважды.
Анализировать нужно другую клавишу.
Code: (clickermann) [Select]
if (iskeydown(#X)=1) // если зажата X
   LCLICK(-1,-1) // кликаем по текущем координатам
   WAITMS(50)
ELSE
   WAITMS(20)
END_IF
« Last Edit: November 24, 2016, 07:13:01 AM by Oraven »

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: выполнение скрипта по горячим клавишам
« Reply #8 on: October 25, 2016, 11:08:40 AM »
Code: (clickermann) [Select]
if($var=0)
   $var= RADIOBOX("Выберете число кликов", "150", "314", "1000")
   SWITCH($var)
   CASE(1) // случай 1
      $b=150
   CASE(2)
      $b=314
   CASE(3)
      $b=1000
   END_SWITCH
   LOGWRITE ("пиратствуй! Ё хо-хо!!!")
END_IF


if( iskeydown(1)=1 ) // проверка нажатия левой клавиши мышки
   WHILE( iskeydown(1)=1)  // кликать с зажатой клавишей невозможно!
      WAITMS(50)  //если клавиша нажата то ждем
   END_CYC
   FOR ($a=1, $a<$b) //цикл работы цикла ;-))
      LCLICK(-1,-1)//делаем клик в место нахождения курсора
      WAITMS(200)
      LOGWRITE ("клик ",$a)
      if( iskeydown(2)=1 ) //клик правой кнопкой мыши остановит цикл кликов , досрочно
        $a=$b         
      END_IF
   END_CYC
END_IF
WAITMS(50)  //если клавиша Не нажата то ждем дольше
« Last Edit: October 25, 2016, 12:02:28 PM by Oraven »

Virikidor

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: выполнение скрипта по горячим клавишам
« Reply #9 on: October 25, 2016, 11:17:19 AM »
Анализировать нужно другую клавишу.
Спасибо. Буду пробовать. Хотелось бы конечно без клавиатуры обойтись чтоб одной рукой всё делать )) ну может получится правую назначить, или другую клавишу мышки.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: выполнение скрипта по горячим клавишам
« Reply #10 on: October 25, 2016, 12:00:48 PM »
Анализировать нужно другую клавишу.
Спасибо. Буду пробовать. Хотелось бы конечно без клавиатуры обойтись чтоб одной рукой всё делать )) ну может получится правую назначить, или другую клавишу мышки.

Конечно, это только пример. Вот, зажимаешь среднюю клавишу и кликаешь.
Code: (clickermann) [Select]
if (iskeydown(4)=1) // если зажата Средняя клавиша
   LCLICK(-1,-1) // кликаем по текущем координатам
   WAITMS(50)
ELSE
   WAITMS(20)
END_IF

Virikidor

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: выполнение скрипта по горячим клавишам
« Reply #11 on: October 25, 2016, 05:05:35 PM »
Золотой красавчик )) действительно если можно использовать в условии нажатую клавишу то почему не использовать отпущенную  ))) в учитывая что когда объект исчезает то зомбик просто подходит на место курсора то можно попробовать прерывать цикл по цвету пикселя или сначала брать цвет пикселя и прерывать но его изменению.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: выполнение скрипта по горячим клавишам
« Reply #12 on: October 25, 2016, 06:08:16 PM »
Реакция напомнила картинку.
Просто такой восторг от стандартного действия  :)

Мммм. Немножко надуманная задача. Пользоваться будет не удобно. Реально там совсем не важно количество лишних кликов.
Пишешь цикл, например на 50-60 кликов и вешаешь на кнопку.
Всё что рубится мелкое наводишь и жмёшь один раз. Крупные камни и всякие секвойи 2-3 раза. Кому как удобно и смотря сколько инструмента скапливается.

Можно сразу и сотню вешать, но, т.к. большинство элементов гораздо меньше сотни будет подтупливать.
Я в разное время использую 30 или 50 под настроение.
« Last Edit: October 25, 2016, 06:10:58 PM by Vint »