Что нового

WarpTest Модуль

hikki

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

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.
Да и в окне игры довольно много текста.
Если БОТ сможет его распознавать то он будет видеть практически все, что происходит, а это открывает много перспектив...
 
Автор
B

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 для других клиентов ом скорее всего другой.
 
Верх