#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\icons\иконки устройств\1013.ico
#AutoIt3Wrapper_Outfile=miranda.exe
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Date.au3>
Opt("TrayIconDebug", 1)
Opt("PixelCoordMode", 2) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна
Opt ("MouseClickDelay", 15);Задаем интенсивность нажатия мыши.
Opt ("SendKeyDownDelay", 200)
HotKeySet ('{`}','_exit');задаем горячую клавишу остановки скрипта
HotKeySet ("{\}","_pause")
HotKeySet ("{RIGHT}","BeltPlus");горячая клавиша изменения номера белта в процессе работы бота +
HotKeySet ("{LEFT}","BeltMinus");горячая клавиша изменения номера белта в процессе работы бота -
HotKeySet("{UP}","DroneUse");активировать,деактивировать работу дронов.
HotKeySet("{DOWN}","ConvoSwitch");выбрать реакцию на конво mp3 или выход из игры.
WinMove("EVE", "", -5, -23)
;+++ Шапка +++
;config
;ВСЕ ПИКСЕЛЬСЁЧИ
Global $LockConf[7]=[687, 82, 687, 82,0x9B9B9B,10];в слове Астероид левый верхний пиксель буквы о.
Global $StripConf[6]=[614, 650,614, 650,0x000000];стрипы
Global $AstLockChkConf[10]=[779, 193,0xFFFFFF,0xAEAEAE,0xC3C3C3];лок астероида в овервью(край центра лока в овервью) цвета - белый лок акт,серый пасс, серый выделен.
Global $LockUseConf[8]=[722, 14,751, 69,0xFFFFFF,10];активные модули на локе(светлый оттенок в иконке стрипа на локе,он есть даже когда 3 стрипа активны и иконки оч.маленькие)
Global $LockCenter[3]=[686, 45];примерная точка в центре залоченной цели.
Global $ChkAstCanLock[7]=[783, 221,783, 221,0x212121,10];проверка наличия астероида для лока(точка 2й серой полоски).если она есть, значит есть второй объект для лока.
Global $10kmCfg[7]=[875, 41,879, 48,0x999999,20];проверка диапазона пикселей между 2х значным XX числом километров и слова км.на наличие серого оттенка цвета(цвет чисел).
Global $AsterCfg[7]=[834, 191,834, 400,0xC5C5C5,10];для проверки наличия астеров на белте.поиск по прямой проведенной через левый край буквы m в овервью.
Global $LockAdvCfg[7]=[921, 77,922, 78,0xFF0000,10];ищем красный крест на кнопке лока,если он есть,то лочить не рекомендуется:)(тупо разлочим уже залоченную цель)
Global $CargoCfg[7]=[205, 319,205, 319,0x004F66,10];проверка на наличие синего цвета в полоске карго.пиксель не в самом конце, а примерно на 0.5см, чтобы при разгоне в варп домой стрипы
;как раз добрали недостающую часть, а не работали в холостую.
Global $WarpCfg[7]=[417, 501,417, 501,0xBFBFBF,10];проверяется левый верхний пиксель буквы W в слове Warp Drive... :)пока он есть мы в гиперпрыжке.
Global $DockChkCfg[7]=[4, 736,35, 718,0xFFD942,10];поиск желтого цвета в кнопке андок
Global $SpaceChkCfg[7]=[777, 130,781, 136,0xCCCCCC,10];ищем треугольник овервью(проверка на космос)
Global $ProcessCfg[7]=[468, 410,468, 483,0x7F7F7F,1];проверка на процесс
Global $EmptyCargoCfg[7]=[361,170,361,170,0x000000,20];проверка сброшен ли груз на станции.пиксель у начала полоски заполнения карго.
Global $ConvoCfg[6]=[303, 172,819, 581,10];диапазон где происходит поиск проверки на конво и шейд.
Global $MenuChkCfg[7]=[278, 255,361, 263,0x999999,10];проверка длины меню, если меню короче, то мы около станции и пункт док в меню 2й ,иначе 4й.
Global $MenuChkCfg2[7]=[76, 127, 168, 154, 0x989898,10];проверка длины меню, что не варпать на белт, пока не прогрузился космос.проверка главного меню, если оно короче, то космос еще не прогрузился.
Global $DroneStatusCfg[7]=[876, 642,976, 642,0x131313,10];проверка открыто ли меню дронов для анализа статуса дронов.когда не раскрыто - в этом пикселе точка черного цвета.
Global $DroneReturnCfg[7]=[928, 640, 947, 642,0x4E4E4E,10];когда серый цвет в первой полоски хп,первого дрона пропал - дроны вернулись.
Global $DroneIdleCfg[7]=[883, 657,901, 724,0x01F501,10];иногда после нажатия назначенной комбинации клавиш для возврата дронов,они просто прилетают к кораблю со статусом - не используется+проверка на простаивание при майне на белте.проверяем по зеленому цвету в статусе.
Global $SpaceAdv[7]=[775, 575, 783, 579, 0xCCCCCC, 10];доп. проверка на космос после дока(меню-штрих дронов). иногда космос не успевает прогрузиться и бот начинает варпать по буке на белт раньше времени.когда дроны прогружаются, то 100% космос прогружен.
Global $Cargo2ndChk[7]=[258+3, 637,258+3, 637,0x005066,10];вторая проверка на заполнение до 8000кубов.
Global $DTWindow[7]=[383, 305,383, 305,0x0072D6,1];проверка по идеально белой части вокруг ок в окне ДТ.
Global $Incursion[7]=[58, 87 ,336, 289, 0x400000,10];проверка на инкурс, если да то валим.
Global $DamageAlarm[7]=[439, 669, 532, 599, 0xFF2121,10];тупейшая чека на умирание:)
Global $Pirate[7]=[774, 181,774, 181,0x89630A,10];скан на суицидника. если рядом желтый гад,улетаем нагло нах.
Global $CargoReadyOTH[7]=[465, 266, 465, 266, 0x5E5E5E, 10];проверка активен ли лут для сброса на станцию
Global $10kmposChk[7]=[863, 50,901, 56,0x959595,20];доп.проверка для определения позиции цифр ><10км(при длинн.назв.объекта цифры сползают)
;variables ОБЩИЕ НАСТРОЙКИ БОТА
Global Const $StripNum=3;общее количество стрипов
Global Const $LockNum=4;количество локов с кот.работаем
Global Const $AstLockNum=5;количество астероидов в овервью,за кот.следим на наличие лока.
Global $CharName="lohochichaka";здесь имя вашего чара в еве
Global $ConvoExe="mp3";ставим по умолчанию срабатывание mp3 при срабатывании проверки конво
Global $DroneUse=IniRead("C:\1\Eve.ini","Drone","Use","Нет");использовать ли боту дронов в процессе. изменить на нет.Бот запоминает в инишке последнее значение.
Global $ConvoAlarmMP3="C:\1\1.mp3";это мелодия путь к mp3, который будет оповещать о наличии конво.
;------- разные переменные
Global $AstLockChk0[25];это разные варианты цвета для проверки значка лока в овервью.
Global $AstLockChk1[25];он бывает чисто белым, активным серым и не выделенным серым.
Global $AstLockChk2[25];эти переменные хранят статистику по каждому из цветов, и если хоть один из цветов найден на тек.позиции астроида,
;астер считается залоченным. результат складывается в массив $AstLockChk[$i] где $i это число астера.
;============================================
Global $Alarm=0
Global $ScriptWorked;общее время работы скрипта
Local $1stStripRun=1;при первом запуске на белте переменная для активации всех стрипов одновременно на 1ом акт.локе.
Global $FreeLockUse;определение лока,на кот.нет активных модулей
Global $FreeLockPosition;строка овервью со свободным локом.
Global $TimerChk;таймер для разных дел.
Global $Status="#";это переменная текущего действия или процесса.
Global $NearDockWarp=0;после разгруза возле станции.ситуация - нет астеров-> белт+1,летим на белт.чтобы избежать этого информ.логику просто варпаться после разгруза.
Global $Dock=0;ситуация при прилете к станции-нет астероидов-->летим на белт.чтобы избежать этого информируем логику ждать дока,а не варпаться.
Global $MidCicleTime[4];средняя длительность цикла
Global $CicleWorked=0;длительность последнего цикла
Global $ProcChk;процесс
Global $RndStrp;рандомная длительность активности стрипа
Global $all;все в одной переменной.пока не используется
Global $FullEmptyCheck;проверка на наличие любого лута,если на станции
Global $SpaceChk;проверка на космос.
Global $WarpChk;проверка на варп
Global $Belt;состояние возможности майнить на белте.
Global $CargoChk;переменная заполненности трюма
Global $10kmChk;переменная проверки 10км
Global $AsterChk;переменная наличия астероидов на буке
Global $LockChk;переменная лока
Global $Drones;активность дронов
Global $LockAdv;дополнительная проверка на лок по красному кресту.
Global $StripChk;переменная активности стрипов
Global $LootCount=0;счетчик количества сбросов лута за время работы бота.
Global $pause
Global $CicleTime;переменная длительности цикла
Global $timer = TimerInit();таймер общей работы скрипта
Dim $hour,$min,$sec
Global $y=151;координата Y в меню бук.
Global $x;Номер буки
Global $strip[4];активность стрипов
Global $Lock[5];проверка наличия лока в 4х позициях.
Global $AstLockChk[25];проверка залоченности конкретных астероидов.
Global $LockUse[5];массив активности стрипов на локе
Global $LockNumTemp=$LockNum;текущее количество локов.с кот.работаем на тек.белте.
Global $StrpTimer[4]
Global $SpaceLoad;здесь хранится проверка на наличие меню дронов.для доп. проверки на прогруз в космос.
;===================================
;WinWaitActive("EVE -` "&$CharName)
AdlibRegister("Status",150)
IniWrite("C:\1\Eve.ini","Script", _NowCalc(),"Start,Belt №" & $x)
IniWrite("C:\1\Eve.ini","Mined","=","=")
$CicleTime = TimerInit();засекаем длительность 1 цикла.
Mine()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ЛОГИКА;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func Mine()
Local $StrpTimer;переменная таймера работы стрипа
While 1
;AllChecks()
WinActivate("EVE - "&$CharName)
;#cs
Select
Case $SpaceChk="Промежуточная загрузка" or $ProcChk="процесс..." or $WarpChk=1
$Status="загр,процесс или варп"
If $DTWindow[6]=1 Then; если появилось мешающее окно ДТ, нажать ок.
$Status="Окно ДТ"
MouseClick("left", Random(510, 510+10), Random(475, 475+5), 1, 20)
Sleep(200)
EndIf
Sleep(300)
Case $SpaceChk="Док"
$Status="В Доке"
If $DTWindow[6]=1 Then; если появилось мешающее окно ДТ, нажать ок.
$Status="Окно ДТ"
MouseClick("left", Random(510, 510+10), Random(475, 475+5), 1, 20)
Sleep(200)
EndIf
If $FullEmptyCheck="Есть" Then
_Action("OreToHome")
Else
_Action("Undock")
EndIf
;If $Incursion[6]=1 or $Alarm=1 Then
; _exitgame()
; _exit()
; IniWrite("С:\Eve.ini","Incursion",_NowCalc(), "писда!!!как всегда невовремя прилетел инкурс")
;EndIf
Case $SpaceChk="Космос"
If $DTWindow[6]=1 Then; если появилось мешающее окно ДТ, нажать ок.
$Status="Окно ДТ"
MouseClick("left", Random(510, 510+10), Random(475, 475+5), 1, 20)
Sleep(200)
EndIf
Select;действия в космосе.
Case $Incursion[6]=1 or $DamageAlarm[6]=1 Or $Pirate[6]=1;проверка на умирание, на инкурс и на наличие суицидников рядом.валим сразу же на базу и пишем в лог.
$Status="Инкурс,Дамаг или Пират Ахтунг!"
If $Alarm=0 Then
$Alarm=1
Send ("{PRINTSCREEN}")
EndIf
_Action("Dock")
Case $CargoChk=1
$Status="Полный трюм"
_Action("Dronecontrol")
_Action("Dock")
Sleep(3000)
Case $AsterChk=0;если белт не ботабельный,то летим дальше...
If $Dock=1 Then
_Action("Dronecontrol")
_Action("Dock")
Sleep(3000)
EndIf
If TimerDiff($CicleTime)<=30000 or $NearDockWarp=1 Then;если бот только запустился или только андокнулся,то полетев на белт не плюсуем $y=$y+16
_Action("WarpToBelt")
Else
_Action("WarpToBelt","Belt+")
EndIf
$Status="Либо летим на белт, либо плюсуем..."
Case $AsterChk=1;если белт ботабельный,то...
$Status="Ботабельный..."
If $NearDockWarp=1 Then
_Action("WarpToBelt")
Else
Select
Case $Lock[0]=0;если нет лока,то...
$Status="Надо лочить..."
_Action("StripControl","Off","1")
_Action("StripControl","Off","2")
_Action("StripControl","Off","3")
_Check("Chk10km","1");проверка ближе или дальше 10км - так как для этого нужно кликнуть мышей - вывел из цикла проверок.
If $10kmChk="<10км" Then;если астероид ближе 10км
_Action("LockTarget");лочим
_Action("StartDrone","Stage 1");дроны,подготовка к работе
EndIf
If $10kmChk=">10км" Then;если астеры ближе 10 км кончились.
Sleep(5000)
_Check("Chk10km","1");---- ЭТА ПОВТОРНАЯ ПРОВЕРКА НА ВСЯКИЙ СЛУЧАЙ.
If $10kmChk="<10км" Then;если астероид ближе 10км
IniWrite("C:\1\Eve.ini","Error",_Nowtime(5), "Сработала повторная проверка" & " Бука №" & $x)
_Action("StartDrone","Stage 1");дроны,подготовка к работе
_Action("LockTarget");лочим
;-----///-------
Else
_Action("WarpToBelt","Belt+");если не кончились буки - летим на следующую.
EndIf
EndIf
Case $Lock[0]>0;если есть залоченные цели
$Status="Работаю..."
_Action("StripControl","Off","Active");проверяем все стрипы.если хоть один выключен- включаем на свободную цель и активируем таймер
_Action("StripControl","On","Idle");проверяем все стрипы на включенность и если таймер этого стрипа вышел - выключаем
;MouseMove(774, 183);возвращаем мышку ближе к след.клику,чтобы потом не тратить на это время.
;_Action("StartDrone","Mine")
If $LockNumTemp>$Lock[0] Then;если количество локов с кот.работаем на текущем белте>текущего количества залоч.целей
$Status="Лочим еще цели..."
_Check("AstLockChk","Free");ищем свободный от лока астер
_Check("ChkAstCanLock",$FreeLockPosition);проверяем наличие астера на белте в данной позиции
If $ChkAstCanLock[6]=1 Then
_Check("Chk10km",$FreeLockPosition);проверяем дистанцию свободного астера
If $10kmChk=">10км" Then;если свободный астер недоступен то...
$Status="Работаю с теми целями что есть..."
$LockNumTemp=$Lock[0];продолжаем работать с тек.количеством целей
;если карго If $LockNumTemp=1 Then
Else
_Action("LockTarget");иначе лочим цель.
EndIf
EndIf
EndIf
EndSelect
EndIf
EndSelect
Case Else
$Status="Невозможная ситуация!"
Sleep(100)
EndSelect
;#ce
WEnd
EndFunc
;=================================================
Func Status();тултип - важная информация о боте в данный момент.обрабатывается adlib,поэтому всегда актуальна.
_Check("AstLockChk",1)
_Check("CheckProcess")
_Check("CheckSpace")
_Check("FullEmptyCheck")
_Check("checkbeltnum")
_Check("LockCheck")
_Check("StripChk")
_Check("CheckWarp")
_Check("AsterChk")
_Check("CargoCheck")
_Check("AstLockChk")
_Check("LockUse")
;_Check("Drones")
_Check("Cargo2ndChk")
_Check("DTWindowChk")
_Check("Incursion")
_Check("DamageAlarm")
_Check("PirateAlarm")
_Check("CargoReadyOTH")
ToolTip("Белт №"&$x&"\Ср.длит.цикла="&$MidCicleTime[0]&"\лут сбросил:"&$LootCount&"\Конво="&$ConvoExe&"\Использование дронов="&$DroneUse&"\Инкурс:"&$Incursion[6]&"\Статус = "&$Status,0,0)
;ToolTip("врем.локов:"&$LockNumTemp&"\10км="&$10kmChk&"\Ак.Лазеров="&$strip[0]&"\аст.есть?:"&$AsterChk&"\Локи="&$lock[0]&"\Лок7ми1ых.аст="&$AstLockChk[0]&"\"&$AstLockChk2[0]&"\акт.мод.на локе="&$LockUse[0]&"\трюм наполн. = "&$CargoChk&"\дроны пашут?:"&$Drones&"\астер лок да?="&$ChkAstCanLock[6]&"\Где я?:"&$SpaceChk&"\Трюм часть="&$FullEmptyCheck&"\Тек.статус="&$Status,0,0)
;MsgBox(0,0,TimerDiff($timer))
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Проверки;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _Check($Object,$Object2="No")
Select
Case $Object="checkbeltnum"
;++++++++++ узнаем номер белта по текущей координате y
$x=($y-151)/16+1
;======================
Case $Object="Chk10km";определение по SI
;++++++++++ Ближе или дальше 10км любого объекта в овервью
Local $y=189;координата Y первого объекта оверью
Local $x=783;координата X первого объекта оверью
$y=$y+(19*$Object2-19)
MouseClick("left", Random($x, $x+10), Random($y, $y+5), 1, 20)
_Action("Timer",500)
_Check("10kmposChk");проверка сдвинулись ли цифры ниже при отображении длинного названия объекта
If $10kmposChk[6]=1 Then
$Status="строка с цифрами ниже"
PixelSearch ($10kmCfg[0],$10kmCfg[1]+13,$10kmCfg[2],$10kmCfg[3]+13,$10kmCfg[4],$10kmCfg[5])
If not @error Then
$10kmChk="<10км"
Else
PixelSearch ($10kmCfg[0]+13,$10kmCfg[1]+15,$10kmCfg[2]+24,$10kmCfg[3]+15,$10kmCfg[4],$10kmCfg[5]);после буквы к в слове км, если после первой проверки пикселей после к нет,
If @error Then
$10kmChk="<10км"
Else
$10kmChk=">10км"
EndIf
EndIf
Else
$Status="цифры ОК"
PixelSearch ($10kmCfg[0],$10kmCfg[1],$10kmCfg[2],$10kmCfg[3],$10kmCfg[4],$10kmCfg[5])
If not @error Then
$10kmChk="<10км"
Else
PixelSearch ($10kmCfg[0]+13,$10kmCfg[1]+2,$10kmCfg[2]+24,$10kmCfg[3]+2,$10kmCfg[4],$10kmCfg[5]);после буквы к в слове км, если после первой проверки пикселей после к нет,
If @error Then
$10kmChk="<10км"
Else
$10kmChk=">10км"
EndIf
EndIf
EndIf
;======================
Case $Object="StripChk";проверка на активность каждого стрипа.
For $i=1 to $StripNum Step 1
$StripConf[5]=$StripConf[0]+(51*$i-51)
PixelSearch($StripConf[5], $StripConf[1],$StripConf[5]+1, $StripConf[3],$StripConf[4])
If not @error Then
$strip[$i]=0
Else
$strip[$i]=1
EndIf
Next
$strip[0]=$strip[1]+$strip[2]+$strip[3]
If $strip[0]<3 Then;Если хоть один стрип не работает ,проверка не проходит успешно
$StripChk=0
Else
$StripChk=1
EndIf
;========================
Case $Object="AsterChk"
;++++++++++ проверка на наличие астероидов на белте
PixelSearch($AsterCfg[0],$AsterCfg[1],$AsterCfg[2],$AsterCfg[3],$AsterCfg[4],$AsterCfg[5])
If Not @error Then
$AsterChk=1
Else
$AsterChk=0
EndIf
;========================
Case $Object="LockCheck"
;++++++++++ проверка лока
For $i=1 to $LockNum Step 1
$LockConf[6]=($LockConf[2]-($i*98-98))
PixelSearch($LockConf[6], $LockConf[1], $LockConf[6], $LockConf[3],$LockConf[4],$LockConf[5])
If not @error Then
$Lock[$i]=1
Else
$Lock[$i]=0
EndIf
Next
PixelSearch($LockAdvCfg[0],$LockAdvCfg[1],$LockAdvCfg[2],$LockAdvCfg[3],$LockAdvCfg[4],$LockAdvCfg[5])
If @error Then
$LockAdv=0;лока нет
Else
$LockAdv=1;лок уже есть
EndIf
$lock[0]=$Lock[1]+$Lock[2]+$Lock[3]+$Lock[4]
;==============================
Case $Object="AstLockChk"
;++++++++++ функция проверки залоченности астероида
For $x=2 to 4 step 1;здесь 3 разных цвета прогоняется.
For $i=1 to $AstLockNum Step 1;сбор данных по всем астерам на лок.7 астеров в овервью по-умолчанию.
$AstLockChkConf[5]=$AstLockChkConf[1]+($i*19-19)
PixelSearch($AstLockChkConf[0],$AstLockChkConf[5],$AstLockChkConf[0],$AstLockChkConf[5],$AstLockChkConf[$x])
If Not @error Then
Select
case $x=2
$AstLockChk0[$i]=1
case $x=3
$AstLockChk1[$i]=1
case $x=4
$AstLockChk2[$i]=1
EndSelect
Else
Select
case $x=2
$AstLockChk0[$i]=0
case $x=3
$AstLockChk1[$i]=0
case $x=4
$AstLockChk2[$i]=0
EndSelect
EndIf
$AstLockChk[$i]=$AstLockChk0[$i]+$AstLockChk1[$i]+$AstLockChk2[$i]
If $AstLockChk[$i]>1 Then
$AstLockChk[$i]=1
EndIf
Next
;$AstLockChk0[0]=$AstLockChk[1]&$AstLockChk[2]&$AstLockChk[3]&$AstLockChk[4]&$AstLockChk[5]&$AstLockChk[6]&$AstLockChk[7]
;$AstLockChk1[0]=$AstLockChk[1]&$AstLockChk[2]&$AstLockChk[3]&$AstLockChk[4]&$AstLockChk[5]&$AstLockChk[6]&$AstLockChk[7]
;$AstLockChk2[0]=$AstLockChk[1]&$AstLockChk[2]&$AstLockChk[3]&$AstLockChk[4]&$AstLockChk[5]&$AstLockChk[6]&$AstLockChk[7]
$AstLockChk[0]=$AstLockChk[1]&$AstLockChk[2]&$AstLockChk[3]&$AstLockChk[4]&$AstLockChk[5]&$AstLockChk[6]&$AstLockChk[7]
Next
If $Object2="Free" Then;поиск первого свободного для лока астера.
For $i=1 to $AstLockNum Step 1
If $AstLockChk[$i]=0 Then
$FreeLockPosition=$i
ExitLoop
EndIf
Next
EndIf
;=============================
Case $Object="LockUse"
;++++++++++ функция проверки активных модулей на локе
For $i=1 to $LockNum Step 1
$LockUseConf[6]=$LockUseConf[0]-($i*98-98)
$LockUseConf[7]=$LockUseConf[2]-($i*98-98)
PixelSearch($LockUseConf[6],$LockUseConf[1],$LockUseConf[7],$LockUseConf[3],$LockUseConf[4],$LockUseConf[5])
If @error Then
$LockUse[$i]=0
Else
$LockUse[$i]=1
EndIf
Next
If $Object2="Free" Then;поиск первого свободного для лока астера.
For $i=1 to $LockNumTemp Step 1
If $LockUse[$i]=0 Then;если на локе номер $i нет акт.модулей, то считать лок номер $i - свободным.
$FreeLockUse=$i
ExitLoop
EndIf
Next
EndIf
$LockUse[0]=$LockUse[1]+$LockUse[2]+$LockUse[3];+$LockUse[4]
;============================
Case $Object="Drones"
;++++++++++ проверка на активность дронов
PixelSearch($DroneIdleCfg[0],$DroneIdleCfg[1],$DroneIdleCfg[2],$DroneIdleCfg[3],$DroneIdleCfg[4],$DroneIdleCfg[5])
If Not @error Then
$Drones=0;дроны простаивают
Else
$Drones=1;Трудятся
EndIf
;=============================
Case $Object="CargoCheck"
;++++++++++ проверка на заполненность трюма
PixelSearch ($CargoCfg[0],$CargoCfg[1],$CargoCfg[2],$CargoCfg[3],$CargoCfg[4],$CargoCfg[5])
If Not @error Then
$CargoChk=1
Else
$CargoChk=0
EndIf
;==================================@
Case $Object="CheckWarp"
;++++++++++ функция проверки окончания варпа
PixelSearch ($WarpCfg[0],$WarpCfg[1],$WarpCfg[2],$WarpCfg[3],$WarpCfg[4],$WarpCfg[5])
If @error Then
$WarpChk=0
Else
$WarpChk=1
$Status="Варпаюсь"
EndIf
;=============================
Case $Object="CheckSpace"
;++++++++++ проверка на космос
PixelSearch($DockChkCfg[0],$DockChkCfg[1],$DockChkCfg[2],$DockChkCfg[3],$DockChkCfg[4],$DockChkCfg[5])
If Not @error Then;- мы находимся в доке.
$SpaceChk="Док"
Else
PixelSearch($SpaceChkCfg[0],$SpaceChkCfg[1],$SpaceChkCfg[2],$SpaceChkCfg[3],$SpaceChkCfg[4],$SpaceChkCfg[5])
if not @error Then ;- мы находимся в космосе.
$SpaceChk="Космос"
Else
$SpaceChk="Промежуточная загрузка"
EndIf
EndIf
If $Object2="Adv" Then;это проверка прогрузки в космос, если меню дронов прогрузилось, то все ок.
PixelSearch($SpaceAdv[0], $SpaceAdv[1], $SpaceAdv[2], $SpaceAdv[3], $SpaceAdv[4], $SpaceAdv[5])
If Not @error Then
$SpaceLoad=1
Else
$SpaceLoad=0
EndIf
EndIf
;======================================
Case $Object="CheckProcess"
;++++++++++ проверка на процесс(загрузка в док)
PixelSearch($ProcessCfg[0],$ProcessCfg[1],$ProcessCfg[2],$ProcessCfg[3],$ProcessCfg[4],$ProcessCfg[5])
If Not @error Then
$ProcChk="процесс..."
$Status="процесс"
Else
$ProcChk="-"
EndIf
;$ProcessCfg[0]=ProcessCfg[1]+ProcessCfg[2]+ProcessCfg[3]+ProcessCfg[4]+ProcessCfg[5]+ProcessCfg[6]
;======================================
Case $Object="FullEmptyCheck"
;++++++++++ проверка - сброшен лут или нет.
PixelSearch($EmptyCargoCfg[0],$EmptyCargoCfg[1],$EmptyCargoCfg[2],$EmptyCargoCfg[3],$EmptyCargoCfg[4],$EmptyCargoCfg[5])
If Not @error Then
$FullEmptyCheck="Нет"
Else
$FullEmptyCheck="Есть"
EndIf
;=================================
Case $Object="ChkAstCanLock"
PixelSearch($ChkAstCanLock[0],$ChkAstCanLock[1]+($Object2*19-38),$ChkAstCanLock[2],$ChkAstCanLock[3]+($Object2*19-38),$ChkAstCanLock[4],$ChkAstCanLock[5])
If @error Then
$LockNumTemp=$Lock[0]
$ChkAstCanLock[6]=0
Else
$ChkAstCanLock[6]=1
EndIf
;$ChkAstCanLock[7]=1
;================================
Case $Object="Cargo2ndChk"
PixelSearch($Cargo2ndChk[0],$Cargo2ndChk[1],$Cargo2ndChk[2],$Cargo2ndChk[3],$Cargo2ndChk[4],$Cargo2ndChk[5])
If @error Then
$Cargo2ndChk[6]=0
Else
$Cargo2ndChk[6]=1
EndIf
;=================================
Case $Object="DTWindowChk"
PixelSearch($DTWindow[0],$DTWindow[1],$DTWindow[2],$DTWindow[3],$DTWindow[4],$DTWindow[5])
If @error Then
$DTWindow[6]=0
Else
$DTWindow[6]=1
EndIf
;=================================
Case $Object="Incursion"
PixelSearch($Incursion[0],$Incursion[1],$Incursion[2],$Incursion[3],$Incursion[4],$Incursion[5])
If @error Then
$Incursion[6]=0
Else
$Incursion[6]=1
EndIf
;=================================
Case $Object="DamageAlarm"
PixelSearch($DamageAlarm[0],$DamageAlarm[1],$DamageAlarm[2],$DamageAlarm[3],$DamageAlarm[4],$DamageAlarm[5])
If @error Then
$DamageAlarm[6]=0
Else
$DamageAlarm[6]=1
EndIf
;=================================
Case $Object="PirateAlarm"
PixelSearch($Pirate[0],$Pirate[1],$Pirate[2],$Pirate[3],$Pirate[4],$Pirate[5])
If @error Then
$Pirate[6]=0
Else
$Pirate[6]=1
EndIf
;=================================
Case $Object="CargoReadyOTH"
PixelSearch($CargoReadyOTH[0],$CargoReadyOTH[1],$CargoReadyOTH[2],$CargoReadyOTH[3],$CargoReadyOTH[4],$CargoReadyOTH[5])
If @error Then
$CargoReadyOTH[6]=0
Else
$CargoReadyOTH[6]=1
EndIf
;=================================
Case $Object="10kmposChk"
PixelSearch($10kmposChk[0],$10kmposChk[1],$10kmposChk[2],$10kmposChk[3],$10kmposChk[4],$10kmposChk[5])
If @error Then
$10kmposChk[6]=0
Else
$10kmposChk[6]=1
EndIf
;=================================
Case $Object="ConvoCheck"
;++++++++++ функции проверки конво
Local $ConvoChk[4]
Local $color
For $i=1 to 3 Step 1
Select
Case $i="1"
$color=0xFFA600
Case $i="2"
$color=0x6284AF
Case $i="3"
$color=0x0064C0
EndSelect
PixelSearch ($ConvoCfg[0],$ConvoCfg[1],$ConvoCfg[2],$ConvoCfg[3],$color,$ConvoCfg[4])
If Not @error Then
IniWrite("C:\1\Eve.ini","Convo",_NowCalc(), "Конво!!!сработала проверка "&$i&"")
$ConvoChk[$i]=1
Else
$ConvoChk[$i]=0
EndIf
Next
If $ConvoChk[1]=1 Or $ConvoChk[2]=1 Or $ConvoChk[3]=1 Then ;если вдруг срабатывает любая- принтскрин и загрузка громкой мелодии :)
$Status="Сработала проверка конво -"&$ConvoExe&""
Send ("{PRINTSCREEN}")
If $ConvoExe="mp3" Then
ShellExecute ($ConvoAlarmMP3)
_pause()
Else
_exitgame()
_exit()
EndIf
EndIf
;======================================
EndSelect
EndFunc
;======================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Действия;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _Action($Do,$Do2="No",$Do3="No",$Do4="No",$Do5="No")
Select
Case $Do="Dock"
;++++++++++ Полет домой
$Status="Докаюсь"
MouseMove(Random(58, 58+10), Random(40, 40+10), 20)
MouseClick("left", Random(58, 58+10), Random(40, 40+5), 1, 20)
Sleep(Random(700, 1000))
MouseMove(Random(112, 112+10), Random(138, 138+10), 20)
Sleep(Random(700, 1000))
MouseMove(Random(274, 274+10), Random(138, 138+10), 20)
Sleep(Random(700, 1000))
;MouseMove(Random(313, 313+10), Random(138, 138+10), 20)
_Action("Timer",700)
PixelSearch($MenuChkCfg[0],$MenuChkCfg[1],$MenuChkCfg[2],$MenuChkCfg[3],$MenuChkCfg[4],$MenuChkCfg[5])
If not @error Then
MouseClick("left", Random(249, 249+10), Random(182, 182+5), 1, 20); если далеко то пункт №4 это док
sleep (4000)
If $WarpChk=1 Then
$dock=1
sleep(80000)
EndIf
Else
MouseClick("left", Random(270, 270+10), Random(154, 154+5), 1, 20); если возле станции то пункт №2 - это док
If $NearDockWarp=1 Then
Sleep(20000)
EndIf
$dock=1
EndIf
$Dock1st=0
;========================================
;========================================
Case $Do="WarpToBelt"
;++++++++++ функция полета на белт
If $Do2="Belt+" Then
$y=$y+16
$Status="Меняю белт"
If $DroneUse="Да" Then
_Action("Dronecontrol");рекурсия - уж лучше с ней,чем 2 раза повторять такой кусок кода.
EndIf
If $y>357 Then
_exitgame()
_exit()
EndIf
EndIf
$Status="Варпаюсь на белт"
MouseClick("left", Random(59, 59+4), Random(38, 38+4), 1, 20)
Sleep(Random(700,1000))
MouseMove(Random(139, 139+20), Random(139, 139+5), 20);дом
Sleep(Random(700,1000))
MouseMove(Random(139, 139+20), Random(154, 154+5), 20);додвигаем до начала 1 буки белта
Sleep(Random(700,1000))
;доводим до списка бук белтов - эти первые 3 операции с мышью
;для всех белтов одинаковы
MouseMove(Random(139, 139+20), Random($y, $y+5), 20);наводим на белт - открывается под меню
Sleep(Random(700,1000))
MouseClick("left", Random(290, 290+20), Random($y, $y+5), 1, 20);варпаемся на белт
_Action("Timer",4000);ожидание Гипердрайв активен.
If $WarpChk=1 Or $AsterChk=1 Then
$NearDockWarp=0;теперь мы не у дока.
$LockNumTemp=$LockNum;установить количество целей, с кот.работаем по дефолту.
$1stStripRun=1;первый запуск стрипов на белте.
EndIf
;======================================
Case $Do="Undock"
;++++++++++ вылет со станции.
$Status="Андок"
MouseClick("left", Random(21, 21+10), Random(728, 728+10), 1, 20);щелчок на андок
$Dock=0
$NearDockWarp=1
Sleep (15000);этот слип, нужен, чтобы раньше времени ни варпался и успел схватить процесс.
;=====================================
Case $Do="StripControl"
;++++++++++ контроль стрипов
Select
Case $Do2 = "On"
If $strip[$Do3]=0 Then
$Status="включаю стрип "&$Do3&""
Send ("{f"&$Do3&"}")
EndIf
If $Do3="Idle" Then
For $i=1 to $StripNum Step 1;
If $strip[$i]=0 Then
$Status="Включаю стрип "&$i&""
If $Lock[0]>1 and $LockUse[0]<4 Then
_Check("Lockuse","Free")
_Action("Click","Lock",$FreeLockUse)
EndIf
_Action("StripControl","On",$i)
$StrpTimer[$i] = TimerInit()
$RndStrp=Random(85000,95000)
If $1stStripRun>=4 Then
_Action("Timer",3000,"LockUse",$FreeLockUse,1);это святая проверка - дня 3 не мог понять почему стрипы по нескольку активируются:)
Else
$Status="Первая активация стрипов..."
$1stStripRun=$1stStripRun+1
Sleep(300)
EndIf
EndIf
Next
EndIf
Case $Do2 = "Off"
If $strip[$Do3]=1 Then
$Status="выключаю стрип "&$Do3&""
Send ("{f"&$Do3&"}")
EndIf
If $Do3="Active" Then
For $i=1 to $StripNum Step 1
If $strip[$i]=1 Then
If TimerDiff($StrpTimer[$i])>=$RndStrp Then
$Status="Выключаю стрип "&$i&""
_Action("StripControl","Off",$i)
EndIf
EndIf
Next
EndIf
EndSelect
;===============================
Case $Do="LockTarget"
;++++++++++ Лок + Активация дронов
$Status="Лочу цель"
If $LockAdv=0 Then
MouseClick("left", Random($LockAdvCfg[0], $LockAdvCfg[0]+5), Random($LockAdvCfg[1], $LockAdvCfg[1]+5), 1, 20);жмем кнопку лока цели
_Action("Timer",4000,"LockAdv",1)
EndIf
;==============================
Case $Do="StartDrone"
;++++++++++ Старт дронов
If $DroneUse="Да" Then
PixelSearch($DroneStatusCfg[0],$DroneStatusCfg[1],$DroneStatusCfg[2],$DroneStatusCfg[3],$DroneStatusCfg[4],$DroneStatusCfg[5])
If Not @error Then
MouseClick("left", Random(832, 832+20), Random(623, 623+5), 1, 20); раскрываем меню
sleep(Random(900,1500))
EndIf
If $Do2="Stage 1" Then
$Status="Запускаю дронов"
MouseClick("left", Random(830, 830+20), Random(601, 601+5), 2, 20); двойной клик по меню дронов
sleep(Random(800,1000))
MouseClick("left", Random(911, 911+5), Random(74, 74+5), 1, 20);запустить дронов
_Action("Timer",3000)
Sleep(Random(500,1000))
PixelSearch($DroneStatusCfg[0],$DroneStatusCfg[1],$DroneStatusCfg[2],$DroneStatusCfg[3],$DroneStatusCfg[4],$DroneStatusCfg[5])
if Not @error Then
MouseClick("left", Random(832, 832+20), Random(623, 623+5), 1, 20);раскрыть меню для анализа состояния
sleep(Random(900,1500))
EndIf
_Action("Timer",2500,"Strip",0,3)
EndIf
If $Do2="Mine" Then
If $Drones=0 Then
_Action("Timer",500)
;повторная проверка.бывает нужна
If $Drones=0 Then
If $Lock[0]>3 Then
_Check("Lockuse","Free")
_Action("Click","Lock",$FreeLockUse)
_Action("Click","Approach",$FreeLockUse)
EndIf
MouseClick("left", Random(832, 832+20), Random(623, 623+5), 1, 20);меню дронов
sleep(Random(800,1000))
MouseClick("left", Random(860, 860+5), Random(73, 73+5), 1, 20);непрерывно добывать
_Action("Timer",2000,"Drones",1)
EndIf
EndIf
EndIf
EndIf
;==============================
Case $Do="OreToHome"
;++++++++++ кусок сброса лута
;MouseMove(567, 372);двигаем мышь поближе к луту
_Check("CargoReadyOTH")
If $Status="процесс..." Then;or TimerDiff($CicleTime)<=30000 Then
_Action("Timer",100)
Else
; _Action("Timer",1000);!
;MouseClick("left",84, 691,1,8)
;If $CargoReadyOTH[6]=0 Then
; Sleep(200)
;Else
$Status="Сбрасываю лут"
MouseClick("left", Random(402, 402+20), Random(228, 228+20), 1, 20)
Sleep(Random(900,1000))
Send ("^a")
Sleep(Random(900,1000))
MouseClickDrag("left", Random(402, 402+20), Random(228, 228+20), Random(247, 247+30), Random(214, 214+5), 20);
_Action("Timer",2000,"Cargo")
If $FullEmptyCheck="Нет" Then;прописываем данные только тогда,когда пусто.
If TimerDiff($timer)>=60000 Then;для того,чтобы если вначале старта бота есть лут в карго - не считалось за сброс за цикл.
_TicksToTime(Int(TimerDiff($CicleTime)),$hour,$min,$sec);вычисление времени цикла
$CicleWorked=StringFormat("%02d:%02d:%02d", $hour,$min,$sec)
IniWrite("C:\1\Eve.ini","Mined",_NowTime(5), "сброшен лут" & " Бука №" & $x & " Время цикла: "& $CicleWorked)
$LootCount=$LootCount+1;счетчик сброшенного лута
_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
$CicleTime = TimerInit();засекаем длительность последующих циклов.
$TimerOK=0
EndIf
;EndIf
EndIf
EndIf
;================================
Case $Do="Dronecontrol"
;++++++++++ контроль возврата дронов
If $DroneUse="Да" Then
$Status="Забираю дронов"
Send ("+{R}")
Sleep(Random(5000,7000))
PixelSearch($DroneStatusCfg[0],$DroneStatusCfg[1],$DroneStatusCfg[2],$DroneStatusCfg[3],$DroneStatusCfg[4],$DroneStatusCfg[5])
If Not @error Then
MouseClick("left", Random(832, 832+20), Random(623, 623+5), 1, 20);раскрыть меню для анализа состояния
sleep(100)
EndIf
While 1
Sleep (1000)
PixelSearch($DroneReturnCfg[0],$DroneReturnCfg[1],$DroneReturnCfg[2],$DroneReturnCfg[3],$DroneReturnCfg[4],$DroneReturnCfg[5])
If @error Then
ExitLoop
EndIf
$Status="Ждем дрончегов!"
PixelSearch($DroneIdleCfg[0],$DroneIdleCfg[1],$DroneIdleCfg[2],$DroneIdleCfg[3],$DroneIdleCfg[4],$DroneIdleCfg[5])
If Not @error Then
$Status="сцуко дроны зависли,повторяю команду возврата"
Sleep(Random(1500,2000))
Send ("+{R}");если дроны висят,вместо того,чтобы возвратиться - послать команду еще раз.
IniWrite("C:\1\Eve.ini","Error",_Nowtime(5), "Дроны зависли" & " Бука №" & $x)
EndIf
WEnd
$Status="Дроны вернулись!"
Sleep (100)
Endif
;====================================
Case $Do="Timer"
;таймер.использование _Action("Timer","время в милисек","что проверям","номер объекта","Значение").
;как только переменная равна значению для проверки либо истечет таймер - цикл прекращается.
;пример _Action("Timer",2000,"Strip","1","1") проверяет массив strip[1]=1 если значение совпадет,то слип 2 сек.сброситься и
;скрипт продолжит работать,либо если проверка не пройдет,после двух сек.завершиться функция.
$TimerChk=TimerInit()
While 1
Sleep(100)
If TimerDiff($TimerChk)>$Do2 Then
ExitLoop
EndIf
Select
Case $Do3="Strip"
If $Strip[$Do4]=$Do5 Then
ExitLoop
EndIf
Case $Do3="Lock"
If $Lock[$Do4]=$Do5 Then
ExitLoop
EndIf
Case $Do3="LockUse"
If $LockUse[$Do4]=$Do5 Then
ExitLoop
EndIf
Case $Do3="Cargo"
If $FullEmptyCheck="Нет" Then
ExitLoop
EndIf
Case $Do3="LockAdv"
If $LockAdv=$Do4 Then
ExitLoop
EndIf
Case $Do3="Drones"
If $Drones=$Do4 Then
ExitLoop
EndIf
Case $Do3="Station"
If $ProcChk="процесс..." Then
ExitLoop
EndIf
EndSelect
WEnd
;====================================
Case $Do="Click"
If $Do2="Lock" Then
MouseClick("left", Random($LockCenter[0]-($Do3*98-98), $LockCenter[0]-($Do3*98-98)+5), Random($LockCenter[1], $LockCenter[1]+5), 1, 20)
ElseIf $Do2="Approach" Then
Send("{q down}") ;Нажать клавишу Q - чтобы подлететь
Sleep(Random(200,300))
_Action("Click","Lock",$LockCenter)
Sleep(Random(200,300))
Send("{q up}") ;Освободить клавишу A
EndIf
;====================================
EndSelect
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ХОТКЕИ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;++++++++++ завершение работы скрипта + время работы скрипта
Func _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:\1\Eve.ini","Script",_NowCalc(), "Stop,Бука №" & $x &" -- "& "Время работы: "& $ScriptWorked & ", лут сбросил: " & $LootCount&" раз."&" \Цикл в среднем="&$MidCicleTime[0])
EndIf
Exit
EndFunc
;==============
;++++++++++ пауза
Func _pause()
$pause=$pause+1
while $pause=1
$Status="Пауза..."
WEnd
$Status="Снята пауза..."
Sleep(200)
$pause=0
EndFunc
;=======
;++++++++++ активация деактивация дронов
Func DroneUse()
Select
Case $DroneUse="Да"
$DroneUse="Нет"
$Status="Дроны деактивированы"
Sleep(200)
IniWrite("C:\1\Eve.ini","Drone","Use","Нет")
Case $DroneUse="Нет"
$DroneUse="Да"
$Status="Дроны C:\1\Eve.iniактивированы"
IniWrite("","Drone","Use","Да")
Sleep(200)
EndSelect
EndFunc
;=======
;++++++++++ выход из игры - до этого док и сброс лута.
Func _exitgame()
_Action("Dronecontrol")
Send ("{esc}")
sleep (4000)
MouseClick ("left",862, 614,1,20)
IniWrite("C:\1\Eve.ini","Game Exit",_NowCalc(),"Stop,Бука №" & $x)
Return
EndFunc
;======================================
;++++++++++ функция переключения реагирования на конво
Func ConvoSwitch()
Select
Case $ConvoExe="mp3"
$ConvoExe="Выход"
$Status="Реакция на конво = Выход"
Sleep(300)
Case $ConvoExe="Выход"
$ConvoExe="mp3"
$Status="Реакция на конво = MP3"
Sleep(300)
EndSelect
EndFunc
;========================
;++++++++++ функции горячего переключения белтов
Func BeltPlus()
$y=$y+16
$Status="+Бука"
EndFunc
Func BeltMinus()
$y=$y-16
$Status="-Бука"
If $y<151 Then
$y=151
$Status="Ниже некуда"
EndIf
EndFunc
;========================
;========================
;========================