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

0 Members and 4 Guests are viewing this topic.

Krisp

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile


ок, не буду ничего дробить. проверь пжлст, я прально все понял?

Code: (clickermann) [Select]
DEFINE($time, $_time_t + 3600) // задаем переменную, называем ее $time и делаем ее равной текущему времени + 1 час.
IF($time < $_time_t) // здесь условие выполниться только в том случае, если наша переменная становится меньше текущего времени, то есть если прошел 1 час и больше
   // сюда пропишу все шо хочу
   // Условие сработает через час и будет срабатывать каждый час
   
   $time = $_time_t + 3600 // здесь мы задаем нашей переменной новое обновленное значение, чтобы опять пошел отсчет на час и больше
END_IF

если все так, то куда мне лучше засунуть все ето в свой скрипт. и потом, у меня там есть переменная $time, просто дать другое имя?
вот

Code: (clickermann) [Select]
LCLICK(1009,78)  // 1313280

WAITMS(RND(2000,5000))  // 0

KEYPRESS(#END)
WAITMS(RND(3000,5000))

LCLICK(787,850)  // 16777215

WAITMS(RND(2000,5000))  // 0
LCLICK(738,917)  // 4045725
LCLICK(738,917)  // 4045725

WAITMS(RND(3000,5000))

KEYPRESS(#HOME)

WAITMS(RND(3000,5000))  // 0

LCLICK(757,127)  //



//  так думаю надо засунуть сюда, перед ожиданием (хотел выделить цветом, но внутри кода кликера похоже на работают форумные коды(



$time = $_time_t + RND(1400,2000) // 23-33 минут
WHILE($time > $_time_t)
   WAIT(1)
   $ts = $time-$_time_t
   $th = 0
   $tm = 0
   while($ts > 3599)
      INC($ts,-3600)
      INC($th, 1)
   end_cyc
   while($ts > 59)
      INC($ts,-60)
      INC($tm, 1)
   end_cyc
   IF(STRLEN($th)<2)
      $th = STRCONCAT ("0", $th)
   END_IF
   IF(STRLEN($tm)<2)
      $tm = STRCONCAT ("0", $tm)
   END_IF
   IF(STRLEN($ts)<2)
      $ts = STRCONCAT ("0", $ts)
   END_IF
   LOGCLEAR
   LOGWRITE ("Осталось: ",$th,":",$tm,":",$ts)
END_CYC

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Да все верно. Назови второй таймер например "$time2" и все будет нормально.

Krisp

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
Да все верно. Назови второй таймер например "$time2" и все будет нормально.

отлично так и сделал, всю ночь полет нормальный, спасибо большое за разьяснения)) теперь еще вот такой вопрос: как вот ето оформить?

В случае указания директивы #logfile, помимо окна лога, сообщение записывается в файл %папка_проекта%/log.txt

чтобы, значит, сообщение в файл выводилось

Krisp

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
для этого надо #logfile отдельно прописать в любой строчке до команды print. с этим разобрался, но подскажи можно ли сделать так, чтобы в лог оно записывало только определенную инфу, а не все подряд. то есть надо чтобы в одном месте стоял етот #logfile, а потом вроде как #unlogfile) или так нельзя и тут уж придется дробить скрипт с отдельными подпрограммами?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Директивы пишут в начале скрипта и они действуют на весь скрипт, отключить потом их нельзя.

Есть же запись в файл. Вот простой пример.
Code: (clickermann) [Select]
TFWRITE("Log.txt", "Твое сообщение")
Но тебе может потребоваться также запись времени.
Вот пример посложнее. Подпрограммы обычно прописывают в верхней части скрипта, до основного кода.

Code: (clickermann) [Select]
SUB(лог,$str) // подпрограмма должна быть выше её вызова
   IF($str = "пробел")
      LOGWRITE (" ")
      TFWRITE("Log.txt", " ")
   ELSE
      $th = $_time_h
      $tm = $_time_m
      $ts = $_time_s
     
      IF(STRLEN($th)<2)
         $th = STRCONCAT ("0", $th)
      END_IF
      IF(STRLEN($tm)<2)
         $tm = STRCONCAT ("0", $tm)
      END_IF
      IF(STRLEN($ts)<2)
         $ts = STRCONCAT ("0", $ts)
      END_IF
      LOGWRITE ($th,":",$tm,":",$ts, " ",$str)
      TFWRITE("Log.txt", STRCONCAT($th,":",$tm,":",$ts, " ",$str))
   END_IF
END_SUB

$time = 12345

лог("Мое сообщение") // обычная запись
лог(STRCONCAT("Мое сообщение ",$time)) // комбинированная запись
лог("пробел") // записать в лог отступ

HALT

Все просто  ;)

Krisp

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
ух, полтора часа просидел, разбираясь в твоем примере посложнее) вот что получилось, переработанное под мои потребности

Code: (clickermann) [Select]
SUB(лог,$str)   
      $th = $_time_h
      $tm = $_time_m
      $ts = $_time_s
 
      IF(STRLEN($th)<2)
         $th = STRCONCAT ("0", $th)
      END_IF
      IF(STRLEN($tm)<2)
         $tm = STRCONCAT ("0", $tm)
      END_IF
      IF(STRLEN($ts)<2)
         $ts = STRCONCAT ("0", $ts)
      END_IF
      LOGWRITE ($th,":",$tm,":",$ts, " ",$str)
      TFWRITE("Log.txt", STRCONCAT($th,":",$tm,":",$ts, " ",$str))
END_SUB
 

LCLICK(1089,78)  // центр деры
WAITMS(RND(3000,5000))
GETSCREEN
IF_PICTURE_IN (1266, 284, 1288, 409, 1.bmp)
лог("время обнаружения напа")
HINTPOPUP("идет нап", "ПИСТЕЕЦЦ")
EXECUTE ("C:\Users\Ил\Desktop\Clickermann v4.10\data\sound\1.wav")
WAITMS(2000)
end_if   // конец условия


HALT

хотя сейчас вот понимаю, что ето же самое сделать еще простче, ведь мне не нужно фиксировать альтернативно-отрицательные условия. если да - то записывает, а нет - так и ладно. получится вот так, верно?

Code: (clickermann) [Select]
LCLICK(1089,78)  // центр деры
WAITMS(RND(3000,5000))
GETSCREEN
IF_PICTURE_IN (1266, 284, 1288, 409, 1.bmp)
$th = $_time_h
      $tm = $_time_m
      $ts = $_time_s
 
      IF(STRLEN($th)<2)
         $th = STRCONCAT ("0", $th)
      END_IF
      IF(STRLEN($tm)<2)
         $tm = STRCONCAT ("0", $tm)
      END_IF
      IF(STRLEN($ts)<2)
         $ts = STRCONCAT ("0", $ts)
      END_IF
      TFWRITE("Log.txt", STRCONCAT("Время обнаружения" $th,":",$tm,":",$ts, " "))
HINTPOPUP("идет нап", "ПИСТЕЕЦЦ")
EXECUTE ("C:\Users\Ил\Desktop\Clickermann v4.10\data\sound\1.wav")
WAITMS(2000)
end_if   // конец условия


HALT
            

остались такие вопросы: как видишь, у меня стоит execute на аудио сигнал, то есть он открывается обычным проигрывателем, потому что обычным SOUND("1.wav") не играет звук. почему?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Ошибка, не хватает запятой
Code: (clickermann) [Select]
TFWRITE("Log.txt", STRCONCAT("Время обнаружения", $th,":",$tm,":",$ts))Имя файла должно быть в кавычках
Code: (clickermann) [Select]
IF_PICTURE_IN (1266, 284, 1288, 409, "1.bmp")   

Папка где лежит скрипт является корнем. Туда и нужно класть твои файлы.
Code: (clickermann) [Select]
SOUND("1.wav")Или для порядка создать в ней еще одну папку, например "Звуки"
Тогда путь будет выглядить так
Code: (clickermann) [Select]
SOUND("Звуки\1.wav")
« Last Edit: September 28, 2014, 01:50:36 PM by Oraven »

Krisp

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
воо, спасибо, отлично работает! а то я нашел внутри папку Sound, и туда как ишак звуки пихал)

а вот ето у мене отлично и без кавычек имя файла находит))
Code: (Clickermann) [Select]
IF_PICTURE_IN (1266, 284, 1288, 409, "1.bmp")
   

Barma1ey

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Всем доброго времени суток. Интересует один вопросик. Можно ли как-то проанализировать наличие пикселей в окне (функции PXL, PXLCOUNT), если оно свернуто или закрыто другим окном?

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Всем доброго времени суток. Интересует один вопросик. Можно ли как-то проанализировать наличие пикселей в окне (функции PXL, PXLCOUNT), если оно свернуто или закрыто другим окном?
только если используется оконный режим в кликере с установкой активного окна через hset(hwnd)

Krisp

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
скажите, а можно каким либо образом (например EXECUTE) настроить уведомление за рамки компутера - по имейлу или любому мессенджеру (скайп, вибер). вот задался вопрос, но пока очевидного решения не нашел

Barma1ey

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Quote
только если используется оконный режим в кликере с установкой активного окна через hset(hwnd)
Спасибо за ответ, но нельзя ли с примером и разъяснениями, а то, если честно, я ничего не понял.

Допустим я открываю этот форум в опере, выставляю положение окна оперы и ее размер, и получаю номер пикселя с координатами 200, 325:
Code: [Select]
$hwnd = WNDFIND("Типовые алгоритмы")
WNDPOS($hwnd,100,50)
WAITMS(500)
WNDSIZE($hwnd,1200,950)
WAITMS(500)
$pxl = PXL(210,325)
Затем я включаю любую другую вкладку, либо просто сворачиваю оперу, либо открываю например фотошоп, который закрывает окно оперы. Как мне получить номер пикселя со страницы этого форума?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Наводишь мышь на окно, нажимаешь Alt+W теперь кликер перешел в оконный режим. Координаты теперь отсчитываются от начала этого окна, смотришь какие координаты и вписываешь в скрипт.
Сворачивать окно нельзя так как при этом винда ничего в нем не отрисовывает.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
скажите, а можно каким либо образом (например EXECUTE) настроить уведомление за рамки компутера - по имейлу или любому мессенджеру (скайп, вибер). вот задался вопрос, но пока очевидного решения не нашел

У adenа видел скрипт с передачей лога в ICQ как раз через EXECUTE.

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
скажите, а можно каким либо образом (например EXECUTE) настроить уведомление за рамки компутера - по имейлу или любому мессенджеру (скайп, вибер). вот задался вопрос, но пока очевидного решения не нашел

execute + mimcmd.exe + miranda c плагином cmdline