Author Topic: Помогите пожалуйста с организацией работы скрипта  (Read 1887 times)

0 Members and 1 Guest are viewing this topic.

security

  • Освоившийся
  • **
  • Posts: 68
    • View Profile
Начал писать скрипт для Воинов Спарты для завоевания Греции под работу в среде BlueStacks.

Code: (clickermann) [Select]
#name "main"

// TODO: рассчет координат в зависимости от
// разрешения окна программы для работы со
// всеми размерами окон BlueStacks

// Процедура поиска битмапа
sub(searchBitmap, $bitmap)

// Помещение текущего снимка экрана в буфер
// программы для работы всех графицеских
// функций и процедур
getscreen

// Битмап найден
if_picture_in(0, 0, $_xmax, $_ymax, $bitmap)

print("Найдено: ", $_return1, ",", $_return2)

// Клик ЛКМ
lclick($_return1, $_return2)

// Не найден
else

print("Не удалось найти")

end_if

waitms(3000)

end_sub

$windowname = "BlueStacks App Player"
$hwnd = wndfind($windowname)

// Окно удалось найти
if($hwnd > 0)

// Получаем информацию об окне
wndgetinfo($hwnd, $x, $y, $size_x, $size_y)

// Привязываем окно и работаем теперь только с ним
hset($hwnd, 1)

// Ищем кнопку "Объявить войну"
       searchBitmap("bitmaps/war.bmp")

else

print("Ошибка, BlueStacks не найден")

// Завершаем работу скрипта
halt

end_if

И столкнулся с несколькими вопросами

1) После того как я найду кнопку, каким образом заранее подготовленный сценарий можно запустить?

2) Когда этот сценарий закончится, каким образом можно вернуть на точку начала?

3) Стоит ли разделять это на потоки, и поток поиска уводить в слип пока выполняется основной сценарий?

P.S. Вам будет наверно сложно будет визуально все это представить, если вы не играли в данную игру. Попробую импровизировать.

Как только основой цикл программы, который каждую секунду проверяет появление кнопки объявить войну, запускается заранее записанный сценарий, который подготавливает необходимую армию, и делает разгром, и атаку, после чего первый раунд заканчивается, скрипт уходит в слип минут на 10, а после чего запускается все по новой. Интересует как лучше организовать это все и ответы на вопросы. Заранее буду очень благодарен любой помощи или советам. А если был бы какой-то простенький пример, вообще было бы шикарно)
« Last Edit: June 25, 2015, 04:43:47 PM by security »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Зачем так всё усложнять.
Code: (clickermann) [Select]
#name "main"

$hwnd = wndfind("BlueStacks App Player")
if($hwnd > 0) // Окно удалось найти
   wndgetinfo($hwnd, $x, $y, $size_x, $size_y)
   hset($hwnd, 1)
else
   print("Ошибка, BlueStacks не найден")
   halt
end_if

WHILE(1)
   getscreen
   if_picture_in(0,0, $_xmax, $_ymax, "bitmaps/war.bmp")
      print("Найдено: ", $_return1, ",", $_return2)
      lclick($_return1, $_return2)
      waitms(3000)
      #include "my_script.cms" // или вставляешь сюда весь скрипт, или вызываешь подпрограмму.
      WAIT(600)
   end_if
   waitms(50)
END_CYC

3. Не стоит. Зачем? Потоки созданы для параллельной работы. Где здесь параллельная работа?
Создать потоки, а потом включать их по очереди... синхронизировать... в чём смысл?


security

  • Освоившийся
  • **
  • Posts: 68
    • View Profile
Вот это ответ, так ответ. Спасибо большое за помощь. Все, что мне не хватало я узнал. Буду делать;)