Что нового

О хант-боте

michael62

Новичок
Сообщения
1
Репутация
0
Рассмотрю варианты о покупке вашего хант-бота (белты в нулях).

Требования:
1.Максимум рандома, вплоть до перемещений мышки, чтобы не вычислили.
2.Желательно какой-нибудь шедулер.
3.Опыт успешного использования на полноценном акке хотя бы несколько месяцев.
3.Рабочий, готовый к использованию код, желательно прокомментированный.
4.Не очень старый и "забытый" проект, чтобы можно было получить ответы на вопросы, а они наверняка возникнут в процессе освоения AutoIt вообще и Вашего кода в частности. (В разумных пределах естественно).

Торговать исками не собираюсь, бот нужен чтобы сократить время заработка исков на пвп. Гарантирую нераспространение, ибо это в первую очередь не выгодно, во вторых я взрослый порядочный человек.

Ваши предложения и контакты присылайте в личку.

P.S. и пожалуйста, будьте реалистами :-X
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 578
Репутация
934
Как пример можешь использовать тот скелет что во вложении. На свежесть не претендует, алгоритм работы примитивный, писался давным давно и ниже 0.5 не тестировался. Собственно там даже реакция на локал не прикручена. Но для освоения самое то, да и код вроде кое где даже прокомменчен

P.S. То что в названии указано "рабочая версия" это больше относится к рабочему алгоритму нежели к тому что он легко запустится на какой-нибудь машине отличной от той на которой он писался.
P.S.S. ВОт еще отрыл Kill модуль от другого старого бота. Кое какие функции убрал ибо это дело достаточно интимное, но суть работы в принципе ясна.
Код:
;~ #include "E:\Games\AutoIt scripts\!Eve\0.0 Hunter\All Include\OpFunc Include\SelectedItem v1.6.au3"
Opt("PixelCoordMode", 0)
Opt("MouseCoordMode", 0)
Opt("MustDeclareVars", 1)
Dim $MyBotStatus, $WhoToKill

Func Kill($Case)
	Select
		Case $Case = "All"
			SetKillStatus(1)
			SaveResult($CurBelt, 0)
			While 1
				KillPreload()
				Select
					Case GetKillStatus() = 1 ; Начинаем поиск и отстрел неписи
						ToolTip("Ищу непись в белте. Белт №:"&$CurBelt,0,0)
						SetKillStatus(NPCTest()) ;Нацеливание на непись. Если в белте нет неписи возвращает 22, если непись есть то таргетит ее и возвращает 21.
					Case GetKillStatus() = 11 			;Если в белте обнаружена непись
						ToolTip("Беру непись на таргет. Белт №:"&$CurBelt,0,0)
						SetKillStatus(TargetAll())			;Взять ее на таргет
					Case GetKillStatus() = 21 ;Если непись найдена и таргетится
						ToolTip("Проверяю есть ли иконка цели. Белт №:"&$CurBelt,0,0)
						SetKillStatus(CheckIcon()) ;Проверка наличия иконки затаргеченной цели. Если иконка есть возвращает 31, если нету 32
					Case GetKillStatus() = 31 ;Увидили иконку неписи
						ToolTip("Дожидаюсь готовности к стрельбе. Белт №:"&$CurBelt,0,0)
						SetKillStatus(PrepareToShot()) ;Проверяем готовностьк  стрельбе, если готов то 41, если нет то 42
					Case GetKillStatus() = 41 ;Если к стрельбе готов
						ToolTip("Запускаю оружие. Белт №:"&$CurBelt,0,0)
						SetKillStatus(UseWeapon()) ;Начать стрелять. Наживает ф1 и ф2 и возвращает 51
					Case GetKillStatus() = 51 ;Если стрелять начал
						ToolTip("Дожидаюсь смерти неписи. Белт №:"&$CurBelt,0,0)
						SetKillStatus(WaitKillEnd()) ;Дожидаемся смерти неписи. Возвращает 61 если цель жива, если мертва 61
					Case GetKillStatus() = 61  ;Если цель жива, продолжаем проверять ее до тех пор пока она не умрет
						ToolTip("Дожидаюсь смерти неписи. Белт №:"&$CurBelt,0,0)
						SetKillStatus(WaitKillEnd())
					Case GetKillStatus() = 62  ;Если цели нету
						ToolTip("Проверяю есть ли иконка цели. Белт №:"&$CurBelt,0,0)
						SetKillStatus(CheckIcon()) 		;Проверяем наличие иконки цели
					Case GetKillStatus() = 32  ;Если иконки не обнаружено
						ToolTip("Иконки не обнаружено. Белт №:"&$CurBelt,0,0)
						SetKillStatus(NPCTest())			;Проверяем есть ли в белте непись.
					Case GetKillStatus() = 42  ;Если не готов к стрельбе
						ToolTip("Дожидаюсь готовности к стрельбе. Белт №:"&$CurBelt,0,0)
						SetKillStatus(PrepareToShot()) ;То готовимсё
					Case GetKillStatus() = 12  ;Непись в белте не обнаружена
						ToolTip("В белте нету неписи. Белт №:"&$CurBelt,0,0)
						Sleep(8000)
						Send("^r")
						Return 0
					Case Else
						MsgBox(0,"",GetKillStatus()&"-е условие не описано в распределительном цикле")
						Exit
				EndSelect
			WEnd
			
		Case $Case = "BS"
;~ 			WinActivate("EVE")
			SetKillStatus("CheckResp")
			While 1
				KillPreload()
;~ 				MsgBox(0,"","Статус: "&GetKillStatus())
;~ 				WinActivate("EVE")
;~ 				WinWaitActive("EVE")
				Select
					Case GetKillStatus() = "CheckResp"
						SetKillStatus(CheckBSResp())
					Case GetKillStatus() = 1 ; Начинаем поиск и отстрел неписи
						ToolTip("Ищу непись в белте. Белт №:"&$CurBelt,0,0)
						SetKillStatus(BSTest()) ;Нацеливание на непись. Если в белте нет неписи возвращает 22, если непись есть то таргетит ее и возвращает 21.
					Case GetKillStatus() = 11 			;Если в белте обнаружена непись
						ToolTip("Беру непись на таргет. Белт №:"&$CurBelt,0,0)
						SetKillStatus(TargetBS())			;Взять ее на таргет
					Case GetKillStatus() = 21 ;Если непись найдена и таргетится
						ToolTip("Проверяю есть ли иконка цели. Белт №:"&$CurBelt,0,0)
						SetKillStatus(CheckIcon()) ;Проверка наличия иконки затаргеченной цели. Если иконка есть возвращает 31, если нету 32
					Case GetKillStatus() = 31 ;Увидили иконку неписи
						ToolTip("Дожидаюсь готовности к стрельбе. Белт №:"&$CurBelt,0,0)
						SetKillStatus(PrepareToShot()) ;Проверяем готовностьк  стрельбе, если готов то 41, если нет то 42
					Case GetKillStatus() = 41 ;Если к стрельбе готов
						ToolTip("Запускаю оружие. Белт №:"&$CurBelt,0,0)
						SetKillStatus(UseWeapon()) ;Начать стрелять. Наживает ф1 и ф2 и возвращает 51
					Case GetKillStatus() = 51 ;Если стрелять начал
						ToolTip("Дожидаюсь смерти неписи. Белт №:"&$CurBelt,0,0)
						SetKillStatus(WaitKillEnd()) ;Дожидаемся смерти неписи. Возвращает 61 если цель жива, если мертва 61
					Case GetKillStatus() = 61  ;Если цель жива, продолжаем проверять ее до тех пор пока она не умрет
						ToolTip("Дожидаюсь смерти неписи. Белт №:"&$CurBelt,0,0)
						SetKillStatus(WaitKillEnd())
					Case GetKillStatus() = 62  ;Если цели нету
						ToolTip("Проверяю есть ли иконка цели. Белт №:"&$CurBelt,0,0)
						SetKillStatus(CheckIcon()) 		;Проверяем наличие иконки цели
					Case GetKillStatus() = 32  ;Если иконки не обнаружено
						ToolTip("Иконки не обнаружено. Белт №:"&$CurBelt,0,0)
						SetKillStatus(BSTest())			;Проверяем есть ли в белте непись.
					Case GetKillStatus() = 42  ;Если не готов к стрельбе
						ToolTip("Дожидаюсь готовности к стрельбе. Белт №:"&$CurBelt,0,0)
						SetKillStatus(PrepareToShot()) ;То готовимсё
					Case GetKillStatus() = 12  ;Непись в белте не обнаружена
						ToolTip("В белте нету кул БШ. Белт №:"&$CurBelt,0,0)
						While 1
							Local $ReloadOffset = CheckModule()
							If $ReloadOffset[1][1] = 1 Then 
								ToolTip("Жду когда лаунчер выключится. Белт №:"&$CurBelt,0,0)
								Sleep(500)
							Else
								ExitLoop
							EndIf								
						WEnd
;~ 						SaveResult($CurBelt, 1)
						Send("^r")
						Return 0
;~ 					Case GetKillStatus() = 
;~ 						SetKillStatus(TargetBS())
					Case Else
						MsgBox(0,"",GetKillStatus()&"-е условие не описано в распределительном цикле")
						Exit
				EndSelect
			WEnd
			
	EndSelect
EndFunc

Func SetKillStatus($status)
  $MyBotStatus = $status
EndFunc

Func GetKillStatus()
  Return ($MyBotStatus)
EndFunc


Func KillPreload()
	If _WinGetLocalStatus() = 1 Then
		Warp("POS")
		Sleep(1000)
		ToolTip("Палево",0,0)
		While 1
			Sleep(5000)
			$sTestMsg = _WarpTest() 
			If $sTestMsg = 00 Or $sTestMsg = 01 Then ExitLoop
		WEnd
		
		While _WinGetLocalStatus() = 1
			Sleep(10000)
		WEnd
		Warp("BACK")
		While 1
			Sleep(5000)
			$sTestMsg = _WarpTest() 
			If $sTestMsg = 00 Or $sTestMsg = 01 Then ExitLoop
		WEnd	
	EndIf
	
;~ 	Local $Scrum = WebScrumbleTest()
;~ 	If Not @error Then
;~ 		MouseClick("left", $Scrum[0], $Scrum[1], 1, 10)
;~ 		Kill("ALL")
;~ 	Else
;~ 		;
;~ 	EndIf
	
EndFunc

Func NPCTest()
	PixelSearch(772, 189, 772, 189+150, 0xC61410, 5)
	If @error Then Return 12 ;Неись не найдена
	Return 11
EndFunc
				
Func BSTest()
	$BSTest = _GetOverviewStatus()
;~ 	MsgBox(0,"","БШ в овервью: "&$BSTest[1])
	If $BSTest[1] = 0 Then Return 12
	Return 11
EndFunc

Func TargetAll()
	$CellX1 = $Ov[0] - 4		;Расчет					;Для построчного скана
	$CellY1 = $Ov[1] + 52	;координат области 
	$CellX2 = $CellX1 + 22	;сканирования
	$CellY2 = $CellY1 + 17	;ячейки овервью.
	
	For $i = 1 To 6 Step 1
		Local $TargetAll = PixelSearch($CellX1 , $CellY1 , $CellX2, $CellY2, 0xC61410, 20) ;Проверяем есть ли в текущей ячейке непись
		If Not @error Then 
			MouseClick("left", $TargetAll[0], $TargetAll[1], 1, 10)
			Sleep(1000)
			Local $TestTarget = SIGetButtons()
			If $TestTarget[5] = 1 And SIOp("Target", "Get Target Button Status") = 0 Then
				Send("{CTRLDOWN}")
				Sleep(Random(50, 100, 1))
				MouseClick("left", Random($TargetAll[0], $TargetAll[0]+5, 1), Random($TargetAll[1], $TargetAll[1]+5, 1), 1, 10)
				Send("{CTRLUP}")
			ElseIf $TestTarget[3] = 0 And $TestTarget[4] = 0 And $TestTarget[5] = 0 And $TestTarget[6] = 0 Then
;~ 				MsgBox(0,"","")
				Warp("Belt", "Next")
				While 1 
					ToolTip("В активном поиске. Белт №:"&$CurBelt,0,0)
					Sleep(5000)
					$sTestMsg = _WarpTest() 
					If $sTestMsg = 00 Or $sTestMsg = 01 Then ExitLoop
				WEnd
			EndIf
		Else
			ExitLoop ;Если в ячейке не обнаружена непись то выйти из цикла
		EndIf
		$CellY1 = $CellY1 + 19
		$CellY2 = $CellY2 + 19
		If CheckIcon() = 31 Then ExitLoop
	Next
	Return 21 ;Закончил нацеливаться на непись
EndFunc

Func TargetBS()
;а вот ето пишем сами :D
EndFunc	

Func CheckBSResp()
;И ето тоже :3
EndFunc

Func CheckIcon() ;Проверка наличия иконки затаргеченной цели
	Local $Target = PixelSearch($1[1][0][1]+32, $1[1][0][2]+32, $1[1][0][1]+32, $1[1][0][2]+32, 0x000000) ;Ищим первую иконку таргета
	If @error Then 
		Return 31
	Else
		Return 32 ;не нашли иконку
	EndIf
EndFunc

Func WaitKillEnd() ;Дожидаемся пока сдохнет цель
	Sleep(1000)
	If SIOp("Target", "Get Target Button Status") = 1 Then ;Пока видим что горит кнопка цели
		CheckModulesOnTarget() ;Проверяем оба ли модуля активны на цели
		If @error Then ;Если нет
			If CheckReload() = 0 Then ;Мы не нашли черный фон на фоне числа отражающего количество оставшихся патронов
				Return 61
			Else
				Send("{F1}") ;Запускаем лаунчеры
			EndIf
		EndIf
		Return 61;Цель жива
	Else
		Return 62;Цели нету
	EndIf
EndFunc

Func PrepareToShot() ;Проверяем готовность к стрельбе
	Local $TestModule = CheckModule()
	If $TestModule[1][1] = 0 And $TestModule[1][2] = 0 Then 
		Sleep(1000)
		$TestModule = CheckModule()
		If $TestModule[1][1] = 0 And $TestModule[1][2] = 0 Then 
			Return 41 ;К стрельбе готов
		EndIf
	EndIf
	Return 42 ;К стрельбе не готов
EndFunc

Func UseWeapon() ;Запускаем оружие
	MouseClick("left", Random($1[1][0][1]+22, $1[1][0][1]+42, 1), Random($1[1][0][2]+22, $1[1][0][2]+42, 1), 1, 10)
	Send("{F1}{F2}")
	Return 51 ;Оружие запущено
EndFunc
 

McSkull

Знающий
Сообщения
66
Репутация
6
Если хотите разобраться то вот есть примерчик
http://autoit-script.ru/index.php?topic=67.0

Если же бот нужен готовый то вряд ли кто-то даст хороший открытый код...

P.S.
Если только для ханта то несложно написать бота прыгающего по белтам и тыкающего в кнопку F1 (ФоФками) пока есть красные крестики в овервиве... (
Правда я в механике ракет нуб... из поведения ФоФок знаю только то, что они самонаводящиеся и лочить таргет не нужно.

P.P.S
Belfigor опередил... :smile:
И сенкс за модуль.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 578
Репутация
934
Вот варпобелт если кому-то нужен, из той же пачки модулей что и выложенный выше модуль.
там не написано, Warp("BACK") - прыгнуть в тот белт из которого бот улетел на пос.
Код:
;~ #include "E:\Games\AutoIt scripts\!Eve\0.0 Hunter\All Include\OpFunc Include\OpenMenu v2.0 .au3"

WinActivate("EVE")
Local $Belt[2] = [1,20]
Global $CurBelt = 0

#cs
если хочешь прыгнуть на пос пишешь 
Warp("POS")
Спот
Warp("SPOT")
если в белт:
Warp("Belt", Число)
От минимального до максимального
Warp("Belt", "Random")
В рандомный белт от минимального до максимального
Warp("Belt", "Next")
В следующий белт относительно текущего (не конает если бот не летал еще ни в один белт
Warp("Belt", "Prev")
В предидущий белт относительно текущего (не конает если бот не летал еще ни в один белт
в целом конерктно по белтам 4 команды
Если ты только что был в максимально белте и заюзал "варп белт некст" то бот варпанется в минимальный белт и кур белт станет = мин белту
если ты был в мин белте и попытался прыгнуть в прив белт бот варпанется в макс белт и кур белт станет = макс белту
#ce


;использование: Сам разберешься.
; @error = 1 Если была попытка варпануться в следующий или предидущий белт не побывав при этом ни в одном белте
; @error = 2 Если была попытка варпануться в белт используя не существующее условие $Case2 = "кокая-то х-ня"
; @error = 3 Если была попытка исползовать функцию Warp используя не существующее условие $Case1 = "кокая-то х-ня"

Func Warp($Case1, $Case2=0)
	Select
		Case $Case1 = "Belt"
			Select
				Case $Case2 = "Random"
					$CurBelt = Random($Belt[0], $Belt[1], 1)
				Case $Case2 = "Next"
					If $CurBelt > 0 Then
						$CurBelt = $CurBelt + 1
						If $CurBelt > $Belt[1] Then $CurBelt = $Belt[0]
					Else
						SetError(1)
					EndIf
				Case $Case2 = "Prev"
					If $CurBelt > 0 Then
						$CurBelt = $CurBelt - 1
						If $CurBelt < $Belt[0] Then $CurBelt = $Belt[1]
						Else
						SetError(1)
					EndIf
				Case $Case2 >= $Belt[0] And $Case2 <= $Belt[1]
					$CurBelt = $Case2
				Case $Case1 = "BACK"
					OpenMenu(1, $CurBelt, 1)
				Case Else
					SetError(2)
			EndSelect
			OpenMenu(1, $CurBelt, 1) ;Варпаем в белт	
		Case $Case1 = "POS"
			OpenMenu(6,1)
		Case $Case1 = "SPOT"
			OpenMenu(7,1)
		Case Else
			SetError(3)
	EndSelect
EndFunc
 
Верх