Что нового

Не могу извлечь название локации в которой находится бот Браузерная игра Аватары

DStalker

Ботоводство+Мультибоксинг = время выспаться ;)
Сообщения
39
Репутация
2
Начал воять автоматизацию на игру-браузерку, как наткнулся на грабли.
Для того чтобы передвигаться боту по карте, его необходимо сориентировать в пространстве.
Не могу извлечь название локации в которой находится бот.
Скрин ниже с обведённым текстом "Волшебный магазинчик" - и есть название локации.
Хотелось бы помощи в корректном поиске фразы "Волшебный магазинчик" в этом окне. Т.е. каким то образом из текста взятого в активном окне найти при помощи StringRegExp искомую фразу "Волшебный магазинчик".
Тест персонаж:
L:Autopet
P:qwertyuiop
http://chaosage.ru/
Кусок рабочего проэкта, т.е. нажал F5 и сам запустился в игру зашёл, с граблями в конце:
Код:
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна
While 1
GUISetState()
$title=("Аватары: Эпоха Хахуса")
$oIE = ObjCreate("Shell.Explorer.2")
GUICreate($title, 1200,  800, -1, -1);создаёт внешнее окно размером х,у
$GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, 1000, 700); ;создаёт окно с клиентом размером х1,у1
GUISetState()
WinActivate($title)
WinMove($title, "", 0, 0) ;выравнивает окно по х=0 у=0
ControlClick($title, "" , "[CLASS:MacromediaFlashPlayerActiveX; INSTANCE:1]"); кликает по активному окну,
Sleep (500)
$oIE.navigate("http://chaosage.ru/")
WinActivate($title)
Sleep (500)
MouseClick ("left", 474, 459, 1, 0) ;выбор сервера
Sleep (500)
Send('Autopet') ;логин
Sleep (100)
Send('{TAB 1}') ;переключается на следующее поле "пароль"
Sleep (100)
Send('qwertyuiop');пароль
Sleep (100)
Send('{TAB 1}') ;переключается на следующее поле "вход"
Send('{enter}') ;жакается Ентер.Вход в игру
Sleep (3000) ;ждём


;_________________Грабли_______________________________________
$okno = WinList()
For $i = 1 to $okno[0][0]
$find=StringRegExp( $okno[$i][0], "Волшебный магазинчик" )
	If $okno[$i][0] <> "" and $find <>0  Then
		$txtokno = WinGetText($okno[$i][0], "")
		MsgBox(64, "Имя локи:", $txtokno)
	Else
		MsgBox(64, "Имя локи:", "болт")
   EndIf
Next
;____________________________________________________________

WEnd
 

Вложения

  • аватары эпоха хауса111.jpg
    аватары эпоха хауса111.jpg
    55.8 КБ · Просмотры: 50

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Данные, строки] Ориентация бота в пространстве. Браузерная игра Аватары

ПО регэкспам не подскажу, но можно сделать всё1 "дешего и сердито", читаешь в области названия изображения 1 пиксель по высоте и все пиксели по ширине, таким образом можно снять маски со всех нужных локация и распознавать их :smile:
 
Автор
DStalker

DStalker

Ботоводство+Мультибоксинг = время выспаться ;)
Сообщения
39
Репутация
2
Re: [Данные, строки] Ориентация бота в пространстве. Браузерная игра Аватары

пиксельсёрч:whistle: эт я использую 8), хотелось бы расширить горизонт не с графикой, а работой с извлечёнными данными.
Вчера порылся по форуму, наметил стратегию, не без косяков, но с помощью форумчан, надеюсь найти желаемую комбинацию.
1.Чтобы создать шаблон поиска, необходимо получить текст актуальной обновлённой ХТМЛ странички. Для моей ситуации интерпретирую - перед поиском названия локации "волшебный магазинчик" необходимо обозначить область текста в активном окне в котором искать эту локу нужно. Почесал репу, нарыл в соседней теме интересную фишечку вывода всего текста активного окна в виде сообщения:
3-4 способа вывода текста активного окна(убрал всё лишнее, оставил саму идею. скрипт работает):
Код:
#include <IE.au3>
While 1
GUISetState()
$title=("Аватары: Эпоха Хахуса")
$oIE = ObjCreate("Shell.Explorer.2")
GUICreate($title, 1200,  800, -1, -1);создаёт внешнее окно размером х,у
$GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, 1000, 700); ;создаёт окно с клиентом размером х1,у1
GUISetState()
WinActivate($title)
ControlClick($title, "" , "[CLASS:MacromediaFlashPlayerActiveX; INSTANCE:1]"); кликает по активному окну,
Sleep (500)
$oIE.navigate("http://chaosage.ru/")
WinActivate($title)
Sleep (500)




;способ1:
$sHTML = _IEDocReadHTML ($oIE)
MsgBox(48,'Значение1:', $sHTML)

;способ2:
$sHTML = _IEBodyReadHTML($oIE)
MsgBox(48,'Значение2:',$sHTML)

;способ3:
$oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oHTTP.Open('GET', 'http://chaosage.ru/', False)
$oHTTP.Send('')
$oHTTP.WaitForResponse
$sHTML = $oHTTP.ResponseText
MsgBox(48,'Значение3:',$sHTML)

;способ4:
ConsoleWrite("Значение4*" & $sHTML & @CRLF) ;весь текст отображаемый уходит не в окно, а в консоль редактора .au3

WEnd


;способ1 Минус нет скролбара для прокрутки сообщения.
$sHTML = _IEDocReadHTML ($oIE)
MsgBox(48,'Значение1:', $sHTML)


;способ2 - Минус нет скролбара для прокрутки сообщения.
$sHTML = _IEBodyReadHTML($oIE)
MsgBox(48,'Значение2:',$sHTML)

;способ3 - эээм... ну не понял я этот пример... Минус нет скролбара для прокрутки сообщения.
$oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oHTTP.Open('GET', 'http://chaosage.ru/', False)
$oHTTP.Send('')
$oHTTP.WaitForResponse
$sHTML = $oHTTP.ResponseText
MsgBox(48,'Значение3:',$sHTML)

;способ4: - в консоль вываливает всю инфу с окна, скролбар не нужен, тк в консоли редактора всё вываливается. Минус необходимо работать через редактор с консолью)
ConsoleWrite("Значение4*" & $sHTML & @CRLF) ;весь текст отображаемый уходит не в окно, а в консоль редактора .au3




Вывод: Нашёл способы вывода инфы, для обобщения
Хотелось бы пользоваться 2м способом, ну накрайняк первым. Но отсутствие скрола в MsgBox - удручает. Пишут типа нет такого в MsgBox, используйте GUI, верно?





2. Далее необходимо создать шаблон по обобщённой инфе полученой из пункта1...
 

Вложения

  • аватары эпоха хауса122.jpg
    аватары эпоха хауса122.jpg
    84.5 КБ · Просмотры: 27

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Данные, строки] Ориентация бота в пространстве. Браузерная игра Аватары

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Данные, строки] Ориентация бота в пространстве. Браузерная игра Аватары" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 

bugaj

Знающий
Сообщения
140
Репутация
11
Re: Не могу извлечь название локации в которой находится

дешево и сердито это вот

Procedure Button1OnClick();
begin
if Loc.FindPicture then
ShowMessage('нашел');
end;
:rofl:
 

nowost

Знающий
Сообщения
178
Репутация
17
текст простой, статистически расположен, подключи Tesseract OCR, махом распознает
 
Верх