Author Topic: Много простых команд  (Read 4606 times)

0 Members and 1 Guest are viewing this topic.

Neokrium

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Много простых команд
« on: February 14, 2019, 11:44:28 AM »
Привет, а если я хочу сделать много разных простых команд к примеру:

1 команда просто нажимает три кнопки и повторяет бесконечно

2 команда нажимает одну кнопку раз в 3 секунды

3 команда нажимает на мышку 1 бесконечно раз

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

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Много простых команд
« Reply #1 on: February 14, 2019, 12:32:26 PM »
Конечно есть, потоки!

Code: (clickermann) [Select]
THREAD(t1, 1)
   KEYPRESS(#A)
   WAITMS(500)
   KEYPRESS(#B)
   WAITMS(500)
   KEYPRESS(#C)
   WAITMS(500)
END_THREAD

THREAD(t2, 1)
   KEYPRESS(#D)
   WAIT(3)
END_THREAD

THREAD(t3, 1)
   LCLICK(100,500)
   WAITMS(50)
END_THREAD

WAIT(1)

Neokrium

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Много простых команд
« Reply #2 on: February 14, 2019, 01:17:25 PM »
Конечно есть, потоки!

Code: (clickermann) [Select]
THREAD(t1, 1)
   KEYPRESS(#A)
   WAITMS(500)
   KEYPRESS(#B)
   WAITMS(500)
   KEYPRESS(#C)
   WAITMS(500)
END_THREAD

THREAD(t2, 1)
   KEYPRESS(#D)
   WAIT(3)
END_THREAD

THREAD(t3, 1)
   LCLICK(100,500)
   WAITMS(50)
END_THREAD

WAIT(1)



Спасибо большое, давно я уже хочу это.  Если возможно, как сделать чтобы этот скрипт включался по нажатию кнопки, ну чтобы сам кликер не вкл/выкл. как я делаю, а скажем нажал кнопку пусть будет моус 3(ролик) он за работал, нажал еще раз он выключился.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Много простых команд
« Reply #3 on: February 14, 2019, 02:25:48 PM »
Code: (clickermann) [Select]
THREAD(t1, 0)
   KEYPRESS(#A)
   WAITMS(500)
   KEYPRESS(#B)
   WAITMS(500)
   KEYPRESS(#C)
   WAITMS(500)
END_THREAD

THREAD(t2, 0)
   KEYPRESS(#D)
   WAIT(3)
END_THREAD

THREAD(t3, 0)
   LCLICK(100,500)
   WAITMS(50)
END_THREAD

IF(ISKEYDOWN(4)=1)
   WHILE(ISKEYDOWN(4)=1)
   END_CYC
   IF($t1 = 0)
      $t1 = $t1^1
      // включение
      SETTHREAD (t1,1)
      SETTHREAD (t2,1)
      SETTHREAD (t3,1)
   ELSE
      $t1 = $t1^1
      // выключение
      SETTHREAD (t1,2)
      SETTHREAD (t2,2)
      SETTHREAD (t3,2)
   END_IF
ELSE
   WAITMS(20)
END_IF

Neokrium

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Много простых команд
« Reply #4 on: February 14, 2019, 02:47:57 PM »
Спасибо большое разобрался теперь очень удобно. Если кому интересно это идеально подходит для игры в Диабло 3 за охотника на демонов и можно и другие классы где надо спамить кнопки бесконечно. Моя клавиатура и мышка говорит вам большое спасибо!
Code: (clickermann) [Select]
THREAD(t1, 0)
   KEYPRESS(#q)
   waitms(RND(200,300))
END_THREAD

THREAD(t2, 0)
   KEYPRESS(#w)
   waitms(RND(200,300))
END_THREAD

THREAD(t3, 0)
   KEYPRESS(#e)
   waitms(RND(200,300))
END_THREAD

THREAD(t4, 0)
   KEYPRESS(#r)
   waitms(RND(200,300))
END_THREAD
 
THREAD(t5, 0)
   LCLICK($_xmouse,$_ymouse)
   waitms(RND(70,120))
END_THREAD
 
IF(ISKEYDOWN(#0)=1)
   WHILE(ISKEYDOWN(#0)=1)
   END_CYC
   IF($t1 = 0)
      $t1 = $t1^1
      SETTHREAD (t1,1)
      SETTHREAD (t2,1)
      SETTHREAD (t3,1)
      SETTHREAD (t4,1)
      SETTHREAD (t5,1)
   ELSE
      $t1 = $t1^1
      SETTHREAD (t1,2)
      SETTHREAD (t2,2)
      SETTHREAD (t3,2)
      SETTHREAD (t4,2)
      SETTHREAD (t5,2)
   END_IF
ELSE
   WAITMS(20)
END_IF
[code]
« Last Edit: February 14, 2019, 04:01:56 PM by Neokrium »

Neokrium

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Много простых команд
« Reply #5 on: February 14, 2019, 03:03:58 PM »
Code: (clickermann) [Select]
IF(ISKEYDOWN(#0)=1)
   WHILE(ISKEYDOWN(#0)=1)
   END_CYC
   IF($t1 = 0)
      $t1 = $t1^1
      SETTHREAD (t1,1)
      SETTHREAD (t2,1)
      SETTHREAD (t3,1)
      SETTHREAD (t4,1)
      SETTHREAD (t5,1)
   ELSE
      $t1 = $t1^1
      SETTHREAD (t1,2)
      SETTHREAD (t2,2)
      SETTHREAD (t3,2)
      SETTHREAD (t4,2)
      SETTHREAD (t5,2)
   END_IF
ELSE
   WAITMS(20)
END_IF
Это если кнопка 0 вкл и еще раз 0 выкл. А если нужно держать и они работают т1-т5, а отпустить они перестанут, как это сделать?
« Last Edit: February 14, 2019, 04:01:11 PM by Neokrium »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Много простых команд
« Reply #6 on: February 14, 2019, 05:29:41 PM »
А если нужно держать и они работают т1-т5, а отпустить они перестанут, как это сделать?

Code: (clickermann) [Select]
IF(ISKEYDOWN(#0)=1)
   SETTHREAD (t1,1)
   SETTHREAD (t2,1)
   SETTHREAD (t3,1)
   SETTHREAD (t4,1)
   SETTHREAD (t5,1)
   WHILE(ISKEYDOWN(#0)=1)
      WAITMS(20)
   END_CYC
   SETTHREAD (t1,2)
   SETTHREAD (t2,2)
   SETTHREAD (t3,2)
   SETTHREAD (t4,2)
   SETTHREAD (t5,2)
ELSE
   WAITMS(20)
END_IF

Neokrium

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Много простых команд
« Reply #7 on: February 14, 2019, 06:17:16 PM »
Спасибо, я наверно замучил вопросами... я тут на форуме нашел про цвета и смог сделать следующие:
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (342,698,454,802, "shot0003.bmp", -1, 70)
KEYPRESS(#SPACE)
   WAIT(200)
END_IF
Скриншот я сделал с помощью этого:
Code: (clickermann) [Select]
// Получение скриншота с цветокоррекцией (фильтр 6)
// Скриншот появится в папке screens папки скрипта или в папке кликера
GETSCREEN
COLORMODE(6)
SCREENSHOT
HALT

Вообщем у меня получилось сделать чтобы хилку ел перс когда хп упало, только ест он ее один раз, потом надо заново запускать кликер выкл/вкл. И еще скриншот каких размеров лучше (сколько пикселей), я его обрезал, только не знаю сколько на сколько для оптимального и можно потом и его в поток добавить, чтобы все работал вместе.
« Last Edit: February 14, 2019, 06:20:18 PM by Neokrium »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Много простых команд
« Reply #8 on: February 14, 2019, 08:37:43 PM »
... только ест он ее один раз, потом надо заново запускать кликер выкл/вкл.

Так у тебя задержка в 200 секунд стоит!
Code: (clickermann) [Select]
WAIT(200)
В кликере две команды задержек. В секундах WAIT и миллисекундах WAITMS

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

Чем меньше тем лучше. 50x50 максимум. Но можно например 400x2
В общем чем меньше пикселов в картинке тем быстрее поиск. Оптимально когда кликер находит картинку менее чем за секунду. Процент совпадения также сильно замедляет поиск.

Neokrium

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Много простых команд
« Reply #9 on: February 15, 2019, 10:04:02 AM »
Я не много изменил, сейчас вот так выглядит все работает, хотел за место ISKEYDOWN(5) поставить Моус 1 "LCLICK($_return1, $_return2)", он выдает что не понял меня. Думаю удобнее будет когда мышку м1 зажимаешь и он начинает спамить в том месте отпускаешь он перестает, как сделать? и можно ли использовать в скрипте не сколько команд, скажем т1-т4 сделать вкл/выкл. , а т5 сделать м1 зажал работает. отжал перестал работать. Заранее спасибо.

Code: (clickermann) [Select]
THREAD(t1, 1)
   KEYPRESS(#q)
   waitms(RND(200,300))
END_THREAD

THREAD(t2, 1)
   KEYPRESS(#w)
   waitms(RND(200,300))
END_THREAD

THREAD(t3, 1)
   KEYPRESS(#e)
   waitms(RND(200,300))
END_THREAD

THREAD(t4, 1)
   KEYPRESS(#r)
   waitms(RND(200,300))
END_THREAD
 
THREAD(t5, 0)
   LCLICK($_xmouse,$_ymouse)
   waitms(RND(70,120))
END_THREAD

IF(ISKEYDOWN(5)=1)
   SETTHREAD (t5,1)
   WHILE(ISKEYDOWN(5)=1)
      WAITMS(20)
   END_CYC
   SETTHREAD (t5,2)
ELSE
   WAITMS(20)
END_IF

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Много простых команд
« Reply #10 on: February 15, 2019, 10:19:47 AM »
Нельзя кликать и зажимать одну и туже клавишу. Когда кликер пошлет команду клика зажать-отжать твоя зажатая клавиша мыши перестанет действовать пока ты её снова не нажмешь. Так что нужно указать какую то другую клавишу для управления кликами.

Code: (clickermann) [Select]
THREAD(t1, 0)
   KEYPRESS(#q)
   waitms(RND(200,300))
END_THREAD

THREAD(t2, 0)
   KEYPRESS(#w)
   waitms(RND(200,300))
END_THREAD

THREAD(t3, 0)
   KEYPRESS(#e)
   waitms(RND(200,300))
END_THREAD

THREAD(t4, 0)
   KEYPRESS(#r)
   waitms(RND(200,300))
END_THREAD

THREAD(t5, 0)
   LCLICK($_xmouse,$_ymouse)
   waitms(RND(70,120))
END_THREAD

//=============================================

IF(ISKEYDOWN(5)=1)
   SETTHREAD (t5,1)
   WHILE(ISKEYDOWN(5)=1)
      WAITMS(20)
   END_CYC
   SETTHREAD (t5,2)
END_IF

IF(ISKEYDOWN(4)=1)
   WHILE(ISKEYDOWN(4)=1)
   END_CYC
   IF($t1 = 0)
      $t1 = $t1^1
      // включение
      SETTHREAD (t1,1)
      SETTHREAD (t2,1)
      SETTHREAD (t3,1)
      SETTHREAD (t4,1)
      BEEP(1200,100) // сигнал включения
   ELSE
      $t1 = $t1^1
      // выключение
      SETTHREAD (t1,2)
      SETTHREAD (t2,2)
      SETTHREAD (t3,2)
      SETTHREAD (t4,2)
      BEEP(700,100) // сигнал выключения
   END_IF
END_IF

WAITMS(20)
« Last Edit: February 15, 2019, 10:22:20 AM by Oraven »

Neokrium

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Много простых команд
« Reply #11 on: February 15, 2019, 11:08:12 AM »
Вписал еще хилку, по скрину так и не вышло настроить нашел другой способ. И почему то когда делал скрин на другом компе был полный экран снимка, а сейчас только 2/3 снимает.

Code: (clickermann) [Select]
THREAD(t1, 0)
   KEYPRESS(#q)
   waitms(RND(200,300))
END_THREAD
 
THREAD(t2, 0)
   KEYPRESS(#w)
   waitms(RND(200,300))
END_THREAD
 
THREAD(t3, 0)
   KEYPRESS(#e)
   waitms(RND(200,300))
END_THREAD
 
THREAD(t4, 0)
   KEYPRESS(#r)
   waitms(RND(200,300))
END_THREAD
 
THREAD(t5, 0)
   LCLICK($_xmouse,$_ymouse)
   waitms(RND(70,120))
END_THREAD

THREAD(t6, 0)
GETSCREEN
IF(PXL (55,125) = 0)
   KEYPRESS(#SPACE)
ELSE
   waitms(RND(100,200))
END_IF
END_THREAD
 
//=============================================
 
IF(ISKEYDOWN(5)=1)
   SETTHREAD (t5,1)
   WHILE(ISKEYDOWN(5)=1)
      WAITMS(20)
   END_CYC
   SETTHREAD (t5,2)
END_IF
 
IF(ISKEYDOWN(6)=1)
   WHILE(ISKEYDOWN(6)=1)
   END_CYC
   IF($t1 = 0)
      $t1 = $t1^1
      // включение
      SETTHREAD (t1,1)
      SETTHREAD (t2,1)
      SETTHREAD (t3,1)
      SETTHREAD (t4,1)
      SETTHREAD (t6,1)
      BEEP(1200,100) // сигнал включения
   ELSE
      $t1 = $t1^1
      // выключение
      SETTHREAD (t1,2)
      SETTHREAD (t2,2)
      SETTHREAD (t3,2)
      SETTHREAD (t4,2)
      SETTHREAD (t6,2)
      BEEP(700,100) // сигнал выключения
   END_IF
END_IF
 
WAITMS(20)

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Много простых команд
« Reply #12 on: February 15, 2019, 08:00:21 PM »
Можно немного сократить включение/выключение

Code: (clickermann) [Select]
IF(ISKEYDOWN(6) = 1)
   WHILE(ISKEYDOWN(6) = 1)
      WAITMS(5)
   END_CYC
   
   SETTHREAD (t1, $state + 1)
   SETTHREAD (t2, $state + 1)
   SETTHREAD (t3, $state + 1)
   SETTHREAD (t4, $state + 1)
   SETTHREAD (t6, $state + 1)
   
   $state  = $state  ^ 1
   $signal = $signal ^ 500
   
   BEEP(700 + $signal, 100)
   
END_IF
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Neokrium

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Много простых команд
« Reply #13 on: February 16, 2019, 12:43:36 PM »
Code: (clickermann) [Select]
THREAD(t1, 0)
   KEYPRESS(#q)
   waitms(RND(200,300))
END_THREAD
 
THREAD(t2, 0)
   KEYPRESS(#w)
   waitms(RND(200,300))
END_THREAD
 
THREAD(t3, 0)
   KEYPRESS(#e)
   waitms(RND(200,300))
END_THREAD
 
THREAD(t4, 0)
   KEYPRESS(#r)
   waitms(RND(200,300))
END_THREAD
 
THREAD(t5, 0)
   LCLICK($_xmouse,$_ymouse)
   waitms(RND(70,120))
END_THREAD
 
THREAD(t6, 0)
GETSCREEN
IF(PXL (51,120) = 0)
   KEYPRESS(#SPACE)
ELSE
   waitms(RND(100,200))
END_IF
END_THREAD

THREAD(t7, 0)
GETSCREEN
IF_PIXEL_IN(409,886,703,908, 546815)
   SOUND("Свежеемясо.wav")
   waitms(RND(3000,3500))
END_IF
END_THREAD
 
//=============================================
 
IF(ISKEYDOWN(48)=1)
   SETTHREAD (t5,1)
   WHILE(ISKEYDOWN(48)=1)
      WAITMS(20)
   END_CYC
   SETTHREAD (t5,2)
END_IF
 
IF(ISKEYDOWN(53)=1)
   WHILE(ISKEYDOWN(53)=1)
   END_CYC
   IF($t1 = 0)
      $t1 = $t1^1
      // включение
      SETTHREAD (t1,1)
      SETTHREAD (t2,1)
      SETTHREAD (t3,1)
      SETTHREAD (t4,1)
      SETTHREAD (t6,1)
      SETTHREAD (t7,1)
      BEEP(1200,100) // сигнал включения
   ELSE
      $t1 = $t1^1
      // выключение
      SETTHREAD (t1,2)
      SETTHREAD (t2,2)
      SETTHREAD (t3,2)
      SETTHREAD (t4,2)
      SETTHREAD (t6,2)
      SETTHREAD (t7,2)
      BEEP(700,100) // сигнал выключения
   END_IF
END_IF
 
WAITMS(20)

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

Code: (clickermann) [Select]
THREAD(t7, 0)
GETSCREEN
IF_PIXEL_IN(409,886,703,908, 546815)
   SOUND("Свежеемясо.wav")
   waitms(RND(3000,3500))
END_IF
END_THREAD

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Много простых команд
« Reply #14 on: February 16, 2019, 05:22:13 PM »
Ты бы лучше задержки вставлял после действий.
Снимок экрана ресурсоемкая функция если её вызывать часто без задержки. Тем более у тебя там кроме звукового сигнала ничего нет, куда так торопиться? И зачем везде писать рандомные задержки? Их обычно пишут в бот-скриптах чтоб закосить под человека.
Команда SOUND не тормозит скрипт при выполнении, поэтому нужно написать после неё задержку как минимум равную длительности звука.
 
Code: (clickermann) [Select]
THREAD(t7, 0)
   GETSCREEN
   IF_PIXEL_IN(409,886,703,908, 546815)
      SOUND("Свежеемясо.wav")
      waitms(RND(3000,3500))
   END_IF
   WAITMS(100)
END_THREAD

На счет рандомного воспроизведения, это возможно. Создай рядом со скриптом папку "Sound", в нее закинь wav файлы. Кликер сам прочтет в массив имена файлов в папке и случайно выберет одно из них на воспроизведение.

Code: (clickermann) [Select]
THREAD(t7, 0)
   GETSCREEN
   IF_PIXEL_IN(409,886,703,908, 546815)
      GETFILELIST($a_waw, "Sound\*.wav")
      IF(ARRSIZE($a_waw) > 0)
         SOUND(STRCONCAT("Sound\", $a_waw[RND(0,ARRSIZE($a_waw)-1)]))
         WAITMS(3000)
      END_IF
      UNDEFINE($a_waw)
   END_IF
   WAITMS(100)
END_THREAD