Author Topic: Типовые алгоритмы, вводные статьи (Новички, читайте!)  (Read 330040 times)

0 Members and 2 Guests are viewing this topic.

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Спасибо. Сейчас сравнил лог после твоего скрипта, и моего :)
Code: (clickermann) [Select]
$var = 20
LOGWRITE ($var)
INC($var,1)
WAITMS(500)
Здесь в логе всегда 20 было, а в нижнем примере значение менялось на 1 после каждого прохода
Code: (clickermann) [Select]
DEFINE($var, 20) // начальное значение
LOGWRITE ($var)
INC($var,1)
WAITMS(500)

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Всем привет подскажите как вставить в буфер сообщение из переменной?
пример:
Code: (clickermann) [Select]
DEFINE ($Message, Всем удачи)
TOCLIP ("$Message")
LCLICK(81, 171)
WAIT(1)
KEYDOWN (#CTRL)
WAITMS (100)
KEYDOWN (#V)
WAITMS (100)
KEYUP (#V)
KEYUP (#CTRL)
WAIT(1)
LCLICK(626, 216)
WAIT(1)
В чате появилось $Message, а не значение переменной.

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Всем привет подскажите как вставить в буфер сообщение из переменной?
[spoiler]
пример:
Code: (clickermann) [Select]
DEFINE ($Message, Всем удачи)
TOCLIP ("$Message")
LCLICK(81, 171)
WAIT(1)
KEYDOWN (#CTRL)
WAITMS (100)
KEYDOWN (#V)
WAITMS (100)
KEYUP (#V)
KEYUP (#CTRL)
WAIT(1)
LCLICK(626, 216)
WAIT(1)
В чате появилось $Message, а не значение переменной.
Привет, у тебя просто кавычки не в тех местах где надо стоят.
Code: (clickermann) [Select]
DEFINE ($Message, "Всем удачи")
TOCLIP ($Message)
LCLICK(81, 171)
WAIT(1)
KEYDOWN (#CTRL)
WAITMS (100)
KEYDOWN (#V)
WAITMS (100)
KEYUP (#V)
KEYUP (#CTRL)
WAIT(1)
LCLICK(626, 216)
WAIT(1)

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Спасибо большое :)

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Всем доброй ночи ;D
Вопрос по синтаксису.
Как написать двойное условие в цикле WHILE?
Нужно что бы цикл выполнялся пока одно из двух условий не станет верным.
В справке к программе не нашел ответа(
Пример:
Code: (clickermann) [Select]
WHILE (($MG ! $maximumGain) | ($strengthening > $_time_t))
Бла Бла :)
END_CYC
этот цикл работает пока оба условия не выполнятся :)
как сделать что бы если одно из двух совпало цикл останавливался?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
За место или надо и.
Code: (clickermann) [Select]
WHILE (($MG ! $maximumGain) & ($strengthening > $_time_t))

END_CYC

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Всем привет. Еще один нубский вопрос)
Написал небольшой сценарий для игры с использованием двух потоков для проверки сплывающих окон.
кусок скрипта)
Code: (clickermann) [Select]
THREAD (KILL, 0)
#include "prog.cms"
ATTACK()
END_THREAD

GETSCREEN
IF_PIXEL_IN (784, 44,802, 59, 9095142)
LCLICK ($_return1, $_return2)
WAIT(5)
SetThread (KILL, 1)
END_IF

push:
WHILE (($p ! $fuckingPush) & ($r !  $errorConnectings))
GETSCREEN
$p = PXLCRC (461, 329, 498, 345)
$r = PXLCOUNT (246, 249, 322, 263, 14582784)
WAITMS (3000)
END_CYC
SetThread (KILL, 0)
IF ($p = $fuckingPush)
LCLICK (461, 329)
WAIT (3)
else
LCLICK (472, 384)
WAIT(40)
end_if
SetThread (KILL, 1)
goto(push)

У меня такой вопрос почему после того как всплывает сообщение, и поток становится на паузу с курсором на экране не чего не происходит? То есть программа работает как мне нужно всплывает окно поток встает на паузу, происходит клик для закрытия окна, программа работает дальше.  НО почему то курсор находится в центре экрана неподвижно. В программе производятся клики по координатам, а в это время курсор неподвижно находится в центре экрана.  До момента пока выскакивает пуш сообщение курсор передвигается по координатам, и визуально на экране это видно. После остановки, и запуска потока клики есть  но их не видно)
может быть косяк в коде? я недавно начал вникать в написание алгоритмов для кликерман так что извините за нубизм, и много букв)
Хочу что бы все работало как часы подскажите где ошибка пожалуйста, или как без потоков можно реализовать проверку пуш сообщений?

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Code: (clickermann) [Select]
SUB (ATTACK)
DEFINE ($active, 949237435)
DEFINE ($maximumGain, 3748378392)
DEFINE ($resetTimeout, 776058941)
WHILE ($AP ! $active)
GETSCREEN (215,387, 261,397)
$AP = PXLCRC (215,387, 260,396)
WAIT(1)
END_CYC
LCLICK(215,387)
WAIT(15)

DEFINE ($strengthening, $_time_t + 60)
WHILE (($MG ! $maximumGain) | ($strengthening > $_time_t))
GETSCREEN (786,545, 835, 564)
$MG = PXLCRC (786,545, 834, 563)
LCLICK (rnd (850, 930), rnd (544, 568)) 
WAITMS (rnd (1900, 2100))
END_CYC

DEFINE ($time, $_time_t + 2000)
WHILE($time > $_time_t)
GETSCREEN (635,290, 669,307)
$RT = PXLCRC (635,290, 668,306)
if ($RT ! $resetTimeout)
LCLICK(rnd(700, 800),rnd(220, 260)) 
WAIT(rnd (4, 6))
LCLICK(rnd(13, 113),rnd(550, 570))
WAIT(rnd (6, 8))
else
wait(1)
end_if
END_CYC

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Строчки
Code: (clickermann) [Select]
   DEFINE ($strengthening, $_time_t + 60)

   DEFINE ($time, $_time_t + 2000)
сработают один раз пока нет таких переменных. При последующих проходах циклы уже не будут срабатывать.

Зачем делать подпрограммы и инклуды когда можно сразу вставить код в поток?

Code: (clickermann) [Select]
THREAD (KILL, 0)
   DEFINE ($active, 949237435)
   DEFINE ($maximumGain, 3748378392)
   DEFINE ($resetTimeout, 776058941)
   WHILE ($AP ! $active)
      GETSCREEN (215,387, 261,397)
      $AP = PXLCRC (215,387, 260,396)
      WAIT(1)
   END_CYC
   LCLICK(215,387)
   WAIT(15)
   
   DEFINE ($strengthening, $_time_t + 60)
   WHILE (($MG ! $maximumGain) | ($strengthening > $_time_t))
      GETSCREEN (786,545, 835, 564)
      $MG = PXLCRC (786,545, 834, 563)
      LCLICK (rnd (850, 930), rnd (544, 568))
      WAITMS (rnd (1900, 2100))
   END_CYC
   
   DEFINE ($time, $_time_t + 2000)
   WHILE($time > $_time_t)
      GETSCREEN (635,290, 669,307)
      $RT = PXLCRC (635,290, 668,306)
      if ($RT ! $resetTimeout)
         LCLICK(rnd(700, 800),rnd(220, 260))
         WAIT(rnd (4, 6))
         LCLICK(rnd(13, 113),rnd(550, 570))
         WAIT(rnd (6, 8))
      else
         wait(1)
      end_if
   END_CYC
END_THREAD

GETSCREEN
IF_PIXEL_IN (784, 44,802, 59, 9095142)
   LCLICK ($_return1, $_return2)
   WAIT(5)
   SetThread (KILL, 1)
END_IF

push:
WHILE (($p ! $fuckingPush) & ($r !  $errorConnectings))
   GETSCREEN
   $p = PXLCRC (461, 329, 498, 345)
   $r = PXLCOUNT (246, 249, 322, 263, 14582784)
   WAITMS (3000)
END_CYC
SetThread (KILL, 0)
IF ($p = $fuckingPush)
   LCLICK (461, 329)
   WAIT (3)
else
   LCLICK (472, 384)
   WAIT(40)
end_if
SetThread (KILL, 1)
goto(push)

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Спасибо.  Инклюды, и сабы начал делать т.к  в игре много разных  событий и мне кажется что использовать подпрограммы удобно для некоторых из них ;D

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Code: (clickermann) [Select]
DEFINE ($strengthening, $_time_t + 60)
   WHILE (($MG ! $maximumGain) | ($strengthening > $_time_t))
      GETSCREEN (786,545, 835, 564)
      $MG = PXLCRC (786,545, 834, 563)
      LCLICK (rnd (850, 930), rnd (544, 568))
      WAITMS (rnd (1900, 2100))
   END_CYC
Еще вопрос по этому циклу. Если во время цикла $MG = $maximumGain как сделать что бы не было кликов LCLICK (rnd (850, 930), rnd (544, 568))?
Пробовал сделать так:
Code: (clickermann) [Select]
DEFINE ($strengthening, $_time_t + 60)
   WHILE (($MG ! $maximumGain) | ($strengthening > $_time_t))
      GETSCREEN (786,545, 835, 564)
      $MG = PXLCRC (786,545, 834, 563)
       if  ($MG ! $maximumGain)
      LCLICK (rnd (850, 930), rnd (544, 568))
       end_if
      WAITMS (rnd (1900, 2100))
   END_CYC
Но он клацает пока не занончится время >:(

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Насколько я понял знак "|" в цикле WHILE означает что должны выполнится оба условия цикла.
Логика в том что есть таймер 60 сек,  и шкала от 0% до 100%  при клике по кнопке происходит или не происходит увеличение шкалы на 10%. То есть шкала может увеличится до 100% ( $MG = $maximumGain) за 40 сек, и что бы идти дальше нужно дождаться пока пройдет еще 20 сек. Также шкала может увеличится до 100% за 1 мин. 30 сек. и только после этого нужно идти дальше.
как я понял что DEFINE ($strengthening, $_time_t + 60) в этом случае означает что в переменной $strengthening  присваивается значение текущего времени +60 сек, и  условие ($strengthening > $_time_t) будет работать пока не пройдет 60 сек + еще один проход наверное?
Вопрос как сделать  если  шкала  увеличится до 100% ( $MG = $maximumGain) за 40 сек что бы оставшиеся 20 сек не было кликов, а было просто ожидание пока закончится время?

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Завтра этот код попробую
Code: (clickermann) [Select]
DEFINE ($strengthening, $_time_t + 60)
DEFINE ($str, 0)
DEFINE ($maximumGain, 3748378392)
   WHILE (($str = 0) | ($strengthening > $_time_t))
      GETSCREEN (786,545, 835, 564)
      $MG = PXLCRC (786,545, 834, 563)
       if  ($MG = $maximumGain)
   $str = 1
       end_if
  LCLICK (rnd (850, 930), rnd (544, 568))
      WAITMS (rnd (1900, 2100))
 END_CYC

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Пипец :) запутался с легким условием  :D
Code: (clickermann) [Select]
    DEFINE ($strengthening, $_time_t + 60)
    DEFINE ($str, 0)
    DEFINE ($maximumGain, 3748378392)
       WHILE (($str = 0) | ($strengthening > $_time_t))
          GETSCREEN (786,545, 835, 564)
          $MG = PXLCRC (786,545, 834, 563)
             if  ($MG ! $maximumGain)
             LCLICK (rnd (850, 930), rnd (544, 568))
             WAITMS (rnd (1900, 2100)) 
              else 
          $str = 1
               end_if 
     END_CYC

SASHKA))

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Кирил спасибо  за ответ :)
попробуйте выполнить эти цыклы, и вы поймете где здесь "и" а где "или"  :)
Code: (clickermann) [Select]
WHILE(($_time_h ! 11) | ($_time_m ! 50))
WAIT(1)
END_CYC
Start ( )
/////////
WHILE(($_time_h ! 11) & ($_time_m ! 50))
WAIT(1)
END_CYC
Start ( )