Author Topic: помощь с goto и возвратом к нему  (Read 3577 times)

0 Members and 1 Guest are viewing this topic.

ofig

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
помощь с goto и возвратом к нему
« on: August 04, 2023, 05:46:14 AM »
делаю бота для игры, часть "А" игрок появляется на 1 из примерно 70 точек, встаёт на позицию и смотрит в сторону где может быть враг, но он может быть и со спины, для чего хочется сделать поочерёдный поворот из стороны в сторону для проверки на наличие врага, но не знаю как сделать что бы при активации одного из тригеров после выполнения части "Б" скрипт возвращался тому GOTO, от которого ушёл

Code: (clickermann) [Select]
// ЧАСТЬ А
$pxl = pxl(111,111)
IF($pxl = 11) //проверка позиции
LOGWRITE("1") // запись в лог какая из частей сработала
   KEYPRESS(#O)
   WAITMS(100)
   MOVER(111,111) // поворот в сторону с которой может выйти враг
   WAIT(1)
   RCLICK($_xmouse,$_ymouse)
   WAIT(1)
   GOTO(trgr)
   // хочу   добавить дополнительный MOVER и GOTO
END_IF
// таких порядка 70

// ЧАСТЬ Б
// проверка на изменение пикселя (тригербот)
IF($affa = 404)
   trgr:
   $s = 0
   GETSCREEN(640,508,644,512)
   $a = pxl(642,511)
   $a2 = colorG($a)
   $a3 = colorB($a)
   2:
// тут в дальнейшем так же добавлю выход из тригербота на случай смерти
   GETSCREEN(640,508,644,512)
   $b = pxl(642,511)
   $b2 = colorG($b)
   $b3 = colorB($b)
   IF( ($a2+20 < $b2) or ($a2-20 > $b2) )
      INC($s , 1)
   END_IF
   IF( ($a3+20 < $b3) or ($a3-20 > $b3) )
      INC($s , 1)
   END_IF
   if($s > 1)
      LCLICK($_xmouse,$_ymouse)
      WAIT(3)
      // кликает и нужно что бы перешёл обратно к части а с дополнительным MOVER и GOTO
   ELSE
      GOTO(2)
      // мотает по кругу пока не будет изменён пиксель
   END_IF
END_if

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: помощь с goto и возвратом к нему
« Reply #1 on: August 04, 2023, 12:40:26 PM »
делаю бота для игры, часть "А" игрок появляется на 1 из примерно 70 точек, встаёт на позицию и смотрит в сторону где может быть враг, но он может быть и со спины, для чего хочется сделать поочерёдный поворот из стороны в сторону для проверки на наличие врага, но не знаю как сделать что бы при активации одного из тригеров после выполнения части "Б" скрипт возвращался тому GOTO, от которого ушёл
Так это не GOTO, тебе подпрограмма нужна.

Code: (clickermann) [Select]
SUB(trgr)  // ЧАСТЬ Б  проверка на изменение пикселя (тригербот)
    $s = 0
    GETSCREEN(640, 508, 644, 512)
    $a = PXL(642, 511)
    $a2 = colorG($a)
    $a3 = colorB($a)
   
    $trigger_loop = 1
    WHILE($trigger_loop = 1)
        // тут в дальнейшем так же добавлю выход из тригербота на случай смерти
        GETSCREEN(640, 508, 644, 512)
        $b = PXL(642, 511)
        $b2 = colorG($b)
        $b3 = colorB($b)
        IF(($a2+20 < $b2) | ($a2-20 > $b2))
            INC($s, 1)
        END_IF
        IF(($a3+20 < $b3) | ($a3-20 > $b3))
            INC($s, 1)
        END_IF
        IF($s > 1)
            LCLICK($_xmouse, $_ymouse)
            WAIT(3)
            $trigger_loop = 0
            // обратно к части а
        ELSE
            WAITMS(50)
        END_IF
    END_CYC
END_SUB

// ЧАСТЬ А
$pxl = pxl(111,111)
IF($pxl = 11) //проверка позиции
    LOGWRITE("1") // запись в лог какая из частей сработала
    KEYPRESS(#O)
    WAITMS(100)
    MOVER(111, 111) // поворот в сторону с которой может выйти враг
    WAIT(1)
    RCLICK($_xmouse, $_ymouse)
    WAIT(1)
    trgr()
    // хочу   добавить дополнительный MOVER и GOTO
END_IF

Выкинул условие IF($affa = 404) т.к. ты через него перепрыгиваешь всё равно, если нужно сам добавь.


kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: помощь с goto и возвратом к нему
« Reply #2 on: August 06, 2023, 10:39:28 AM »
// ЧАСТЬ А
$pxl = pxl(111,111)
IF($pxl = 11) //проверка позиции
11 для цветового канала нормальное значение, а вот для проверяемого цвета необычное.

kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: помощь с goto и возвратом к нему
« Reply #3 on: August 06, 2023, 10:52:49 AM »
Code: (clickermann) [Select]
// ЧАСТЬ А
$pxl = pxl(111,111)
IF($pxl = 11) //проверка позиции
   LOGWRITE("1") // запись в лог какая из частей сработала
   KEYPRESS(#O)
   WAITMS(100)
   MOVER(111, 111) // поворот в сторону с которой может выйти враг
   WAIT(1)
   RCLICK($_xmouse, $_ymouse)
   WAIT(1)
   // ЧАСТЬ Б  проверка на изменение пикселя (тригербот)
   GETSCREEN(640, 508, 644, 512)
   $a2 = colorG(PXL(642, 511))
   $a3 = colorB(PXL(642, 511))
   $trigger_loop = 1
   WHILE($trigger_loop = 1)
      // тут в дальнейшем так же добавлю выход из тригербота на случай смерти
      GETSCREEN(640, 508, 644, 512)
      IF(($a2+20 < colorG(PXL(642, 511))) | ($a2-20 > colorG(PXL(642, 511))))
         IF(($a3+20 < colorB(PXL(642, 511))) | ($a3-20 > colorB(PXL(642, 511))))
            LCLICK($_xmouse,$_ymouse)
            WAIT(3)
            $trigger_loop = 0   // обратно к части а
         END_IF
      END_IF
      WAITMS(50)
   END_CYC
   // хочу   добавить дополнительный MOVER и GOTO
END_IF

kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: помощь с goto и возвратом к нему
« Reply #4 on: August 06, 2023, 11:10:22 AM »
Code: (clickermann) [Select]
// ЧАСТЬ А
$pxl = pxl(111,111)
IF($pxl = 11) //проверка позиции
   LOGWRITE("ЧАСТЬ А") // запись в лог какая из частей сработала
   KEYPRESS(#O)
   WAITMS(100)
   MOVER(111, 111) // поворот в сторону с которой может выйти враг
   WAIT(1)
   RCLICK($_xmouse, $_ymouse)
   WAIT(1)
   // ЧАСТЬ Б  проверка на изменение пикселя (тригербот)
   LOGWRITE("ЧАСТЬ Б")
   GETSCREEN(640, 508, 644, 512)
   $a2 = colorG(PXL(642, 511))
   $a3 = colorB(PXL(642, 511))
   // цикл мотает по кругу пока не будут изменёны одновременно зелёный и синий каналы пикселя
   WHILE(($a2=colorG(PXL(642,511)|($a3=colorB(PXL(642,511))
      // тут в дальнейшем так же добавлю выход из тригербота на случай смерти
      GETSCREEN(640,508,644,512)
      WAITMS(50)
   END_CYC
   LCLICK($_xmouse,$_ymouse)
   WAIT(3) // обратно к части а
   // хочу   добавить дополнительный MOVER и GOTO
END_IF