Ledary
Новичок
- Сообщения
- 2
- Репутация
- 0
Недавно познакомился с Autoit, прочитал много тем на форуме и решил что пора. ;D
Хочу предоставить вам своего бота хайсечного майнера, сделан был под вентурку, но и подкрутить его под скиф или макинаву будет не сложно.
Основная задача бота, вылететь, накопать, вернуться, сложить.
Варпает он по букам, на данный момент доступна только одна точка для копки (уже утром постараюсь подкрутить ещё десяток)
Очень надеюсь на советы, чего ему не хватает, какие части стоит подкрутить или оптимизировать.
Бот достатчнно туповат, не судите строго, это мой первый бот
Что сейчас он умеет:
* Андок, проверка в космосе ли он
* Варп, в варпе ли он, выход из варпа
* Подлёт к астеру на <10 км, остановка корабля
* Лок, проверка лока
* Выпустить, собрать дронов, проверить
* Начать копку, проверить локал, проверить броню, проверить состояние лока
* Отварп на станцию, проверка варпа, проверка выхода из варпа, проверка дока
* Проверка наличия меню, открыть меню, сбросить руду
Старался комментировать почаще, чтоб клики и другие части были более менее понятны.
Картиночка моего экрана с ботом (Window mode | 1024 x 768)
P.S. Знаю на счёт "а что если нейтрал уже в системе а ты варпанешь, т.к. чекер нейтрала стоит в майнер части", я думаю как это реализовать, добавлять к каждой функции чекер на врага я не хочу, это самый простой выход, но не лучший...
Хочу предоставить вам своего бота хайсечного майнера, сделан был под вентурку, но и подкрутить его под скиф или макинаву будет не сложно.
Основная задача бота, вылететь, накопать, вернуться, сложить.
Варпает он по букам, на данный момент доступна только одна точка для копки (уже утром постараюсь подкрутить ещё десяток)
Очень надеюсь на советы, чего ему не хватает, какие части стоит подкрутить или оптимизировать.
Бот достатчнно туповат, не судите строго, это мой первый бот

Что сейчас он умеет:
* Андок, проверка в космосе ли он
* Варп, в варпе ли он, выход из варпа
* Подлёт к астеру на <10 км, остановка корабля
* Лок, проверка лока
* Выпустить, собрать дронов, проверить
* Начать копку, проверить локал, проверить броню, проверить состояние лока
* Отварп на станцию, проверка варпа, проверка выхода из варпа, проверка дока
* Проверка наличия меню, открыть меню, сбросить руду
Старался комментировать почаще, чтоб клики и другие части были более менее понятны.
Код:
Opt ("MouseClickDelay", 20); мышка
Opt ("SendKeyDownDelay", 100); кнопка
HotKeySet ("{`}","bot_exit");хот на стоп ; возникает проблема, если язык стоит рус, то бот не выключится, даже если язык поменять на нужный.
HotKeySet ("{\}","bot_pause");хот на паузу ; пока думаю как решить эту проблему (сделать на цифру?)
WinMove("EVE", "", 0, 0) ; подвину окошко к левому верх. краю
;---------------основа
while 1
WinActivate("EVE"); - Вывожу окно евы наперёд
WinWaitActive("EVE")
Undock() ; андок, проверка в космосе ли я
Sleep (1000)
WarpToBelt() ; варпа, проверка в варпе ли я, прилетел ли я
sleep(1000)
DropDrones() ; дроп дронов, проверка дроны ли в космосе
Sleep(1000)
Approach() ; апроч, проверка <10 км
Sleep(1000)
Lock() ; лок, проверка залочил ди
Sleep(1000)
Mine() ; копать, пока не сработает Alarm'a
Sleep(1000)
ScopeDrones() ; скопнуть дронов, проверить скопнул ли
Sleep(1000)
WarpToStan() ; варп к станке, проверка варпа, проверка вышел ли из варпа, проверка докнут ли я
Sleep(1000)
OreToStorage() ; проверка открыто ли окно руды, открыть окно с рудой (если не открыто), перекинуть руду, конец цикла
Sleep(1000)
Wend
Func bot_exit() ; выход из скрипта
ToolTip("Отключаю бота..",0,0)
Sleep(300)
Exit
EndFunc
Func bot_pause() ; пауза, украдена у yaodnako :), работает отлично, сам недодумался
$pause=$pause+1
while $pause=1
ToolTip("Пауза...",0,0)
Sleep(200)
WEnd
ToolTip("продолжаем...",0,0)
Sleep(200)
$pause=0
EndFunc
;=================================
Func Undock()
WinActivate("EVE")
WinWaitActive("EVE")
Do
ToolTip("Андокаю",508, 234)
MouseClick("left",997, 150,1,20);щелчок на андок
Sleep(500)
ToolTip ("я на станции",508, 234)
Until CheckSpace()=1
EndFunc
;======================================
;++++++++++ проверка на космос
Func CheckSpace()
WinActivate("EVE")
WinWaitActive("EVE")
PixelSearch(776, 33,776, 33,0xFFFFFF,1);уголок обзорки
if not @error Then
ToolTip ("Андокнут, я в космосе",508, 234)
return 1
Else
return 0
EndIf
EndFunc
Func WarpToBelt()
Do
WinActivate("EVE")
WinWaitActive("EVE")
ToolTip("Варпану на белт",508, 234)
MouseClick("right",112, 230,1,20);пкм на буку в меню бук
MouseClick("left",198, 240,1,20);лкм на варпануть в 0
Sleep(3000)
Until WarpCheck() = 1
Do
ToolTip("Я варпаю",508, 234)
Until EndWarp() = 0
EndFunc
Func WarpCheck() ; проверка варпа
WinActivate("EVE")
WinWaitActive("EVE")
ToolTip("Ищу пиксель",508, 234)
PixelSearch(513, 751, 513, 751,0x19252F,10);в полоске скорости проверка буквы 'i' когда там warping
if Not @error Then
ToolTip("нашел пиксель, я варпаю",508, 234)
Return 1
Else
Return 0
EndIf
EndFunc
Func EndWarp()
WinActivate("EVE")
WinWaitActive("EVE")
PixelSearch(513, 751, 513, 751,0x19252F,10) ;тот же пиксель, жду пока он пропадёт
if Not @error Then
Return 1
Else
Return 0
ToolTip("Я прилетел",508, 234)
MouseClick("left",747, 43,1,20) ;костыль, иногда пиксель не поределяет (определяет долго), сделал чтоб закрывал менюшку с инфо, потом подумаю
EndIf ;что мне делать с ним.....
EndFunc
Func DropDrones()
ToolTip("Дропаю дронов",508, 234)
MouseClick("right",118, 396,1,20) ;пкм на дрон менюшку
MouseClick("left", 186, 404,1,20) ; лкм на лаун дронов
PixelSearch(79, 439,79, 439,0xD0D0D0,20) ; ищу треугольник слева от папки с дронами ('> Боевые (2)')
Sleep(2000)
if Not @error Then
ToolTip("Запустил дронов",508, 234)
Else
ToolTip("Налажал, пробую снова",508, 234) ; тут перепроверка только раз, вроде как хватает, посже посмотрю что сделать ещё
MouseClick("right",115, 396,1,20)
MouseClick("left", 186, 404,1,20)
EndIf
EndFunc
Func Approach()
Do
ToolTip("апроч к астеру",508, 234)
MouseClick("left",819, 239,1,20) ; клик на первый обьект в обзорке (обзорка настроена только на астеры)
MouseClick("left",793, 110,1,20) ; клик на Approach к астеру
Sleep(10000)
Until ApproachCheck() = 0
EndFunc
Func ApproachCheck()
PixelSearch(891, 76,891, 76,0x777777,1) ; проверка верхушки буквы k ("Distance 10 km")
if Not @error then
ToolTip(">10 km",508, 234)
Return 1
Else
MouseClick("left",455, 732,1,20) ; если меньше 10км, то остановить шип (кликает на -) (минус слева от скорости шипа)
ToolTip("Остановил шип",508, 234)
Return 0
EndIf
EndFunc
Func Lock()
Do
ToolTip("Лочу цель",508, 234)
MouseClick("left",890, 107,1,21) ; кликает на кнопку лока
MouseMove(522, 380,10) ; отодвигает мышку чтоб подсвечивать значок лока (там цвет менятся, вызывали уйму проблем)
Sleep(5000) ; возможно это достаточно убогий костыль, но я пока не придумал получше :(
Until LockCheck() =1;
EndFunc
Func LockCheck()
PixelSearch(892, 109,892, 109,0xFD1010,20) ; проверяем красный пиксель в центре значка лока (когда залочен)
if Not @error Then
ToolTip("Залочил цель",508, 234)
Return 1
Else
Return 0
EndIf
EndFunc
Func Mine()
Send("{F1}")
Sleep(Random(500,1000)) ; рандом :)
Send("{F2}") ; запускает копалки, копает пока не звякнит одна из аларм
Do
Sleep(3000)
ToolTip("Копаю...",0, 0)
Until Alarm() = 1;
EndFunc
Func Alarm()
WinWaitActive("EVE")
PixelSearch(128, 685, 128, 685, 0x004D63,10) ; карго фулл, синий пиксель в карго строке
;PixelSearch(55, 685, 55, 685, 0x004D63,10) ; тест карго (пустое карго),
if Not @error Then
ToolTip("Карго фулл",508, 234)
Return 1
EndIf
PixelSearch(557, 678, 557, 678, 0xFF1F1F,10) ; красный пиксель в полоске хп (брони)
if Not @error Then
ToolTip("Просела броня",508, 234)
Return 1
EndIf
PixelSearch(892, 109,892, 109,0xFD1010,20) ; слетел лок, использую как ультимативное средство (сьел астер, заджамили, убили)
if @error then
ToolTip("Слетел лок",508, 234)
Return 1
EndIf
PixelSearch(574, 80, 574, 577,0x910202,10) ; враг в столбике локала (проискиваю красный пиксель в окне локала) (столб в 1 пиксель)
if Not @error Then
ToolTip("Враг обнаружен!!!", 508,234)
Return 1
EndIf
EndFunc
Func ScopeDrones()
Do
MouseClick("right",122, 439,1,20) ; пкм клик на папку с дроами
MouseClick("left",172, 483,1,20) ; отправить в дрон бей
Sleep(3000)
ToolTip("Скупаю дронов", 508, 234)
Until ScopeCheck() = 1
EndFunc
Func ScopeCheck()
PixelSearch(79, 397,79, 397,0xD0D0D0,20) ; берём пиксель с треугольника слева от папки с дронами
if Not @error Then
ToolTip("Скупнул...", 508, 234)
Return 1
Else
Return 0
EndIf
EndFunc
Func WarpToStan()
Do
WinActivate("EVE")
WinWaitActive("EVE")
ToolTip("Варпану на станку",508, 234)
Send("{F1}") ; отключает копалки
Send("{F2}")
MouseClick("right",146, 209,1,20);пкм в меню бук
MouseClick("left",180, 249,1,20);докнуть
Sleep(5000)
Until WarpCheck() = 1 ; использую ранее сделаные части
Do
ToolTip("Я варпаю",508, 234)
Until EndWarp() = 0 ; так же
Do
ToolTip("Докаюсь....",508, 234)
Until Docked() = 1
EndFunc
Func Docked()
PixelSearch(1018, 367,1018, 367, 0xFFFFFF,20) ; проверяю пиксель шестерёнки, справа от поиска, вкладка "Guests" станции, если пиксель есть, значит докнут
if Not @error Then
ToolTip("Докнут.",508, 234)
Return 1
Else
Return 0
EndIf
EndFunc
Func OreToStorage()
if CheckStorage() = 1 Then
MouseClick("left",422, 338) ; костыль, иногда "сtrl + a" не работает, нажимает на центр склада
Send("^a") ; выделить всё
MouseClickDrag("left",245, 191, 113, 240,20) ; перетащить в item hangar
Else
Do
Send("!c")
Sleep(2000)
Until CheckStorage() = 1
EndIf
EndFunc
Func CheckStorage()
PixelSearch(173, 480,173, 480,0xFFFFFF,10) ; проверяет + справа от My Filters
if Not @error Then
ToolTip("Склад открыт, всё норм", 508, 234)
Return 1
Else
Return 0
EndIf
EndFunc
Картиночка моего экрана с ботом (Window mode | 1024 x 768)

P.S. Знаю на счёт "а что если нейтрал уже в системе а ты варпанешь, т.к. чекер нейтрала стоит в майнер части", я думаю как это реализовать, добавлять к каждой функции чекер на врага я не хочу, это самый простой выход, но не лучший...