Что нового

Майнер бот. Эволюция от примитивного до умного.v2.5

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

УРА!!! :laugh: Отловил багу!!! :laugh:


Код:
;++++++++++ функция полета на белт
Func WarpToBelt()
    $Status="Варпаюсь на белт"
    MouseClick ("left",62, 47,1,20);клик на треугольник
    MouseMove(120, 47,20);плавно ведем мышь по меню
    MouseMove(120, 133,20)
    ;доводим до списка бук белтов - эти первые 3 операции с мышью
    ;для всех белтов одинаковы
    MouseMove(120, $y,20);доводим до 1го белта в списке(разница в 16 пикселей)
    MouseClick("left",340, $y,1,20);
    ;PixelSearch(839, 7,847, 15,0x868686,10)
    ;;If Not @error Then
    ;   Send("{F11}")
    ;EndIf
    Sleep(4000);ожидание Скольжение активен.
    $DrChk=0
    CheckWarp()
    If $WarpChk=1 Then
        $NearDockWarp=0
    EndIf

EndFunc
;=============================

При клике на треугольник без задержки смещение мыши... если шел миллисекундный лаг, то окно могло появиться не идеально и быть смещено... в тоге корабль брал разгон вместо варпа... отсюда и астеройды все >10км... и буки резко кончались... :smile:
Добавил sleep(500) после MouseClick ("left",62, 47,1,20)... должно теперь быть все :ok:
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

При клике на треугольник без задержки смещение мыши... если шел миллисекундный лаг, то окно могло появиться не идеально и быть смещено... в тоге корабль брал разгон вместо варпа... отсюда и астеройды все >10км... и буки резко кончались... :smile:
Добавил sleep(500) после MouseClick ("left",62, 47,1,20)... должно теперь быть все
Ок.Предположим,что меню сместилось.Мне вот что не понятно.Когда он пытается варпнуться на белт и даже если ,вдруг это смещение произойдет.Ситуация не изменится!!!!! Он через четыре секуды начнет снова пытаться варпнуться и он не станет плюсовать буку,потому что Бот из переменной знает,что он еще не на белте.
Это может произойти только если ты изменил мой код.И ,конечно,зная что он не на белте - он не будет проверять наличие астероидов ближе 10 км.
Даже старая версия бота - линейная макаронина и та бы не плюсанула белт,потому что этап считался пройденным только тогда,когда проходила проверка на активацию гиперпрыжка.

На всякий добавлю в след.версии Sleep(300).
у тебя бот после выполнения процедуры варптубелт - сразу независимо от результата плюсует белты - а это не есть хорошо.Тут не только слипами надо дело решать,а еще разбираться - почему бот ведет себя неправильно :smile: Отучи его от этой нехорошей затеи плюсовать белты и думать,что он уже на белте,когда не нужно.
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

Хм... странно... что именно шло не так в каждый момент когда окно появлялось не идеально... но могло быть все что угодно, в плоть до того чтобы уварпать на планету.. не найти астеройды и сменить буку...

Обязательно проверю... и научу более точно отличать белт, от всего остального...
Думаю добавить к повторной проверке на >10км. Проверку возможности варпа на текущую буку. Думаю это будет достаточно.

ЗЫ С ночи до ДТ работал, как часы... :beer:

ЗЫЫ sleep(500) на полет с белта тоже поставил. :smile:

ЗЫЫЫ Еще подумываю сменить клиент на Английский. Хоть названия меняться не будут. :smile:
 

hikki

Продвинутый
Сообщения
233
Репутация
99
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

клиент на английском, с настройками близкими к умолчальным это первое что стоило сделать, ну и соответственно настройки бота чтоб отдельно лежали от основных
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

Ага.Если бы я хотел сильно облегчить процесс интеграции бота - да.Мне нравится мысль,когда я представляю,что человек,который захочет установить себе бота,не просто тупо скопирует его,запустит и будет рад халяве,а что-то для этого сделает.Если человек не в состоянии открыть хелп и подбить для себя pixelsearch,то такой человек мне совершенно неинтересен на данном форуме.Например,я очень рад,что zlo-kazan уже подбил под себя бота и что-то пытается исследовать в нем,искать ошибки и делится этим.Это лучшая награда для меня.Я хочу,чтобы таких людей на форуме появлялось больше...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

На любой алгоритм можно без труда поверх накодить гуй и это гарантирует его 100-ю интеграцию
55.gif
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

Версия 2.30
Изменения:
1.Слил кучи функций в две большие с аргументами.Одна отвечает за действия,другая за проверки.(в принципе легко можно теперь сделать 2 скрипта,один проверяет,другой действует)
2.Оптимизировал и сократил код на где-то на 100 строк.
3.Много мелких фиксов старых функций.Убрал громозкую функцию Checkbeltnum() ,сделал другую с определением по формуле в одну строку.

Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\icons\иконки устройств\1013.ico
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Date.au3>

Opt("TrayIconDebug", 1)
Opt("PixelCoordMode", 2) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна
Opt ("MouseClickDelay", 20);Задаем интенсивность нажатия мыши.
Opt ("SendKeyDownDelay", 100)
HotKeySet ("{`}","_exit");задаем горячую клавишу остановки скрипта
HotKeySet ("{\}","_pause")
HotKeySet ("{RIGHT}","BookmarkPlus");горячая клавиша изменения номера буки в процессе работы бота +
HotKeySet ("{LEFT}","BookmarkMinus");горячая клавиша изменения номера буки в процессе работы бота -
HotKeySet("{UP}","DroneUse");активировать,деактивировать работу дронов.
HotKeySet("{DOWN}","ConvoSwitch");выбрать реакцию на конво mp3 или выход из игры.
WinMove("EVE", "", -3, -27)

;+++ Шапка +++
Global $CharName="Char Name";здесь имя вашего чара в еве
Global $Status="#";это переменная текущего действия или процесса.
Global $NearDockWarp=0;после разгруза возле станции.ситуация - нет астеров-> белт+1,летим на белт.чтобы избежать этого информ.логику просто варпаться после разгруза.
Global $Dock=0;ситуация при прилете к станции-нет астероидов-->летим на белт.чтобы избежать этого информируем логику ждать дока,а не варпаться.
Global $MidCicleTime[4];средняя длительность цикла
Global $CicleWorked=0;длительность последнего цикла
Global $ConvoExe="mp3";ставим по умолчанию срабатывание mp3 при срабатывании проверки конво
Global $DroneUse=IniRead("D:\Eve.ini","Drone","Use","Да");использовать ли боту дронов в процессе.
Global $ProcChk;процесс
Global $RndStrp;рандомная длительность активности стрипа
Global $all;все в одной переменной.пока не используется
Global $FullEmptyCheck;проверка на наличие любого лута,если на станции
Global $SpaceChk;проверка на космос.
Global $WarpChk;проверка на варп
Global $Belt;состояние возможности майнить на белте.
Global $CargoChk;переменная заполненности трюма
Global $10kmChk;переменная проверки 10км
Global $AsterChk;переменная наличия астероидов на буке
Global $LockChk;переменная лока
Global $StripChk;переменная активности стрипов
Global $LootCount=0;счетчик количества сбросов лута за время работы бота.
Global $DrChk;счетчик для вычисления кликов мышью.если только прилетели на белт полный набор кликов для запуска дронов и активации майна ими.
Global $pause
Global $CicleTime;переменная длительности цикла
Global $timer = TimerInit();таймер общей работы скрипта
Dim $hour,$min,$sec
Global $y=133;координата Y в меню бук.
Global $x;Номер буки
;===================================
AdlibRegister("Status")
IniWrite("D:\eve.ini","Script", _NowCalc(),"Start,Бука №" & $x)
$CicleTime = TimerInit();засекаем длительность 1 цикла.
While 1
Mine()
Wend

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ЛОГИКА;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func Mine()
Local $StrpTimer;переменная таймера работы стрипа
While 1
	AllChecks()
	Select
		Case $SpaceChk="Загрузка..." or $ProcChk="процесс..." or $WarpChk=1
			Sleep(100)
		Case $SpaceChk="Док"
			If $FullEmptyCheck="Есть" Then
				_Action("OreToHome")
			Else
				_Action("Undock")
			EndIf
		Case $CargoChk=1
			If $Dock=1 Then
				$Status="Жду док..."
				Sleep(300)
			Else
				_Action("Dronecontrol")
				_Action("Dock")
			EndIf
		Case $AsterChk=0;если белт не ботабельный,то летим дальше...
			If $Dock=1 Then
				$Status="Жду док..."
				Sleep(300)
			EndIf
			If TimerDiff($CicleTime)<=30000 or $NearDockWarp=1 Then;если бот только запустился или андокнулся варпаемся на белт,не плюсуя буку
				_Action("WarpToBelt")
			Else
				_Action("WarpToBelt","Бука+")
			EndIf
		Case $AsterChk=1;если белт ботабельный,то...
			If $LockChk=0 Then;если нет лока,то...
				_Action("StripChk","Off");проверка выключены ли стрипы - иногда дроны съедают астер и стрипы продолж.работать.выключаем если так.
				_Check("Chk10km");проверка ближе или дальше 10км - так как для этого нужно кликнуть мышей - вывел из цикла проверок.
				If $10kmChk="<10км" Then;если астероид ближе 10км
					_Action("LockTarget");лочим
					_Action("StartDrone");дроны атаке
				EndIf
				If $10kmChk=">10км" Then;если астеры ближе 10 км кончились.
					Sleep(5000)
					_Check("Chk10km");---- 	ЭТА ПОВТОРНАЯ ПРОВЕРКА НА ВСЯКИЙ СЛУЧАЙ.
					If $10kmChk="<10км" Then;если астероид ближе 10км
						IniWrite("D:\eve.ini","Error",_Nowtime(5), "Сработала повторная проверка" & " Бука №" & $x)
						_Action("LockTarget");лочим
						_Action("StartDrone");дроны атаке
						;-----///-------
					Else
						_Action("WarpToBelt","Бука+");если не кончились буки - летим на следующую.
					EndIf
				EndIf
			EndIf
			If $LockChk=1 Then;если лок есть,то...
				If $StripChk=1 Then;если стрипы пашут,проверяем прошло ли от 25-30 сек.если прошло - остановить стрипы.
					_Action("StripChk","On")
					$Status="Грызу метеор"
					If	TimerDiff($StrpTimer)>=$RndStrp Then
						_Action("StripChk","On");проверка для всех стрипов,так как активность $StripChk проверяется по первому стрипу- иногда нужно выровнять.
						$Status="Выключаю стрипы"
						Send ("{f1}")
						Send ("{f2}")
						Send ("{f3}")
						Sleep(2000)
					EndIf
				EndIf
				If $StripChk=0 Then;если стрипы не работают...
					$StrpTimer = TimerInit();активируем таймер,для проверки сколько работают стрипы.
						$Status="Включаю стрипы"
						Send ("{f1}")
						Send ("{f2}")
						Send ("{f3}");включаем стрипы
						$RndStrp=Random(30000,35000)
						MouseMove(774, 183);возвращаем мышку ближе к след.клику,чтобы потом не тратить на это время.
						Sleep(2000);если уменьшить стрипы не успев включиться,могут выключиться.
				EndIf
			EndIf
		Case Else
			$Status="Неописанная ситуация!"
			Sleep(100)
	EndSelect
WEnd
EndFunc
;=================================================
Func Status();тултип - важная информация о боте в данный момент.обрабатывается adlib,поэтому всегда актуальна.
	_Check("bookmark")
	ToolTip("Белт №"&$x&"\Ср.длит.цикла="&$MidCicleTime[0]&"\Конво="&$ConvoExe&"\Использование дронов="&$DroneUse&@LF&"Статус = "&$Status,0,0)
EndFunc

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Действия;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _Action($Do,$Do2="No")
	Select
		Case $Do="Dock"
		;++++++++++ Полет домой
			$Status="Докаюсь"
			MouseClick ("left",62, 47,1,20);клик на треугольник
			MouseMove (123, 56,20);аккуратно ведем мышь
			MouseMove (123, 157,20);дом
			MouseMove (223, 157,20);додвигаем до начала меню дом
			Sleep(300)
			PixelSearch(215, 250,356, 256,0x8F8F8F,10)
			If Not @error Then
				MouseClick ("left",223, 220,1,20);5й пункт 1й буки
				sleep (4000)
				_Check("CheckWarp")
				If $WarpChk=1 Then
					$dock=1
				EndIf
			Else
				MouseClick ("left",223, 203,1,20);4й пункт 1й буки - если мы возле станции
				If $NearDockWarp=1 Then
					Sleep(20000)
				EndIf
				$dock=1
			EndIf
		;========================================
		Case $Do="WarpToBelt"
		;++++++++++ функция полета на белт
			If $Do2="Бука+" Then
				$y=$y+16
				$Status="Меняю белт"
				If $DroneUse="Да" Then
				_Action("Dronecontrol");рекурсия - уж лучше с ней,чем 2 раза повторять кусок кода.
				EndIf
				If $y>454 Then
					_exitgame()
					_exit()
				EndIf
			EndIf

			$Status="Варпаюсь на белт"
			MouseClick ("left",62, 47,1,20);клик на треугольник
			MouseMove(120, 52,20);плавно ведем мышь по меню
			MouseMove(120, 133,20)
			MouseMove(240, 133,20)
			;доводим до списка бук белтов - эти первые 3 операции с мышью
			;для всех бук одинаковы
			MouseMove(240, $y,20);доводим до 1й буки в списке(разница в 16 пикселей)
			MouseClick("left",340, $y,1,20);
			;PixelSearch(839, 7,847, 15,0x868686,10)
			;;If Not @error Then
			;	Send("{F11}")
			;EndIf
			Sleep(4000);ожидание Гипердрайв активен.
			$DrChk=0
			_Check("CheckWarp")
			If $WarpChk=1 Then
				$NearDockWarp=0
			EndIf


		;======================================
		Case $Do="Undock"
		;++++++++++ вылет со станции.
			$Status="Андок"
			MouseClick("left",17, 735);щелчок на андок
			$Dock=0
			$NearDockWarp=1
		;=====================================
		Case $Do="StripChk"
		;++++++++++ контроль стрипов
			Select
				Case $Do2 = "On"
					PixelSearch(611, 650,612, 650,0x000000);проверка активности 1го стрипа
						If Not @error Then
							$Status="стрип 1 не включился - активирую..."
							IniWrite("D:\eve.ini","Error",_Nowtime(5), "противофаза - стрип 1 не включился" & " Бука №" & $x)
							Send ("{f1}")
							Sleep (500)
						EndIf
					PixelSearch(662, 650,663, 650,0x000000)
					If Not @error Then
						$Status="стрип 2 не включился - активирую...";проверка активности 2го стрип
						IniWrite("D:\eve.ini","Error",_Nowtime(5), "противофаза - стрип 2 не включился" & " Бука №" & $x)
						Send ("{f2}")
						Sleep (500)
					EndIf
					PixelSearch(713, 650,714, 650,0x000000);проверка активности 3го стрипа
					If Not @error Then
						$Status="стрип 3 не включился - активирую..."
						IniWrite("D:\eve.ini","Error",_Nowtime(5), "противофаза - стрип 3 не включился" & " Бука №" & $x)
						Send ("{f3}")
						Sleep (500)
					EndIf

				Case $Do2 = "Off"
					PixelSearch(611, 650,612, 650,0x000000);проверка на выключение 1го стрипа
					If @error Then
						$Status="стрип 1 не выключился - выключаю..."
						IniWrite("D:\eve.ini","Error",_Nowtime(5), "противофаза - стрип 1 не выключился" & " Бука №" & $x)
						Send ("{f1}")
						Sleep (500)
					EndIf
					PixelSearch(662, 650,663, 650,0x000000)
					If @error Then
						$Status="стрип 2 не выключился - выключаю...";проверка на выключение 2го стрипа
						IniWrite("D:\eve.ini","Error",_Nowtime(5), "противофаза - стрип 2 не выключился" & " Бука №" & $x)
						Send ("{f2}")
						Sleep (500)
					EndIf
					PixelSearch(713, 650,714, 650,0x000000);проверка на выключение 3го стрипа
					If @error Then
						$Status="стрип 3 не выключился - выключаю..."
						IniWrite("D:\eve.ini","Error",_Nowtime(5), "противофаза - стрип 3 не выключился" & " Бука №" & $x)
						Send ("{f3}")
					EndIf
			EndSelect
		;===============================
		Case $Do="LockTarget"
		;++++++++++ Лок + Активация дронов
			$Status="Лочу цель"
			MouseClick ("left",879, 76);жмем кнопку лока цели
			If $DroneUse="Нет" Then
				Sleep (2500);ждем лок
			EndIf
		;==============================
		Case $Do="StartDrone"
		;++++++++++ Старт дронов
			If $DroneUse="Да" Then
				$Status="Запускаю дронов"
				If $DrChk=0 Then
					MouseClick ("right",779, 628);меню дронов
					sleep(200)
					MouseClick ("left",806, 654);запустить дронов
					Sleep (3000)
					MouseClick ("right",779, 648);меню дронов
					sleep(500)
					MouseClick ("left",808, 695);непрерывно разрабатывать
					sleep(100)
					$DrChk=$DrChk+1
				Else
					MouseClick ("right",779, 648);меню дронов
					sleep(2500)
					MouseClick ("left",808, 695);непрерывно разрабатывать
					sleep(100)
				EndIf
			EndIf
		;==============================
		Case $Do="OreToHome"
		;++++++++++ кусок сброса лута
			If $Status="процесс..." or TimerDiff($CicleTime)<=30000 Then
				Sleep(100)
			Else
				Sleep (3500)
			EndIf
			$Status="Сбрасываю лут"
			MouseClick("left",150, 597,1,20)
			Send ("^a")
			MouseClickDrag ("left",63, 665,83, 366,20)
			Sleep (2000)
			_Check("FullEmptyCheck")
			If $FullEmptyCheck="Нет" Then;прописываем данные только тогда,когда пусто.
				If TimerDiff($timer)>=60000 Then;для того,чтобы если вначале старта бота есть лут в карго - не считалось за сброс за цикл.
					_TicksToTime(Int(TimerDiff($CicleTime)),$hour,$min,$sec);вычисление времени цикла
					$CicleWorked=StringFormat("%02d:%02d:%02d", $hour,$min,$sec)
					IniWrite("D:\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();засекаем длительность последующих циклов.
				EndIf
			EndIf
		;================================
		Case $Do="Dronecontrol"
		;++++++++++ контроль возврата дронов
			If TimerDiff($CicleTime)<=30000 or $DroneUse="Нет" Then
				Return
			Else
				$Status="Забираю дронов"
				Send ("!{2}")
				;PixelSearch(1009, 644,1009, 644,0x010203,5);проверка открыто ли меню.когда не раскрыто - в этом пикселе точка черного цвета.
				;If Not @error Then
				MouseClick ("left",779, 648);раскрыть меню для анализа состояния
				;	sleep(100)
				;EndIf

				While 1
					Sleep (1000)
					PixelSearch(938, 666,959, 669,0x404040)
						If @error Then
							ExitLoop
						EndIf
					$Status="Ждем дрончегов!"

					PixelSearch(844, 664,920, 671,0x00DC00,10)
					;иногда после нажатия назначенной комбинации клавиш для возврата дронов,они просто прилетают к кораблю со статусом - не используется.проверяем.
					If Not @error Then
						$Status="сцуко дроны зависли,повторяю команду возврата"
						Sleep(2000)
						Send ("!{2}");если дроны висят,вместо того,чтобы возвратиться - послать команду еще раз.
						IniWrite("D:\eve.ini","Error",_Nowtime(5), "Дроны зависли" & " Бука №" & $x)
					EndIf
				WEnd
				$Status="Дроны вернулись!"
				MouseClick ("left",779, 648);закрыть меню.можно раскомментить вначале функции проверку на раскрытость.проще просто закрыть.
				Sleep (100)
			Endif
		;====================================

	EndSelect
EndFunc


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Проверки;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _Check($Object)
	Select
		Case $Object="bookmark"
			;++++++++++ узнаем номер буки по текущей координате y
				$x=($y-133)/16+1
			;======================
		Case $Object="Chk10km"
			;++++++++++ Ближе или дальше 10км
			MouseClick("left",774, 183,1,20)
			Sleep(500)
			PixelSearch (828, 40,830, 44,0x8F8F8F,10);проверка диапазона пикселей между 2х значным XX числом километров и слова км.на наличие серого оттенка цвета(цвет чисел).
			If not @error Then;PixelSearch (836, 40,840, 44,0x8F8F8F,10) если появился нужный цвет в диапазоне,значит мы уже ближе 10км и представление цифр изменилось на XXXX м.
				$10kmChk="<10км"
			Else
				PixelSearch (943, 74,951, 87,0x8E8E8E,10)
				If @error Then
				$10kmChk=">10км"
				Else
				PixelSearch (836, 40,840, 44,0x8F8F8F,10)
				If @error Then
				$10kmChk="<10км"
				EndIf
				EndIf
			$10kmChk=">10км"
			EndIf
			;======================
		Case $Object="StrpChk"
			;++++++++++ Активность стрипов
			PixelSearch(611, 650,612, 650,0x000000);проверяется по двум черным пикселям под 1ым модулем
			If Not @error Then
				$StripChk=0
			Else
				$StripChk=1
			EndIf
			;========================
		Case $Object="AsterChk"
			;++++++++++ проверка на наличие астероидов на белте
			PixelSearch(926, 177,1005, 267,0xB1B1B1,10)
			If Not @error Then
			$AsterChk=1
			Else
			$AsterChk=0
			EndIf
			;========================
		Case $Object="LockCheck"
			;++++++++++ проверка цели на лок
			PixelSearch(621, 80,636, 80,0x404040,10)
			If not @error Then
				$LockChk=1
			Else
				$LockChk=0
			EndIf
			;===============================
		Case $Object="CargoCheck"
			;++++++++++ проверка на заполненность трюма
			PixelSearch (279, 617,279, 617,0x005067,10);проверка на наличие синего цвета.если есть,то заполнен.
			If Not @error Then
				$CargoChk=1
			Else
				$CargoChk=0
			EndIf
			;==================================
		Case $Object="CheckWarp"
			;++++++++++ функция проверки окончания варпа
			PixelSearch (433, 527,433, 527,0xBFBFBF,10);проверяется левый верхний пиксель буквы Г в слове Гиперпрыжок :)пока он есть мы в гиперпрыжке.
			If @error Then
				$WarpChk=0
			Else
				$WarpChk=1
				$Status="Варпаюсь"
			EndIf
			;=============================
		Case $Object="CheckSpace"
			;++++++++++ проверка на космос
			PixelSearch(3, 713,29, 728,0xFFD342,10)
			If Not @error Then;- мы находимся в доке.
				$SpaceChk="Док"
			Else
				PixelSearch(737, 122,737, 122,0xCFCFCF,10);ищем треугольник овервью
				if not @error Then ;- мы находимся в космосе.
					$SpaceChk="Космос"
				Else
					$SpaceChk="Загрузка...";меню загрузки
					$Status="Загрузка"
				EndIf
			EndIf
			;======================================
		Case $Object="CheckProcess"
			;++++++++++ проверка на процесс(загрузка в док)
			PixelSearch(377, 391, 646, 413, 0xB3B3B3, 10)
			If Not @error Then
				$ProcChk="процесс..."
				$Status="процесс"
			Else
				$ProcChk="-"
			EndIf
			;======================================
		Case $Object="FullEmptyCheck"
			;++++++++++ проверка - сброшен лут или нет.
			PixelSearch (186, 618,186, 618,0x041115,10)
			If Not @error Then
				$FullEmptyCheck="Нет"
			Else
				$FullEmptyCheck="Есть"
			EndIf
			;=================================
		Case $Object="ConvoCheck"
			;++++++++++ функции проверки конво
			Local $ConvoChk[4]
			;1я проверка
			PixelSearch (303, 172,819, 581,0xFFA600,10)
			If Not @error Then
				IniWrite("D:\eve.ini","Convo",_NowCalc(), "Конво!!!сработала проверка 1")
				$ConvoChk[1]=1
			Else
				$ConvoChk[1]=0
			EndIf
			;2я проверка
			PixelSearch (303, 172,819, 581,0x6284AF,10)
			If Not @error Then
				IniWrite("D:\eve.ini","Convo",_NowCalc(), "Конво!!!сработала проверка 2")
				$ConvoChk[2]=1
			Else
				$ConvoChk[2]=0
			EndIf
			;3я проверка
			PixelSearch (303, 172,819, 581,0x0064C0,10)
			If Not @error Then
				IniWrite("D:\eve.ini","Convo",_NowCalc(), "Конво!!!сработала проверка 3")
				$ConvoChk[3]=1
			Else
				$ConvoChk[3]=0
			EndIf

			If $ConvoChk[1]=1 Or $ConvoChk[2]=1 Or $ConvoChk[3]=1 Then ;если вдруг срабатывает любая- принтскрин и загрузка громкой мелодии :)
				$Status="Сработала проверка конво -"&$ConvoExe&""
				Send ("{PRINTSCREEN}")
				If $ConvoExe="mp3" Then
					ShellExecute ("D:\Autoit\proekts\1.mp3")
					_pause()
				Else
					_exitgame()
					_exit()
				EndIf
			EndIf
		;======================================
		EndSelect
EndFunc
;========================
;========================
;========================



;++++++++++ Проверки в одной функции - чтобы избежать рекурсии
Func AllChecks()
	WinActivate("EVE - "&$CharName)
	Sleep(100)
	_Check("CheckProcess")
	If $ProcChk="процесс..." Then
		Sleep(100)
		Return
	EndIf
	_Check("CheckSpace")
	If $SpaceChk="Загрузка..." Then
		Sleep(100)
		Return
	EndIf
	If $SpaceChk="Док" Then
		_Check("FullEmptyCheck")
		Sleep(100)
		Return
	EndIf
	_Check("CheckWarp")
	If $WarpChk=1 Then
		Sleep(100)
		Return
	EndIf
	_Check("CargoCheck")
	_Check("LockCheck")
	_Check("StrpChk")
	_Check("AsterChk")
	_Check("ConvoCheck")
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)
	IniWrite("D:\eve.ini","Script",_NowCalc(), "Stop,Бука №" & $x &" -- "& "Время работы: "& $ScriptWorked & ", лут сбросил: " & $LootCount&" раз."&" \Цикл в среднем="&$MidCicleTime[0])
	Exit
EndFunc
;==============
;++++++++++ выход из игры - до этого забираем дронов если они использовались.
Func _exitgame()
	_Action("Dronecontrol")
	Send ("{esc}")
	sleep (4000)
	MouseClick ("left",851, 606,1,20)
	IniWrite("D:\eve.ini","Game Exit",_NowCalc(),"Stop,Бука №" & $x)
	Return
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("D:\Eve.ini","Drone","Use","Нет")
		Case $DroneUse="Нет"
			$DroneUse="Да"
			$Status="Дроны активированы"
			IniWrite("D:\Eve.ini","Drone","Use","Да")
			Sleep(200)
	EndSelect
EndFunc
;=======
;++++++++++ функция переключения реагирования на конво
Func ConvoSwitch()
	Select
		Case $ConvoExe="mp3"
			$ConvoExe="Выход"
			$Status="Реакция на конво = Выход"
			Sleep(300)
		Case $ConvoExe="Выход"
			$ConvoExe="mp3"
			$Status="Реакция на конво = MP3"
			Sleep(300)
	EndSelect
EndFunc
;========================
;++++++++++ функции горячего переключения Бук
Func BookmarkPlus()
		$y=$y+16
		$Status="+Бука"
EndFunc
Func BookmarkMinus()
	$y=$y-16
	$Status="-Бука"
	If $y<133 Then
		$y=133
		$Status="Ниже некуда"
	EndIf
EndFunc
;========================
;========================
;========================
 

bober

Новичок
Сообщения
13
Репутация
2
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

Использую достаточно давно бот, но кое что заметил еще в начале, и теперь вижу в твоем боте их - причем я от них избавился сразу.

Смотри любой бот это машина а раз так она делает повторяющиеся действия, а человек это сплошной случайный набор ...

sleep (random(250,500))

$x=10 ; искомые координаты
$y=10
MouseMove (Round(random($x-5,$x+5)),Round(random($Y-5,$Y+5)),20)
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

Суровое изложение мысли, у меня чуть мозг не вскипел пока я читал
106.gif
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

Ого - смотрю кодеров прибавилось :laugh: и бельфогор наконец то снял завесу секретности со своего кода. Спасибо.
-------
Щас буду изучать, что написали за 2 месяца. Тоже пришел к выводу что вермишель - для бота плохая идея - хотя работает, с контролем. Нового бота тоже буду делать на основе индикаторов состояний. Кстати понял, что для каждого корабля и ситуации надо немного переделывать бота. У меня уже скопилось 5 разных "макросов"
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

Почему же. Смотря как код написать, например мой майнер бот будет копать одинаково эффективно как на нуб шипе так и на хулке и на любом промежуточном корабле
39.gif
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

Кстати - нужно будет проверить разницу при работе стрипов разнесенных по 30 секунд и на дефолтных значениях.Если окажется,что без разницы - тогда я прямо здесь напишу,что моя задумка разнести стрипы по времени - херня.А если нет,значит одинаково эффективным любой бот на разных рудах не может быть и придется править слегка любого бота(либо ставить надстройки в гуи для разных типов руды) ,например,на лед.Под эффективностью я подразумеваю прибыльность.Самому интересно...
 

LapaM

Новичок
Сообщения
7
Репутация
4
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

На лед точно нужен отдельный макрос. Лед ложится в трюм, только если прошел целый цикл и целым числом кусков. Т.е если отрубить стрип раньше останемся с носом, может полностью не заполнить трюм и т.д. А руду эффективнее копать не целыми циклами. И к тому же длина оптимальной работы стрипа зависит от руды
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

Новую версию пока не тестил. :smile: Займусь завтра.
Но есть пара мыслей и задумок которыми хотел бы поделиться. :smile: Про 2 и более акков. :smile:

1. Пришло в голову с начала это сделать в рамках одной программы. Она сама переключается... цикл:
Проверка 1-го окна. Действие 1-го окна. Проверка 2-го окна. Действие 2-го окна. И т.д.
+ Все делает одна прога.
- Нужно переменные загонять масив. и писать логику для переключения и т.д..

2. Это бот надсмотрщик который паузит одного и анпаузить второго и т.д.
+ Почти не нужно переделывать бота. Копипастим бота, изменяем имя искомого на EVE nick. Надсмоторщик будет строк в 20.
- Возможны глюки и потеря времени... (хотя тут будет более похоже на реального человека) также нужно на практике подогнать оптимальное время пауз. 5сек. 10сек. 20сек.

3. Можно заморочиться с виртуальными машинами.
+ Боты не мешают друг другу и не мешают юзать комп.
- Тратит много лишних ресурсов CPU/memory. (если на каждого бота новая виртуалка)
 

asa12

Новичок
Сообщения
66
Репутация
3
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

yaodnako сказал(а):
Кстати - нужно будет проверить разницу при работе стрипов разнесенных по 30 секунд и на дефолтных значениях.Если окажется,что без разницы - тогда я прямо здесь напишу,что моя задумка разнести стрипы по времени - херня.А если нет,значит одинаково эффективным любой бот на разных рудах не может быть и придется править слегка любого бота(либо ставить надстройки в гуи для разных типов руды) ,например,на лед.Под эффективностью я подразумеваю прибыльность.Самому интересно...
Эта проблема у меня вылетала постоянно "при дефолтных настройках". Дело в том, что бот то проверяет и включает 1 сприп - пока игра идет.(другой сприп в этот момент выключается так как астероид кончился).
Правда через пару циклов астероидов всё возвращается на свои места. Убыток 2 полных цикла стрипов раз в 12 мин. Я их не выключаю, как ты.
Джетисон наполняется 27000 за 23-27 мин. с трех стрипов по 1018,8 м3.
-----------
Как разберусь, как здесь постить код покажу включение и проверку лока астеров мою.
-----
"дефолтные настройки" - полный цикл стрипов по три минуты
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

To asa12:
Эта проблема у меня вылетала постоянно "при дефолтных настройках". Дело в том, что бот то проверяет и включает 1 сприп - пока игра идет.(другой сприп в этот момент выключается так как астероид кончился).
Правда через пару циклов астероидов всё возвращается на свои места. Убыток 2 полных цикла стрипов раз в 12 мин. Я их не выключаю, как ты.
Джетисон наполняется 27000 за 23-27 мин. с трех стрипов по 1018,8 м3.
Непонятно что ты имел ввиду.Какая проблема?
У меня тоже стоит проверка по первому стрипу,но вначале и в конце цикла всегда проверяются все стрипы.Можешь вставить проверку на включенность-выключенность стрипов из этого бота и если в ненужный момент стрип продолжает работать - функция выключает его.В принципе,если очень нужно,то можно сделать проверку вообще всех стрипов,но так как у меня все работает прекрасно - не стал переделывать.
To Zlo-kazan:
О нескольких акках даже не думал,поэтому в эту сторону развивать бота вряд ли буду.У меня чисто исследовательский интерес.
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

протестил бота с дефолтным циклом без разброса.Среднее время цикла стало 20 минут.против 13 минут с разбросанными по 30 сек.стрипами.целых 7 минут на цикл - это просто вселенские потери.170000 кубов(в моем случае).11 миллионов 100 тысяч исков теряем за ночь 10 часов.Разброс стрипов вытягивает этого бота на велдспаре и скордите на уровень ледового.Иначе бот на дефолтных настройках делал бы всего за ночь порядка 20 лямов исков,а не 30кк.Если использовать длительность стрипов по умолчанию - бот впринципе не может быть эффективным.Кроме ледового или еще может какого,где нужен именно полный цикл.
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

1. А если лочить 3 цели и рыть каждый свой? (как человек)

2. Почему именно 30 сек? Почему не 20 и не 40? я так понимаю это связанно с капой?
 
Автор
yaodnako

yaodnako

Продвинутый
Сообщения
120
Репутация
78
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

1.Если сделаешь - поделись кодом :blum:.Я думал об этом.Это было бы круто,потому что потери еще сильнее бы снизились.Но это пока сложновато для меня,нужно делать проверки на каждый лок,на слежение за каждым стрипом на каждом локе и активность каждого,чтобы бот понимал какой из стрипов свободен,чтобы его активировать на свежий лок,определение в овервью - какой из астеров уже залочен,а какой нет+сколько стрипов в данный момент активно на конкретном локе,потому что могут возникнуть ситуации,когда возможно только 2 или 1 лок,соответственно придется иногда по 2 или 3 стрипа на один лок делать.Придется переделывать полностью логику для всего этого.Подумаю в этом направлении,может и не так сложно как я думаю - интерес покопаться есть.можно вообще и 4й сделать лок - для дронов.
2.Можно и 20 и 40.Не только от капы зависит.Попробуй разное время и найди оптимальное для себя(если у тебя не вкачаны скилы также как у меня - у нас возможности майна отличаются).У меня во время написания бота шел кач и стабильности не было ,поэтому адекватно сравнить разброс стрипов не предоставлялся возможным.Думаю в ближайшее время протестирую на 20,40,50 - включу в след.версию самый оптимальный для меня.Тут есть один момент - чем меньше время активности стрипа ставишь - тем больше теряем секунд за цикл,потому что включение-выключение стрипа=2 сек(а таких вкл-выкл за цикл много происходит),но зато меньше теряем,когда кончается астероид.Чем больше время активности стрипа,тем меньше теряем на вкл-выключении,но больше теряем,когда кончается астероид.Так как ,когда астер кончился - неважно сколько там осталось - хоть 50 кубометров,все равно тратиться столько времени цикла,сколько выставишь(т.е. при дефолтном значении ты получишь 50 кубометр за 180 сек :smile:т.е.теряем дохрена времени ).на данный момент у меня стоит рандом от 30 до 35 сек.
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Re: Нубский Майнер Бот(замкнутая вермишель) -->умный бот.

A) Лок проверить можно по графе иконка. Там появляются 2 белых треугольника.
B) Какой из залоченых выделен в данный момент можно проверить по белой и серой полосками квадрата.
C) Проверить 10км. можно моим способом... по буквам в овервью 9 м / 99 м / 0,999 м / 9,999 м / 10 км. Ищем букву к. пока её нет астеройд до 10км.
D) Грызется ли астеройд чем либо в данный момент?

P.S. Тут не так важно чтобы грыз каждый свой определенный кусок. главное чтобы новый стрип включался на свободный.

P.S.S. Как появится время попробую накодить свой вариант, его протестить и выложить. :smile:
 
Верх