Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ttecra

Pages: [1]
1
Общие вопросы / Re: Прошу указать на ошибки
« on: November 19, 2017, 05:41:17 PM »
Спасибо, с подпрограммами действительно более компактно и красиво получается.

2
Общие вопросы / Прошу указать на ошибки
« on: November 19, 2017, 03:43:46 PM »
Здравствуйте, после долгого использования кликера в "авторежиме" решил попробовать написать руками что-то более менее серьезное, оно вроде даже работает, но во 1 первых меня не покидает ощущение быдлокодовского написания, И очень напрягает на 182 строчке выход из цикла с помощью goto.
Прошу указать на слабые места сценария, и можно ли так использовать goto.
[spoiler]
Code: (clickermann) [Select]
LCLICK(242,172) //клик на первую строку
GETSCREEN
WHILE(PXL (26, 176) ! 16711680) // цикл задерживает скрипт пока первая строка не засиниться
WAITMS (100)
GETSCREEN
  END_CYC
GETSCREEN
IF_PICTURE_IN (40,15,102,43, "Режимы.bmp")
   LCLICK($_return1+10, $_return2+10)
   WAITMS(500)
END_IF
WAITMS(500)
LCLICK(227,679)
WAIT(1)
$var=0
WHILE($var=0)
GETSCREEN
if(PXL (417, 176) = 16750899) // цикл задерживает скрипт пока первая строка не засиниться
$var=1
WAITMS (100)
RDOWN(417,176)
WAITMS (100)
RUP(417,176)
WAITMS (100
LCLICK(492,212)
GETSCREEN
WHILE(PXL (25, 365) ! 0) // цикл задерживает скрипт пока не появится заданный цвет
  WAITMS (100)
GETSCREEN
END_CYC
WAITMS (100)
END_IF
if(PXL (417, 176) ! 16750899) // если цвет =черный
$var=2
WAITMS (100)
GETSCREEN
IF_PICTURE_IN (40,15,102,43, "Режимы.bmp")
    LCLICK($_return1+10, $_return2+10)
    WAITMS(500)
LCLICK(96,54)
  END_IF
 END_IF
END_CYC
LCLICK(59,555) //нажатие кнопки добавить
WAITMS (100)
$zag=0 
WHILE($zag=0) //цикл ожидания появления окна
WAITMS(300)
$zag=WNDFIND("Виды мероприятий", 0) //вписать нужный заголовок окна
END_CYC
WNDPOS($zag,0,0)//поместит найденное окно в координаты 0,0
Wait(1)//чтобы окно успело переместиться. И как обычно клики))
  LDOWN(481,66)
WAITMS (100)
LUP(481,66)
WAITMS(100)
LCLICK(326,96) //выбор мероприятия
WAITMS(100)
LCLICK(350,273)// нажатие кнопи ок
 WAITMS(500)
GETSCREEN
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (160,26,200,66, "бинокл.bmp", 50)
      $check = 1
      LCLICK($_return1+10, $_return2+10)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC
GETSCREEN
WHILE(PXL (613, 414) ! 14811135) // цикл задерживает скрипт пока первая строка не засиниться
WAITMS (100)
GETSCREEN
   END_CYC
WAITMS (100)   
RDOWN(449,251)
WAITMS (100)
RUP(449,251)
WAITMS (100)
LCLICK(449,270)
WAITMS (100)
KEYPRESS(#F5)
GETSCREEN
WHILE(PXL (366, 402) ! 16777215) // цикл задерживает скрипт пока первая строка не засиниться
WAITMS (100)
GETSCREEN
   END_CYC
KEYPRESS(#SPACE)
GETSCREEN
IF_PICTURE_IN (59,29,105,60, "бинокл зел.bmp",50) // нажатие зеленого бинокля
   LCLICK($_return1+10, $_return2+10)
   WAITMS(500)
 END_IF 
GETSCREEN
WHILE(PXL (292, 367) ! 0) // цикл задерживает скрипт пока не появится заданный цвет спорно проверить
 WAITMS (100)
GETSCREEN
END_CYC
GETSCREEN
IF_PICTURE_IN (361,40,534,78, "дискета.bmp",50) // нажатие дискеты
   LCLICK($_return1+10, $_return2+10)
   WAITMS(500)
 END_IF
 GETSCREEN
WHILE(PXL (392, 58) ! 8388608) // цикл задерживает скрипт пока не пропадет дискета
WAITMS (100)
GETSCREEN
   END_CYC
   GETSCREEN
IF_PICTURE_IN (150,37,264,75, "закрыть.bmp",50) // нажатие закрыть
   LCLICK($_return1+10, $_return2+10)
   WAITMS(500)
 END_IF
 
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (40,15,102,43, "Режимы.bmp", 50)
      $check = 1
      LCLICK($_return1+10, $_return2+10)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC
  WAITMS(100)
LCLICK(142,393)
1:
WAITMS(100)
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (11,149,487,447, "проверки.bmp", 50)
      $check = 1
      rCLICK($_return1+10, $_return2+10)
      WAITMS(100)
      LCLICK($_return1+98, $_return2+36
  END_IF
   IF_PICTURE_IN (11,149,487,447, "проверки2.bmp", 50)        $check = 2
rCLICK($_return1+10, $_return2+10)
      WAITMS(100)
      LCLICK($_return1+98, $_return2+36
      END_IF
      END_CYC
WAITMS(50)
$zag=0
WHILE($zag=0) //цикл ожидания появления окна
WAITMS(300)
$zag=WNDFIND("Сообщение", 0) //вписать нужный заголовок окна
END_CYC
WNDPOS($zag,0,0)//поместит найденное окно в координаты 0,0
Wait(1)//чтобы окно успело переместиться. И как обычно клики))
GETSCREEN
 LCLICK(29,323) // тут задаеться клик на галку
WHILE(PXL (29, 323) ! 0) // цикл задерживает скрипт пока первая строка не засиниться
WAITMS (100)
GETSCREEN
   END_CYC
LCLICK(168,389)
 WAITMS(100)
TOCLIP(TFREAD("текст.txt", 1))  //читаем файл с текстом письма
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS(100)
LCLICK(789,568)
WAITMS(100)
$var=0
WHILE($var=0)
WAITMS(150)
GETSCREEN
if(PXL (666, 438) = 723875) // цикл задерживает скрипт если ошибка и возврашает к метке
$var=1
WAITMS (100)
LCLICK(933,508)
GOTO(1)   // спорно будет ли работать?, и можно ли так действовать?
WAITMS (100)
END_IF
GETSCREEN
if(PXL (609,439) = 11353883) // проверяет на успешное сохранение текста
$var=2
WAITMS (100)
LCLICK(1000,505)
GETSCREEN
  END_IF
END_CYC
   GETSCREEN
IF_PICTURE_IN (150,37,264,75, "закрыть.bmp",50) // нажатие кнопки закрыть
    LCLICK($_return1+10, $_return2+10)
   WAITMS(500)
END_IF
 WAIT(2)
    GETSCREEN
IF_PICTURE_IN (150,37,264,75, "закрыть.bmp",50) // нажатие кнопки закрыть
   LCLICK($_return1+10, $_return2+10)
   WAITMS(500)
 END_IF
  GETSCREEN
WHILE(PXL (26, 176) ! 16711680) // цикл задерживает скрипт пока первая строка не засиниться
WAITMS (100)
GETSCREEN
END_CYC
KEYPRESS(#SPACE)
LDOWN(100,112)
WAITMS(100)
LUP(100,112)
WAITMS(100)
LCLICK(122,133)
WAITMS(100)
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (278,128,407,155, "рег.bmp", 100)
      $check = 1
      rCLICK($_return1+10, $_return2+10)
      WAITMS(100)
      LCLICK($_return1+83, $_return2+200
     END_IF
   END_CYC
   GETSCREEN
WAITMS(100)
LCLICK(471,339)
TFCLEAR("недодел.txt", 0)
WAITMS(100)
TFWRITE("недодел.txt", FROMCLIP())
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (253,99,295,118, "бинокл.bmp", 50)
      $check = 1
      LCLICK($_return1+10, $_return2+10)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC
GETSCREEN
WHILE(PXL (559, 236) ! 14811135) // цикл задерживает скрипт пока первая строка не засиниться
WAITMS (100)
GETSCREEN
   END_CYC
RCLICK(508,355)
WAITMS (100)
GETSCREEN
WHILE(PXL (508, 357) ! 65280) // цикл задерживает скрипт пока не появиться зеленное поле
WAITMS (100)
GETSCREEN
   END_CYC   
 RCLICK(508,355)
 WAITMS (100)
LCLICK(590,499)
WAITMS (100)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
KEYPRESS(#ENTER)
KEYPRESS(#F5)
   
[/spoiler]

3
Спасибо. А то я сам как только не извращался. Пытался цикл if сделать с
 2 вложенными while.

4
Здравствуйте, в попытке автоматизировать деятельность столкнулся с ситуаций: в процессе выполнения последовательности действий может появиться 2 вида диалоговых окон.
В случае с 1 окном я использовал WHILE с PXL и ожидания совпадения цвета с заданным, пикселем в определённой координате.
Но с двумя окнами не знаю, как подступиться окна не совпадают по размеру и появляться не через определённое время.
То есть скрипт должен анализировать одновременно 2 координаты на совпадения цвета(разного) и смотря какой и когда совпадет продолжать скрипт по разным вариантам.
Напрашивается цикл, но чет не могу его сформулировать.

Pages: [1]