Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Как организовать клик по скриптовой ссылке в онлайн игре?

Ответить
Настройки темы
Как организовать клик по скриптовой ссылке в онлайн игре?

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg фея2.JPG
(120.5 Kb, 19 просмотров)
Здравствуйте, я только начал осваивать Autoit, вот пытаюсь сделать что то вроде бота для онлайн игры и столкнулся с проблемкой. Нужно выбрать определенный ресурс (игровой) из предлагаемых (они генерируются в случайном порядке). Для этого нужно как то сэмулировать клик мыши по нужному названию. Причем диалог вроде ява скрипт. Адреса для кликов всегда одинаковы (http://haddan.ru/room/func/qa.php?id=21 или http://haddan.ru/room/func/qa.php?id=22 и т.д.) только значения ресурсов тусуются. Игра идет с клиента и с ИЕ.
Вот ИЕ Анализером стянул скрипт т.к. в ХТМЛе игры ниче полезного не нашел. Все участки страницы (фрэймы) имеют один титл. В общем если подскажете как организовать клик буду очень рад а если удасться выбрать желаемый ресурс – то эт была б бомба.


HTML код: Выделить весь код
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"><title>Хаддан // Вопрос-ответ</title> <link href="/@!style/haddan.css" rel="stylesheet" type="text/css"> <link href="/@!style/dialog.css" rel="stylesheet" type="text/css"> <script language="javascript">var g_eh_version='3.7.1.7345'</script> <script language="javascript" charset="windows-1251" src="/@!script/eh.js"></script> <script language="javascript" charset="windows-1251" src="/@!script/dialog.js"></script> <script language="javascript">ehge(); eh_check_inc('dialog'); ehgx()</script> </head> <body class="dialogbody"><!-- --><script language="JavaScript"> ehgh('init'); var g_dlg = { npcid: -82, npcname: 'Фея Поляны', npcsex: 0, npcrace: 'elf', changed: true, question: 'Приветствую тебя, странник! Я могу дать тебе следующие травы: <ul><li>Зеленая массивка - 2 шт.</li><li>Мухожор - 13 шт.</li><li>Подсолнух - 6 шт.</li><li>Капустница - 4 шт.</li><li>Мандрагора - 3 шт.</li></ul><br>Выбери себе.', answers: [[21,'Зеленая массивка'], [22,'Мухожор'], [23,'Подсолнух'], [24,'Капустница'], [25,'Мандрагора']], close: false, color: '#000000', goto: '' }; function dlgScript(){ var _c = eh_enter('dlgScript', arguments); eh_exit(_c); } ehgx(); </script><!-- --><div class="talksayBIG" id="dlgq"> <script language="JavaScript">ehge(); writeQuestion(); ehgx()</script> </div> <div id="dlga" style="margin-top: 10px"> <script language="JavaScript">ehge(); writeAnswers(); ehgx()</script> </div></body> <script language="JavaScript">ehge(); processDlg(); ehgx()</script> </html>


Отправлено: 00:56, 22-03-2010

 

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Цитата Kobrados:
Для этого нужно как то сэмулировать клик мыши по нужному названию. »
А нужное название какое?

Отправлено: 04:42, 22-03-2010 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Зеленая массивка; Мандрагора; Капустница; Подсолнух; Мухожор - в этом списке Масивка более желаемый ресурс а дальше по уменьшению стоимости т.е. Мухожор самый не желаемый. Предлагаться могут минимум 2 - максимум все ресурсы.

Отправлено: 11:11, 22-03-2010 | #3


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Kobrados,
В этой теме Получить адрес для перехода посмотрите.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:40, 22-03-2010 | #4


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


madmasles,
Спасибо за ссылку, код четко работает на главной странице игры а если зайти в игру и присоединить ИЕ то ни одной ссылки не находит. Т.е я понимаю надо както подключиться к нужному ява скрипту?
Вот основная часть кода страницы, дальше идут данные по персонажу.
HTML код: Выделить весь код
<html> <head> <title>Хаддан: Имя персонажа</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <script language="javascript">var g_eh_version='3.7.1.7345'</script> <script language="javascript" charset="windows-1251" src="/@!script/eh.js"></script> <script type="text/javascript" charset="windows-1251" src="/@!script/talknick.js"></script> <script type="text/javascript" charset="windows-1251" src="/@!script/talk.js"></script> <script type="text/javascript" charset="windows-1251" src="/@!script/thing.js"></script> <script type="text/javascript" charset="windows-1251" src="/@!script/wear.js"></script> <script type="text/javascript" charset="windows-1251" src="/@!script/pers.js"></script> <script type="text/javascript" charset="windows-1251" src="/@!script/cook.js"></script> <script type="text/javascript" charset="windows-1251" src="/@!script/smile.js"></script> <script type="text/javascript" charset="windows-1251" src="/@!script/slot.js"></script> <object id="xPersistanceObject" style="behavior:url(#default#userdata)"></object> <script language="JavaScript">ehge(); eh_check_inc('talknick','talk','thing','wear','pers','cook','smile','slot'); ehgx()</script> <script language='JavaScript'> ehge(null, 'persistance');


Последний раз редактировалось Kobrados, 23-03-2010 в 13:39.


Отправлено: 12:28, 23-03-2010 | #5


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


А как будет выглядеть код для присоединения к уже открытой странице, может я не так присоединял или как проверить с этой страницей работает код или нет?

Отправлено: 17:42, 23-03-2010 | #6


Пользователь


Сообщения: 143
Благодарности: 24

Профиль | Отправить PM | Цитировать


Kobrados, тут можно играть не в одном окне, а загрузив различные части игры в отдельные окна......неудобно, но зато работает ).

К примеру проверьте, откройте игру и зайдите куда нибуть, где есть с кем поговорить, нажмите на персонажа чтобы с ним поговорить, загрузится окно в котором вам нужно кликнуть на ссылку. Теперь откройте окно http://haddan.ru/room/func/qa.php , если открыв окно по этой ссылке увидите надпись ошибка обновите ..
А дальше пользуясь скриптом который вам предложил madmasles, жмите на то что вам нужно и все.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:49, 23-03-2010 | #7


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


HORRIBLE, спасиб, да, работает, но както не стабильно, через раз.
А иначе никак нельзя прописать уже открытое окно?

Отправлено: 01:09, 24-03-2010 | #8


Пользователь


Сообщения: 143
Благодарности: 24

Профиль | Отправить PM | Цитировать


Kobrados, у меня не получилось в самой игре нажать на ссылки в диалоге.

Я вам предлагал не что такое попробовать:
Код: Выделить весь код
#include <IE.au3>
$oIE = _IECreate("http://haddan.ru/main.php")
MsgBox(0,"","вдруг вы вышли из игры") ; вдруг вы вышли из игры, чтоб заново авторизоваться.
$oIE_dialog = _IECreate("http://haddan.ru/room/func/qa.php")

while 1
	sleep(100)
$sText = _IEBodyReadText ($oIE_dialog)
ToolTip($sText ,10,10)
$text = StringReplace($sText, "Пожалуйста, попытайтесь начать диалог ещё раз.", "-")
$num_replace = @extended
if $num_replace >= 1 then
_IEAction($oIE_dialog, 'refresh')
_IELoadWait($oIE_dialog)
EndIf

if $sText = '0' then
_IEAction($oIE_dialog, 'refresh')
_IELoadWait($oIE_dialog)
; необходимо чтобы увидеть результат разговора в основном окне.
_IEAction($oIE , 'refresh')
_IELoadWait($oIE )

ToolTip('Диалог окончен', 100,100)

Else

if $num_replace = 0 then
	$oLinks = _IELinkGetCollection($oIE_dialog)
	local $link_text = ''
	local $i = 1
	For $oLink In $oLinks
		$link_text &= @CRLF& 'Номер: '& $i &'. Текст: '& _IEPropertyGet($oLink, "innerText") & @CRLF
		$i +=1
	Next
	$answer = InputBox("Номер ссылки на которую жмем", $link_text, '1' , "",-1, -1, 10, 200)
	;MsgBox(0,'',$iNumLinks)
	$i = 1
		For $oLink In $oLinks
		;	MsgBox(0,'',$i)
			if number($answer) = $i then
			;$sLinkText = _IEPropertyGet($oLink, "innerText")
			;If StringInStr($sLinkText, 'Расскажи мне о магии.') Then
			;if $oLink.innertext == 'Расскажи мне о магии.' Then
				_IEAction($oLink,'click')
				_IELoadWait($oIE_dialog)
			;EndIf
			EndIf
			$i += 1
		Next
EndIf

EndIf
wend
Скрипт загрузит два окна, одно окно полная игра, второе это диалог. Как только у вас в основном окне отобразится окно диалога оно несомненно появится во втором окне после того как его перезагрузить.

Последний раз редактировалось HORRIBLE, 24-03-2010 в 13:43.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:29, 24-03-2010 | #9


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


HORRIBLE, спасиб большое, интересное решение.
Может кто то еще подскажет возможно ли сравнить текст из буфера (после нажатия Ctrl+C) с текстом в условии скрипта?

Отправлено: 22:06, 25-03-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Как организовать клик по скриптовой ссылке в онлайн игре?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Организовать спортивную трансляцию онлайн (см. подробности) CaminoDeFlores Сетевые технологии 0 21-01-2010 07:18
Выбор сервера в онлайн игре и еще один вопрос Bars66 AutoIt 2 25-10-2009 23:06
[решено] как перехватить клик мышки? proxy AutoIt 7 21-03-2009 11:13
Клик по ссылке на zip файл в IE pro100_tak Хочу все знать 4 09-12-2004 10:21
Клик по ссылке - изображение на E-mail Andrey V2003 Вебмастеру 6 17-08-2004 18:08




 
Переход