Author Topic: нужна помощь  (Read 8369 times)

0 Members and 4 Guests are viewing this topic.

bpa

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
нужна помощь
« on: February 16, 2015, 09:17:39 AM »
помогите с скриптом. Я написал скрипт под игру. Правельно ли? И иногда в промежутках выскакивают окна где нужно нажимать на кнопки подтверждения. Вот их я и не знаю как победить
Code: [Select]
GETSCREEN
WHILE(PXL (1529,425) ! 7381699)
   WAITMS (1000)
   GETSCREEN
END_CYC
LCLICK(1524,428)
GETSCREEN
WHILE(PXL (1487,756) ! 10982251)
   WAITMS (100)
   GETSCREEN
END_CYC
LCLICK(1487,756)
GETSCREEN
WHILE(PXL (1165,184) ! 12636637)
   WAITMS (100)
   GETSCREEN
END_CYC
LCLICK(1165,184)
WAIT(1)
LCLICK(1504,758)
GETSCREEN
WHILE(PXL (1504,749) ! 10455909)
   WAITMS (100)
   GETSCREEN
END_CYC
WAIT(1)
LCLICK(1533,749)
WAIT(1)
LCLICK(1533,749)
$time = $_time_t + 2
GETSCREEN
WHILE((PXL (1394,557) ! 8612425) & ($time > $_time_t))
   WAITMS (100)
   GETSCREEN
END_CYC
LCLICK(1394,557)
      WAITMS(2000)
LCLICK (1411,749)
GETSCREEN
WHILE(PXL (1323,592) ! 13095135)
   WAITMS (1200)
   GETSCREEN
END_CYC
DBLCLICK(1372,681)     


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: нужна помощь
« Reply #1 on: February 16, 2015, 11:01:08 AM »
Используй потоки, один поток выполняет твой скрипт а другой параллельно следит за окнами.

Если второй поток найдет окно то нужно поставить на паузу первый поток вот такой командой
Code: (clickermann) [Select]
SETTHREAD (main, 0)убрать окно и продолжить выполнение первого потока командой
Code: (clickermann) [Select]
SETTHREAD (main, 1)
Code: (clickermann) [Select]
THREAD(main, 1) // главный скрипт
   GETSCREEN
   WHILE(PXL (1529,425) ! 7381699)
      WAITMS (1000)
      GETSCREEN
   END_CYC
   
   LCLICK(1524,428)
   
   GETSCREEN
   WHILE(PXL (1487,756) ! 10982251)
      WAITMS (100)
      GETSCREEN
   END_CYC
   
   LCLICK(1487,756)
   
   GETSCREEN
   WHILE(PXL (1165,184) ! 12636637)
      WAITMS (100)
      GETSCREEN
   END_CYC
   
   LCLICK(1165,184)
   WAIT(1)
   LCLICK(1504,758)
   
   GETSCREEN
   WHILE(PXL (1504,749) ! 10455909)
      WAITMS (100)
      GETSCREEN
   END_CYC
   
   WAIT(1)
   LCLICK(1533,749)
   WAIT(1)
   LCLICK(1533,749)
   
   $time = $_time_t + 2
   GETSCREEN
   WHILE((PXL (1394,557) ! 8612425) & ($time > $_time_t))
      WAITMS (100)
      GETSCREEN
   END_CYC
   
   LCLICK(1394,557)
   WAITMS(2000)
   LCLICK (1411,749)
   
   GETSCREEN
   WHILE(PXL (1323,592) ! 13095135)
      WAITMS (1200)
      GETSCREEN
   END_CYC
   
   DBLCLICK(1372,681)
END_THREAD

THREAD(pomexi, 1) // проверка на всплывающие окна

// здесь использовать функции поиска картинок или пикселов или другие, чтобы определить выскочившее окно и убрать его

END_THREAD

WAIT(1)


bpa

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: нужна помощь
« Reply #2 on: February 16, 2015, 02:19:40 PM »
спасибо. а три потока потянет?

Andrey_13

  • Освоившийся
  • **
  • Posts: 28
    • View Profile
Re: нужна помощь
« Reply #3 on: February 16, 2015, 02:32:30 PM »
Можно напишу в Вашей теме, просто меня тоже этот вопрос интересовал.
если я использую подпрограммы, то все это будет выглядеть так:

SUB (sub_1)
...
END_SUB

SUB (sub_2)
...
END_SUB

SUB (sub_3)
...
END_SUB

SUB (реклама)
...
END_SUB

THREAD(main, 1) // главный скрипт
sub_1()
sub_2()
sub_3()
sub_1()
END_THREAD

THREAD(pomexi, 1) // проверка на всплывающие окна
реклама()
END_THREAD



Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: нужна помощь
« Reply #4 on: February 16, 2015, 03:22:25 PM »
спасибо. а три потока потянет?

Сколько угодно потянет.

Можно напишу в Вашей теме, просто меня тоже этот вопрос интересовал.
если я использую подпрограммы, то все это будет выглядеть так:

Неверно, подпрограммы должны описываться в том же потоке.
Code: (clickermann) [Select]
THREAD(main, 1) // главный скрипт
   SUB (sub_1)
      ...
   END_SUB
   
   SUB (sub_2)
      ...
   END_SUB
   
   SUB (sub_3)
      ...
   END_SUB
   
   sub_1()
   sub_2()
   sub_3()
   sub_1()
END_THREAD

THREAD(pomexi, 1) // проверка на всплывающие окна
   SUB (реклама)
      ...
   END_SUB
   
   реклама()
END_THREAD

И подпрограммы целесообразно использовать только при многочисленном повторении куска кода.

Andrey_13

  • Освоившийся
  • **
  • Posts: 28
    • View Profile
Re: нужна помощь
« Reply #5 on: February 16, 2015, 03:56:24 PM »
Quote
И подпрограммы целесообразно использовать только при многочисленном повторении куска кода.
Это относится только при использовании потоков или вообще?
Я думал, что с  подпрограммами скрипт будет более гибким, можно включать и отключать оперативно часть подпрограмм.
А чем грозит, если подпрограмм будет много?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: нужна помощь
« Reply #6 on: February 16, 2015, 04:37:59 PM »
А чем грозит, если подпрограмм будет много?
Ничем.

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

Представь что ты читаешь книгу с кучей ссылок. Вместо того чтобы сразу прочитать текст ты вынужден метаться в конец книги за разъяснениями. Кликеру все равно а вот пользователю сложнее разбираться в коде.

Если хочешь отключить часть кода. просто заключи его в условие, а в начале кода напиши переменные для настройки

Code: (clickermann) [Select]
$cod_1 = 1
$cod_2 = 0
$cod_3 = 1

IF($cod_1 = 1)
  // body
END_IF

IF($cod_2 = 1)
  // body
END_IF

IF($cod_3 = 1)
  // body
END_IF

Использование подпрограмм накладывает некоторые ограничения, из них не рекомендуется выпрыгивать через ГОТО.

And_Ro

  • Зашел в гости
  • *
  • Posts: 12
  • Не злой
    • View Profile
Re: нужна помощь
« Reply #7 on: February 16, 2015, 05:45:30 PM »
А можно в подпрограмме использовать команду HALT? При перезапуске сценария по Alt+A параметры стека ведь пересоздадутся?
RTFM !!!

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: нужна помощь
« Reply #8 on: February 16, 2015, 05:54:56 PM »
Везде можно использовать. Команда HALT эквивалентна Alt+S полная остановка выполнения.

bpa

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: нужна помощь
« Reply #9 on: February 16, 2015, 06:59:42 PM »
Господа спасибо огромное! Только проблема я не могу разобраться с этими подпрограммы. Я не могу понять как они пишутся.

BubukaBomb

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: нужна помощь
« Reply #10 on: February 18, 2015, 08:20:13 PM »
Чтоб не плодить темы, спрошу тут  ;D
Господа, есть работающий скрипт, условно
Code: (clickermann) [Select]
$y1 = 470
$y2 = 505

$Xw = 360     // ввести координату "X" левого верхнего угла окна

$Yw = 0       // ввести координату "Y" левого верхнего угла окна

$Xud1 = 534   // ввести координату "X" точки заброса удочки № 1

$Yud1 = 425   // ввести координату "Y" точки заброса удочки № 1

$Xud2 = 651   // ввести координату "X" точки заброса удочки № 2
// ну и так далее

Потребляет 3-5% процессорной мощности. Решил разнообразить его потоками (для отслеживания всплывающих окон и закрытия их) по предложению Oravena, из этой темы.  Как только объявляю первый поток

Code: (clickermann) [Select]
THREAD(main, 1) // главный скрипт
$y1 = 470
$y2 = 505

$Xw = 360     // ввести координату "X" левого верхнего угла окна

$Yw = 0       // ввести координату "Y" левого верхнего угла окна
.
.
.
END_THREAD

Скрипт начинает потреблять 25-30% процессорной мощности. Это правильно? И отчего так?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: нужна помощь
« Reply #11 on: February 18, 2015, 08:36:16 PM »
Ответ спрятан за точками.
Нет работающей задержки.


BubukaBomb

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: нужна помощь
« Reply #12 on: February 18, 2015, 08:54:16 PM »
Как бэ и не в задержках дело. Скрипт без объявления потока потребляет мало - там и задержки есть и все остальное. Я ведь что делаю, первой строчкой объявляю начало потока, последней объявляю конец потока, больше никаких изменений в скрипт не вношу и сразу, бац, проц грузится на лишних 25%.

BubukaBomb

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: нужна помощь
« Reply #13 on: February 18, 2015, 11:13:49 PM »
Ок, спасибо! Придется с этим как-то жить  :'(

BubukaBomb

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: нужна помощь
« Reply #14 on: February 18, 2015, 11:33:03 PM »
Так у меня и так все это сделано. Я ж говорю, скрипт БЕЗ потока потребляет 3-5%, делаю только ОДИН поток, сразу 25-30%!