Что нового

[Автоматизация] Автопилот для ЕВЫ

Victor

Новичок
Сообщения
7
Репутация
0
Играю ЕВУ с 14 года - очень по душе пришлась
и стиль жизни мой сильно напоминает
НО многие процессы сильно утомляют своей однообразностью и монотонностью
Вот попытался облегчить себе жизнь в виртуале - в частности автопилот евы !
Внутренний очсильно неспособствует выживаемости корабля при дальнем перелёте - посему создал собственный
Перепробовал несколько систем ботописания - в частности Automatic Mouse and Keyboard и AutoHotkey ну и AutoIt3
Выбор остановился на AutoIt3 :IL_AutoIt_1:
Так как маус жадная и плохо работает на разных компах(у меня их три) , может по причине жадности ;)
АНК тупит по страшному и очень удивило непонятным изменениям переменных хотя в коде нет прямых указаний на это

Поэтому сваял вот это бизабразие

Код:
#cs ----------------------------------------------------------------------------
AvtoPilot dlia ezdi po EVE c ispolzovaniem dop modulei
 AutoIt Version: 3.3.14.2
 Author:         Victor 

 Script Function:
    Template AutoIt script.

#ce ----------------------------------------------------------------------------
Opt("PixelCoordMode", 2) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна

HotKeySet ('{F11}','f_exit');задаем горячую клавишу остановки скрипта
HotKeySet ("{`}","f_pause")
WinMove("EVE", "", -5, -23)

Global $pauses = 0
Global $v_PosG[2]
Global $v_PosR1[2]=[894, 230] ;reper tochka ! verhlevo obzorki
Global $v_PosR2[2]=[914, 818];reper tochka ! nizpravo obzorki
Global $v_PosR3[2]=[1001, 82];reper tochka ! knopa priwarp
Global $v_PosR4[2]=[798, 860];reper tochka ! #1 devais
Global $v_PosR5[2]=[1003, 859];reper tochka ! #2 devais
Global $v_PosR6[2]=[1031, 80];reper tochka ! verhlevo panel deistvi --
Global $v_PosR7[2]=[758, 956];reper tochka ! есть ВАРП
;Global $v_dokl = 0
;Global $v_otprav = 0
Global $CharName = "Victor" ;  -здесь имя вашего чара в еве

WinActivate("EVE", "")

MsgBox( 64, "титла", "Сча станем на паузу зафигач реперTочки - Ждём", 20)
HotKeySet ("!+1","f_Rep1") ;reper tochka ! verhlevo obzorki (shift+alt+1)
HotKeySet ("!+2","f_Rep2") ;reper tochka ! nizpravo obzorki
HotKeySet ("!+3","f_Rep3") ;reper tochka ! knopa privarpa
HotKeySet ("!+4","f_Rep4") ;reper tochka ! #1 devais
HotKeySet ("!+5","f_Rep5") ;reper tochka ! #2 devais
HotKeySet ("!+6","f_Rep6") ;reper tochka ! кнопа АнДок
HotKeySet ("!+7","f_Rep7") ;reper tochka ! это ВАРП --
HotKeySet ("!+0","f_pokaj") ;reper tochka ! #2 devais

f_pause()

$rejim = InputBox( "title", "Kakoi rejim polzuem ?", 0 ) ;sprosim kakoi modul zapuskat dopolnitelno
$v_scht = 0

While 1
   WinActivate("EVE", "")

   ToolTip("")

   		   $x1 = $v_Posr6[0]-3
		   $y1 = $v_Posr6[1]-3
		   $x2 = $v_Posr6[0]+3
		   $y2 = $v_Posr6[1]+3
   $v_PosG = PixelSearch($x1, $y1, $x2, $y2, 0xC09A02, 10  ) ;проверка МЫ в Доке ?
   If not @Error Then
	  f_pause()
   Endif

   ;Проверка ВАРПа
		$x1 = $v_Posr7[0]-2
		$y1 = $v_Posr7[1]-2
		$x2 = $v_Posr7[0]+2
		$y2 = $v_Posr7[1]+2
   ;MsgBox(64, "tit", "x1 = 980\"&$x1&" y1 = 19\"&$y1&" x2 = 980\"&$x2&" y2 = 19\"&$y2, 10)
   $v_PosW = PixelSearch($x1, $y1, $x2, $y2, 0x979896, 20  ) ;ishem neголубенький pix - neest podwarp
   If  @Error Then
	  MsgBox(0, "ti", "vot che-"&@Error&" my v warpe", 2)
	  $v_scht += 1
;~ 		 If $v_scht = 5 Then
;~  			ExitLoop
;~ 		 EndIf
 	  $_numodul = 0
   Else
 		$x1 = $v_Posr1[0]
		$y1 = $v_Posr1[1]
		$x2 = $v_Posr2[0]
		$y2 = $v_Posr2[1]
	  ;MsgBox(64, "tit", "x1 = 981\"&$x1&" y1 = 216\"&$y1&" x2 = 1004\"&$x2&" y2 = 805\"&$y2, 10)
	  $v_PosG = PixelSearch($x1, $y1, $x2, $y2, 0xA1A108, 30  ) ;ishem joltie pix - eto gaika
	  If not @Error Then
		 MouseMove( $v_PosG[0], $v_PosG[1])
		 MouseClick("left")
	  Else
		 MsgBox(0, "ti", "ne vizu gaiky", 10)
	  Endif
		 ;MsgBox(0, "ti", "vot not 0\"&@Error, 10)
	  MouseMove( $v_PosR3[0], $v_PosR3[1])
		 ;Sleep(2000)
	  MouseClick( "Left")
	  $_numodul = $rejim
 Endif




   If $_numodul = 0 Then;nijmiom na knopku zapuska modulia
   MouseMove( $v_Posr6[0]-30, $v_Posr6[1]+30)
	  ;MouseClick( "Left")
   Else
   Endif

   If $_numodul = 1 Then;jmiom na knopku zapuska modulia cloaki
	  MouseMove( $v_Posr4[0], $v_Posr4[1])
	  MouseClick( "Left")
	  $_numodul = 0
   Else
   Endif

   If $_numodul = 2 Then ;jmiom na knopku zapuska modulia
	  MouseMove( $v_Posr5[0], $v_Posr5[1])
	  MouseClick( "Left")
	  $_numodul = 0
	  Sleep(300)
	  ;MouseMove( $v_Posr5[0], $v_Posr5[1])
	  MouseClick( "Left")
   Else
   Endif
   Sleep(5000)
WEnd

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ХОТКЕИ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Func f_Rep1()
   $v_PosR1 = MouseGetPos()
   ;ToolTip("Reper#1&@CR&Xup=$v_PosR1[0]&@CR&Yup=$v_PosR1[1]")
   ToolTip("Reper#1 "&@CR&"Xup = "&$v_PosR1[0]&@CR&"Yup= "&$v_PosR1[1])
EndFunc

Func f_Rep2()
$v_PosR2 = MouseGetPos()
ToolTip("Reper#2&@CR&Xup=$v_PosR2[0]&@CR&Yup=$v_PosR2[1]")
EndFunc

Func f_Rep3()
   $v_PosR3 = MouseGetPos()
   ToolTip("Reper#3&@CR&Xup=$v_PosR3[0]&@CR&Yup=$v_PosR3[1]")
EndFunc

Func f_Rep4()
   $v_PosR4 = MouseGetPos()
   ToolTip("Reper#4&@CR&Xup=$v_PosR4[0]&@CR&Yup=$v_PosR4[1]")
EndFunc

Func f_Rep5()
   $v_PosR5 = MouseGetPos()
   ToolTip("Reper#5&@CR&Xup=$v_PosR5[0]&@CR&Yup=$v_PosR5[1]")
EndFunc

Func f_Rep6()
   $v_PosR6 = MouseGetPos()
   ToolTip("Reper#6&@CR&Xup=$v_PosR6[0]&@CR&Yup=$v_PosR6[1]")
EndFunc

Func f_Rep7()
   $v_PosR7 = MouseGetPos()
   ToolTip("Reper#7&@CR&Xup=$v_PosR6[0]&@CR&Yup=$v_PosR6[1]")
EndFunc

Func f_pokaj()
   ;MsgBox(64, "tit", "x1 = 894\"&$v_PosR1[0]&" y1 = 230\"&$v_PosR1[1], 10) ;&" x2 = 1004\"&$x2&" y2 = 805\"&$y2
   MouseMove($v_PosR1[0], $v_PosR1[1])
   ToolTip("Reper#1 "&@CR&"Xup = "&$v_PosR1[0]&@CR&"Yup= "&$v_PosR1[1])
   Sleep(2000)
   MouseMove( $v_PosR2[0], $v_PosR2[1])
   ToolTip("Reper#2 "&@CR&"Xup = "&$v_PosR2[0]&@CR&"Yup= "&$v_PosR2[1])
   Sleep(2000)
   MouseMove( $v_PosR3[0], $v_PosR3[1])
   ToolTip("Reper#3 "&@CR&"Xup = "&$v_PosR3[0]&@CR&"Yup= "&$v_PosR3[1])
   Sleep(2000)
   MouseMove( $v_PosR4[0], $v_PosR4[1])
   ToolTip("Reper#4 "&@CR&"Xup = "&$v_PosR4[0]&@CR&"Yup= "&$v_PosR4[1])
   Sleep(2000)
   MouseMove( $v_PosR5[0], $v_PosR5[1])
   ToolTip("Reper#5 "&@CR&"Xup = "&$v_PosR5[0]&@CR&"Yup= "&$v_PosR5[1])
   Sleep(2000)
   MouseMove( $v_PosR6[0], $v_PosR6[1])
   ToolTip("Reper#6 "&@CR&"Xup = "&$v_PosR6[0]&@CR&"Yup= "&$v_PosR6[1])
   Sleep(2000)
   MouseMove( $v_PosR7[0], $v_PosR7[1])
   ToolTip("Reper#7 "&@CR&"Xup = "&$v_PosR7[0]&@CR&"Yup= "&$v_PosR7[1])
   Sleep(2000)
EndFunc

Func f_pause()
   $pauses += 1
   While $pauses=1
	  $Status="Пауза..."
	  sleep(500)
	  ToolTip('Script is "Paused"',0,0)
   WEnd
   $Status="Снята пауза..."
   ;Sleep(200)
   $pauses=0
	  ToolTip("")
EndFunc

Func f_exit()
;~     _Action("Dronecontrol");на всякий - часто забываю завершив работу бота забрать дронов(привык все автоматически делается) :)
;~     $Status="Завершение скрипта"
;~     Sleep(200)
;~     _TicksToTime((TimerDiff($timer)/$LootCount),$MidCicleTime[1],$MidCicleTime[2],$MidCicleTime[3])
;~     If $LootCount=0 Then
;~         $MidCicleTime[0]="-"
;~     Else
;~     $MidCicleTime[0]=StringFormat("%02d:%02d:%02d", $MidCicleTime[1],$MidCicleTime[2],$MidCicleTime[3])
;~     EndIf
;~     _TicksToTime(TimerDiff($timer),$hour,$min,$sec)
;~     $ScriptWorked=StringFormat("%02d:%02d:%02d", $hour,$min,$sec)
;~     If $LootCount>0 Then
;~         IniWrite("C:\Games\Eve.ini","Script",_NowCalc(), "Stop,Бука №" & $x &" -- "& "Время работы: "& $ScriptWorked & ", лут сбросил: " & $LootCount&" раз."&" \Цикл в среднем="&$MidCicleTime[0])
;~     EndIf
    MsgBox( 64, "титла", "vivalivamsa - Ждём", 30)
    Exit
EndFunc


Пока работает довольно стабильно
Есть желание прикрутить выгрузку отмеченых реперных точек в типа инифайл с последующей загрузкой при запуске
Реперные точки вроде отремаркал все - по тексту видно
И вообще прикрутить чтото вроде типа ручной настройки на используемый экран игрока
Применяемые модули - это включение клоки сразу после начала движения корабля с коверт клокой
И включения пинка тяжолым транспортам для ограничения разгона в 10 секунд (это дидспейс и орка в основном) - имеется в виду автобурнеры и МВД (каждому конкретному корабу подбирается индивидуально)
Прошу замечания и поправки отмечать в корректной форме :smile:
 
Сообщения
137
Репутация
-2
Если всё работает - молодец)
А вот что будет если ты сменишь монитор на большую диагональ например?Или если минимизировать окно?Я так понимаю скрипт работать не будет?
 
Автор
V

Victor

Новичок
Сообщения
7
Репутация
0
Dessan сказал(а):
Если всё работает - молодец)
А вот что будет если ты сменишь монитор на большую диагональ например?Или если минимизировать окно?Я так понимаю скрипт работать не будет?
увы для ВАС уважаемый
но ви НЕПРАЛЬНА понимаешь !
перед началом работы скрипт предложит настроить реперные-опорные точки для привязки действий
пока только в неявном (увы) виде -- читай код там вроде(на мой взгляд) всё понятно =))
почему и писал что есть необходимость прикрутить ручную привязку на привычный экран пользователя ;)
 
Верх