karcun
09-09-2011, 16:10
Исходник для autoit-бота, рыбачащего на автомате круглосуточно )))
У меня пашет уже 6 суток.
Думаю, не за горами и бан )))
Да и abr c ним, не велика потеря
Перед использованием бота нужно слегка доработать напильником.
Это не страшно, ниже прилагаю пошаговую инструкцию.
Итак, начнем:
Копируем размещенный ниже код в "SciTE Script Editor", он идет в поставке с autoit
1) Строки 5 и 6.
Тут нужно вписать заголовок окна Вашего браузера с активной вкладкой игры.
Открываем браузер, открываем страницу с игрой и смотрим на заголовок окна.
Это и есть нужная нам строка
2) Строка 7:
Тут бот тыкает в любое свободное место на странице, чтобы сфокусироваться на ней.
Открываем "AutoIt Window Info", хватаем прицел и смотрим на координаты.
Для упрощения прицеливания идем в меню Options->Magnify
Заменяем то, что есть на то, что надо.
3) Строка 11:
Тут бот тыкает уже в окно приложения.
Ничего сложного, просто бот тыкает в любую точку приложения, главное что бы там кнопок не оказалось.
(см. шаг 2)
4) Строка 29 (If Hex(PixelGetColor(891,533), 6) <> "563A12" Then):
Проверяем на месте ли кнопка "Забросить удочку".
Берем "AutoIt Window Info" и замеряем точку, располагающуюся на верхней кромке кнопки (коричневая обводка)
Результатами заменяем нужное в нашей строке 29
5) Строка 33
Тут указываем координаты кнопки браузера "обновить" или "перезагрузить страницу"
Опять же используем "AutoIt Window Info"
6) Строки 52, 56, 60, 64, 68, 72, 76.
$coord = PixelSearch(624, 480, 680, 560, 0xFF8000)
Эта строка ищет в прямоугольнике х0, у0, х1, у1 цвет FFFFFF
Этот цвет следует искать на поверхности поплавка с помощью скриншотов и "AutoIt Window Info".
7) Строки 94, 95 и 101
Тут опять используем "AutoIt Window Info"
$str = 496 + 140
позиция шкалы по оси Х, где начинаем тянуть
$end = 883 - 140
позиция шкалы по оси Х, где заканчиваем тянуть
$lvl = 738
позиция шкалы по оси У
8) Строка 116
While Hex(PixelGetColor(891,533), 6) = "563A12"
См. шаг 4
Код бота:
$exit = 0
$refresh = 0
;Главный цикл программы
While $exit <> 1
WinActive("Рыбное место - ловим рыбу с друзьями!");Заголовок окна
WinActivate("Рыбное место - ловим рыбу с друзьями!");Заголовок окна
MouseClick("left", 10, 70) ;Сфокусировались на странице
Sleep(200)
Send("{Home}");Передвинули страницу на самый верх
Sleep(200)
MouseClick("left", 451, 273);Сфокусировались на приложении
;Закрыли все оповещалки
Send("{Esc}")
Sleep(200)
Send("{Esc}")
Sleep(200)
Send("{Esc}")
Sleep(200)
;Забросили удочку
Send("{Space}")
Sleep(3000)
;Если не получилось
;Проверка - на обводке кнопки.
;Если кнопка есть, то можно забрасывать
;Так бывает когда закончились снасти
;или если сервер не доступен
If Hex(PixelGetColor(891,533), 6) <> "563A12" Then
;С каждым разом ждем дольше
Sleep($refresh * 20000)
$refresh += 1
MouseClick("left", 70, 40)
;Ждем загрузки приложения
Sleep(20000)
;Перезапуск главного цикла
ContinueLoop
EndIf
$refresh = 0
;Ждем поклевку
$bite = 0;
While $bite=0
$bite1 = False
$bite2 = False
$bite3 = False
$bite4 = False
$bite5 = False
$bite6 = False
;Если удочка, то смотрим на поплавок
;При необходимости добавляем цвета на поверхности поплавка
;координаты прямоугольника, в котором ищем поплавок и цвет, который ищем
$coord = PixelSearch(624, 480, 680, 560, 0xFF8000)
If Not @error Then
$bite1 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xD50202)
If Not @error Then
$bite2 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xFF9F00)
If Not @error Then
$bite3 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xD0661E)
If Not @error Then
$bite4 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xFFCC00)
If Not @error Then
$bite4 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xBF9900)
If Not @error Then
$bite4 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xFF0000)
If Not @error Then
$bite4 = True
EndIf
If $bite1 Or $bite2 Or $bite3 Or $bite4 Or $bite5 Or $bite6 Then
;нет поклевки, поплавок найден
$bite = 0
Else
;поклевка
$bite = 1
EndIf
Sleep(25)
WEnd
;Когда поплавок ушел под воду при поклевке
;или рыбачим на спиннинг (поплавка нет вовсе)
;запоминаем цвет под шкалой (закрашено шкалой или нет)
$str = 496 + 140;позиция шкалы по оси Х, где начинаем тянуть
$end = 883 - 140;позиция шкалы по оси Х, где заканчиваем тянуть
;первое слагаемое - координата края шкалы
;второе - отступ от края
;по идее, чем мощнее тачка, тем меньше можно делать отступ
$lvl = 738;позиция шкалы по оси У
$drag = Hex(PixelGetColor($str, $lvl), 6);запоминаем цвет подложки слева
$drop = Hex(PixelGetColor($end, $lvl), 6);запоминаем цвет подложки справа
;Клюет, вытаскиваем!!!
;настройка ввода с контроллеров
AutoItSetOption("SendKeyDelay", 1)
AutoItSetOption("SendKeyDownDelay", 100)
AutoItSetOption("SendCapslockMode", 1)
;подсекаем
Send("{Space}")
$flag = 1;0 - отпускаем, 1 - тащим
While Hex(PixelGetColor(891,533), 6) = "563A12";пока есть кнопка
If Hex(PixelGetColor($str, $lvl), 6) = $drag Then;шкала ушла левее левой отметки, тащим
$flag = 1
EndIf
If Hex(PixelGetColor($end, $lvl), 6) <> $drop Then;шкала закрасила правую отметку, отпускаем
$flag = 0
EndIf
If $flag = 1 Then
Send("{Space}");тащим
Else
Sleep(25);отпускаем
EndIf
WEnd
;смотрим на улов
;или любуемся надписью "Рыба сорвалась" или что-либо другое
Sleep(3000)
WEnd
Этот бот не "ломает" игру.
Он не сделает из Вас супер пользователя.
Он не позволит Вам на удочке первого уровня вытащить сома весом 250 кг.
Бот лишь рыбачит за Вас, имитируя Ваши действия.
То бишь, его нужно периодически выключать и качать персонажа руками: оснащать персонажа снастями, следить что бы наживка не закончилась.
У меня пашет уже 6 суток.
Думаю, не за горами и бан )))
Да и abr c ним, не велика потеря
Перед использованием бота нужно слегка доработать напильником.
Это не страшно, ниже прилагаю пошаговую инструкцию.
Итак, начнем:
Копируем размещенный ниже код в "SciTE Script Editor", он идет в поставке с autoit
1) Строки 5 и 6.
Тут нужно вписать заголовок окна Вашего браузера с активной вкладкой игры.
Открываем браузер, открываем страницу с игрой и смотрим на заголовок окна.
Это и есть нужная нам строка
2) Строка 7:
Тут бот тыкает в любое свободное место на странице, чтобы сфокусироваться на ней.
Открываем "AutoIt Window Info", хватаем прицел и смотрим на координаты.
Для упрощения прицеливания идем в меню Options->Magnify
Заменяем то, что есть на то, что надо.
3) Строка 11:
Тут бот тыкает уже в окно приложения.
Ничего сложного, просто бот тыкает в любую точку приложения, главное что бы там кнопок не оказалось.
(см. шаг 2)
4) Строка 29 (If Hex(PixelGetColor(891,533), 6) <> "563A12" Then):
Проверяем на месте ли кнопка "Забросить удочку".
Берем "AutoIt Window Info" и замеряем точку, располагающуюся на верхней кромке кнопки (коричневая обводка)
Результатами заменяем нужное в нашей строке 29
5) Строка 33
Тут указываем координаты кнопки браузера "обновить" или "перезагрузить страницу"
Опять же используем "AutoIt Window Info"
6) Строки 52, 56, 60, 64, 68, 72, 76.
$coord = PixelSearch(624, 480, 680, 560, 0xFF8000)
Эта строка ищет в прямоугольнике х0, у0, х1, у1 цвет FFFFFF
Этот цвет следует искать на поверхности поплавка с помощью скриншотов и "AutoIt Window Info".
7) Строки 94, 95 и 101
Тут опять используем "AutoIt Window Info"
$str = 496 + 140
позиция шкалы по оси Х, где начинаем тянуть
$end = 883 - 140
позиция шкалы по оси Х, где заканчиваем тянуть
$lvl = 738
позиция шкалы по оси У
8) Строка 116
While Hex(PixelGetColor(891,533), 6) = "563A12"
См. шаг 4
Код бота:
$exit = 0
$refresh = 0
;Главный цикл программы
While $exit <> 1
WinActive("Рыбное место - ловим рыбу с друзьями!");Заголовок окна
WinActivate("Рыбное место - ловим рыбу с друзьями!");Заголовок окна
MouseClick("left", 10, 70) ;Сфокусировались на странице
Sleep(200)
Send("{Home}");Передвинули страницу на самый верх
Sleep(200)
MouseClick("left", 451, 273);Сфокусировались на приложении
;Закрыли все оповещалки
Send("{Esc}")
Sleep(200)
Send("{Esc}")
Sleep(200)
Send("{Esc}")
Sleep(200)
;Забросили удочку
Send("{Space}")
Sleep(3000)
;Если не получилось
;Проверка - на обводке кнопки.
;Если кнопка есть, то можно забрасывать
;Так бывает когда закончились снасти
;или если сервер не доступен
If Hex(PixelGetColor(891,533), 6) <> "563A12" Then
;С каждым разом ждем дольше
Sleep($refresh * 20000)
$refresh += 1
MouseClick("left", 70, 40)
;Ждем загрузки приложения
Sleep(20000)
;Перезапуск главного цикла
ContinueLoop
EndIf
$refresh = 0
;Ждем поклевку
$bite = 0;
While $bite=0
$bite1 = False
$bite2 = False
$bite3 = False
$bite4 = False
$bite5 = False
$bite6 = False
;Если удочка, то смотрим на поплавок
;При необходимости добавляем цвета на поверхности поплавка
;координаты прямоугольника, в котором ищем поплавок и цвет, который ищем
$coord = PixelSearch(624, 480, 680, 560, 0xFF8000)
If Not @error Then
$bite1 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xD50202)
If Not @error Then
$bite2 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xFF9F00)
If Not @error Then
$bite3 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xD0661E)
If Not @error Then
$bite4 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xFFCC00)
If Not @error Then
$bite4 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xBF9900)
If Not @error Then
$bite4 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xFF0000)
If Not @error Then
$bite4 = True
EndIf
If $bite1 Or $bite2 Or $bite3 Or $bite4 Or $bite5 Or $bite6 Then
;нет поклевки, поплавок найден
$bite = 0
Else
;поклевка
$bite = 1
EndIf
Sleep(25)
WEnd
;Когда поплавок ушел под воду при поклевке
;или рыбачим на спиннинг (поплавка нет вовсе)
;запоминаем цвет под шкалой (закрашено шкалой или нет)
$str = 496 + 140;позиция шкалы по оси Х, где начинаем тянуть
$end = 883 - 140;позиция шкалы по оси Х, где заканчиваем тянуть
;первое слагаемое - координата края шкалы
;второе - отступ от края
;по идее, чем мощнее тачка, тем меньше можно делать отступ
$lvl = 738;позиция шкалы по оси У
$drag = Hex(PixelGetColor($str, $lvl), 6);запоминаем цвет подложки слева
$drop = Hex(PixelGetColor($end, $lvl), 6);запоминаем цвет подложки справа
;Клюет, вытаскиваем!!!
;настройка ввода с контроллеров
AutoItSetOption("SendKeyDelay", 1)
AutoItSetOption("SendKeyDownDelay", 100)
AutoItSetOption("SendCapslockMode", 1)
;подсекаем
Send("{Space}")
$flag = 1;0 - отпускаем, 1 - тащим
While Hex(PixelGetColor(891,533), 6) = "563A12";пока есть кнопка
If Hex(PixelGetColor($str, $lvl), 6) = $drag Then;шкала ушла левее левой отметки, тащим
$flag = 1
EndIf
If Hex(PixelGetColor($end, $lvl), 6) <> $drop Then;шкала закрасила правую отметку, отпускаем
$flag = 0
EndIf
If $flag = 1 Then
Send("{Space}");тащим
Else
Sleep(25);отпускаем
EndIf
WEnd
;смотрим на улов
;или любуемся надписью "Рыба сорвалась" или что-либо другое
Sleep(3000)
WEnd
Этот бот не "ломает" игру.
Он не сделает из Вас супер пользователя.
Он не позволит Вам на удочке первого уровня вытащить сома весом 250 кг.
Бот лишь рыбачит за Вас, имитируя Ваши действия.
То бишь, его нужно периодически выключать и качать персонажа руками: оснащать персонажа снастями, следить что бы наживка не закончилась.