Что нового

[Ботва Онлайн] Бот для копки кри.

Asshaker

Знающий
Сообщения
150
Репутация
17
Некоторое время назад начал играть в ботву. Постоянно сидеть и тыкать кнопочки нет ни времени ни желания. По этой причине решил написать бота.
За бодалку большое спасибо автору http://autoit-script.ru/index.php/topic,6847.0.html
MISSION COMPLETED
Копатель Lite:
Код:
; Лайт версия копателя, после обновлений игры
#include <IE.au3>
HotKeySet("{`}", "Terminate") ;хот кей для остановки бота - "Ё"
Global $oIE = _IEAttach("Битва за") ;подключаемся к окну ИЕ
Global $Dig='mine.php?a=open&m=dig&k=' ;Добыть кри
Global $Reset='mine.php?a=open&m=reset&k=' ;Продолжить поиск
Global $Open='mine.php?a=open' ;Смотреть в карьер
$sHTML=_IEBodyReadHTML($oIE)
Global $lvl=StringRegExp($sHTML,'safe:\|(.*?)\|;safe4',1) ;запоминаем лвл при старте бота
	If $lvl=0 Then
		$oIEt = _IEAttach("[CLASS:IEFrame]", 'Instance')
		_IENavigate($oIEt,'http://g1.botva.ru/index.php')
		Sleep(500)
		Send('{SPACE}')
	EndIf

While 1
	Switch MainTimers() ; рулевой :)
		Case 1
			If Karer()=1 Then
				_IELinkClickByText($oIE, 'Шахта')
				LinkClick($Open)
			Else
				ButtonPres($oIE,'РАБОТАТЬ')
			EndIf
		Case 2
			DigOrRes() ; to be, or not to be
		Case 3
			LinkClick($Open) ; если таймер в карьере 0 и я не в карьере
		Case 4
			Sleep(15000)
		Case Else
			Sleep(1000)
;~ 			MsgBox(0,0,'Swith error',3)
			$oIEbc = _IEAttach("[CLASS:IEFrame]", 'Instance')
			$sUrlNew = 'http://g1.botva.ru/post.php'
			_IENavigate($oIEbc, $sUrlNew)
			Sleep(1000)
	EndSwitch
WEnd
Func MainTimers() ;определение действий по игровому таймеру
	_MyLoadWait()
	RandomSleep()
	$oTimers=_IETagNameGetCollection($oIE,'DIV')
	For $oTimer in $oTimers
	If $oTimer.id=='rmenu1' and $oTimer.classname=='extend1' Then
		If StringInStr($oTimer.innertext,'Я свободен!') Then
			Return 1
		EndIf
		If StringInStr($oTimer.innertext,'Работа в карьере') Then
			$wt=WorkTime()
			$kt=Karer()
			If $wt=0 And $kt=0 Then
				Return 2
			EndIf
			If $wt=0 And $kt=1 Then
				Return 3
			EndIf
			If $wt=1 Then
				Return 4
			EndIf
		EndIf
		ExitLoop
	EndIf
Next
EndFunc
Func WorkTime() ;функция проверки таймера копки
	_MyLoadWait()
	$wDIVs=_IETagNameGetCollection($oIE,'DIV')
	For $wDIV in $wDIVs
		If $wDIV.id=='rmenu1' and $wDIV.classname=='extend1' Then
			$wTimes=_IETagNameGetCollection($wDIV,'A')
			If @extended < 10 Then
				Return 1
			EndIf
			For $wTime in $wTimes
				If $wTime.classname='timer link' Then
					$wMin=StringRegExp($wTime.innertext,'\d{2}:(.*?):\d{2}',1)
					$wSec=StringRegExp($wTime.innertext,'\d{2}:\d{2}:(\d{2})',1)
					If $wMin<>0 And $wSec<>0 And $wMin[0]=0 And $wSec[0]=0 Then
						Return 0
					Else
						Return 1
					EndIf
					ExitLoop
				EndIf
			Next
			ExitLoop
		EndIf
	Next
EndFunc
Func Karer() ;функция проверки в карьери ли я?
	_MyLoadWait()
	$oPlaces=_IETagNameGetCollection($oIE,'DIV')
	For $oPlace in $oPlaces
		If $oPlace.id=='crumbs' Then
			If StringInStr($oPlace.innertext,'Шахта') Then
				If StringInStr($oPlace.innertext,'Карьер') Then
					Return 0
				Else
					Return 1
				EndIf
			Else
				Return 1
			EndIf
			ExitLoop
		EndIf
	Next
EndFunc
Func DigOrRes() ;смотрим шанс выкопать кри добываем/продолжаем
	_MyLoadWait()
	RandomSleep()
	$oProcs=_IETagNameGetCollection($oIE,'P')
	For $oProc in $oProcs
		If $oProc.classname=='red_line_mine' Then
			$proc=StringRegExp($oProc.innertext,'Вероятность успеха - (.*?) \%',1)
			If $proc<>0 Then
				If $proc[0]>42 Then
					LinkClick($Dig)
					ChargeCheck()
				Else
					LinkClick($Reset)
				EndIf
			EndIf
			ExitLoop
		EndIf
	Next
EndFunc
Func RandomSleep() ;Случайное ожидание от 200 до 600 мс
	$r=Random(2,6,1)
	Sleep($r*100)
EndFunc
Func Terminate() ;функция остановки бота
	MsgBox(64,'','Exit Script',3)
    Exit 0
EndFunc
Func LinkClick($FocusLink) ;Клик по кнопкам с уникальными ссылками
	_MyLoadWait()
	RandomSleep()
	$oLinks=_IELinkGetCollection($oIE)
	For $oLink in $oLinks
		if StringInStr($oLink.href,$FocusLink) Then
			_IEAction($oLink,'click')
			_IELoadWait($oIE)
			ExitLoop
		EndIf
	Next
EndFunc
Func ButtonPres($TagCollect, $TagValue) ;Функция нажатия на кнопку c $TagVaule
	_MyLoadWait()
    $oInputs = _IETagNameGetCollection($TagCollect, 'input')
    For $oInput In $oInputs
        If $oInput.type == 'submit' And $oInput.value == $TagValue Then ;тогда нападаем :)
			_IEAction($oInput, 'click')
			_IELoadWait ($oIE)
			ExitLoop
        EndIf
    Next
EndFunc
Func InvSet() ;функция заполнения ползунков в купильне
	RandomSleep()
	$oSlider1 = _IEGetObjById($oIE,'slider_v_4')
	$oSlider2 = _IEGetObjById($oIE,'slider_v_5')
	$oSlider3 = _IEGetObjById($oIE,'slider_v_6')
	_IEFormElementSetValue($oSlider1, $lvl[0]) ;  $lvl это лвл перса и кол во инструментов
	_IEFormElementSetValue($oSlider2, $lvl[0])
	_IEFormElementSetValue($oSlider3, $lvl[0])
	_IEFormSubmit($oIE)
EndFunc
Func ChargeCheck() ;функция проверки зарядов КИРКИ(кол-во инстр. одинаково)
	_MyLoadWait()
	$oTables = _IETableGetCollection ($oIE)
	For $oTable in $oTables
		If $oTable.classname=='default padding5' Then
			$aTableData = _IETableWriteToArray ($oTable)
			$charge=StringRegExp($aTableData[0][1],'Зарядов (\d{2}) раз',1)
			If $charge<>0 And $charge[0]<$lvl[0]*2 Then ; если зарядов меньше лвл*2
				_IELinkClickByText($oIE, 'Шахта') ; жмем кнопку шахта
				RandomSleep()
				_IELinkClickByText($oIE, 'Смотреть') ; жмем кнопку Смотреть, попадаем в купильню
				InvSet()
				ButtonPres($oIE,'КУПИТЬ')
			EndIf
			ExitLoop
		EndIf
	Next
EndFunc
Func _MyLoadWait()
	While Not (String($oIE.readyState) = "complete" Or $oIE.readyState = 4)
		Sleep(100)
	WEnd
EndFunc

Умеет копать, умеет закупать инструмент.
Все остальное можно найти...
Full версия гоняет летунов в БП, бодается, бодается по списку, открывает поляны, следит за зверем(выпускает/прячет) и много чего еще.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: Переход по ссылкам в FF (Ботва Онлайн)

Asshaker
для вопросов связанных с автоматизацией браузеров есть специальный раздел. пользуйся им. на первый раз переношу
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Re: Переход по ссылкам в FF (Ботва Онлайн)

Kaster, Спасибо!
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Re: Переход по ссылкам в FireFox(Ботва Онлайн)

Хорошо тогда такой вопрос.
Этот скрипт открывает ИЕ и показывает сылки. А как считать ссылки из открытого ИЕ?
Код:
#include <IE.au3>
#include <Array.au3>
$oIE = _IECreate("http://g2.botva.ru")
_LinksDisplay()
Func  _LinksDisplay()
    Local $i = 0
    $oLinks = _IELinkGetCollection ($oIE)
    Dim $aLinks[@extended]
        For $oLink In $oLinks
            $aLinks[$i] = $oLink.href
            $i += 1
        Next
    _ArrayDisplay($aLinks)
EndFunc
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Re: Переход по ссылкам в FireFox(Ботва Онлайн)

Чую я тут сам с собой буду вести беседу :smile:
Код:
#include <IE.au3>
#include <Array.au3>

$oIE = _IEAttach("Битва за") ; всегда находит окно ИЕ
_IELinkClickByText ($oIE, 'Шахта') ;идем в шахту
_IELinkClickByIndex ($oIE, 44) ; смотрим  в карьер
_IELinkClickByText ($oIE, 'Работать') ;начинаем копать
sleep(300000) ;ждем 5 мин
_IELinkClickByIndex ($oIE, 44) ; добываем кри при любом %


Func _LinksDisplay()
    Local $i = 0
    $oLinks = _IELinkGetCollection ($oIE)
    Dim $aLinks[@extended]
        For $oLink In $oLinks
            $aLinks[$i] = $oLink.href
            $i += 1
        Next
    _ArrayDisplay($aLinks)
EndFunc


Как получить % выкапывания и кол-во инструментов?

Код:
<div class="inputGroup ">

	<div style='margin-left:3px;'>
		<a id="cm_switch" class="cmd_all cmd_split cmd_asplit  cmd_split_mine " href="javascript:doSwitch('cm_switch',
			'cmd_split_active','buy_block_1','buy_block_2','other_14')">
			<b>Трудягам</b> <u>Шахтерам</u>
		</a>

	</div>



	<div class="grbody" style="height:210px;margin-top:-1px;">

		<!-- Блатные очки -->
		<div id="buy_block_1" >
			<table class='default padding5'>
				<tr><td rowspan='2'
				        style='width:60px;padding:0;'>
						<img src='http://i.botva.ru/images/items/Mine_4s.jpg' alt='Кирка' />

					<td class='row_1'><b>Кирка Трудяги:</b>
				<tr><td>
			Зарядов <b>37</b> раз.
			
				<tr><td rowspan='2'
				        style='width:60px;padding:0;'><img src='http://i.botva.ru/images/items/Mine_5s.jpg' alt='Очки'  />
					<td class='row_1'><b>Очки Трудяги:</b>
				<tr><td>
			Зарядов <b>37</b> раз.
			
				<tr><td rowspan='2'
				        style='width:60px;padding:0;'><img src='http://i.botva.ru/images/items/Mine_6s.jpg' alt='Каска Трудяги'  />

					<td class='row_1'><b>Каска Трудяги:</b>
				<tr><td>
			Зарядов <b>37</b> раз.
						</table>
		</div>
		
		<!-- Шахтерские очки -->
		<div id="buy_block_2" class='hidden'>

			<table class='default padding5'>
				<tr><td rowspan='2'
				        style='width:60px;padding:0;'>
						<img src='http://i.botva.ru/images/items/Mine_1s.jpg' alt='Кирка' />
					<td class='row_1'><b>Кирка:</b>
				<tr><td>
			Зарядов <b>5</b> раз.
			
				<tr><td rowspan='2'
				        style='width:60px;padding:0;'><img src='http://i.botva.ru/images/items/Mine_2s.jpg' alt='Очки' class='shadow5' />

					<td class='row_1'><b>Очки:</b>
				<tr><td>
			Зарядов <b>0</b> раз.
			
				<tr><td rowspan='2'
				        style='width:60px;padding:0;'><img src='http://i.botva.ru/images/items/Mine_3s.jpg' alt='Каска' class='shadow5' />
					<td class='row_1'><b>Каска:</b>
				<tr><td>
			Зарядов <b>0</b> раз.
						</table>

		</div>
	</div>

	<div class="bottom"></div>
</div>	
<td class='half'>
<div class='inputGroup inputTitle  inputHeight'>
	<div class='grtop'></div>
	<div class='title'><div>Карьер</div></div>
	<div class='grbody' style='min-height:210px'>

			<center>
		<p>Вы нашли месторождение! 
Вероятность успеха - 25 %. 
Будем пробовать добывать?</p>

		
		


			<a href="mine.php?a=open&m=dig&k=19992" class='cmd_all cmd_row3 cmd_arow3 ' >ДОБЫТЬ КРИСТАЛЛ</a>

			<a href="mine.php?a=open&m=reset&k=19992" class='cmd_all cmd_row3 cmd_arow3 ' >ИСКАТЬ ДАЛЬШЕ</a>

			<a href="mine.php?a=open&m=cancel&k=19992" class='cmd_all cmd_row3 cmd_arow3 ' >УЙТИ С ШАХТЫ</a>

		</center>

	
</div>
	<div class='bottom'></div>
</div>
 

sngr

AutoIT Гуру
Сообщения
981
Репутация
391
Re: Переход по ссылкам в IE(Ботва Онлайн)

Код:
$txt=FileRead(@ScriptDir & '\12.txt')
$res=StringRegExp($txt,"(?s)<td class='row_1'><b>(.*?)</b>.*?Зарядов <b>(.*?)</b> раз",3)
For $i=0 To UBound($res)-1
	MsgBox(0,'',$res[$i]&$res[$i+1])
	$i=$i+1
Next
$ver=StringRegExp($txt,"<p>Вы нашли месторождение! 
Вероятность успеха - (.*?). 
",3)
MsgBox(0,'',$ver[0])
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Re: Переход по ссылкам в IE(Ботва Онлайн)

(.*?) <- это маска цифр в искомой строке?

Код:
#include <IE.au3>
#include <Array.au3>

$oIE = _IEAttach("Битва за")
$sHTML = _IEBodyReadHTML ($oIE)
$res=StringRegExp($sHTML,"Зарядов <b>(.*?)</b> раз",3)
$txt=FileRead(@ScriptDir & '\12.txt')
;~ $res=StringRegExp($txt,"Зарядов <b>(.*?)</b> раз",3)
_ArrayDisplay($res)

если стоить массив из файла выдает 3 позиции с нужными значениями.
если стоить массив из ИЕ не происходит ничего :(
 

sngr

AutoIT Гуру
Сообщения
981
Репутация
391
Re: Переход по ссылкам в IE(Ботва Онлайн)

Смотри выше я изменил пример. (.*?) это любое количество любых символов. Получая html через _IEBodyReadHTML ты имеешь проблемы с кодировкой, поэтому шаблон с русскими буквами не пашет. Сохраняй исходный код страницы в файл и из него читай.
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Re: Переход по ссылкам в IE(Ботва Онлайн)

Код:
#include <IE.au3>
#include <Array.au3>

$oIE = _IEAttach("Битва за")
$sHTML = _IEBodyReadText ($oIE)
$res=StringRegExp($sHTML,"Зарядов(.*?)раз",3)
if $res[0] < 26 Then
	_IELinkClickByText ($oIE, 'Шахта')
	_IELinkClickByIndex ($oIE, 43)
EndIf

Все гуд читает с ИЕ сравнивает и переходит по 2м ссылкам в магазин. в магазине нужно купить 26 единиц каждого товара для Трудяги(правая колонка)
как выставить 3 ползунка в крайнее правое положение?

кусок магазина:
Код:
<td width="50%" class="top padding5">
	<table class="default">
			<tr class="row_1 padding5">
			<td class="middle"><img src="http://i.botva.ru/images/items/Mine_4s.jpg" alt="Кирка Трудяги"  onMouseOver="doItem('mine_4','body_add:|&lt;br /&gt;&lt;b&gt;Цена: 10000 &lt;b class=\&#039;icon money1\&#039; title=\&#039;Золото\&#039;&gt;&lt;/b&gt;/5 &lt;b class=\&#039;icon money3\&#039; title=\&#039;Зелень\&#039;&gt;&lt;/b&gt;. &lt;br/&gt; Максимум можно преобрести: 78.&lt;/b&gt;|',event,this)" ></td>
			<td><b>Кирка Трудяги</b> 
(Ваши вещи: 55 шт.)
<div id='slider_4' class='slider '></div>

<input type='text' value="0" name='items_buy[3]' id='slider_v_4' rel=''
  onchange='$("#slider_4").slider("value",this.value); ' class='slider_v '>


<script type="text/javascript">
$(function() {
	$("#slider_4").slider({
		min:0, max:0, value:0,
		range: 'min', step: 26,
		
		slide: function(event, ui) { $("#slider_v_4").val(ui.value + '');sliderHandler(this,ui,10000,5);; }}
	);
});
</script> </td>
		</tr>
			<tr class="row_1 padding5">
			<td class="middle"><img src="http://i.botva.ru/images/items/Mine_5s.jpg" alt="Очки Трудяги"  onMouseOver="doItem('mine_5','body_add:|&lt;br /&gt;&lt;b&gt;Цена: 6000 &lt;b class=\&#039;icon money1\&#039; title=\&#039;Золото\&#039;&gt;&lt;/b&gt;/3 &lt;b class=\&#039;icon money3\&#039; title=\&#039;Зелень\&#039;&gt;&lt;/b&gt;. &lt;br/&gt; Максимум можно преобрести: 78.&lt;/b&gt;|',event,this)" ></td>
			<td><b>Очки Трудяги</b> 
(Ваши вещи: 55 шт.)
<div id='slider_5' class='slider '></div>

<input type='text' value="0" name='items_buy[4]' id='slider_v_5' rel=''
  onchange='$("#slider_5").slider("value",this.value); ' class='slider_v '>

<script type="text/javascript">
$(function() {
	$("#slider_5").slider({
		min:0, max:0, value:0,
		range: 'min', step: 26,
		
		slide: function(event, ui) { $("#slider_v_5").val(ui.value + '');sliderHandler(this,ui,6000,3);; }}
	);
});
</script> </td>
		</tr>
			<tr class="row_1 padding5">
			<td class="middle"><img src="http://i.botva.ru/images/items/Mine_6s.jpg" alt="Каска Трудяги"  onMouseOver="doItem('mine_6','body_add:|&lt;br /&gt;&lt;b&gt;Цена: 6000 &lt;b class=\&#039;icon money1\&#039; title=\&#039;Золото\&#039;&gt;&lt;/b&gt;/3 &lt;b class=\&#039;icon money3\&#039; title=\&#039;Зелень\&#039;&gt;&lt;/b&gt;. &lt;br/&gt; Максимум можно преобрести: 78.&lt;/b&gt;|',event,this)" ></td>
			<td><b>Каска Трудяги</b> 
(Ваши вещи: 55 шт.)
<div id='slider_6' class='slider '></div>

<input type='text' value="0" name='items_buy[5]' id='slider_v_6' rel=''
  onchange='$("#slider_6").slider("value",this.value); ' class='slider_v '>


<script type="text/javascript">
$(function() {
	$("#slider_6").slider({
		min:0, max:0, value:0,
		range: 'min', step: 26,
		
		slide: function(event, ui) { $("#slider_v_6").val(ui.value + '');sliderHandler(this,ui,6000,3);; }}
	);
});
</script> </td>
		</tr>
		</table>
</td>
	</tr>
</table>



<table class="default">
	<tr>

		<td width="10%" class="left">
			 
		</td>
		<td width="80%" class="center">
			Цена:
			<input type='radio' name='type' value='0' checked /><span class="price_1_num">0</span> <b class='icon money1' title='Золото'></b> / <input type='radio' name='type' value='1'  /><span class="price_2_num">0</span> <b class='icon money3' title='Зелень'></b>

		</td>
		<td width="10%" class="right">
			<input type='submit'  class='cmd_all cmd_mini_sl cmd_amini_sl ' value='КУПИТЬ' >
		</td>
	</tr>
</table>
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Re: Переход по ссылкам в IE(Ботва Онлайн)

Все работает :smile:
Код:
#include <IE.au3>
#include <Array.au3>
$oIE = _IEAttach("Битва за") ;подключаемся к окну ИЕ
_IELinkClickByText($oIE, 'Шахта') ; идем в шахту
_IELinkClickByIndex($oIE, 45) ; Заходим в карьер
$sHTML = _IEBodyReadText ($oIE) ;считываем текст
$res=StringRegExp($sHTML,"Зарядов (.*?) раз",3) ; ищем кол-во инструментов
;~ _ArrayDisplay($proc)
For $i=1 to $res[0] ; пока инструменты есть копаем
_IELinkClickByText($oIE, 'Шахта') ; для уверености 
_IELinkClickByIndex($oIE, 45) ; это тоже
_IELinkClickByText($oIE, 'Работать') ;  Яросно копать
ToolTip('копаем',100,100)
Sleep(310000) ;ждем 5 минут и 10 сек для уверености
$sHTML = _IEBodyReadText ($oIE) ; считываем текст
$proc=StringRegExp($sHTML,"Вероятность успеха -(.*?)%",3) ; ищем какой % успеха
if $proc[0] >30 Then ; если % больше 30
_IELinkClickByIndex($oIE, 46) ; вытаскиваем кристал
Else
_IELinkClickByIndex($oIE, 47) ; если % меньше 30 продолжаем копать
EndIf
Next


Вопрос по покупке инструментов все еще актуален
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Re: [Сеть, интернет] [IE-Ботва Онлайн] Бот для копки кри.

Код:
$oForm = _IEFormGetCollection($oIE, $iCount)
_IEFormSubmit ($oForm)
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Re: [Сеть, интернет] [IE-Ботва Онлайн] Бот для копки кри.

axlwor, что это значит?

З.Ы. Проблему "невозможно отобразить страницу", "504 gateway time-out", "504 gateway time-out nginx" решил так:
Код:
_IELinkClickByText($oIE, 'Шахта') ; для уверености
If  @error = $_IEStatus_NoMatch Then 
	MsgBox(64,'','error')
EndIf
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Вопрос по покупке инструментов все еще актуален
вот что это значит. раньше там было несколько форм. выбираешь нужную и submit. ждешь. считываешь количество. при необходимости повторяешь
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
а можно по подробнее? Я не понимаю как выбрать нужную форму и как ее считать и что за формы вообще.
Если "раньше" они были, значит сейчас их нет.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
почитай хелп к используемым функциям. в _IEFormSubmit все хорошо показано
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
Все еще не понятно :smile: ну да ладно, разберусь позже.
Сейчас проблема в следующем: КАК ОБНОВИТЬ СТРАНИЦУ!?
Send не катит ибо окно свернуто.
Варианты ControlClick:
Код:
ControlClick("Карьер", "", "[CLASS:ToolbarWindow32; INSTANCE:3]") ;3 кнопочки после адресной строки (Представление, обновить, остановить) находятся в 1м инстансе.     нет реакции
;~ 1:	103
;~ 2:	201
;~ 3:	202
;~ 4:	104
;~ 5:	100
;~ 6:	102
;~ 7:	101
$oIE = _IEAttach("Битва за") ;подключаемся к окну ИЕ
ControlClick($oIE, "", "[ID:102]") ;проверял по каждому ID нет реакции

Выставлял кнопочки перед адресной строкой. Класс и инстанс не изменяются, ID 101 и 102
так же нет реакции :(
Как сказать браузеру чтоб он обновил страницу?


Если кому нужно :smile: версия 0.033
Код:
#include <IE.au3>
#include <Array.au3>
$oIE = _IEAttach("Битва за") ;подключаемся к окну ИЕ
_IELinkClickByText($oIE, 'Шахта') ; идем в шахту
_IELinkClickByIndex($oIE, 45) ; Заходим в карьер
$sHTML = _IEBodyReadText ($oIE) ;считываем текст
$res=StringRegExp($sHTML,"Зарядов (.*?) раз",3) ; ищем кол-во инструментов
For $i=1 to $res[0] ; пока инструменты есть копаем
	$a=1
	while $a=1 ;начинаем проверку процеса копки
		Sleep(1000)
		$sHTML = _IEBodyReadText ($oIE) ;считываем текст
		StringRegExp($sHTML,"Если ты готов спуститься в карьер",3) ; ищем смотрим, готовы ли копать
		if @error Then
			_IEAction($oIE, 'refresh') ;обновляемся
		Else
			_IELinkClickByIndex($oIE, 46) ;  Яросно копать
		EndIf
	$sHTML = _IEBodyReadText ($oIE) ; считываем текст
	ToolTip('Ищем строку Вы ищите кри',100,200)
	Sleep(2000)
	StringRegExp($sHTML,"Вы ищете кристаллы",3) ;ищем строку
		If  @error Then ;если не нашли
			ToolTip('Не копаем',100,100)
			Sleep(5500)
			$proc=StringRegExp($sHTML,"Вероятность успеха -(.*?)%",3) ;ищем строку
			if @error Then ;если не нашли
				ToolTip('Вероятность успеха не найдена, ждем 10с',100,100)
				Sleep(10000) ;ждем
				_IEAction($oIE, 'refresh') ;обновляемся
			Else ;если нашли
				if $proc[0] >30 Then ; если % больше 30
					_IELinkClickByIndex($oIE, 46) ; вытаскиваем кристал
				Else
					_IELinkClickByIndex($oIE, 47) ; если % меньше 30 продолжаем копать
				EndIf
				$a += 1 ;выход
			EndIf
		Else
			$w=1
			While $w=1
				$sHTML = _IEBodyReadText ($oIE) ;считываем текст
				StringRegExp($sHTML,"00:00:00",3) ; ищем смотрим, готовы ли копать
				if not @error Then
					ToolTip('закончили копать',100,100)
					Sleep(1000)
					$w+=1
					_IELinkClickByIndex($oIE,49)
				Else
					if @error=$_IEStatus_NoMatch Then
					_IEAction($oIE, 'refresh')
					Sleep(8000)
				EndIf
				ToolTip('ждем завершения',100,150)
				Sleep(10000)
			EndIf
			WEnd
		EndIf
	WEnd
Next
 
Автор
A

Asshaker

Знающий
Сообщения
150
Репутация
17
madmasles, Спасибо огромное :smile: Спас меня. Теперь я могу продолжить эксперименты с покупкой инструментов. А потом и бодалку прикрутить можно :D
Есть ли возможность сделать глобальное условие типа:
Код:
while 1
$oIE = _IEAttach("Битва за") ;подключаемся к окну ИЕ
if @error=$_IEStatus_NoMatch then
sleep(5000)
_IEAction($oIE, 'refresh') ; или $oIE = _IECreate ("www.autoitscript.com")
else exitploop
endif
wend

Тем самым с случае разрыва соединения с сервером и в случае возникновения ошибок. Страница каждые 5 сек обновляется
 
Верх