Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: quant13 on June 18, 2016, 10:08:28 PM

Title: 3 в 1
Post by: quant13 on June 18, 2016, 10:08:28 PM
кто может из 3 потоков сделать 1 чтоб работало?
ато 3 потока убивают 1-ядерный проц какие задержки не ставь
Code: (Clickermann) [Select]
thread(ctrlset,1)
   IF((iskeydown(110)=1)) //NumPad .
      IF ($st=0)
         $st=1
         $stx=$_xmouse
         $sty=$_ymouse
         HINTPOPUP("Set")
      END_IF
   END_IF
   WAITMS(50)
end_thread
thread(altunset,1)
   IF((iskeydown(96)=1)) //NumPad 0
      IF ($st=1)
         $st=0
         HINTPOPUP("Unset")
      END_IF
      WAITMS(50)
   END_IF
end_thread
thread(clicktoset,1)
   IF ($st=1)
      RCLICK($stx,$sty)
      //HINTPOPUP("click")
      WAIT(2)
   END_IF
   WAITMS(50)
end_thread

Title: Re: 3 в 1
Post by: Oraven on June 19, 2016, 03:27:32 PM
Code: (clickermann) [Select]
// для версии 4.12 кликера

IF(ISKEYDOWN(96)=1) // NumPad 0 Вкл/Выкл
   WHILE(ISKEYDOWN(96)=1)
      WAITMS(5)
   END_CYC
   IF($t1 = 0)
      $t1 = $t1^1
      HINTPOPUP("Set")
      $stx=$_xmouse
      $sty=$_ymouse
      SETTHREAD (clicktoset, 1) // запускаем поток
   ELSE
      $t1 = $t1^1
      HINTPOPUP("Unset")
      SETTHREAD (clicktoset, 2) // останавливаем поток
   END_IF
   WAITMS(50)
ELSE
   WAITMS(20) // для разгрузки ЦП
END_IF

THREAD(clicktoset,0)
   RCLICK($stx,$sty)
   WAIT(2)
END_THREAD
Title: Re: 3 в 1
Post by: dramster on June 19, 2016, 08:41:47 PM
кто может из 3 потоков сделать 1 чтоб работало?
ато 3 потока убивают 1-ядерный проц какие задержки не ставь
Code: (Clickermann) [Select]
thread(ctrlset,1)
   IF((iskeydown(110)=1)) //NumPad .
      IF ($st=0)
         $st=1
         $stx=$_xmouse
         $sty=$_ymouse
         HINTPOPUP("Set")
      END_IF
   END_IF
   WAITMS(50)
end_thread
thread(altunset,1)
   IF((iskeydown(96)=1)) //NumPad 0
      IF ($st=1)
         $st=0
         HINTPOPUP("Unset")
      END_IF
      WAITMS(50)
   END_IF
end_thread
thread(clicktoset,1)
   IF ($st=1)
      RCLICK($stx,$sty)
      //HINTPOPUP("click")
      WAIT(2)
   END_IF
   WAITMS(50)
end_thread

первое что видно невооруженным глазом, ты забыл про основной поток, а в нем у тебя задержек нет. вот и груз твоего компа пошел изза этого. хватит поставить задержку вне твоих потоков, и все должно заработать как положено, . либо один поток сделать основным, тоесть достать его из thread. когдато сталкивался с этой проблемой, когда только потоки появились.
Title: Re: 3 в 1
Post by: Oraven on June 19, 2016, 09:43:09 PM
первое что видно невооруженным глазом, ты забыл про основной поток, а в нем у тебя задержек нет. вот и груз твоего компа пошел изза этого. хватит поставить задержку вне твоих потоков, и все должно заработать как положено, . либо один поток сделать основным, тоесть достать его из thread. когдато сталкивался с этой проблемой, когда только потоки появились.

Прежде тестируй!
Открой диспетчер задач и запусти вот этот скрипт
Code: (clickermann) [Select]
THREAD(name1, 1)
WAIT(1)
END_THREAD

THREAD(name2, 1)
WAIT(1)
END_THREAD

THREAD(name3, 1)
WAIT(1)
END_THREAD

У меня он дает нулевую нагрузку. Видимо Джонни учел это.
Title: Re: 3 в 1
Post by: quant13 on June 19, 2016, 10:38:03 PM
Code: (clickermann) [Select]
// для версии 4.12 кликера

IF(ISKEYDOWN(96)=1) // NumPad 0 Вкл/Выкл
   WHILE(ISKEYDOWN(96)=1)
      WAITMS(5)
   END_CYC
   IF($t1 = 0)
      $t1 = $t1^1
      HINTPOPUP("Set")
      $stx=$_xmouse
      $sty=$_ymouse
      SETTHREAD (clicktoset, 1) // запускаем поток
   ELSE
      $t1 = $t1^1
      HINTPOPUP("Unset")
      SETTHREAD (clicktoset, 2) // останавливаем поток
   END_IF
   WAITMS(50)
ELSE
   WAITMS(20) // для разгрузки ЦП
END_IF

THREAD(clicktoset,0)
   RCLICK($stx,$sty)
   WAIT(2)
END_THREAD

Прекрасно работает, и даже одной клавишей устанавливается/снимается координата для клика. Спасибо