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

0 Members and 5 Guests are viewing this topic.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Типовые алгоритмы
« Reply #90 on: September 15, 2014, 03:12:54 PM »
У нуба возникло 3 вопроса )) 1 - первый GETSCREEN (тот, что выше "// условие цикла: если функция" находится) тоже надо прописывать? То есть - GETSCREEN 2 раза надо писать? (К слову - я попробовал и у меня это условие искало и находило пиксель ВООБЩЕ без обоих GETSCREEN...  ???) 2 - Между какими строчками нужно прописывать команды в теле условия, которые будут выполняться, если пиксель НЕ найден? Между "WAITMS(100) // задержка" и "GETSCREEN", или Между "GETSCREEN" и "END_CYC"? И 3 - Как написать такое же условие, но для IF_PICTURE_IN?
1. Тоже, он нужен для первого сравнения PXL. Второй, для последующих в цикле.
(то, что у тебя находило... не запускай для проверки скрипт из открытого редактора. В редакторе GETSCREEN шарашит автоматом всегда - для лупы и показа цвета).
2. перед WAITMS(100).
3. Для IF_PICTURE_IN только раздельно, снаружи искусственный WHILE, внутри IF_PICTURE_IN с флагом  :)


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Типовые алгоритмы
« Reply #91 on: September 15, 2014, 03:25:28 PM »
У нуба возникло 3 вопроса )) 1 - первый GETSCREEN (тот, что выше "// условие цикла: если функция" находится) тоже надо прописывать? То есть - GETSCREEN 2 раза надо писать? (К слову - я попробовал и у меня это условие искало и находило пиксель ВООБЩЕ без обоих GETSCREEN...  ???) 2 - Между какими строчками нужно прописывать команды в теле условия, которые будут выполняться, если пиксель НЕ найден? Между "WAITMS(100) // задержка" и "GETSCREEN", или Между "GETSCREEN" и "END_CYC"? И 3 - Как написать такое же условие, но для IF_PICTURE_IN?
3. Для IF_PICTURE_IN только раздельно, снаружи искусственный WHILE, внутри IF_PICTURE_IN с флагом  :)

Я чую назревает вопрос еще на пару суток... ) Можно пояснить плиз?  ::)
« Last Edit: September 15, 2014, 03:27:28 PM by Hito »
Я не ду... Потому и не бу...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Для пиксела
Code: (clickermann) [Select]
GETSCREEN
WHILE(PXL(100, 100) ! 255)
   WAITMS(100) // задержка
   GETSCREEN // снимок в буфер кликера внутри цикла
END_CYC

Для картинки
Code: (clickermann) [Select]
WHILE($repeat_pupkin = 0)
   GETSCREEN
   IF_PICTURE_IN (0,0,$_xmax,$_ymax, "file.bmp",-1,100)
      $repeat_pupkin = 1
   ELSE
      WAITMS(100)
   END_IF
END_CYC


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Не - про PXL я понял сразу из твоего ответа!  :) Мне про "снаружи искусственный WHILE, внутри IF_PICTURE_IN с флагом" было непонятно. Спс за ответ
Я не ду... Потому и не бу...

Krisp

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
Ребята, подсобите пожалуйста, я уже не понимаю и устал. вот есть простенький код, единственный, который я пока осилил. но он работает только в активном режиме, мне же надо его на задний фон поставить, чтобы он работал параллельно с тем как я творю свои дела на компе.
http://crapware.aidf.org/forum/index.php?topic=33.msg562#msg562 - этот пост таранил несколько раз, но пока безуспешно
http://crapware.aidf.org/forum/index.php?topic=33.msg637#msg637 - здесь проще, но проблема возникает в момент когда надо прокрутить колесико вниз-вверх, я так понял, что в фоновом режиме другие команды

Code: (clickermann) [Select]
LCLICK(541,512)  //
WAITMS(RND(2000,5000))  // 0
WHEELDOWN (30) // тут проблема
WAITMS(RND(3000,5000))
LCLICK(788,858)  //
WAITMS(RND(2000,5000))  // 0
LCLICK(732,924)  //
WAITMS(RND(2000,5000))
WHEELUP (30) // и тут
WAITMS(RND(3000,5000))  // 0
LCLICK(757,127)  //
WAIT(RND(1400,2000)) // 20-30 минут

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
А клавиши "PageUp" "PageDown " вместо колесика не годятся?

Krisp

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
А клавиши "PageUp" "PageDown " вместо колесика не годятся?

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

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Вот так

Code: (clickermann) [Select]
LCLICK(541,512)  //
WAITMS(RND(2000,5000))  // 0

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

LCLICK(788,858)  //
WAITMS(RND(2000,5000))  // 0

LCLICK(732,924)  //
WAITMS(RND(2000,5000))

KEYPRESS(#PAGEUP)
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

Krisp

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

видно я что-то не так делаю - не хочет оно в фоновом режиме работать, окно вылезает на первый план и тогда уже все происходит
« Last Edit: September 24, 2014, 10:44:30 PM by Krisp »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
видно я что-то не так делаю - не хочет оно в фоновом режиме работать, окно вылезает на первый план и тогда уже все происходит
Если окно становится активным, то это проблемы окна и винды. Скрипт здесь не при чём.
Если это браузер, нужно попробовать сменить браузер.
Если флешь приложение на хроме - отключить встроенный флешь.
Попробовать отключить аппаратное ускорение в браузере/игре.
Попереключать темы win с aero.
В общем поиграться и попрыгать с бубном, попеть песни призывающие духов скриптов.


Krisp

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
ох уж мне ети танцы с бубном((
браузер не могу сменить, нужен именно хром. ам не флеш, обычная браузерка. аппаратное ускорение выключил, не помогло. про темы с вин и аеро не уловил. у меня 8ка стоит.
еще такой вопросик - есть команда, чтобы вот ето KEYPRESS(#PAGEDOWN) не по одной страничке листало, а сразу в самый низ, до упора?или какую проверку воткнуть, не соображу

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
KEYPRESS(#END)

вы еще не все кнопки на клавиатуре знаете а уже за скрипты писать взялись

Krisp

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
KEYPRESS(#END)

вы еще не все кнопки на клавиатуре знаете а уже за скрипты писать взялись

извините, я не очень умный уродился, но стараюсь

Krisp

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

вот еще мелочь , которая досаждает. хочу чтобы лог весел всегда поверх всех окон, то есть всегда был доступен взору. Естесьно, нажимаю в нем кнопочку "поверх всех окон", но буквально через несколько переключенй окон о безнадежно теряется в задах. опять глюки системки?
« Last Edit: September 27, 2014, 01:57:19 PM by Krisp »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Нечего дробить скрипт!

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