Author Topic: Как выполнять 2 условия не зависимо друг от друга.  (Read 5305 times)

0 Members and 1 Guest are viewing this topic.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Не мусори в коде!
Оставленная косая черта
Code: (clickermann) [Select]
$time = $_time_t + 1200                          /привела к вот такому результату
Значение переменной $time
Code: [Select]
16:32:44 1522168364+1200/
Условия стоит писать таким образом
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(1077,243, 1543,280, 48618)   //Это поиск сундука. Первые 2 числа, это x1y1, вторые - x2y2. Рисует прямоугольник и там ищет цвета(которые идут дальше))
   $x1 = $_return1
   $y1 = $_return2
   $c1 = PXL($x1, $y1)
   LCLICK($x1, $y1)
   WAITMS(300)
   
   IF_PIXEL_IN(1240,490, 1384,562, 16760320)           //это проверка, когда выскакивает окошко вы хотите посмотреть видео. и цвет поиска прям в серединке типо.
      LCLICK($_return1, $_return2)
      LOGWRITE("Координаты:", $x1, "," $y1, " Цвет = ", $c1)
      WAIT(1)
      LCLICK(1307, 535)                                   //хз куда наживает, но по логике туда, где до этого нажимает пред. строчка)
      WAIT(40)
      LCLICK(1531,68)
      //жмёт на крестик. закрывает рекламу.
      WAIT(2)
      LCLICK(1312,584)               //собирает награду.
      WAIT(1)
      LCLICK(1331,341)
      WAIT(1)
      LCLICK(1331,341)                //жмёт в поле, что бы убрать окно, если выскачит, но это наверное не важно, это предыдущие ошибки.
      WAIT(1)
   END_IF
ELSE
   WAITMS(50)
END_IF

DEFINE($time, $_time_t + 1200)
IF($time < $_time_t)
   WAIT(5)
   LCLICK(1261,988)  // 10914
   WAIT(1)
   LCLICK(1399,990)  // 410316
   WAITms(300)
   LCLICK(1485,466)  // 3492740
   WAIT(40)
   LCLICK(1531,68)
   WAIT(2)
   LCLICK(1312,584)
   WAIT(1)
   LCLICK(1331,341)
   WAIT(1)
   LCLICK(1331,341)
   WAIT(1)
   
   $time = $_time_t + 1200
   
END_IF

//LCLICK(1073,11)  // 2104092
« Last Edit: March 27, 2018, 03:33:58 PM by Oraven »

doushy

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Oraven, спасибо

а ещё, это так делается, что два временных условия выполнялись не зависимо друг от друга ?!
или по другому ?!...по мочему то есть задержка, то есть нет такого что первое, первое второе, первое, первое второе...оно как то странно это делает....

Code: (clickermann) [Select]
IF($time_1 < $_time_t)
   LCLICK(413,757) 
   $time_1 = $_time_t + 5
END_IF

IF($time_2 < $_time_t)
   LCLICK(417,838) 
   $time_2 = $_time_t + 10
END_IF
« Last Edit: March 27, 2018, 11:17:32 PM by doushy »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
по мочему то есть задержка, то есть нет такого что первое, первое второе, первое, первое второе...оно как то странно это делает....

Ничего странного, выполняется ровно то, что написано.
Если другого кода нет, то можно писать прямо
[spoiler]
Code: (clickermann) [Select]
LCLICK(413,757) // первое
WAIT(5)
LCLICK(413,757) // первое
LCLICK(417,838) // второе
WAIT(5)
[/spoiler]

А почему сейчас не первое, первое второе... На самом деле точность у тебя до секунды, это низкая точность для коротких интервалов. Переменная $_time_t дискретная, меняет значение раз в секунду. Нужно переходить на миллисекунды $_ms.

Вот возьмём такой простой короткий код:
Code: (clickermann) [Select]
IF($time_1 < $_time_t)
   LCLICK(413,757) 
   $time_1 = $_time_t + 5
END_IF
Через сколько времени от первого произойдёт второй клик? Через 5 секунд (5000 ms)? Неа. А через сколько?
На самом деле в таком написании примерно... от 5000 до 5999 ms. Когда прибавлял 5 к $_time_t, $_time_t могла стать такой какая она есть и 0 ms назад и 999. Соответственно и следующее переключение будет или через 1000 или через 1 ms.

Так же, само выполнение кода требует времени, это нужно учитывать. К примеру, у LCLICK добавлена задержка по умолчанию в 30 мс (в настройках программы можно убрать). И остальной код не мгновенный. Даже при переходе на $_ms реальный интервал временами будет увеличиваться на эту величину, ведь условий то два. Но это будет очень редко и всего на ~30-40 ms. Обычно это не критично для большинства задач.

Code: (clickermann) [Select]
DEFINE($time_2, $_ms + 4000)

IF($time_1 < $_ms)
    LOGWRITE("Клик 1")
    WAITMS(30)
    $time_1 = $_ms + 2000
END_IF

IF($time_2 < $_ms)
    LOGWRITE("Клик 2")
    WAITMS(30)
    $time_2 = $_ms + 4000
END_IF
WAITMS(5) // если есть ещё код с задержками, то эта строка не обязательна.

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