Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » ВКонтакте: Рыбное Место, бот abyrvalg от karcun (vk.com/karcun)

Ответить
Настройки темы
ВКонтакте: Рыбное Место, бот abyrvalg от karcun (vk.com/karcun)

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: karcun
Дата: 09-09-2011
Описание: правка комментариев
Исходник для autoit-бота, рыбачащего на автомате круглосуточно )))
У меня пашет уже 6 суток.
Думаю, не за горами и бан )))

Да и abr c ним, не велика потеря
Перед использованием бота нужно слегка доработать напильником.
Это не страшно, ниже прилагаю пошаговую инструкцию.

Итак, начнем:

Копируем размещенный ниже код в "SciTE Script Editor", он идет в поставке с autoit

1) Строки 5 и 6.
Тут нужно вписать заголовок окна Вашего браузера с активной вкладкой игры.
Открываем браузер, открываем страницу с игрой и смотрим на заголовок окна.
Это и есть нужная нам строка

2) Строка 7:
Тут бот тыкает в любое свободное место на странице, чтобы сфокусироваться на ней.
Открываем "AutoIt Window Info", хватаем прицел и смотрим на координаты.
Для упрощения прицеливания идем в меню Options->Magnify
Заменяем то, что есть на то, что надо.

3) Строка 11:
Тут бот тыкает уже в окно приложения.
Ничего сложного, просто бот тыкает в любую точку приложения, главное что бы там кнопок не оказалось.
(см. шаг 2)

4) Строка 29 (
PHP код: Выделить весь код

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.
PHP код: Выделить весь код

$coord PixelSearch(6244806805600xFF8000

Эта строка ищет в прямоугольнике х0, у0, х1, у1 цвет FFFFFF
Этот цвет следует искать на поверхности поплавка с помощью скриншотов и "AutoIt Window Info".

7) Строки 94, 95 и 101
Тут опять используем "AutoIt Window Info"
PHP код: Выделить весь код

$str 496 140 


позиция шкалы по оси Х, где начинаем тянуть
PHP код: Выделить весь код

$end 883 140 


позиция шкалы по оси Х, где заканчиваем тянуть
PHP код: Выделить весь код

$lvl 738 


позиция шкалы по оси У

8) Строка 116
PHP код: Выделить весь код

While Hex(PixelGetColor(891,533), 6) = "563A12" 


См. шаг 4

Код бота:
PHP код: Выделить весь код

$exit 0
$refresh 
0
;Главный цикл программы
While $exit <> 1
    WinActive
("Рыбное место - ловим рыбу с друзьями!");Заголовок окна
    WinActivate
("Рыбное место - ловим рыбу с друзьями!");Заголовок окна
    MouseClick
("left"1070) ;Сфокусировались на странице
    Sleep
(200)
    
Send("{Home}");Передвинули страницу на самый верх
    Sleep
(200)
    
MouseClick("left"451273);Сфокусировались на приложении
    
;Закрыли все оповещалки
    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"7040)
        ;
Ждем загрузки приложения
        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(6244806805600xFF8000)
        If 
Not @error Then
            $bite1 
True
        
EndIf
        
$coord PixelSearch(6244806805600xD50202)
        If 
Not @error Then
            $bite2 
True
        
EndIf
        
$coord PixelSearch(6244806805600xFF9F00)
        If 
Not @error Then
            $bite3 
True
        
EndIf
        
$coord PixelSearch(6244806805600xD0661E)
        If 
Not @error Then
            $bite4 
True
        
EndIf
        
$coord PixelSearch(6244806805600xFFCC00)
        If 
Not @error Then
            $bite4 
True
        
EndIf
        
$coord PixelSearch(6244806805600xBF9900)
        If 
Not @error Then
            $bite4 
True
        
EndIf
        
$coord PixelSearch(6244806805600xFF0000)
        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;отпускаемтащим
    
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 кг.

Бот лишь рыбачит за Вас, имитируя Ваши действия.
То бишь, его нужно периодически выключать и качать персонажа руками: оснащать персонажа снастями, следить что бы наживка не закончилась.

Отправлено: 16:10, 09-09-2011

 

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


да, надо добавить, данный бот при правильной настройке прекрасно работает со всеми удочками и спинингами на любой локации )))
нужно лишь чутка повозиться с поплавками.
мне лень и на поплавок я уже не ловлю.
если не лень вам, то можно поиграться с разными удочками, подобрать необходимые цвета.
если попрет и будут отзывы, выложу на гуглкоде

Отправлено: 18:13, 09-09-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Исправил нелепые ошибки
и добавил управление с клавиатуры.

Pause/Break - ставим бота на паузу что бы сделать скриншот
Поставить бота на паузу можно в любое время, пауза срабатывает когда показывается окошко с уловом, через 3 секунды оно исчезнет если на паузу не поставить и бот снова забросит удочку.

F10 - выключить бота.
PHP код: Выделить весь код

SoundPlay(EnvGet("WINDIR") & "\Media\Windows Notify.wav"0)
$exit 0
$refresh 
0
$pause 
0
HotKeySet
("{Pause}""TogglePause")
HotKeySet("{F10}""Quit")
Func Quit()
    
SoundPlay(EnvGet("WINDIR") & "\Media\Windows Hardware Remove.wav"0)
    
MsgBox(0"Bye!!!""See you later )))"1)
    Exit
EndFunc
Func TogglePause
()
    If 
$pause 0 Then
        $pause 
1
        SoundPlay
(EnvGet("WINDIR") & "\Media\Speech On.wav"0)
        
MsgBox(0"Pause""Paused"1)
    Else
        
$pause 0
        SoundPlay
(EnvGet("WINDIR") & "\Media\Speech Off.wav"0)
        
MsgBox(0"Pause""Continue"1)
    EndIf
EndFunc
;Главный цикл программы
WHILE $exit <> 1
    WinActive
("Рыбное место - ловим рыбу с друзьями!");Заголовок окна
    WinActivate
("Рыбное место - ловим рыбу с друзьями!");Заголовок окна
    MouseClick
("left"1070) ;Сфокусировались на странице
    SLEEP
(200)
    
Send("{Home}");Передвинули страницу на самый верх
    SLEEP
(200)
    
MouseClick("left"451273);Сфокусировались на приложении
    
;Закрыли все оповещалки
    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"7040)
            ;
Ждем загрузки приложения
            SLEEP
(20000)
            ;
Перезапуск главного цикла
            ContinueLoop
    
EndIf
    
$refresh 0
    
;Ждем поклевку
    $bite 
0;
    WHILE 
$bite=0
            $bite1 
False
            $bite2 
False
            $bite3 
False
            $bite4 
False
            $bite5 
False
            $bite6 
False
            $bite7 
False
            
;Если удочкато смотрим на поплавок
            
;При необходимости добавляем цвета на поверхности поплавка
                                
;координаты прямоугольникав котором ищем поплавок и цветкоторый ищем
            $coord 
PixelSearch(6244806805600xFF8000)
            IF 
NOT @ERROR THEN
                    $bite1 
True
            
EndIf
            
$coord PixelSearch(6244806805600xD50202)
            IF 
NOT @ERROR THEN
                    $bite2 
True
            
EndIf
            
$coord PixelSearch(6244806805600xFF9F00)
            IF 
NOT @ERROR THEN
                    $bite3 
True
            
EndIf
            
$coord PixelSearch(6244806805600xD0661E)
            IF 
NOT @ERROR THEN
                    $bite4 
True
            
EndIf
            
$coord PixelSearch(6244806805600xFFCC00)
            IF 
NOT @ERROR THEN
                    $bite5 
True
            
EndIf
            
$coord PixelSearch(6244806805600xBF9900)
            IF 
NOT @ERROR THEN
                    $bite6 
True
            
EndIf
            
$coord PixelSearch(6244806805600xFF0000)
            IF 
NOT @ERROR THEN
                    $bite7 
True
            
EndIf
            IF 
$bite1 OR $bite2 OR $bite3 OR $bite4 OR $bite5 OR $bite6 OR $bite7 THEN
                    
;нет поклевкипоплавок найден
                    $bite 
0
            
ELSE
                    ;
поклевка
                    $bite 
1  
            
EndIf
            
SLEEP(25)
    
WEND
    
    
;Когда поплавок ушел под воду при поклевке
    
;или рыбачим на спининг (поплавка нет вовсе)
    ;
запоминаем цвет под шкалой (закрашено шкалой или нет)
    
    
$str 496 140;позиция шкалы по оси Хгде начинаем тянуть
    $end 
883 140;позиция шкалы по оси Xгде заканчиваем тянуть

    
;первое слагаемое координата края шкалы
    
;второе отступ от края
    
;по идеечем мощнее тачкатем меньше можно делать отступ

    $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;отпускаемтащим
    
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)
    While 
$pause 1
        Sleep
(3000)
    
WEnd
WEND 


Последний раз редактировалось karcun, 10-09-2011 в 01:17.


Отправлено: 00:57, 10-09-2011 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » ВКонтакте: Рыбное Место, бот abyrvalg от karcun (vk.com/karcun)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Бот для R2 4ek1st AutoIt 0 19-08-2011 14:18
.NET - [решено] C# и XMPP-бот. Chilli Программирование и базы данных 4 11-07-2011 18:36
Вирус в DSL модеме или модем как DDoS бот ? Dump Лечение систем от вредоносных программ 3 11-12-2009 06:45
IRC бот для анекдотов. SkyMAN91 Программное обеспечение Windows 0 09-11-2007 00:03
Бот на форуме? Millenium Вебмастеру 7 13-02-2005 19:29




 
Переход