Author Topic: Подскажите пожалуйста как организовать правильную последовательность?  (Read 1446 times)

0 Members and 1 Guest are viewing this topic.

Qlloudy

  • Освоившийся
  • **
  • Posts: 27
    • View Profile
Нужно реализовать скрипт с последовательным исполнением множества действий.
Суть в том что при написании столкнулся с тем, что если использовать else дважды в двух блоках If подряд, второе else игнорируется, что приводит к неправильным последствиям.
Пример:
Code: (clickermann) [Select]
skip:01
WHEELDOWN
   WAITMS(500)
   WHEELDOWN
   WAITMS(500)
GETSCREEN
IF_PICTURE_IN (464,238,493,337, "1.bmp")
   WAITMS(500)
   LCLICK($_return1-22, $_return2-22)
   WAIT(3)
Else
   GOTO(01)
   WAIT(1)
END_IF
GETSCREEN
IF_PICTURE_IN (401,156,365,249, "2.bmp")
   WAITMS(500)
   LCLICK($_return1-22, $_return2-22)
   WAIT(3)
Else
   GOTO(01)
   WAIT(1)
END_IF
и таких повторений множество. То есть если первый блок с IF выполнен, должен работать следующий, нет возвращаться к началу, если второй выполнен, тоже идет следующий, если нет, то опять к началу, и так множество раз, все блоки разные с разными условиями...
Сильно не смейтесь я нуб в этом деле, буду признателен помощи =)
Если есть желание, нет ничего невозможного -все преграды лишь в нашей голове...

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Code: (clickermann) [Select]
skip01:

WHEELDOWN
WAITMS(500)
WHEELDOWN
WAITMS(500)

GETSCREEN
IF_PICTURE_IN (464,238,493,337, "1.bmp")
   WAITMS(500)
   LCLICK($_return1-22, $_return2-22)
   WAIT(3)
ELSE
   WAIT(1)
   GOTO(skip01)
END_IF

GETSCREEN
IF_PICTURE_IN (401,156,365,249, "2.bmp")
   WAITMS(500)
   LCLICK($_return1-22, $_return2-22)
   WAIT(3)
ELSE
   WAIT(1)
   GOTO(skip01)
END_IF

« Last Edit: March 14, 2019, 06:50:40 AM by Oraven »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Qlloudy

  • Освоившийся
  • **
  • Posts: 27
    • View Profile
Спасибо попробую сейчас. :D
Если есть желание, нет ничего невозможного -все преграды лишь в нашей голове...

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
А подпрограмма это разве не кусок кода, который вставляется на месте вызова? Если это так, то вообще любой переход меткам из условий может дать сбой

« Last Edit: March 13, 2019, 05:42:32 PM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Я чёт об этом не подумал . Память действительно уходит даже если нет параметров вызова в самом скрипте
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Qlloudy

  • Освоившийся
  • **
  • Posts: 27
    • View Profile
Всем спасибо за участие, написал простенький скрипт для сбора телефонов с рубрики авито, работает исправно, если кому надо объясню ;)
вот часть кода самой сборки =)
Code: (clickermann) [Select]
SUB(_SKIP, $num)
   SWITCH($num)
   CASE(01)
      GOTO(skip01)
   CASE(02)
      GOTO(skip02)
   CASE(03)
      GOTO(skip03)
   END_SWITCH   
END_SUB   

$a=0
   while($a=0)
      GETSCREEN
IF_PICTURE_IN (174,557,377,595, "2.bmp")
      waitms(500)
         $a=1
         lclick(250,572)
      else
      _SKIP(01)
      END_IF
      END_CYC
 
skip01:
 
WHEELDOWN
WAITMS(500)
 
GETSCREEN
IF_PICTURE_IN (464,238,493,337, "1.bmp")
   WAITMS(500)
   LCLICK($_return1-22, $_return2-22)
   WAIT(3)
ELSE
WAITMS(50) 
   _SKIP(01)
END_IF
 
GETSCREEN
IF_PICTURE_IN (44,759,498,796, "3.bmp")
   WAITMS(500)
   LCLICK($_return1-2, $_return2-2)
   WAIT(3)
ELSE
LCLICK(56,63)
WAITMS(50)
   _SKIP(01)
END_IF

   LCLICK(260,431)
   WAITMS(500)
   LDOWN(142,460)
   WAITMS(500)
   LUP(245,458)
   WAITMS(500)
   KEYDOWN(#CTRL)
   WAITMS(500)
   KEYDOWN(#c)
   WAITMS(500)
   KEYUP(#CTRL)
   WAITMS(500)
   KEYUP(#c)
   WAITMS(500)
   LCLICK(784,919)
   WAITMS(500)
   KEYDOWN(#CTRL)
   WAITMS(500)
   KEYDOWN(#v)
   WAITMS(500)
   KEYUP(#CTRL)
   WAITMS(500)
   KEYUP(#v)
   WAITMS(500)
   KEYPRESS(#ENTER)
   WAITMS(500)
   LCLICK(55,59)
   WAITMS(2000)
   WAITMS(500)
   LCLICK(503,234)
   WAITMS(500)
   WHEELDOWN
   WAITMS(500)
   WHEELDOWN
   WAITMS(500)
   WAIT(3)
   

Если есть желание, нет ничего невозможного -все преграды лишь в нашей голове...

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Мы вроде бы уже выяснили, что из саба прыгать по меткам нельзя, будет утечка памяти и бог его знает что еще...

Где то я уже это видел :D
Code: (clickermann) [Select]
$a=0
while($a=0) // Зацикливаем поиск картинки
   GETSCREEN
   IF_PICTURE_IN (174,557,377,595, "2.bmp")
      waitms(500)
      $a=1 // Выходим из цикла если нашли картинку
      lclick(250,572)
   else
      _SKIP(01) // Если не нашли всё равно выходим. Для чего здесь цикл?)
   END_IF
END_CYC

skip01:

Вот тоже самое только без цикла и перехода по метке
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (174,557,377,595, "2.bmp", - 1, 100)
   WAITMS(500)
   LCLICK(250,572)
   WHEELDOWN
   WAITMS(500)
END_IF

WHEELDOWN
WAITMS(500)

GETSCREEN
IF_PICTURE_IN(464,238,493,337, "2.bmp", - 1, 100)
   WAITMS(500)
   LCLICK($_return1-22, $_return2-22)
   WAIT(3)
   GETSCREEN
   IF_PICTURE_IN(464,238,493,337, "3.bmp", - 1, 100)
      WAITMS(500)
      LCLICK($_return1-2, $_return2-2)
      WAIT(3)
      LCLICK(260,431)
      WAITMS(500)
      LDOWN(142,460)
      WAITMS(500)
      LUP(245,458)
      WAITMS(500)
      KEYDOWN(#CTRL)
      WAITMS(500)
      KEYDOWN(#c)
      WAITMS(500)
      KEYUP(#CTRL)
      WAITMS(500)
      KEYUP(#c)
      WAITMS(500)
      LCLICK(784,919)
      WAITMS(500)
      KEYDOWN(#CTRL)
      WAITMS(500)
      KEYDOWN(#v)
      WAITMS(500)
      KEYUP(#CTRL)
      WAITMS(500)
      KEYUP(#v)
      WAITMS(500)
      KEYPRESS(#ENTER)
      WAITMS(500)
      LCLICK(55,59)
      WAITMS(2000)
      WAITMS(500)
      LCLICK(503,234)
      WAITMS(500)
      WHEELDOWN
      WAITMS(500)
      WHEELDOWN
      WAITMS(500)
      WAIT(3)
   ELSE
      LCLICK(56,63)
   END_IF
END_IF

WAITMS(50)
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»