Что нового

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

Zuzik

Знающий
Сообщения
45
Репутация
5
Re: Нубский Майнер Бот(замкнутая вермишель)

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

А насчёт гуи... несмотря на то что я любитель полазить и посидеть с ушами в коде, порой хочется человеческого инпута, и запуска Бота кнопкой старт)
 

Belfigor

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

http://autoit-script.ru/index.php?topic=1858.0
Вынес в отдельный тред, далее бота Зузика комментируем там.
 

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
Re: Нубский Майнер Бот(замкнутая вермишель)

hikki сказал(а):
2. очень много абсолютных значений, координат кликов и тд. используй привязку к чему либо, треугольник овервью, внизу треугольник HUD, слева сверху треугольник главного меню, большинство операций проходят вокруг них и если определены эти координаты то и остальное тоже будет работать. темболее что находятся они тоже легко.
и тд.
2 Белфигор: А помнишь, с каким трудом эти идеи пробивались в жизнь? ;)
А помнишь, сколько времени и с каким старанием мы прививали эти идеи на форуме?
2 Хикки: Красава. Пральна мыслишь. :smile:
2 Зюзик: Поищи по-форуму "теория относительности"
 

Belfigor

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

Помню. Я попытался возродить те концепты, но отказался от концепции If логики, на ее построение уходит слишком много времени и пришел к глобальной оценке ситуации :smile:
 
Автор
yaodnako

yaodnako

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

Посидел я подумал.Доделал костылей.А костыли то можно делать и делать и делать.И решил,что нафиг - буду с нуля делать,но более менее умного бота.Эту вермишелину отшлифовал - работает как часы - накрутил почти все проверки.убрал все координаты - решил,что хочу,чтобы человек,скачавший бота - (пусть даже это вермишель)пошевелил мозгами и настроил все сам - к тому же все очень подробно расписано что и где кликается,ищется... :smile:
Затупить бот может только,если белт будет сгрызан полностью - прикручивать варп на другие белты не хочу.

За советы,сделанные ранее всем огромное спасибо!Я их впитал и обрабатываю :smile:
Буду думать как составлять умного бота...
Как бы сделать так,чтобы в коде было как можно меньше вермишелин?
Как реализовать качественный скелет для бота?
- если есть советы - куда пристально глянуть на этом форуме для меньшего количества ошибок(особенно таких,при которых заного придется переделывать) - посоветуйте - буду вам очень благодарен.Хочу бота,которого не придется переделывать - а можно только совершенствовать и совершенствовать...


Код:
Opt("PixelCoordMode", 2) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна
Opt ("MouseClickDelay", 20);Задаем интенсивность нажатия мыши.
HotKeySet ("{`}","_exit");задаем горячую клавишу остановки скрипта
;----------------------------------------------Ниже основа ------------
while 1
WinActivate("EVE - CharName");активируем окно с евой,чтобы покорить еву ботством...:)
Undock();андокаемся - пока не пройдет проверка повторяем...
Sleep (1000)
WarpToBelt();плывем к белту - ломимся,пока не пройдут проверки.
Sleep (3000);насыщаемся в предвкущении прибыли :)
Mine();здесь проверки на SelectedItem ,ближе 10км расстояние,лок цели,и начало добычи.
sleep (1000);открыв рот и тарабаня пальцами от радости - ожидаем полета домой для сброса набоченного добра:)
Dock();здесь проверка на трюм и отлет домой при наполнении - все в цикле пока не получится улететь.
sleep (3000)
OreToHome();сбрасываем руду;проверка осталось ли че? :) Если осталось - повторить.
Wend
;--------------------------------------------Конец основы---------------

;--------------------------------------------------
Func _exit();завершение работы скрипта
	Exit
EndFunc
;--------------------------------------------------
Func WarpToBelt();в этой функции так много кликов - потому что иногда меню не обновляется при открытой звездной карте(и элемента меню гиперпрыжок к... нет) .Для этого мы щелкаем на соседнюю вкладку оverview и выбираем первый там объект и снова возвращаемся на предидущую...
	Do
	ToolTip ("Пытаемся варпнутся к белту",0,0)
	MouseClick ("left",x, y,1,20);переключить с вкладки mining на основную
	MouseClick ("left",x, y,1,20);кликнуть на 1й объект
	MouseClick ("left",x, y,1,20);возращаемся с основной вкладки на настроенную нами заранее вкладку mining
	MouseClick ("left",x, y,1,20);клик на треугольник
	MouseMove(x, y,20);плавно ведем мышь по меню
	MouseMove(x, y,20);нежно доводим
	MouseClick("left",x, y,1,20);мягкий клик варп на белт
	Sleep (3000) ;примерный таймаут появления надписи "Гипердрайв активен"
	Until CheckWarp()=0;повторяем попытки улететь на белт,пока не пройдет проверка на варп к белту

WinActivate("EVE - CharName")

	Do
		Sleep(100)
		ToolTip ("летим к белту",0,0)
	Until CheckWarp()=1;повторяем надпись,пока не пройдет проверка на окончание варпа.
EndFunc
;-----------------------------------------------
Func CheckWarp() ;функция проверки окончания варпа
	PixelSearch (x, y,x1, y1,color,10);проверяется левый верхний пиксель буквы Г в слове Гиперпрыжок :)пока он есть мы в гиперпрыжке.
	If @error Then
	Return 1
	Else
	Return 0
	EndIf
EndFunc

;----------------------------------------------
Func CheckAsteroid();проверка на наличие любого объекта в оverview(в данном случае астероида)- пока не встроен
	WinActivate("EVE - CharName")
	PixelSearch (x, y,x1, y1,color);
	If @error Then
	Return 0
	Else
	Return 1
	EndIf
EndFunc

;------------------------------------------------
Func Dock() ;Полет домой если заполнен трюм
	WinActivate("EVE - CharName")
	Do
		Sleep(100)
		LockCheck();проверка на потерю лока астероида
		ToolTip ("ждем пока не заполнится трюм",0,0)
	Until CargoCheck()=1;проверка на заполненность трюма

	;если трюм заполнился - летим домой
	Do

	MouseClick ("left",x, y);клик на треугольник
	MouseMove (x, y,20);аккуратно ведем мышь
	MouseMove (x, y,20);сосредоточенно продолжаем
	MouseMove (x, y,20);радостно додвигаем
	MouseClick ("left",x, y,1,20);кликаем крича от удовольствия
	sleep (3000);примерное время до появления надписи "Гипердрайв активен"
	ToolTip ("Летим домой",0,0)
	Until CheckWarp()=1;повторяем процедуру,пока не пройдем проверку на процесс варпа
EndFunc
;------------------------------------------------
Func LockCheck();проверка цели на лок
	PixelSearch(x, y,x1, y1,color)
	If not @error Then
		Sleep(500)
		ToolTip ("Лок не сбился",0,0)
	Else
		sleep(60000)
		mine();если лок сбился начинаем процедуру лока и бурения,как будто только прилетели на белт.
	EndIf
EndFunc

;------------------------------------------------
Func CargoCheck();проверка на заполненность трюма
	;WinActivate("EVE - CharName")
	PixelSearch (x, y,x1, y1,color,10);проверка на наличие синего цвета.если есть,то заполнен.
	If Not @error Then
	Return 1
	Else
	Return 0
	EndIf
EndFunc



;-----------------------------------------------
Func Undock();вылет со станции.
	WinActivate("EVE - CharName")
	Do
	MouseClick("left",x, y);щелчок на андок
	Sleep (1000)
	ToolTip ("я на станции!",0,0)
	Until CheckSpace()=1;спамить андок и показывать надпись каждую секунду,пока не появимся в космосе.
EndFunc
;-----------------------------------------------
Func CheckSpace();проверка на космос
		WinActivate("EVE - CharName")
		PixelSearch(x,y,x1, y1,color);ищем наличие черного цвета в пикселе.при появлении любого другого цвета в пикселе -
		if @error Then                     ;- мы находимся в космосе.(у меня данный пиксель при андоке меняется на оранжевый цвет)
		ToolTip ("я в космосе",0,0)
		return 1
		Else
		return 0
		EndIf
EndFunc
;------------------------------------------------
Func Mine();включить лазеры для добычи если дистанция ближе 10км
	Do
		Sleep (100)
		SelItemCheck();проверка на выбор объекта(selected item).
		ToolTip("Подлетаю к метеору ближе 10 км",0,0)
	Until DistanceCheck()=1;повторяем цикл,пока дистанция не станет ближе 10км
	MouseClick ("left",x, y);жмем кнопку лока цели
	Sleep (5000);ждем окончания лока
	Send("{F1}")
	Send("{F2}")
	Send("{F3}");копать лазерами 123
EndFunc
;------------------------------------------------
Func SelItemCheck();проверка на Selected Item.
	PixelSearch (x, y,x1, y1,color,10)
	If @error Then
		MouseClick("left",x, y);если ничего не выбрано щелкнуть на первый объект в overview
	EndIf
EndFunc

;-----------------------------------------------
Func DistanceCheck();проверка на дистанцию - меньше или больше 10км
	WinActivate("EVE - CharName")
	PixelSearch (x, y,x1, y1,color,10);проверка диапазона пикселей между 2х значным XX числом километров и слова км.на наличие серого оттенка цвета(цвет чисел).
	If not @error Then;если появился нужный цвет в диапазоне,значит мы уже ближе 10км и представление цифр изменилось на XXXX м.
	ToolTip("ближе 10км",0,0)
	Return 1
	Else
	MouseClick("left",x, y,2,20);если проверка не пройдена аппучимся к первому в списке астероиду.
	Return 0
	EndIf
EndFunc
;-------------------------------------------------
Func OreToHome();функция сбрасывания руды на станцию
	Do
	MouseClick("left",x, y,1,20);иногда происходит лаг и вся руда не вытаскивается,поэтому решил воткнуть костылик
	Sleep(100)
	Send ("^a")
	Sleep(100)
	MouseClickDrag ("left",x, y,x1, y1,20)
	Sleep (2000)
	Until FullEmptyCheck()=1;проверка вытащили ли руду - если нет повторяем вытаскивание
EndFunc
;--------------------------------------------------
Func FullEmptyCheck();проверка - сброшен лут или нет.
	PixelSearch (x, y,x1, y1,color,10)
	If @error Then
	ToolTip ("лут еще есть!",0,0)
	Else
	ToolTip ("лут сброшен...",0,0)
	return 1
	EndIf
EndFunc
;-----------------------------------------------------
 

Belfigor

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

Используй обработку событий в каждый момент целиком, это позволит избежать вермишелей, более подробно описано в комментах в теме Зузика.
 
Автор
yaodnako

yaodnako

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

Так же повторюсь, если ты будешь смешивать проверочные функции(узнать где ты, проверить наличие астероида и тд) и операционные функции(андокнуться, прицелиться в астероид)
Отличный совет.Спасибо.запомню.В любом случае - теперь при написании кода - я буду первым делом ориентироваться на то,чтобы легко можно было легко дописывать модули без переделки уже написанного.Иначе я рискую завязнуть в перемешанных функциях.
 
Автор
yaodnako

yaodnako

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

Писать нового бота,пока желания не возникло,но изрядно надоело переключать буки ночью :smile:
поэтому дописал костылей еще для своего инвалида :smile:
сделал около 12 буков в центре белтов и чтобы не терять время при прилете на белт - мы майним только то ,что в пределах 10 км.При прилете на белт проверяет есть ли такие астероиды(ближе 10 км),если нет,запоминает это и варпается на след.белт.Так же сделал активацию и деактивацию стрипов каждые 39-41 секунд(сделал бы меньше - пока предел капы).это сделано для снижения потерь руды при истощении астероида.Истощение происходит только на конец цикла и соответсвенно снизив длительность цикла - экономим время(много времени!).после облета всех бук - зарывает игру и завершает скрипт.
Работает идеально,глюков пока не заметно.Офигительно писать на автоите :IL_AutoIt_1:
Особенно если не напрягаться,а пописывать изредка,когда желание есть.
Если есть ошибки - буду благодарен за указания.

p.s.не очень нравится реализация отварпа при сжирании на буке всех астеров в пределах 10 км.зациклил функцию на саму себя (проверял - даже если все 12 белтов пустые - все работает корректно).
За 10 часов делает около 20кк на первых двух рудах.на ретривере с 4900 кубов трюма.
Офигительно ,когда не играешь - и чар сам себя обеспечивает на месяц :smile:


Код:
Opt("PixelCoordMode", 2) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна
Opt ("MouseClickDelay", 20);Задаем интенсивность нажатия мыши.
Opt ("SendKeyDownDelay", 100)
HotKeySet ("{`}","_exit");задаем горячую клавишу остановки скрипта

;----------------------------------------------Ниже основа ------------
Global $y=133
Global $x
#comments-start
справка по белтам цифра - значение $y
1-133 2-149 3-165
4-181 5-197 6-213
7-229 8-245 9-261
10-277 11-293 12-309
#comments-end
while $y<310;когда буки с белтами закончатся(за 12 часов почти нереально чтобы закончились),выйти из евы и завершить скрипт.
WinActivate("EVE - charname");активируем окно с евой
Undock();андокаемся - пока не пройдет проверка повторяем...
Sleep (1000)
checkbeltnum();вычисление буки на которой добываем руду.
WarpToBelt();плывем к белту - ломимся,пока не пройдут проверки.
Sleep (500)
Distforbelt();это проверка на наличие астероидов в пределах 10 км,если таких нет варп на след.буку.
Sleep (3000)
Mine();здесь проверки на SelectedItem ,ближе 10км расстояние,лок цели,и начало добычи.
sleep (300)
Dock();здесь проверка на трюм и отлет домой при наполнении
sleep (3000)
OreToHome();сбрасываем руду;проверка осталось ли че? :) Если осталось - повторить.
Wend
_exitgame()
_exit()
;--------------------------------------------Конец основы---------------

;--------------------------------------------------
Func _exit();завершение работы скрипта
	ToolTip("Завершение скрипта",0,0)
	Exit
EndFunc
;--------------------------------------------------
Func WarpToBelt();функция полета на белт
	Do
	ToolTip ("Пытаемся варпнутся к белту",0,0)
	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);

	Sleep (15000) ;примерный таймаут появления надписи "Гипердрайв активен"
	Until CheckWarp()=0;повторяем попытки улететь на белт,пока не пройдет проверка на варп к белту

WinActivate("EVE - charname")

	Do
		Sleep(100)
		ToolTip ("летим к белту",0,0)
	Until CheckWarp()=1;повторяем надпись,пока не пройдет проверка на окончание варпа.
EndFunc
;-----------------------------------------------
Func CheckWarp() ;функция проверки окончания варпа
	PixelSearch (425, 527,425, 527,0xBCBCBC,10);проверяется левый верхний пиксель буквы Г в слове Гиперпрыжок :)пока он есть мы в гиперпрыжке.
	If @error Then
	Return 1
	Else
	Return 0
	EndIf
EndFunc

;----------------------------------------------
Func _exitgame();если белты с дистанцией менее 10км к астероиду кончились - выйти из игры.
	WinActivate("EVE - charname")
	Send ("{esc}")
	sleep (4000)
	MouseClick ("left",851, 606,1,20)
	Return
EndFunc

;------------------------------------------------
Func Dock() ;Полет домой если заполнен трюм+старт,остановка стрипов каждые 40-42 сек.
	WinActivate("EVE - charname")


	;если трюм заполнился - летим домой
Do
	MouseClick ("left",62, 47,1,20);клик на треугольник`
	MouseMove (123, 56,20);аккуратно ведем мышь
	MouseMove (123, 157,20);дом
	MouseMove (223, 157,20);додвигаем до начала меню дом
	MouseClick ("left",223, 207,1,20);4й пункт 1й буки
	sleep (3000);примерное время до появления надписи "Гипердрайв активен"
	ToolTip ("Начинаю варпаться домой",0,0)
Until CheckWarp()=0;повторяем процедуру,пока не пройдем проверку на процесс варпа

Do
ToolTip ("Варп домой",0,0)
Until CheckWarp()=1

Do
ToolTip ("Лечу в док...",0,0)
Until CheckSpace()=0

ToolTip ("Мы дома",0,0)

EndFunc
;----------------------------------------------------------
Func Undock();вылет со станции.
	WinActivate("EVE - charname")
	Do
	ToolTip("Вылетаем ботить :)",0,0)
	MouseClick("left",17, 735);щелчок на андок
	Sleep (1000)
	ToolTip ("я на станции!",0,0)
	Until CheckSpace()=1;спамить андок и показывать надпись каждую секунду,пока не появимся в космосе.
EndFunc
;-----------------------------------------------
Func CheckSpace();проверка на космос
		WinActivate("EVE - charname")
		PixelSearch(737, 122,737, 122,0xCFCFCF,10);ищем оранжевый цвет в пикселе.при появлении любого другого цвета в пикселе -
		if not @error Then                     ;- мы находимся в космосе.
		ToolTip ("я в космосе",0,0)
		return 1
		Else
		return 0
		EndIf
EndFunc
;------------------------------------------------
Func Mine();включить лазеры для добычи если дистанция ближе 10км
	Minestage1()

While CargoCheck()=0
	While LockCheck()=1;проверка на заполненность трюма
	ToolTip("Атаке!" & "|" & "Белт " & $x,0,0)
	Send ("{ENTER}")
	WinActivate("EVE - charname")
	Send ("{f1}")
	Send ("{f2}")
	$stripwork=random (39000,41000)
	Sleep ($stripwork)
	Send ("{ENTER}")
	WinActivate("EVE - charname")
	Send ("{f1}")
	Send ("{f2}")
	Sleep (2000)
	Send ("{ENTER}")
	ToolTip ("ждем пока не заполнится трюм",0,0)
	If CargoCheck()=1 Then
		ExitLoop
	EndIf
	WEnd
WEnd
EndFunc
;------------------------------------------------
Func Minestage1() ; Это попытка избавится от рекурсии,чтобы не вызывать mine() внутри mine()
	Do
		Sleep (100)
		SelItemCheck();проверка на выбор объекта(selected item).
		ToolTip("Подлетаю к метеору ближе 10 км",0,0)
	Until DistanceCheck()=1;повторяем цикл,пока дистанция не станет ближе 10км
	MouseClick ("left",880, 74);жмем кнопку лока цели
	ToolTip("Лочу цель",0,0)
	Sleep (4000);ждем окончания лока
EndFunc
;------------------------------------------------------
Func SelItemCheck();проверка на Selected Item.
	PixelSearch (946, 68,946, 68,0x989898,10)
	If @error Then
		ToolTip("Метеор не выбран,выбираю ближайщий метеор",0,0)
		MouseClick("left",774, 183);если ничего не выбрано щелкнуть на первый объект в overview
		;CheckOverview()
	EndIf
EndFunc

;-----------------------------------------------
Func DistanceCheck();проверка на дистанцию - меньше или больше 10км
	WinActivate("EVE - charname")
	PixelSearch (828, 40,830, 44,0x8F8F8F,10);проверка диапазона пикселей между 2х значным XX числом километров и слова км.на наличие серого оттенка цвета(цвет чисел).
	If not @error Then;если появился нужный цвет в диапазоне,значит мы уже ближе 10км и представление цифр изменилось на XXXX м.
	ToolTip("ближе 10км - начинаю добычу",0,0)
	Return 1
	Else
	MouseClick("left",774, 183,2,20);если проверка не пройдена аппучимся к первому в списке астероиду.
	Return 0
	EndIf
EndFunc
;-------------------------------------------------
;------------------------------------------------
Func LockCheck();проверка цели на лок
	PixelSearch(635, 81,635, 81,0x404040)
	If not @error Then
		Sleep(500)
		ToolTip ("Лок не сбился",0,0)
		Return 1
	Else
		ToolTip("Сбился лок",0,0)
		Sleep (500)
		ToolTip("начинаю поиск ближайшего метеора",0,0)
		Sleep (1000)
		;если лок сбился начинаем процедуру лока и бурения,как будто только прилетели на белт.
		Minestage1()
		return 0
	EndIf
EndFunc

;------------------------------------------------
Func CargoCheck();проверка на заполненность трюма
	;WinActivate("EVE - charname")
	PixelSearch (277, 618,277, 618,0x015167,10);проверка на наличие синего цвета.если есть,то заполнен.
	If Not @error Then
	ToolTip("Трюм наполнился",0,0)
	Return 1
	Else
	Return 0
	EndIf
EndFunc
;-----------------------------------------------



;----------кусок сброса лута---------------
Func OreToHome();функция сбрасывания руды на станцию
	Do
	ToolTip("Мы дома - сбрасываю добычу",0,0)
	MouseClick("left",150, 597,1,20);иногда происходит лаг и вся руда не вытаскивается,поэтому решил воткнуть костылик
	Send ("^a")
	MouseClickDrag ("left",63, 665,83, 366,20)
	Sleep (2000)
	Until FullEmptyCheck()=1;проверка вытащили ли руду - если нет повторяем вытаскивание
EndFunc
;--------------------------------------------------
Func FullEmptyCheck();проверка - сброшен лут или нет.
	PixelSearch (186, 618,186, 618,0x041115,10)
	If @error Then
	ToolTip ("лут еще есть!",0,0)
	Else
	ToolTip ("лут сброшен...",0,0)
	return 1
	EndIf
EndFunc
;-----------------------------------------------------
Func Distforbelt();проверка на дистанцию - меньше или больше 10км
	WinActivate("EVE - charname")
	MouseClick("left",774, 183,1,20)
	Sleep (600)
	PixelSearch (828, 40,830, 44,0x8F8F8F,10);проверка диапазона пикселей между 2х значным XX числом километров и слова км.на наличие серого оттенка цвета(цвет чисел).
	If not @error Then;если появился нужный цвет в диапазоне,значит мы уже ближе 10км и представление цифр изменилось на XXXX м.
	ToolTip("Ближе 10км есть астероиды - майню на Белте " & $x & " дальше.",0,0)
	Sleep (2000)
	Return
	Else
	$y=$y+16
	ToolTip("нет астероидов ближе 10км - меняю белт № " & $x & " на белт №" & ($x+1),0,0)
	Sleep(2000)
	If $y>310 Then
		_exitgame()
		_exit()
	EndIf
	WarpToBelt()
	checkbeltnum()
	Distforbelt()
	Return
	EndIf
EndFunc

;-------------------------------------------
Func checkbeltnum();узнаем номер белта по текущей координате y
	Select
		Case $y=133
			$x=1
		Case $y=149
			$x=2
		Case $y=165
			$x=3
		Case $y=181
			$x=4
		Case $y=197
			$x=5
		Case $y=213
			$x=6
		Case $y=229
			$x=7
		Case $y=245
			$x=8
		Case $y=261
			$x=9
		Case $y=277
			$x=10
		Case $y=293
			$x=11
		Case $y=309
			$x=12
	EndSelect
EndFunc
;---------------------------

;------------------------------------------
#comments-start


Func CheckEndAster()
	PixelSearch(862, 178,899, 185,0x8F8F8F,10)
	If not @error Then
		ToolTip("Астероиды выжрали " & $y,0,0)
		WarpToBelt()
	Else
		ToolTip("Астероиды еще есть " & $y,0,0)
		Return
	EndIf
EndFunc
#comments-end
 

KsenZ

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

yaodnako

А немог бы ты немного пояснить по своему скрипту?
 
Автор
yaodnako

yaodnako

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

Скорее всего это финальная версия вермишельного инвалида :smile:
Что изменилось:
1.Убрал подлет к метеору если он находится дальше 10км - это не нужно.гораздо целесообразней сделать буку в центре астероидного белта и прилетев на буку кушать все что в радиусе 10км.и затем сразу менять буку.при скорости халка 70 м\с - передвижение это потеря времени(да и запутаться он может в астероидах при отварпе домой - очень может время скушать).
2.Стало безумно интересно сколько бот делает сбросов лута,интересно время работы скрипта - написал сброс основной инфы в ини файл.создается в корне диска д.
выглядит примерно так :
[Script]
18\07 01:40:58=Start,Belt №1
18\07 09:55:34=Stop,Belt №10
19\07 16:37:13=Start,Belt №1
19\07 23:23:23=Stop,Belt №4
[Mined]
=-------------------=
18\07 02:06:30=сброшен лут Бука №1
18\07 02:31:38=сброшен лут Бука №1
18\07 02:57:01=сброшен лут Бука №1
18\07 03:24:14=сброшен лут Бука №1
18\07 03:49:15=сброшен лут Бука №1
18\07 04:12:27=сброшен лут Бука №2
18\07 04:36:34=сброшен лут Бука №2
18\07 05:01:42=сброшен лут Бука №2
18\07 05:24:18=сброшен лут Бука №2
18\07 05:47:37=сброшен лут Бука №2
18\07 06:13:48=сброшен лут Бука №3
18\07 06:38:59=сброшен лут Бука №3
18\07 07:05:27=сброшен лут Бука №4
18\07 07:32:53=сброшен лут Бука №4
18\07 08:00:28=сброшен лут Бука №4
18\07 08:28:14=сброшен лут Бука №4
18\07 08:56:02=сброшен лут Бука №5
18\07 09:23:02=сброшен лут Бука №5
18\07 09:55:33=сброшен лут Бука №10
=-------------------=
19\07 17:01:05=сброшен лут Бука №1
19\07 17:23:01=сброшен лут Бука №1
19\07 17:47:20=сброшен лут Бука №1
19\07 18:10:52=сброшен лут Бука №1
19\07 18:33:53=сброшен лут Бука №1
19\07 18:57:44=сброшен лут Бука №1
19\07 19:20:47=сброшен лут Бука №1
19\07 19:45:31=сброшен лут Бука №2
19\07 20:09:22=сброшен лут Бука №2
19\07 20:33:01=сброшен лут Бука №2
19\07 20:55:59=сброшен лут Бука №2
19\07 21:18:42=сброшен лут Бука №2
19\07 21:42:15=сброшен лут Бука №2
19\07 22:04:06=сброшен лут Бука №2
19\07 22:30:19=сброшен лут Бука №3
19\07 22:56:41=сброшен лут Бука №4
19\07 23:21:25=сброшен лут Бука №4
[Status]
=-------------------=
18\07 04:04:56=Warp to belt №2
18\07 06:07:00=Warp to belt №3
18\07 07:02:54=Warp to belt №4
18\07 08:37:16=Warp to belt №5
18\07 09:32:09=Warp to belt №6
18\07 09:33:18=Warp to belt №7
18\07 09:47:45=Warp to belt №8
18\07 09:51:27=Warp to belt №9
18\07 09:52:24=Warp to belt №10
=-------------------=
19\07 19:36:12=Warp to belt №2
19\07 22:23:16=Warp to belt №3
19\07 22:34:49=Warp to belt №4

3.усовершенствовал определение ближе 10км,теперь он адекватно определяет астероиды ближе 100 м.
4.Сделал на всякий случай 3 проверки на конво - 1.по оранжевому цвету ника 2.по цвету пункта выбора действия на окошке конво 3.синий фон вопросика - ахтунг - эта проверка может сработать в 14-00 при предупреждении об основном ребуте серверов евы,потому что цвет в окошке предупреждения такой же как и в конво.в принципе при желании можно смешать проверки - например,если 2 и 3 проверки подтверждаются то ---> злой админ нас проверяет.
5.+мелкие изменения не помню.где слипы уменьшил,где то увеличил - все ради оптимизации времени :smile:

Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\icons\иконки устройств\1013.ico
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Opt("PixelCoordMode", 2) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна
Opt ("MouseClickDelay", 20);Задаем интенсивность нажатия мыши.
Opt ("SendKeyDownDelay", 100)
HotKeySet ("{`}","_exit");задаем горячую клавишу остановки скрипта

;----------------------------------------------Ниже основа ------------

Global $y=133
Global $x
checkbeltnum()
IniWrite("D:\eve.ini","Script", @MDAY & "\" & @MON & " " & @HOUR & ":" & @Min & ":" & @Sec,"Start,Belt №" & $x)
IniWrite("D:\eve.ini","Mined", "=-------------------","")
IniWrite("D:\eve.ini","Status","=-------------------","")
#cs
справка по белтам цифра - значение $y`
1-133 2-149 3-165
4-181 5-197 6-213
7-229 8-245 9-261
10-277 11-293 12-309
#ce
while $y<310
WinActivate("EVE - charname")
WinWaitActive("EVE - charname");активируем окно с евой,чтобы покорить еву ботством...:)
Undock();андокаемся - пока не пройдет проверка повторяем...
Sleep (1000)
checkbeltnum()
If ConvoCheck()=1 Or ConvoCheck2()=1 Or ConvoCheck3()=1 Then ;3 проверки на конво,если вдруг срабатывает то загружаем громкую мелодию :) закомментил - можно просто выход сделать.
	ShellExecute ("D:\Autoit\proekts\1.mp3")
		;_exitgame()
		;_exit()
EndIf
WarpToBelt();плывем к белту - ломимся,пока не пройдут проверки.
Sleep (500)
If ConvoCheck()=1 Or ConvoCheck2()=1 Or ConvoCheck3()=1 Then;снова проверка на конво
	ShellExecute ("D:\Autoit\proekts\1.mp3")
		;_exitgame()
		;_exit()
EndIf
Mine();здесь процесс добычи с проверками на заполненность трюма,лока,конво.
sleep (300)
Dock();летим домой
sleep (1000)
OreToHome();сбрасываем руду;проверка осталось ли че? :) Если осталось - повторить.
If ConvoCheck()=1 Or ConvoCheck2()=1 Or ConvoCheck3()=1 Then
	ShellExecute ("D:\Autoit\proekts\1.mp3")
		;_exitgame()
		;_exit()
EndIf
Wend
_exitgame()
_exit()
;--------------------------------------------Конец основы---------------

;--------------------------------------------------
Func _exit();завершение работы скрипта
	ToolTip("Завершение скрипта",0,0)
	Sleep(200)
	IniWrite("D:\eve.ini","Script", @MDAY & "\" & @MON & " " & @HOUR & ":" & @Min & ":" & @Sec,"Stop,Belt №" & $x)
	Exit
EndFunc
;--------------------------------------------------
Func WarpToBelt();функция полета на белт
	Do
	ToolTip ("Пытаемся варпнутся к белту",0,0)
	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);

	Sleep (8000) ;летим ждем надпись "Гипердрайв активен"
	Until CheckWarp()=0;повторяем попытки улететь на белт,пока не пройдет проверка на варп к белту

	WinActivate("EVE - charname")
	WinWaitActive("EVE - charname")

	Do
		Sleep(100)
		ToolTip ("летим к белту",0,0)
	Until CheckWarp()=1;повторяем надпись,пока не пройдет проверка на окончание варпа.
	Sleep(1000)
EndFunc
;-----------------------------------------------
Func CheckWarp() ;функция проверки окончания варпа
	PixelSearch (425, 527,425, 527,0xBCBCBC,10);проверяется левый верхний пиксель буквы Г в слове Гиперпрыжок :)пока он есть мы в гиперпрыжке.
	If @error Then
	Return 1
	Else
	Return 0
	EndIf
EndFunc

;----------------------------------------------
Func _exitgame();если белты с дистанцией менее 10км к астероиду кончились - выйти из игры.
	WinActivate("EVE - charname")
	WinWaitActive("EVE - charname")
	Send ("{esc}")
	sleep (4000)
	MouseClick ("left",851, 606,1,20)
	IniWrite("D:\eve.ini","Game Exit", @MDAY & "\" & @MON & " " & @HOUR & ":" & @Min & ":" & @Sec,"Stop,Belt №" & $x)
	Return
EndFunc

;------------------------------------------------
Func Dock() ;Полет домой если заполнен трюм
	WinActivate("EVE - charname")
	WinWaitActive("EVE - charname")


	;если трюм заполнился - летим домой
Do
	MouseClick ("left",62, 47,1,20);клик на треугольник`
	MouseMove (123, 56,20);аккуратно ведем мышь
	MouseMove (123, 157,20);дом
	MouseMove (223, 157,20);додвигаем до начала меню дом
	MouseClick ("left",223, 207,1,20);4й пункт 1й буки
	sleep (6000);примерное время до появления надписи "Гипердрайв активен"
	ToolTip ("Начинаю варпаться домой",0,0)
	Sleep(200)
Until CheckWarp()=0;повторяем процедуру,пока не пройдем проверку на процесс варпа

Do
ToolTip ("Варп домой",0,0)
Until CheckWarp()=1

Do
ToolTip ("Лечу в док...",0,0)
Until CheckSpace()=0

ToolTip ("Мы дома",0,0)
Sleep(200)

EndFunc
;----------------------------------------------------------
Func Undock();вылет со станции.
	WinActivate("EVE - charname")
	WinWaitActive("EVE - charname")
	Do
	ToolTip("Вылетаем ботить :)",0,0)
	MouseClick("left",17, 735);щелчок на андок
	Sleep(200)
	ToolTip ("я на станции!",0,0)
	Until CheckSpace()=1;спамить андок и показывать надпись каждую секунду,пока не появимся в космосе.
EndFunc
;-----------------------------------------------
Func CheckSpace();проверка на космос
		WinActivate("EVE - charname")
		WinWaitActive("EVE - charname")
		PixelSearch(737, 122,737, 122,0xCFCFCF,10);ищем треугольник овервью
		if not @error Then                     ;- мы находимся в космосе.
		ToolTip ("я в космосе",0,0)
		Sleep(200)
		return 1
		Else
		return 0
		EndIf
EndFunc
;------------------------------------------------
Func Mine();включить лазеры для добычи если дистанция ближе 10км
	Minestage1()

While CargoCheck()=0;пока не заполниться карго бурим,тут проверки на лок,конво.
	WinActivate("EVE - charname")
	WinWaitActive("EVE - charname")
	While LockCheck()=1;проверка на лок
	ToolTip("Атаке!" & "|" & "Белт " & $x,0,0)
	Send ("{f1}")
	Send ("{f2}")
	Send ("{f3}")
	$stripwork=random (45500,49300)
	Sleep ($stripwork)
	WinActivate("EVE - charname")
	WinWaitActive("EVE - charname")
	Send ("{f1}")
	Send ("{f2}")
	Send ("{f3}")
	ToolTip ("ждем пока не заполнится трюм",0,0)
	sleep (1000)
	ToolTip ("проверка конво",0,0)
	If ConvoCheck()=1 Or ConvoCheck2()=1 Or ConvoCheck3()=1 Then
		ShellExecute ("D:\Autoit\proekts\1.mp3")
		;_exitgame()
		;_exit()
	EndIf
	If CargoCheck()=1 Then
		ExitLoop
	EndIf

	WEnd
WEnd
EndFunc
;------------------------------------------------
Func Minestage1() ;проверка на 

#comments-start
	Do
		Sleep (100)
		SelItemCheck();проверка на выбор объекта(selected item).
		ToolTip("Подлетаю к метеору ближе 10 км",0,0)
	Until DistanceCheck()=1;повторяем цикл,пока дистанция не станет ближе 10км

#comments-end

	Distforbelt()
	MouseClick ("left",880, 74);жмем кнопку лока цели
	ToolTip("Лочу цель",0,0)
	Sleep (3500);ждем окончания лока
EndFunc


;------------------------------------------------
Func LockCheck();проверка цели на лок
	PixelSearch(635, 81,635, 81,0x404040)
	If not @error Then
		Return 1
	Else
		ToolTip("Сбился лок - начинаю поиск ближайшего метеора",0,0)
		Sleep (600)
		;если лок сбился начинаем процедуру лока и бурения,как будто только прилетели на белт.
		Minestage1()
		return 0
	EndIf
EndFunc

;------------------------------------------------
Func CargoCheck();проверка на заполненность трюма
	;WinActivate("EVE - charname")
	Sleep (200)
	PixelSearch (280, 617,280, 617,0x005067,10);проверка на наличие синего цвета.если есть,то заполнен.
	If Not @error Then
	ToolTip("Трюм наполнился",0,0)
	Sleep(200)
	Return 1
	Else
	Return 0
	EndIf
EndFunc
;-----------------------------------------------



;----------кусок сброса лута---------------
Func OreToHome();функция сбрасывания руды на станцию
	Do
		ToolTip("Cбрасываю добычу",0,0)
		Sleep(200)
		MouseClick("left",150, 597,1,20);иногда происходит лаг и вся руда не вытаскивается,поэтому решил воткнуть костылик
		Send ("^a")
		MouseClickDrag ("left",63, 665,83, 366,20)
		Sleep (2000)
	Until FullEmptyCheck()=1
IniWrite("D:\eve.ini","Mined",@MDAY & "\" & @MON & " " & @HOUR & ":" & @Min & ":" & @Sec, "сброшен лут" & " Бука №" & $x)
EndFunc
;--------------------------------------------------
Func FullEmptyCheck();проверка - сброшен лут или нет.
	PixelSearch (186, 618,186, 618,0x041115,10)
	If @error Then
	ToolTip ("лут еще есть!",0,0)
	Sleep(200)
	Else
	ToolTip ("лут сброшен...",0,0)
	Sleep(200)
	return 1
	EndIf
EndFunc
;-----------------------------------------------------
Func Distforbelt();проверка на дистанцию - меньше или больше 10км - усовершенствовал - теперь определяет астероиды ближе 100 м адекватно.
	WinActivate("EVE - charname")
	WinWaitActive("EVE - charname")
	MouseClick("left",774, 183,1,20)
	Sleep (600)
	PixelSearch (828, 40,830, 44,0x8F8F8F,10);проверка диапазона пикселей между 2х значным XX числом километров и слова км.на наличие серого оттенка цвета(цвет чисел).
	If not @error Then;PixelSearch (836, 40,840, 44,0x8F8F8F,10) если появился нужный цвет в диапазоне,значит мы уже ближе 10км и представление цифр изменилось на XXXX м.
		ToolTip("Ближе 10км есть астероиды - майню на Белте " & $x & " дальше.",0,0)
		Sleep (600)
		Return
	Else
		PixelSearch (943, 74,951, 87,0x8E8E8E,10)
		If @error Then
		ToolTip("Белт пустой!Летим дальше.",0,0)
		Sleep (500)
		Else
		PixelSearch (836, 40,840, 44,0x8F8F8F,10)
		If @error Then
		ToolTip("Ближе 10км есть астероиды - майню на Белте " & $x & " дальше.",0,0)
		Sleep (600)
		Return
		EndIf
		EndIf
	 $y=$y+16
	 ToolTip("нет астероидов ближе 10км - меняю белт № " & $x & " на белт №" & ($x+1),0,0)
	 Sleep(600)
	If $y>310 Then
		_exitgame()
		_exit()
	EndIf
	WarpToBelt()
	checkbeltnum()
	IniWrite("D:\eve.ini","Status",@MDAY & "\" & @MON & " " & @HOUR & ":" & @Min & ":" & @Sec, "Warp to belt №" & $x)
	Distforbelt()
	Return
	EndIf
EndFunc

;-------------------------------------------
Func checkbeltnum();узнаем номер белта по текущей координате y
	Select
		Case $y=133
			$x=1
		Case $y=149
			$x=2
		Case $y=165
			$x=3
		Case $y=181
			$x=4
		Case $y=197
			$x=5
		Case $y=213
			$x=6
		Case $y=229
			$x=7
		Case $y=245
			$x=8
		Case $y=261
			$x=9
		Case $y=277
			$x=10
		Case $y=293
			$x=11
		Case $y=309
			$x=12
	EndSelect
EndFunc
;---------------------------

Func ConvoCheck()
	PixelSearch (303, 172,819, 581,0xFFA600,10)
	If Not @error Then
		IniWrite("D:\eve.ini","Convo",@MDAY & "\" & @MON & " " & @HOUR & ":" & @Min & ":" & @Sec, "АААА конво был бляяяя!!!сработала проверка 1")
		Send ("{PRINTSCREEN}")
		Return 1
	Else
		Return 0
	EndIf
EndFunc

Func ConvoCheck2()
	PixelSearch (303, 172,819, 581,0x6284AF,10)
	If Not @error Then
		IniWrite("D:\eve.ini","Convo",@MDAY & "\" & @MON & " " & @HOUR & ":" & @Min & ":" & @Sec, "АААА конво был бляяяя!!!сработала проверка 2")
		Send ("{PRINTSCREEN}")
		Return 1
	Else
		Return 0
	EndIf
EndFunc

Func ConvoCheck3()
	PixelSearch (303, 172,819, 581,0x0064C0,10)
	If Not @error Then
		IniWrite("D:\eve.ini","Convo",@MDAY & "\" & @MON & " " & @HOUR & ":" & @Min & ":" & @Sec, "АААА конво был бляяяя!!!сработала проверка 3")
		Send ("{PRINTSCREEN}")
		Return 1
	Else
		Return 0
	EndIf
EndFunc


забыл - нужно было еще раньше это сделать - мое расположение элементов в еве :smile:
1.оконный режим 1024x768
2.вот скрин
 

KsenZ

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

Осталось прикрутить уведомление через ICQ, и гуи морду для удобства :smile:
 

Belfigor

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

KsenZ сказал(а):
Осталось прикрутить уведомление через ICQ, и гуи морду для удобства :smile:
Дак вперед, мы ждем твоего патча на этого бота
psychotic.png
 

KsenZ

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

Уже занимаюсь :smile:
Только пока не могу найти библиотеку для работы с ICQ... Но не чего поиски продолжаются :smile:
 

Belfigor

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

Да там проще в ручную написать чем использовать и разбираться в целой библиотеке :smile:
 

hikki

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

здесь на форуме уже все есть
http://autoit-script.ru/index.php?topic=788.0 тут на последних страницах длл с примером
http://autoit-script.ru/index.php?topic=1432.0 тут я немножко побаловался
 

KsenZ

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

Да там проще в ручную написать чем использовать и разбираться в целой библиотеке

Ты имеешь ввиду напрямую через сокеты?
 

Belfigor

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

KsenZ сказал(а):
Да там проще в ручную написать чем использовать и разбираться в целой библиотеке
Ты имеешь ввиду напрямую через сокеты?
Нет, достаточно парсить просто текстовый файл лога с указанного номера :smile:
 

KsenZ

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

Я может быть что то не так делаю? Не могу не как поймать нужный пиксель, т.е. делаю:
Код:
PixelSearch(760, 129, 760, 129, 0xD0D0D0, 10)

это из проверки на "космос", запускаю скрипт, проверка не проходит, просматриваю этот пиксель с теми же координатами а у него уже другой цвет например 0:rofl:1D1D1, это я пытаюсь проверить треугольник овервью... Как так может быть? И такое не только с этим пикселом, и с остальными так же... Хотя вроде они статические...

З.Ы. Есть подозрение, что это из-за прозрачности элементов интерфейса, но как от нее избавиться так и не нашел...
 

hikki

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

прозрачность интерфейсов убивается выставлением значения 255 ползунком TRANSP. в закладке general settings.
 
Автор
yaodnako

yaodnako

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

To Ksenz:
пробовал щелкнуть f10,затем отдалить карту и подвинуть в любую сторону,чтобы весь экран стал черным? Если нет - то это то что тебе нужно сделать,цвета перестанут меняться.Без этого мой бот вообще работать не будет :smile: вроде на скрине видно,что экран у меня весь черный.
единственное что придется таки сделать,это изменить некоторые координаты.
 
Верх