Author Topic: 3 в 1  (Read 2454 times)

0 Members and 4 Guests are viewing this topic.

quant13

  • Активный участник
  • ***
  • Posts: 174
    • View Profile
3 в 1
« 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


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: 3 в 1
« Reply #1 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

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: 3 в 1
« Reply #2 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. когдато сталкивался с этой проблемой, когда только потоки появились.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: 3 в 1
« Reply #3 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

У меня он дает нулевую нагрузку. Видимо Джонни учел это.

quant13

  • Активный участник
  • ***
  • Posts: 174
    • View Profile
Re: 3 в 1
« Reply #4 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

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