garrul
Знающий
- Сообщения
- 16
- Репутация
- 10
Заметил, что такой немаловажный модуль как автопилот, незаслуженно обделён вниманием. Решил кинуть камень в нужном направлении, может у кого есть всё-таки наработки по этой теме, ну или по крайней мере идеи 
Этот модуль - это выдранный из скрипта-хаулера кусок и "обвешанный" всем необходимым для автономности. Посему есть ряд условий для нормальной работы:
1. Перед запуском скрипта, шип должен быть остановлен (по крайней мере на четверть).
2. "Желтые" ворота не должны быть выделены (да да
имаджсёрч).
3. В настройках овервью должно быть убрано всё, кроме ворот.
4. Ну и понятное дело надо сначала тыкнуть "Set destination" куда надо лететь ;)
При выполнении этих условий всё работает. У меня, повторюсь, на основе этой конструкции работает бот-хаулер (до фрейтера его не докачал пока ещё
и скрипт для выполнения курьерок)

Этот модуль - это выдранный из скрипта-хаулера кусок и "обвешанный" всем необходимым для автономности. Посему есть ряд условий для нормальной работы:
1. Перед запуском скрипта, шип должен быть остановлен (по крайней мере на четверть).
2. "Желтые" ворота не должны быть выделены (да да

3. В настройках овервью должно быть убрано всё, кроме ворот.
4. Ну и понятное дело надо сначала тыкнуть "Set destination" куда надо лететь ;)
При выполнении этих условий всё работает. У меня, повторюсь, на основе этой конструкции работает бот-хаулер (до фрейтера его не докачал пока ещё

Код:
Opt ("MouseCoordMode", 0)
Opt("PixelCoordMode", 0)
Opt("SendKeyDownDelay", 200)
WinActivate("EVE")
WinWaitActive("EVE")
WinMove("EVE","",0,0)
Global $xg = 0, $yg = 0
Global $xok = 0, $yok = 0
Global $WinPos = WinGetPos("EVE")
Global $Paused
Global $WarpTestX = $WinPos[0] + 543; Координаты пикселя варпа
Global $WarpTestY = $WinPos[1] + 741
Global $JumpTestX = $WinPos[0] + 776; Рамка иконки станции в selected items
Global $JumpTestY = $WinPos[1] + 45
HotKeySet("{INSERT}", "TogglePause")
HotKeySet("{F9}", "Terminate")
#include <ImageSearch.au3>
#include <_SelectedItem.au3>
Func Terminate()
Exit
EndFunc
;~ ==============================================================================================================
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('На паузе',0,0)
WEnd
ToolTip("")
EndFunc
;~ ==============================================================================================================
AutoPilot()
Func AutoPilot()
$unknow = 0
Do
If _ImageSearchArea("gate.bmp", 1, $WinPos[2]-257, $WinPos[3]-625, $WinPos[2]-237, $WinPos[3]-215, $xg, $yg, 5) Then
ToolTip("Есть WayPoint", ($WinPos[2]*0.5),($WinPos[3]*0.5))
Sleep(Random(300,900))
Okshutt()
MouseClick("left",$xg,$yg,1)
Okshutt()
_SIButton(2) ; Warp To
WarpTest()
Okshutt()
_SIButton(3) ; Jump
JumpTest()
Else
$unknow = 1
ToolTip("Вэйпоинт ричд", ($WinPos[2]*0.5),($WinPos[3]*0.5))
Sleep(500)
EndIf
Until $unknow = 1
EndFunc
Func WarpTest()
$i = 0
$WarpTestCheckSum = PixelGetColor($WarpTestX, $WarpTestY)
Do
Sleep(10000) ; такая задержка (9 сек. или больше, если бш-баржа) нужна чтобы 100% определить отварп
PixelSearch($WarpTestX, $WarpTestY, $WarpTestX+1, $WarpTestY+1, $WarpTestCheckSum, 5 )
If @error Then
$i = 1
EndIf
Until $i = 1
ToolTip("Лечу", ($WinPos[2]*0.5),($WinPos[3]*0.5))
Sleep(300)
$WarpTestCheckSum = PixelGetColor($WarpTestX, $WarpTestY)
Do
Sleep(5000) ; меньше пяти возможны ложные определения (будет думать что всё ещё летит)
PixelSearch($WarpTestX, $WarpTestY, $WarpTestX+1, $WarpTestY+1, $WarpTestCheckSum, 5 )
If @error Then
$i = 0
EndIf
Until $i = 0
ToolTip("Прилетел", ($WinPos[2]*0.5),($WinPos[3]*0.5))
Sleep(500)
EndFunc
Func Okshutt() ; Ищет кнопку ОК на табличке о ДТ и нажимает её
If _ImageSearchArea("okshutt.bmp", 1, $WinPos[0], $WinPos[1], $WinPos[2], $WinPos[3], $xok, $yok, 10) Then
ToolTip("Shutdown грядёт :)", ($WinPos[2]*0.5),($WinPos[3]*0.5))
Sleep(Random(300,900))
MouseClick("left",$xok,$yok,1)
EndIf
EndFunc
Func JumpTest()
$j = 0
$JumpTestCheckSum = PixelGetColor($JumpTestX, $JumpTestY)
Do
Sleep(10000)
PixelSearch($JumpTestX, $JumpTestY, $JumpTestX+1, $JumpTestY+1, $JumpTestCheckSum, 5)
If @error Then
$j = 1
EndIf
Until $j = 1
ToolTip("Пропрыгнул", ($WinPos[2]*0.5),($WinPos[3]*0.5))
Sleep(3000)
EndFunc