5
« on: February 19, 2015, 11:31:54 PM »
есть игра Легенды Галактики. надо много занудных действий делать каждый день.
в 0-00 по серверу (в 3-0 по Москве) происходит перегрузка сервера и надо сначала выполнять по кругу задания.
Работа скрипта должна начаться в 2-50, чтобы до перегрузки сервера истратить снабжение (ходы).
1. запустить БлюСтакс
2. запустить игру
3. выбор персонажа (есть три аккаунта, надо по очереди зайти ко всем по очереди (сокланы отдали погонять)) (пока не знаю как подступиться)
4. при входе бывает "рекламное окно", бывает получить "приз за вход" (есть призы, которые дают вот таким способом: зашел в игру, через 15 мин загорается ! знак, заходишь туда, берешь приз, запускается таймер для другого, и так время постоянно растет, т.е. типа так 15мин, 30, 1час, 1,5 часа)
5. зайти в Альянс: (это обязательно сделать первым делом, так как после этого убыстряется прокачка персонажей)
внутри вкладки альянс есть еще три вкладки, в которые надо зайти, нажать на кнопки и выйти опять в альянс, зайти во вторую, и так далее. выполняется 1 раз
5.1 внести пожертвования (тут хитрость такая, у разных аккаунтах разные пожертвования, не совсем соображу как это сделать, типа имя А - то жми сюда, если имя Б - то жми туда?
5.2 отправить экспедицию (тут если ты последний в очереди, то будет небольшой ролик, который нельзя пропустить, надо подождать и потом выйти)
5.3 позвать союзников (тут все просто)
6 вход в лабораторию.
внутри тоже не сколько окошек в которые надо зайти
6.1 рулетка (1 раз) (тут просто)
6.2 добыча (3 раза) (на добычу тратится от 40 мин до 1,5 часа) (надо выбрать руду, где больше денег, различаются по цвету)
6.3 грабеж (4 раза) (грабить можно через 5 мин, но своих грабить нельзя, желательно чужой альянс, но тех, кто по зубам (по общей мощности флота) (думаю пока пропустить данный шаг) и при грабеже надо искать более дорогие источники, отличаются по цвету)
6.4 боевая тренировка (1 раз)
WAITMS(500)
LOGWRITE("начало боевой подготовки")
GETSCREEN
COLORMODE(8)
SCREENSHOT
IF_PICTURE_IN (0,0, 1100,600, "textures\batl_tren.bmp", -1, 90)
LOGWRITE("изображение batl_tren найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
LCLICK($_return1+50, $_return2-10)
WAIT(8) // зашли в подготовку
// есть 5 целей, которые надо уничтожить, но вторая цель появляется после уничтожения первой
FOR ($i=0, $i<6)
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\target4.bmp", -1, 85)
LOGWRITE("изображение target найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
LCLICK($_return1-83, $_return2) // нажимает на корабли
WAIT(7) //зашли в Инфо Противника
// надо нажать на кнопку
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\sragenie.bmp", -1, 80)
LOGWRITE("изображение sragenie найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
LCLICK($_return1, $_return2) // нажимает на кнопку сражение
WAIT(10) //зашли в расстановку флота
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\sragenie_2ur.bmp", -1, 90)
LOGWRITE("изображение sragenie_2ur найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
LCLICK($_return1, $_return2) // вступаем в бой
WAIT(50) // идет бой
// должна быть проверка
// если Выграли - идем дальше
// если проиграл - оставновка и выход
// пока без проверки, идем дальше
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\2strelki-2.bmp", -1, 82)
LOGWRITE("изображение 2strelki найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
LCLICK($_return1, $_return2) // вышли из просмотра результатов
// там где 5 целей
WAIT(5)
ELSE
LOGWRITE("изображение 2strelki НЕнайдено")
END_IF
ELSE
LOGWRITE("изображение sragenie_2ur НЕнайдено")
END_IF
ELSE
LOGWRITE("изображение sragenie НЕнайдено")
END_IF
ELSE
LOGWRITE("изображение target НЕнайдено")
$i = 10
END_IF
END_CYC
ELSE
LOGWRITE("изображение batl_tren НЕнайдено")
END_IF
LOGWRITE(" конец боевой подготовки")
WAIT(5)
HALT
7. зарядить Портал
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, 1100,600, "textures\CITADEL-2.bmp", -1, 90)
LOGWRITE("изображение Цитадель найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
$sav_X = $_return1
$sav_Y = $_return2
LCLICK($sav_X+230, $sav_Y-56)
WAIT(3)
LCLICK($sav_X+230, $sav_Y+317)
WAIT(3)
LCLICK($sav_X-142, $sav_Y-93)
WAIT(3)
LCLICK($sav_X+512, $sav_Y+177)
WAIT(3)
LCLICK($sav_X+512, $sav_Y+177)
WAIT(3)
LCLICK($sav_X+177, $sav_Y+350)
WAIT(6)
LCLICK($sav_X+57, $sav_Y+363)
WAIT(3)
LCLICK($sav_X+609, $sav_Y-118) //выход
else
LOGWRITE("изображение Цитадель НЕнайдено")
end_IF
8. получить галактонит (тут росто)
9. зайти в хоз центр (тут просто)
10. зайти на арену
10.1 забрать приз (тут просто)
10.2 кого-то стукнуть (для разных акков по разному, пока не буду делать)
11. собрать деньги в Цитадели (ресурсы восстанавливаются, поэтому лучше заходить через 6-8 часов) (сам сбор сделал, надо сделать чтоб с периодичностью заходил)
12. истратить снабжение (сложная задача, часть сделал, пока не стабильно работает), снабжение копится 20 ходов (это максимум) за 10 часов.
13. бой с Праймусом (большой корабль, БОсс, начинается в 18-00, но надо зайти пораньше, сделать подготовку, бой идет максимум до 18-30).
14. в конце дня еще один блок, это сбор наград, за выполнения заданий
/
sub(sbor_prizov)
/== подпрограмма сбор наград в ежедневнике ==//
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, 1100,600, "textures\NAGRADA-2.bmp", -1, 90)
LOGWRITE("изображение награда найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
LCLICK($_return1+10, $_return2)
WAIT(5)
ELSE
LOGWRITE("изображение награда НЕнайдено")
END_IF
WAIT(1)
FOR ($i=0, $i<7)
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0, 0, 1100, 700, "textures\POLUCHIT-4.bmp", -1, 80)
LOGWRITE("изображение ПОЛУЧИТЬ найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
LCLICK($_return1, $_return2)
WAIT(6)
ELSE
LOGWRITE("изображение ПОЛУЧИТЬ НЕнайдено")
$i = 10
END_IF
END_CYC
end_sub
//сама программа
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, 1100,600, "textures\LISTOK-2.bmp", -1, 90) //
LOGWRITE("изображение Листок найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
LCLICK($_return1+10, $_return2+10)
WAIT(5)
ELSE
LOGWRITE("изображение Листок НЕнайдено")
END_IF
//== попадаем на вкладку Бизнес
sbor_prizov()
//== надо попасть на вкладку ФЛОТ
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\FLOT-2.bmp", -1, 90)
LOGWRITE("изображение ФЛОТ найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
LCLICK($_return1, $_return2)
WAIT(3)
ELSE
LOGWRITE("изображение ФЛОТ НЕнайдено")
END_IF
// попадаем на вкладку ФЛОТ
sbor_prizov()
//== надо попасть на вкладку ОПЫТ
GETSCREEN
COLORMODE(8)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\OPIT-2.bmp", -1, 90)
LOGWRITE("изображение ОПЫТ найдено")
LOGWRITE("x: ", $_return1," y: ", $_return2)
LCLICK($_return1, $_return2)
WAIT(3)
ELSE
LOGWRITE("изображение ОПЫТ НЕнайдено")
END_IF
// попадаем на вкладку ОПЫТ
sbor_prizov()
Вот что хочется от бота. Вынес на обозрения пару блоков, самых больших, остальные меньше.
Так как игра очень "цветная" делаю колормод8. ищу базовую точку, от нее идет отсчет координат, а так же идет поиск кнопок, куда надо нажать. Если надо скрины то завтра могу их приложить, для полного понятия.
Помогите со структурой скрипта, так как по примеру, приведенному Vint я не пойму. Ну и может еще можно оптимизировать и улучшить код.