Author Topic: Пожалуйста, помогите отловить ошибку. Bluestacks, игра The Battle Cats.  (Read 3826 times)

0 Members and 2 Guests are viewing this topic.

QiUi

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Скрипт для просмотра рекламы в игре ради получения донатной валюты. Вместо выполнения кода выдает "ошибку при вызове функции POP ()"

Скрипт рассчитан на игру в полноэкранном режиме, при разрешении 1920х1080

Code: [Select]
sub(oneone)
WAIT(1)
MOVE(40,1036)
lclick(40,1036)  //Выходит из магазина в игре.

WHILE($time > 5000)
GETSCREEN
IF_PICTURE_IN(733,444,1216,704,"got.bmp")
$time = 0
MOVE(960,600)
lclick(960,600)
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_CYC
// Проверяет наличие диалоговых окошек (иногда игра "затупает" и в магазине на время перестают показываться диалоговые окошки с наградой)

WAIT(1)
MOVE(1555,1036)
lclick(1555,1036)  //Возвращаемся в игровой магазин

SUB(secsec)
WAIT(1)
MOVE(966,244)
lclick(966,244) //Запускаем просмотр рекламы
WAIT(40)

WAIT(1)
MOVE(25,20)
lclick(25,20) //После окончания просмотра рекламы возвращаемся в магазин


//Далее ожидаем окошко с наградой. Выше уже писал об этом. Есть несколько вариантов окошка, или его может не быть. Первый вариант (ngot.bmp) - уведомление, что реклама "закончилась". В этом случае необходимо перезайти в игровой магазин доната. Второй вариант (got.bmp) - есть награда, смотрим рекламу дальше. Третий вариант - отсутствует табличка с рекламой, так же смотрим рекламу. Не полученную награду выдадут позже.
WHILE($time > 5000)
GETSCREEN
IF_PICTURE_IN(733,444,1216,704,"ngot.bmp")
$time = 0
MOVE(960,600)
lclick(960,600)
WAITMS(100)
oneone()
ELSE
GETSCREEN
IF_PICTURE_IN(733,444,1216,704,"got.bmp")
$time = 0
MOVE(960,600)
lclick(960,600)
WAITMS(100)
       
start:
secsec()
GOTO(start)
ELSE
WAITMS(50)
start:
secsec()
GOTO(start)
END_IF
END_IF
END_CYC
END_SUB
end_sub

start:
oneone()
GOTO(start)

QiUi

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Большое спасибо! Да, желательно было б услышать полный перечень моих нубских ошибок :)

И буду их править плодя новые ошиПки и несуразности.

QiUi

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Спасибо за ответ, он меня отправил в нужном направлении.

Оказалось, я излишне усложнил жизнь себе и кликерманну.

В итоге скрипт превратился в:

Code: [Select]
LOGWRITE("start")

oneone:

LOGWRITE("exitshop")

WAIT(2)
lclick(40,1036)  //Выходит из магазина в игре.

LOGWRITE("closewindow")

WAIT(3)
lclick(1030,585) //Закрываем окошко с наградой, если оно есть. Если нет - щелчок "в холостую".

LOGWRITE("goto shop")

WAIT(2)
lclick(1555,1036)  //Возвращаемся в игровой магазин

WAIT(2)
LOGWRITE("startshow")

WAIT(2)
lclick(966,244) //Запускаем просмотр рекламы
WAIT(40)


LOGWRITE("retrun to shop")

lclick(25,20) //После окончания просмотра рекламы возвращаемся в магазин

WAIT(2)

WAIT(1)
LOGWRITE("jdem nagrady")
WAIT(2)
lclick(1030,585) //Закрываем окошко с наградой, если оно есть. Если нет - щелчок "в холостую".

goto(oneone)

Буду рад тапкам и найденным ошибкам.

Спасибо всем заранее!

P.S.: Так много задержек из-за подвисаний игры в Bluestacks (из-за рекламы). Задержки позволяют нивелировать отрицательные моменты.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Исправил твой скрипт до рабочего состояния
Code: (clickermann) [Select]
WAIT(1)
MOVE(40,1036)
lclick(40,1036) //Выходит из магазина в игре.
WAITMS(100)

$time = $_time_t + 5000 // таймер на 5000 секунд
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (733,444,1216,704,"got.bmp", -1, 100)
      $time = 0
      MOVE(960,600)
      lclick(960,600)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC
// Проверяет наличие диалоговых окошек (иногда игра "затупает" и в магазине на время перестают показываться диалоговые окошки с наградой)

WAIT(1)
MOVE(1555,1036)
lclick(1555,1036) //Возвращаемся в игровой магазин

secsec:
WAIT(1)
MOVE(966,244)
lclick(966,244) //Запускаем просмотр рекламы
WAIT(40)

WAIT(1)
MOVE(25,20)
lclick(25,20) //После окончания просмотра рекламы возвращаемся в магазин
WAITMS(100)

$time = $_time_t + 5000 // таймер на 5000 секунд
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (733,444,1216,704,"ngot.bmp", -1, 100)
      $time = 0
      MOVE(960,600)
      lclick(960,600)
      WAITMS(100)
   ELSE
      IF_PICTURE_IN(733,444,1216,704,"got.bmp")
         $time = 1
         MOVE(960,600)
         lclick(960,600)
         WAITMS(100)
      ELSE
         WAITMS(50)
      END_IF
   END_IF
END_CYC
IF($time = 1)
   GOTO(secsec)
END_IF

QiUi

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Огромное спасибо за исправленный скрипт! Учиться мне еще и учиться :)