Задача бота: Уничтожение монстров. Сбор выпавшего с них лута.
Алгоритм работы:
1. Каст заклинания которое поражает цели на небольшом отдалении от персонажа.
2. Сбор выпавшего с них лута.
3. Регенерация манны
На каждое из выше описанных действий в игре существует определенный HotKey. Было решено создать программу которая бы поочередно имитировала нажатие этих клавиш, тем самым производя все эти действия.
Далее код. Он подробно комментирован. Думаю у новичков вопросов не возникнет.
За интерфейс спасибо создателям KODA
На самом деле я ничего нового не изобрел. Такие боты распространены в Пиратии Онлайн. Просто хотелось создать своего собственного. И может быть развить его в нечто больше и более удобно.
В данный момент озадачился возможностью посылки все этих же HotKey в свернутое окно Пиратии Онлайн. Пробую через ControlSend… Но что то не выходит с неактивным окном. А то так бы занимался своими делами, а «бот» тем временем добывал бы мне игровые богатства!
Жду каментов и исправлений. И по возможности подсказок :whistle: .
так же знаю что лучше использовать ControlSend для подобных дияний, но пока не разберусь как посылать HotKey в неактивное окно с этим можно подождать.
Модеру: моя первая тема на этом форуме, если что не так. Скинь в личку я поправлю.
Скриншот экрана бота:
Алгоритм работы:
1. Каст заклинания которое поражает цели на небольшом отдалении от персонажа.
2. Сбор выпавшего с них лута.
3. Регенерация манны
На каждое из выше описанных действий в игре существует определенный HotKey. Было решено создать программу которая бы поочередно имитировала нажатие этих клавиш, тем самым производя все эти действия.
Далее код. Он подробно комментирован. Думаю у новичков вопросов не возникнет.
За интерфейс спасибо создателям KODA
Код:
#cs
* мой первый "БОТ"
#ce
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
HotKeySet('{F9}', 'StartBot')
HotKeySet('{F10}', 'PauseBot')
; начало описаня GUI
$fmMain = GUICreate("Пиратия 2 - Бот", 349, 235, -1, -1)
$Label1 = GUICtrlCreateLabel("Время респа монстра (сек):", 16, 24, 146, 17)
$edRespTime = GUICtrlCreateInput("30", 160, 17, 121, 21)
$Edit1 = GUICtrlCreateEdit("", 16, 48, 321, 177)
GUICtrlSetData(-1, StringFormat("Простой бот для игры Пиратия онлайн.\r\nПараметром время респа вы можете\r\nрегулировать время до перерождения монстров\r\nвокруг вас.\r\nДля запуска бота нажмите "&Chr(34)&"F9"&Chr(34)&".\r\nДля приостановки нажмите "&Chr(34)&"F10"&Chr(34)&".\r\nСкил для убийства монстров поместите на клавишу "&Chr(34)&"F8"&Chr(34)&"\r\nв самой игре.\r\nВНИМАНИЕ!!! Игра уже должна быть запущена, \r\nи до места дислокации монстров вам прийдеться\r\nдобираться самостоятельно!"))
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetCursor (-1, 4)
GUISetState(@SW_SHOW)
; конец описаня GUI
; вызов бесконечного цикла для ожидания команд пользователя
PauseBot()
; запуск бота
Func StartBot()
Local $edText ; время респа
$edText = GUICtrlRead($edRespTime) ; считываем время респа
$edText = $edText * 1000 ; множим на 1000 что бы перевести в милисекунды или как их там...
While 1
Send('{INS}') ;встать
Sleep(500) ;тупим пол секунды, даем перму оторвать жопу от земли
Send('{F8}') ;кастануть
Sleep(2000) ;подождать прежде чем собрать все что нападало
Send('^A') ;собрать все что выпало
Sleep(500) ;тупануть еще пол секунды
Send('{INS}') ;сесть
Sleep($edText) ;ждать респа
WEnd
EndFunc
; приостановка бота
Func PauseBot() ; переводим бота в режим ожидания
Local $Char
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
EndFunc
На самом деле я ничего нового не изобрел. Такие боты распространены в Пиратии Онлайн. Просто хотелось создать своего собственного. И может быть развить его в нечто больше и более удобно.
В данный момент озадачился возможностью посылки все этих же HotKey в свернутое окно Пиратии Онлайн. Пробую через ControlSend… Но что то не выходит с неактивным окном. А то так бы занимался своими делами, а «бот» тем временем добывал бы мне игровые богатства!
Жду каментов и исправлений. И по возможности подсказок :whistle: .
так же знаю что лучше использовать ControlSend для подобных дияний, но пока не разберусь как посылать HotKey в неактивное окно с этим можно подождать.
Модеру: моя первая тема на этом форуме, если что не так. Скинь в личку я поправлю.
Скриншот экрана бота: