Что нового

WarpTest Модуль

hikki

Продвинутый
Сообщения
233
Репутация
99
IMHO надо вообще не использовать полоску скорости для этого доброго дела, а работать по поиску надписи warp drive active над индикаторами шилда и брони, но все лень, руки дойдут, перепишу таки, выложу.
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Если не использовать полоску ты не будешь различать как минимум два состояния корабля. "Разгоняюсь" и "В варпе"
 

McSkull

Знающий
Сообщения
66
Репутация
6
Luke сказал(а):
v0.3 ищет букву, а не точки и работает на любом клиенте, но это каждый пишет сам :smile:.
Хм, а как можно определять текст?
Все что находил это ImageSearch. Но все пишут, что он глючный вот я даже не разбирался...
 

Luke

Знающий
Сообщения
64
Репутация
14
Почитай вот эту тему http://autoit-script.ru/index.php/topic,261.0.html, там и про то как определять и про то почему никто не выложит готового решения.
 

McSkull

Знающий
Сообщения
66
Репутация
6
Luke сказал(а):
Почитай вот эту тему http://autoit-script.ru/index.php/topic,261.0.html, там и про то как определять и про то почему никто не выложит готового решения.
Почитал... понял, что мне до понимания как распознать текст еще далековато.
Хотя это могло бы решить много проблем... :smile:

Попробую ваш Warp Test Модуль v0.2. :smile:
 

DJ_Tommy

Продвинутый
Сообщения
236
Репутация
57
McSkull сказал(а):
Luke сказал(а):
Почитай вот эту тему http://autoit-script.ru/index.php/topic,261.0.html, там и про то как определять и про то почему никто не выложит готового решения.
Почитал... понял, что мне до понимания как распознать текст еще далековато.
Хотя это могло бы решить много проблем... :smile:

Попробую ваш Warp Test Модуль v0.2. :smile:
А что именно ты хочешь распознать? что от чего отличить? приведи скрины и мы тебе подскажем.
 

McSkull

Знающий
Сообщения
66
Репутация
6
DJ_Tommy сказал(а):
А что именно ты хочешь распознать? что от чего отличить? приведи скрины и мы тебе подскажем.
Просто у меня бот иногда промахивается в Меню... может ткнуть мимо варпа на астероидный белт или дока на станцию...

Я подумал, что если бы БОТ смотрел на то, что написано и тыкал в надпись такой проблемы не было бы.

P.S.
Хотя наверное это можно решить с помощью PixelSherch (ведь можно просто искать пиксель буквы).
Но как объяснить скрипту, что нужно запомнить координаты найденого пикселя я не знаю. :(

P.P.S.
Да и в окне игры довольно много текста.
Если БОТ сможет его распознавать то он будет видеть практически все, что происходит, а это открывает много перспектив...
 
Автор
Belfigor

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
К распознаванию текста стоит прибегать лишь тогда когда ну совсем больше нету способов решения проблемы, ибо в автоите этот процесс осуществляется ОЧЕНЬ медленно.
 

Luke

Знающий
Сообщения
64
Репутация
14
Мы ушли от темы :smile:, в данном случае , да и вообще в большинстве случаев применения в боте не нужно именно распознавание текста. Как бы это сформулировать. Нужно лишь определить наличие или отсутствие в определённом месте нужной формы из точек, что намного проще и быстрей чем распознавание.
 

McSkull

Знающий
Сообщения
66
Репутация
6
Luke сказал(а):
Мы ушли от темы :smile:, в данном случае , да и вообще в большинстве случаев применения в боте не нужно именно распознавание текста. Как бы это сформулировать. Нужно лишь определить наличие или отсутствие в определённом месте нужной формы из точек, что намного проще и быстрей чем распознавание.
Я доумался только до такого способа.
ПиксельСерчем искать цвет по углам квадрата и через If 1 точка and 2 точка and 3 точка and 4 точка Then

Может есть, что-то поинтересней? :smile:
 

bober

Новичок
Сообщения
13
Репутация
2
кхе воот что я использую

Код:
Func Statuswarpa()
	
	
	If $statusclienta == 1 Then
		$var1 = PixelSearch($WinPos[0] + 1043, $WinPos[1] + 505, $WinPos[0] + 1277, $WinPos[1] + 741, 0xff0000)
		If Not @error Then Send("{f11}")
		$a111 = 1
		$T = 0
		NachaloWarpa()
		If $NachaloWarpa = 1 Then
			$a111 = 1
		Else
			$a111 = 2
		EndIf
;~ 		
		If $NachaloWarpa = 1 Then
			While _ColorGetBlue(PixelGetColor($WinPos[0] + $statuswarpaX - 21, $WinPos[1] + $statuswarpaY - 3)) < 148
				Sleep(2000)
			WEnd
			Sleep(15000)
		EndIf
		While $a111 = 1
;~ 			
			proverkavstatusaclienta()
			If $statusclienta == 1 Then
;~ 				
				If _ColorGetBlue(PixelGetColor($WinPos[0] + $statuswarpaX, $WinPos[1] + $statuswarpaY)) > 148 Then
;~ 					
					Sleep(2000)
					If $T=20 Then
						if _ColorGetBlue(PixelGetColor($WinPos[0] + $statuswarpaX + 30, $WinPos[1] + $statuswarpaY - 6)) <= 148 Then $a111 = 2
					EndIf
				Else
					$a111 = 2
				EndIf
				$T += 1
				If $T = 600 Then
					$a111 = 2
					writelog("проблемы с функцией статус варпа")
				EndIf
			Else
				$a111 = 2
			EndIf
		
		WEnd
	EndIf
EndFunc
 

bober

Новичок
Сообщения
13
Репутация
2
поправил варп тест модуль с учетом поправок .. прошу прощения за некоторые функции но они проверочные и основной нагрузки не несут

Код:
Func Statuswarpa()
	writelog("Начало модуля статус варпа")
	proverkavstatusaclienta()
	$a111 = 1
	$T = 0
	If $statusclienta == 1 Then
		$var1 = PixelSearch($WinPos[0] + 1043, $WinPos[1] + 505, $WinPos[0] + 1277, $WinPos[1] + 741, 0xff0000)
		If Not @error Then Send("{f11}")
	
		While $a111 = 1
			proverkavstatusaclienta()
			writelog("STATUS="&$statusclienta&@CRLF)
			If $statusclienta == 1 Then
				writelog("="&_ColorGetBlue(PixelGetColor($WinPos[0] + $statuswarpaX, $WinPos[1] + $statuswarpaY))&@CRLF)
				If _ColorGetBlue(PixelGetColor($WinPos[0] + $statuswarpaX, $WinPos[1] + $statuswarpaY)) > 148 Then
					Sleep(2000)
					If $T=40 Then
						if _ColorGetBlue(PixelGetColor($WinPos[0] + $statuswarpaX + 30, $WinPos[1] + $statuswarpaY - 6)) <= 148 Then $a111 = 2
					EndIf
				Else
					Sleep(Random(2000,3000))
					if _ColorGetBlue(PixelGetColor($WinPos[0] + $statuswarpaX+26, $WinPos[1] + $statuswarpaY-5)) <=148 Then $a111 = 2
					writelog("="&_ColorGetBlue(PixelGetColor($WinPos[0] + $statuswarpaX+26, $WinPos[1] + $statuswarpaY-5))&@CRLF)
				EndIf
				$T += 1
				If $T = 600 Then
					$a111 = 2
					writelog("проблемы с функцией статус варпа")
				EndIf
			Else
				$a111 = 2
			EndIf
;~ 			
		WEnd
	EndIf
	writelog("Конец модуля статус варпа")
EndFunc   ;==>Statuswarpa


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