Author Topic: Не могу найти ошибку  (Read 1672 times)

0 Members and 1 Guest are viewing this topic.

Джек Водогрей

  • Освоившийся
  • **
  • Posts: 23
    • View Profile
Не могу найти ошибку
« on: December 30, 2016, 12:02:01 PM »
eda:
GETSCREEN
IF_PIXEL_IN (304,983, 312,1000,16777215)
goto(podobrat)
ELSE
    KEYPRESS(#7)
    WAITMS(3000)
       $S_CORR = 0
    rDown(960,531)
waitms(426 + $S_CORR)
move(917,534)
waitms(2 + $S_CORR)
move(915,534)
waitms(39 + $S_CORR)
move(896,534)
waitms(37 + $S_CORR)
move(890,534)
waitms(40 + $S_CORR)
move(879,533)
waitms(38 + $S_CORR)
move(867,531)
waitms(39 + $S_CORR)
move(855,528)
waitms(38 + $S_CORR)
move(846,525)
waitms(18 + $S_CORR)
move(845,524)
waitms(42 + $S_CORR)
move(844,524)
waitms(8 + $S_CORR)
move(843,524)
waitms(8 + $S_CORR)
move(842,524)
waitms(128 + $S_CORR)
  rUp(842,524)
goto(konec)
END_IF

podobrat:
GETSCREEN
IF_PIXEL_IN (824,893, 839,907,5396050)
    KEYPRESS(#F)
    WAITMS(1500)
goto(podobrat)
ELSE
goto(ribalka)
END_IF

ribalka:
GETSCREEN
IF_PIXEL_IN (960,516, 967,525,12442607,16181981,191743,512767,1086207)
goto(konec)
ELSE
    KEYPRESS(#4)
    WAITMS(3000)
    $S_CORR = 0
    rDown(960,531)
waitms(426 + $S_CORR)
move(917,534)
waitms(2 + $S_CORR)
move(915,534)
waitms(39 + $S_CORR)
move(896,534)
waitms(37 + $S_CORR)
move(890,534)
waitms(40 + $S_CORR)
move(879,533)
waitms(38 + $S_CORR)
move(867,531)
waitms(39 + $S_CORR)
move(855,528)
waitms(38 + $S_CORR)
move(846,525)
waitms(18 + $S_CORR)
move(845,524)
waitms(42 + $S_CORR)
move(844,524)
waitms(8 + $S_CORR)
move(843,524)
waitms(8 + $S_CORR)
move(842,524)
waitms(128 + $S_CORR)
  rUp(842,524)
WAITMS(3000)

goto(konec)
END_IF

konec:
END_IF


Добрый день. Проблема следующая. Все работает, но красный кусок воспроизводится не зависимо от того нашел он пиксель или нет. Как исправить?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Не могу найти ошибку
« Reply #1 on: December 30, 2016, 12:21:53 PM »
Ошибка в лишнем END_IF в конце.

Вот как выглядит этот код логически выстроенным без кучи ненужных ГОТО. Единственное место где они нужны это нажатие F. И то я бы написал цикл WHILE

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN (304,983, 312,1000,16777215)
   
   podobrat:
   GETSCREEN
   IF_PIXEL_IN (824,893, 839,907,5396050)
      KEYPRESS(#F)
      WAITMS(1500)
      goto(podobrat)
   END_IF
   
   GETSCREEN
   IF_PIXEL_IN (960,516, 967,525,12442607,16181981,191743,512767,1086207)
   ELSE
      KEYPRESS(#4)
      WAITMS(3000)
      $S_CORR = 0
      rDown(960,531)
      waitms(426 + $S_CORR)
      move(917,534)
      waitms(2 + $S_CORR)
      move(915,534)
      waitms(39 + $S_CORR)
      move(896,534)
      waitms(37 + $S_CORR)
      move(890,534)
      waitms(40 + $S_CORR)
      move(879,533)
      waitms(38 + $S_CORR)
      move(867,531)
      waitms(39 + $S_CORR)
      move(855,528)
      waitms(38 + $S_CORR)
      move(846,525)
      waitms(18 + $S_CORR)
      move(845,524)
      waitms(42 + $S_CORR)
      move(844,524)
      waitms(8 + $S_CORR)
      move(843,524)
      waitms(8 + $S_CORR)
      move(842,524)
      waitms(128 + $S_CORR)
      rUp(842,524)
      WAITMS(3000)
   END_IF
ELSE
   KEYPRESS(#7)
   WAITMS(3000)
   $S_CORR = 0
   rDown(960,531)
   waitms(426 + $S_CORR)
   move(917,534)
   waitms(2 + $S_CORR)
   move(915,534)
   waitms(39 + $S_CORR)
   move(896,534)
   waitms(37 + $S_CORR)
   move(890,534)
   waitms(40 + $S_CORR)
   move(879,533)
   waitms(38 + $S_CORR)
   move(867,531)
   waitms(39 + $S_CORR)
   move(855,528)
   waitms(38 + $S_CORR)
   move(846,525)
   waitms(18 + $S_CORR)
   move(845,524)
   waitms(42 + $S_CORR)
   move(844,524)
   waitms(8 + $S_CORR)
   move(843,524)
   waitms(8 + $S_CORR)
   move(842,524)
   waitms(128 + $S_CORR)
   rUp(842,524)
   WAITMS(50)
END_IF