Что нового

Автокликер для игры

Andeangl

Новичок
Сообщения
62
Репутация
4
Всем доброго времени суток! Долго думал, выкладывать или нет своё творение в открытый доступ, но тяга к прекрасному (ну или ужасному :stars:smile: пересилила страх потерять перса, тем более что мне на него, в общем-то, пофиг уже давно =) На данный момент скрипт собирает любой ресурс с проверкой чтобы ресурс был "свободен". В данный момент скрипт настроен на сбор снежков, т.к. сейчас идёт событие - НГ.

Скрипт "заточен" под расширение экрана 1366 х 768 (потому что оно у меня стоит =) ) так что если хотите использовать с другим разрешением - поменяйте все координаты, там есть описание.

Есть проблемы:

1) Если ресурс занят, то скрипт ждёт пока другой игрок соберет его, а потом есть два варианта - или он кликает туда где был ресурс, или продолжает поиск. (Решено)
2) Проблема с нападениями - пытаюсь сделать так, чтобы при нападении напавший убивался, но он как-то против =) (Решено)
2.2) После боя не хочет выходить и ресаться =(( Идёт зацикливание - клик по полю боя, клик по квадрату смены поля для сбора ресурсов (их 4) (Вроде как решено)
3) Никак не определюсь, что делать, если получена заноза - можно сделать несколько заготовленных фраз которые пишешь в чат, чтобы вытащили занозу. (С ней невозможен сбор)

Вроде всё =) Буду очень благодарен помощи в оптимизации и устранении ошибок.

Да, буду благодарен за информацию, как сменить логин =)

UP1 - Иcправил свои ошибки в расположении цикла While, добавил функцию Proverka (), Сделал исключение пикселей-ошибок из квадрата поиска (в данный момент эту функцию не проверял на работоспособность - нет возможности зайти в игру)
UP2 06.12.2012 - Доведен до рабочего состояния игнор "занятых" ресурсов. Переделан код. Теперь с использованием функций :smile:. Правда есть шанс что я с ними перестарался :smile:

UP3 15.12.2012 Добавил:
-Выход при нажатии Esc
-Паузу при нажатии "Pause"
-Убрал включение клиента, теперь начинает работу через 4 сек. после запуска

Работающий код (работает сбор снега):

Код:
Dim $Left, $Up, $Right, $Down, $x, $y, $x15, $y15, $x20, $y20, $coord, $d, $15coord, $res, $zan, $a, $b, $time, $time1, $time2, $break, $Paused
;*************************************************************************************
;*************************|НЕОБХОДИМО ЗАДАТЬ ПЕРЕМЕННЫЕ: |****************************
;*************************************************************************************

$res=0xD0DFDB ;Один из пикселей ресурса который нужен (необходимо выбрать уникальный по цвету пиксель, 
;чтобы пиксель такого цвета был только один в локации (иначе просто будет тыкать в этот пиксель без смысла)
$time = 17 ;Время в секундах, которе занимает сбор ресурса (засекается с таймером)

;*************************************************************************************
;*************************| Дальше всё автоматическое |*******************************
;*************************************************************************************
   $break = Random(349,874)
   $d = 2  ;данная переменная отвечает за окно сбора ресурсов (их 4)
   $time1 = $time * 1000 + 1000 ;Минимальная задержка при начале сбора ресурса
   $time2 = $time * 1000 + 3000 ;Максимальная задержка при начале сбора ресурса

HotKeySet("{PAUSE}", "TogglePause")
HotKeySet('{Esc}', '_Exit')


   ;Базовые координаты - квадрат поиска.
         $Left = 301
         $Up = 153
         $Right = 1048
         $Down = 734
   
   Sleep(4000)
While (PixelGetColor(654,368)<>0xED1C24)
   While (PixelGetColor(654,368)<>0xED1C24)
      $coord = PixelSearch ( $Left, $Up, $Right, $Down, $res) ;Поиск пикселя заданного ресурса
         If @error Then
            Search()
         Else                                           ; Not @error
               $a = $coord[0]
               $b = $coord[1]
                        
                           Square ()   ;Задаётся квадрат вокруг ресурса, для проверки что ресурс не занят
                                    
                  $15coord = PixelSearch ( $x15, $y15, $x20, $y20, 0xFFD500,15) ;Поиск вокруг найденной точки пикселей жёлтого цвета, 
                                                                                 ;то есть проверка чтобы ресурс не был занят
                             
                     If Not @error Then
                           Zaniatii_Resurs ()  ;Действия, есл ресурс занят
						   Boy ()
                     Else                              ;@error
                           Sbor ()  ;Сбор свободного ресурса
						   Boy ()
                     EndIf

         EndIf
   WEnd
   Boy ()
WEnd


Func _Exit()
   Exit
EndFunc

Func TogglePause()
    $Paused = Not $Paused
    While $Paused
        Sleep(100)
        ToolTip('Скрипт приостановлен')
    WEnd
    ToolTip("")
EndFunc


Func Time_To_Sleep ()
   If $break = 0 Then
	  Sleep (Random(600000,1200000))
	  $break = Random(149,394)
   EndIf
EndFunc

Func Obnulenie ()
   $Left = 301
   $Up = 153
   $Right = 1048
   $Down = 734
EndFunc



Func Search()
   If $d=1 Then
      MouseClick("primary", 689, 108)
      Sleep(Random(500, 750))
         Obnulenie ()
         Proverka ()
   EndIf
   If $d=2 Then
      MouseClick("primary", 696, 129)
      Sleep(Random(500, 750))
         Obnulenie ()
         Proverka ()
   EndIf
   If $d=3 Then
      MouseClick("primary", 632, 130)
      Sleep(Random(500, 750))
         Obnulenie ()
         Proverka ()
   EndIf
   If $d=4 Then
      MouseClick("primary", 635, 107)
      Sleep(Random(500, 750))
         Obnulenie ()
         Proverka ()
   EndIf
   if $d < 4 then 
      $d = $d + 1 
   else 
      $d = 1 
   EndIf
EndFunc

Func Proverka ()
    ;Проверка чтобы не выскакивали ошибки
	
   If PixelGetColor(629, 96) = 0x730000 Then
      MouseClick("primary", 593, 34)
      Sleep(100)
   EndIf
   
   If PixelGetColor(756, 432) = 0xFF0000 Then
      MouseClick("primary", 671, 465)
      Sleep(100)
   EndIf

   If PixelGetColor(725, 250) = 0xB70000 Then
      MouseClick("primary", 683, 497)
      Sleep(100)
   EndIf
   
   If PixelGetColor(729, 434) = 0xFF0000 Then
      MouseClick("primary", 675, 462)
      Sleep(100)
   EndIf

   If PixelGetColor(774, 433) = 0xFF0000 Then
      MouseClick("primary", 674, 464)
      Sleep(100)
   EndIf
Boy ()
EndFunc

Func Zaniatii_Resurs ()
   If $Up < $b Then                ;Меняет область поиска, чтобы ошибочный пиксель в неё не попадал
         $Up= $b + 1                        
   EndIf
   If $Up > $b Then
         $Up = $Up + 1
   EndIf
EndFunc

Func Sbor ()
      Sleep(Random(217,482))
      MouseClick("left", $a, $b,2) 
      Sleep(Random($time1, $time2))
      Sleep(Random(401, 897))
	  $break = $break - 1
	  Boy ()
EndFunc

Func Square ()
      $x15 = $a - 25
      $y15 = $b - 25
      $x20 = $a + 25
      $y20 = $b + 25
EndFunc

Func Boy ()
   If PixelGetColor(716, 305)=0xF8DEA4 Then ;Проверка что напали
		 While (PixelGetColor(530, 441)<>0x7A0000)
			Sleep(3000)
			MouseClick("primary", 483, 318)
			Sleep(Random(2000,3500))
			MouseClick("primary", 483, 318)
			Sleep(Random(2000,3500))
			MouseClick("primary", 483, 318)
			Sleep(Random(2000,3500))
			MouseClick("primary", 454, 371)
			Sleep(Random(2000,3500))
		 WEnd
	  MouseClick("primary", 539, 36) ;локция
	  Sleep(Random(3500,5000))
	  MouseClick("primary", 685, 262) ;рес
	  Sleep(Random(3500,5000))
	  MouseClick("primary", 683, 498)
	  Sleep(Random(3500,5000))
	  MouseClick("primary", 1131, 157)
	  Sleep(Random(3500,5000))
	  MouseClick("primary", 595, 33)
	  Sleep(Random(3500,5000))
   EndIf
EndFunc
 

Whited

Знающий
Сообщения
79
Репутация
10
Re: Автокликер для игры [Легенда: Наследие Драконов]

Меня первые 2 строчки твоего кода уже убили, ты в цикле запускаешь клиент игры?

Нет, я в шоке от всего кода! Ни одной функции, всё каким то набором непонятным, сам то разбираешься что откуда?
 

Yura

Знающий
Сообщения
36
Репутация
7
Re: Автокликер для игры [Легенда: Наследие Драконов]

Аналогичное впечатление. Автор темы, рекомендую почитать о функциях и пользоваться. Намного удобнее тогда читать код программы и можно использовать действия заложенные в функцию в разных частях программы через ее вызов. Вот простой пример:
Код:
Proverka ()

Func Proverka ()
	;Проверка чтобы не выскакивали ошибки
  If PixelGetColor(756, 432) = 0xFF0000 Then
   MouseClick("primary", 671, 465)
   Sleep(100)
EndIf

If PixelGetColor(725, 250) = 0xB70000 Then
   MouseClick("primary", 683, 497)
   Sleep(100)
EndIf

If PixelGetColor(729, 434) = 0xFF0000 Then
   MouseClick("primary", 675, 462)
   Sleep(100)
EndIf

If PixelGetColor(774, 433) = 0xFF0000 Then
   MouseClick("primary", 674, 464)
   Sleep(100)
EndIf

EndFunc


Запиши эту функцию в конце программы. Теперь во всех местах программы, где у тебя раз за разом повторяется проверка на ошибку, просто пишешь Proverka ().
Дальше, в ботах лучше использовать Sleep(Random(100, 300, 1)) вместо Sleep(200), чтоб не палиться лишний раз на одинаковой частоте кликов. Ну и вызов клиента в цикле, конечно, удивляет.
Короче сделай код читабельным. И уменьши за счет использования функций раза в 2, тогда можно будет что-то думать.
 
Автор
A

Andeangl

Новичок
Сообщения
62
Репутация
4
Re: Автокликер для игры [Легенда: Наследие Драконов]

Переделал весь код нафиг, оставив ключевые моменты =)) Теперь сбор ресурсов работает великолепно, занятые игнорируются =)
 
Автор
A

Andeangl

Новичок
Сообщения
62
Репутация
4
Re: [Легенда: Наследие Драконов] Автокликер для игры

Сделал более-менее бой, оставлю на ночь, посмотрю как будет работать =)


Добавлено:
Сообщение автоматически объединено:

Скрипт проработал всю ночь без сбоев, собрал больше тысячи снега =)
 
Автор
A

Andeangl

Новичок
Сообщения
62
Репутация
4
Re: [Легенда: Наследие Драконов] Автокликер для игры

Неужели никому не интересен данный скрипт? Никто не играет в эту игру что ли?
 

Whited

Знающий
Сообщения
79
Репутация
10
Re: [Легенда: Наследие Драконов] Автокликер для игры

Andeangl [?]
Неужели никому не интересен данный скрипт? Никто не играет в эту игру что ли?


Здесь форум создателей ботов.
 

Belfigor

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

Andeangl
Как правильно сказали выше, здесь форум для создателей ботов. Но не всегда найдется 2 создателя на одну игру, тем более браузерную. Хотя вроде до этого тут так же появлялись люди которые писали ботов для [Легенда: Наследие Драконов]. В любом случае на некоторые темы отзывов ждать приходится месяцами.
 
Автор
A

Andeangl

Новичок
Сообщения
62
Репутация
4
Re: [Легенда: Наследие Драконов] Автокликер для игры

Whited
Belfigor

Ну... отписались бы хоть кому этот скрипт нужен ) уже неплохо было бы )
 

Belfigor

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

Есть вероятность что на данный момент подобные люди не посещают форум. Когда же они его посетят я думаю они будут тебе благодарны.
 

arydit

Новичок
Сообщения
4
Репутация
1
Re: [Легенда: Наследие Драконов] Автокликер для игры

А как сделать так, чтобы заданных искомых пикселей было более одного, к примеру красный/желтый/синий/зеленый/фиолетовый?
 

arydit

Новичок
Сообщения
4
Репутация
1
Re: [Легенда: Наследие Драконов] Автокликер для игры

Код:
Dim $Left, $Up, $Right, $Down, $x, $y, $x15, $y15, $x20, $y20, $coord, $d, $15coord, $res, $zan, $a, $b, $time, $time1, $time2, $break, $Paused
;*************************************************************************************
;*************************|НЕОБХОДИМО ЗАДАТЬ ПЕРЕМЕННЫЕ: |****************************
;*************************************************************************************

$res=0xD0DFDB or 0xFFFFFF or 0xD0B1D3 ;Один из пикселей ресурса который нужен (необходимо выбрать уникальный по цвету пиксель,
;чтобы пиксель такого цвета был только один в локации (иначе просто будет тыкать в этот пиксель без смысла)
Попробовал таким образом добавить пикселя, но именно эти цвета не ищет. Подскажите, как можно решить эту проблему?
 

LuxVeritatis

Знающий
Сообщения
7
Репутация
5
Re: [Легенда: Наследие Драконов] Автокликер для игры

Интересно. Жаль сейчас охоту переделали. Я проверял занятость немного по-другому
Код:
	$coord = PixelSearch( $hunt1[0], $hunt1[1], $hunt2[0], $hunt2[1], $snow, 4  )
	If Not @error Then
		$X_=$coord[0]
		$Y_=$coord[1]
		$coord2 = PixelSearch($X_-40,$Y_-40, $X_+40, $Y_+30,0xFFBE00)
		If Not @error Then
			ToolTip("Элемент занят", $X_, $Y_)
На выходных посмотрю твое творение.



Добавлено:
Сообщение автоматически объединено:

Хотя туплю, суть тажа ;D . Вопрос такой, как извлечь инфу из xml файла? http://w1.dwar.ru/hunt_conf.php. Тут вся инфа, где расположены ресы, боты в том числе те, что за пределами карты (один из способов ловли бота :smile:)
This XML file does not appear to have any style information associated with it. The document tree is shown below.

Это пример содержимого
Код:
<hunt>
<bots>
<bot id="1098722705" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="916" y="1300" fight_id="0"/>
<bot id="1084651554" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="515" y="465" fight_id="0"/>
<bot id="1080651224" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="763" y="1239" fight_id="0"/>
<bot id="1050980114" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="1258" y="829" fight_id="0"/>
<bot id="1152870270" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="394" y="789" fight_id="0"/>
<bot id="1129469330" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="1189" y="1024" fight_id="0"/>
<bot id="1095278110" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="236" y="426" fight_id="0"/>
<bot id="1107932800" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="1087" y="544" fight_id="0"/>
<bot id="1082529825" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="326" y="1097" fight_id="0"/>
<bot id="1084651555" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="1072" y="1268" fight_id="0"/>
<bot id="1105018384" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="535" y="684" fight_id="0"/>
<bot id="1118118595" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="325" y="496" fight_id="0"/>
<bot id="1127986639" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="1151" y="1249" fight_id="0"/>
<bot id="1193559751" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="581" y="1186" fight_id="0"/>
<bot id="1107932801" name="Крэтс" level="1" pic="rat1_small.jpg" sk="1043" agrlevel="0" x="1022" y="1100" fight_id="0"/>
<bot id="36409316" name="Патрульный Дартронга" level="15" pic="magmar_guard_sm.jpg" sk="2001" agrlevel="100" x="858" y="357" fight_id="0"/>
<bot id="36409313" name="Патрульный Дартронга" level="15" pic="magmar_guard_sm.jpg" sk="2001" agrlevel="100" x="1078" y="701" fight_id="0"/>
<bot id="36409315" name="Патрульный Дартронга" level="15" pic="magmar_guard_sm.jpg" sk="2001" agrlevel="100" x="652" y="397" fight_id="0"/>
<bot id="36409312" name="Патрульный Дартронга" level="15" pic="magmar_guard_sm.jpg" sk="2001" agrlevel="100" x="1131" y="785" fight_id="0"/>
<bot id="36409309" name="Патрульный Дартронга" level="15" pic="magmar_guard_sm.jpg" sk="2001" agrlevel="100" x="714" y="372" fight_id="0"/>
<bot id="36409308" name="Патрульный Дартронга" level="15" pic="magmar_guard_sm.jpg" sk="2001" agrlevel="100" x="1197" y="1061" fight_id="0"/>
<bot id="36409314" name="Патрульный Дартронга" level="15" pic="magmar_guard_sm.jpg" sk="2001" agrlevel="100" x="1239" y="916" fight_id="0"/>
<bot id="36409310" name="Патрульный Дартронга" level="15" pic="magmar_guard_sm.jpg" sk="2001" agrlevel="100" x="1020" y="470" fight_id="0"/>
<bot id="36409307" name="Патрульный Дартронга" level="15" pic="magmar_guard_sm.jpg" sk="2001" agrlevel="100" x="626" y="669" fight_id="0"/>
<bot id="36409311" name="Патрульный Дартронга" level="15" pic="magmar_guard_sm.jpg" sk="2001" agrlevel="100" x="452" y="661" fight_id="0"/>
</bots>
<farm>
<item num="22" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="323" y="1134" farming="0" action_title=""/>
<item num="21" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="250" y="726" farming="0" action_title=""/>
<item num="20" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="265" y="760" farming="0" action_title=""/>
<item num="19" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="423" y="1048" farming="0" action_title=""/>
<item num="18" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="297" y="862" farming="0" action_title=""/>
<item num="12" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="1155" y="988" farming="0" action_title=""/>
<item num="11" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="976" y="904" farming="0" action_title=""/>
<item num="10" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="1173" y="1192" farming="0" action_title=""/>
<item num="9" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="379" y="1034" farming="0" action_title=""/>
<item num="8" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="286" y="1084" farming="0" action_title=""/>
<item num="7" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="444" y="1036" farming="1" action_title=""/>
<item num="6" name="Сугроб" pic="sugrob_sm.gif" swf="sneg_farm.swf" prof="1" quality="1" skill="0" artikul_id="3721" x="363" y="1070" farming="0" action_title=""/>
<item num="28" name="Рыба-светлячок" pic="f150_50x50_3.gif" swf="fish_blue.swf" prof="4" quality="3" skill="150" artikul_id="11824" x="1279" y="284" farming="0" action_title=""/>
<item num="29" name="Рыба-светлячок" pic="f150_50x50_3.gif" swf="fish_blue.swf" prof="4" quality="3" skill="150" artikul_id="11824" x="1309" y="358" farming="0" action_title=""/>
<item num="30" name="Рыба-светлячок" pic="f150_50x50_3.gif" swf="fish_blue.swf" prof="4" quality="3" skill="150" artikul_id="11824" x="1367" y="403" farming="0" action_title=""/>
<item num="31" name="Рыба-светлячок" pic="f150_50x50_3.gif" swf="fish_blue.swf" prof="4" quality="3" skill="150" artikul_id="11824" x="1204" y="296" farming="0" action_title=""/>
<item num="32" name="Крылатка" pic="f180_50x50_2.gif" swf="fish_blue.swf" prof="4" quality="3" skill="180" artikul_id="11825" x="1262" y="274" farming="0" action_title=""/>
<item num="33" name="Крылатка" pic="f180_50x50_2.gif" swf="fish_blue.swf" prof="4" quality="3" skill="180" artikul_id="11825" x="1388" y="362" farming="0" action_title=""/>
<item num="5" name="Некросфодель" pic="nekrosfodel_green0702_52.gif" swf="nekrosfodel.swf" prof="1" quality="1" skill="0" artikul_id="1940" x="1784" y="2297" farming="0" action_title=""/>
<item num="4" name="Некросфодель" pic="nekrosfodel_green0702_52.gif" swf="nekrosfodel.swf" prof="1" quality="1" skill="0" artikul_id="1940" x="1784" y="2297" farming="0" action_title=""/>
<item num="3" name="Некросфодель" pic="nekrosfodel_green0702_52.gif" swf="nekrosfodel.swf" prof="1" quality="1" skill="0" artikul_id="1940" x="1784" y="2297" farming="0" action_title=""/>
<item num="2" name="Некросфодель" pic="nekrosfodel_green0702_52.gif" swf="nekrosfodel.swf" prof="1" quality="1" skill="0" artikul_id="1940" x="1784" y="2297" farming="0" action_title=""/>
<item num="1" name="Некросфодель" pic="nekrosfodel_green0702_52.gif" swf="nekrosfodel.swf" prof="1" quality="1" skill="0" artikul_id="1940" x="1784" y="2297" farming="0" action_title=""/>
<item num="13" name="Эльдорилл" pic="res_eldorill.gif" swf="eldorill_hunt.swf" prof="2" quality="4" skill="120" artikul_id="1488" x="1803" y="1877" farming="0" action_title=""/>
<item num="14" name="Эльдорилл" pic="res_eldorill.gif" swf="eldorill_hunt.swf" prof="2" quality="4" skill="120" artikul_id="1488" x="1803" y="1877" farming="0" action_title=""/>
<item num="15" name="Эльдорилл" pic="res_eldorill.gif" swf="eldorill_hunt.swf" prof="2" quality="4" skill="120" artikul_id="1488" x="1803" y="1877" farming="0" action_title=""/>
<item num="16" name="Эльдорилл" pic="res_eldorill.gif" swf="eldorill_hunt.swf" prof="2" quality="4" skill="120" artikul_id="1488" x="1803" y="1877" farming="0" action_title=""/>
<item num="17" name="Эльдорилл" pic="res_eldorill.gif" swf="eldorill_hunt.swf" prof="2" quality="4" skill="120" artikul_id="1488" x="1803" y="1877" farming="0" action_title=""/>
<item num="23" name="Чудотворная соль" pic="farm_chudosol.gif" swf="chudosol.swf" prof="2" quality="3" skill="90" artikul_id="4151" x="2645" y="2524" farming="0" action_title=""/>
<item num="24" name="Чудотворная соль" pic="farm_chudosol.gif" swf="chudosol.swf" prof="2" quality="3" skill="90" artikul_id="4151" x="2571" y="2401" farming="0" action_title=""/>
<item num="25" name="Чудотворная соль" pic="farm_chudosol.gif" swf="chudosol.swf" prof="2" quality="3" skill="90" artikul_id="4151" x="2605" y="2500" farming="0" action_title=""/>
<item num="26" name="Чудотворная соль" pic="farm_chudosol.gif" swf="chudosol.swf" prof="2" quality="3" skill="90" artikul_id="4151" x="1973" y="2560" farming="0" action_title=""/>
<item num="27" name="Чудотворная соль" pic="farm_chudosol.gif" swf="chudosol.swf" prof="2" quality="3" skill="90" artikul_id="4151" x="2566" y="2409" farming="0" action_title=""/>
</farm>
</hunt>



Добавлено:
Сообщение автоматически объединено:

А как сделать так, чтобы заданных искомых пикселей было более одного, к примеру красный/желтый/синий/зеленый/фиолетовый?
Придется немного переделать код и искать уже не конкретный пиксель, а несколько.
 

Belfigor

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

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


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

LuxVeritatis

Знающий
Сообщения
7
Репутация
5
Re: [Легенда: Наследие Драконов] Автокликер для игры

Выложу сюда свою версию. Заточено под разрешение 1600x900 (hunt + f11)
Пока хорошо собирает снег и эманашки :whistle: Специально не плодил функций. Лично я вообще считаю не красивым, чтобы функция меняла какие-то внешние переменные, пусть работает со своими локальными :smile:

Код:
Sleep(2000)
$clever = 0xF52872 ; цветок
$chert = 0xD0362E ; цветок доработать
$iris = 0xA77200
$lotos = 0xE7A2B9
$tislist = 0xF7FFFF ; доработать
$snow = 0x8297AD
;~ 0xDEEDE9
$emanashka = 0x3E6792

$coral = 0x8F485E ; корал

$ColorCraft = 0x5A7F0F ; цвет добычи (зел полоска)
$ColorFail = 0xFF0000 ; цвет неудачи (красный)

;~ HotKeySet("{PAUSE}", "TogglePause")
HotKeySet('{Esc}', '_Exit')
$Paused = False


;~ Добываемая область
Global $huntA[2] ; верхний левый
Global $huntB[2] ; правый нижний
$huntA[0] = 55
$huntA[1] = 73
$huntB[0] = 1526
$huntB[1] = 878
;~ Окошко добычи
Global $craftA[2] ; верхний левый
Global $craftB[2] ; правый нижний
$craftA[0] = 610
$craftA[1] = 440
$craftB[0] = 970
$craftB[1] = 505

;~ Sleep(2000)
;~ MouseMove($huntA[0], $huntA[1])
;~ Sleep(2000)
;~ MouseMove($huntB[0], $huntB[1])

;~ MouseMove($craftA[0], $craftA[1])
;~ Sleep(2000)
;~ MouseMove($craftB[0], $craftB[1])

; Определяем координаты полей
Global $deltaL = 183, $deltaH = 201, $k = -1
Global $A[32][2], $B[32][2]

For $j = 0 to 3
	For $i = 0 to 7
		$k += 1
		$A[$k][0] = $huntA[0] + $i*$deltaL
		$A[$k][1] = $huntA[1] + $j*$deltaH
		$B[$k][0] = $huntA[0] + $i*$deltaL + $deltaL
		$B[$k][1] = $huntA[1] + $j*$deltaH + $deltaH
	Next
Next

;~ For $c = 0 to 32
;~ 	MsgBox( 0, "Поле №", $c )
;~ 	MouseMove($A[$c][0], $A[$c][1])
;~ 	Sleep(1500)
;~ 	MouseMove($B[$c][0], $B[$c][1])
;~ Next

;~ Координаты  2-х полей (hunt + F11)
Global $Xtop[2]
Global $Ytop[2]

$Xtop[0] = 780
$Xtop[1] = 780

$Ytop[0] = 20
$Ytop[1] = 40

Sleep(2000)

Global $f = 1 ; окончание работы (заноза, смерть)
Global $g = 0 ; первая или вторая половина сканируемой области
Global $c = 0 ; счетчик отсуствия элемента (при некотором значении обновить экран)
$k = 0
Do
	$coord = PixelSearch ($A[$k][0], $A[$k][1], $B[$k][0], $B[$k][1], $snow, 4)
	If Not @error Then
		$X_=$coord[0]
		$Y_=$coord[1]
		$coord2 = PixelSearch ($X_-40,$Y_-40, $X_+40, $Y_+30,0xFFBE00)
		If Not @error Then
			ToolTip ("Элемент занят в поле №" & $k, 100, 100)
			$k += 1
		Else
			$c = 0 ; элемент найден, обновим счетчик
			MouseMove ($coord[0], $coord[1])
			MouseClick( "left", $coord[0], $coord[1], 2, 10)
			Sleep (2000)
			$coord3 = PixelSearch ($craftA[0], $craftA[1], $craftB[0], $craftB[1], $ColorCraft, 2)
			While Not @error
				ToolTip("Идёт добыча в поле №" & $k, 100, 100)
				Sleep (1000)
				$coord3 = PixelSearch ($craftA[0], $craftA[1], $craftB[0], $craftB[1], $ColorCraft, 2)
			WEnd
		EndIf
	Else
;~ 		Возможно добыча неудалась. Нужно закрыть окно
		$coord = PixelSearch ($craftA[0], $craftA[1], $craftB[0], $craftB[1], $ColorFail, 2)
		If Not @error Then
;~ 			MsgBox( 0, "Закрыть окошко", $coord[0] & "," & $coord[1] )
			MouseMove (802, 489)
			MouseClick ("left", 802, 489, 1, 10)
		EndIf
		$k += 1
;~ 		Все поля заняты. Переходим с следующей половине области
		If $k>31 Then
			$k = 0
			Sleep (Random (500, 1000, 1))
			MouseMove ($Xtop[$g], $Ytop[$g])
			MouseClick ("left")
			$g += 1
			If $g==2 Then
				$g = 0
			EndIf
			$c += 1
			If $c>5 Then
				$c = 0
				Send("{F5}")
			EndIf
		EndIf
	EndIf
	Sleep( Random (500, 1000, 1))
Until $f = 0

Func _Exit()
   Exit
EndFunc



Иногда тыкает на пустое место, либо закрывает несушествующее окно "добыча не удалась":( Видимо иногда область поиска может оказаться близка к цвету ресурса. Появилась мысль искать не конкретный пиксель, а группу. Если найден искомый и в окрестности, например, 20 пикселей найден контрольный, то это то что нам нужно
 

LuxVeritatis

Знающий
Сообщения
7
Репутация
5
Re: [Легенда: Наследие Драконов] Автокликер для игры

как можно воплотить скрипт, который будет следить за определенным пикселем и при его отсутствии на протяжении четко указанного времени (5сек), выполнять действие, к примеру MouseClick
Времени нет разбираться. Возможно будет полезно http://autoit-script.ru/index.php?topic=3549.msg25396
 

LuxVeritatis

Знающий
Сообщения
7
Репутация
5
Re: [Легенда: Наследие Драконов] Автокликер для игры

Код:
Ну и вопрос с поиском не одного конкретного пикселя, а нескольких, так и не осилил(
Задаешь массив констант нужных цветов и ищешь.
Код:
Global $searchColor[2]
$searchColor[0] = 0xF52872
$searchColor[1] = 0xD0362E
for i = 0 to 2
   ; твоя функция поиска в заданной области
Next

Можно задать ещё "контрольные" пиксели. Если найден какой-то, то если в окрестности найден "контрольный", то это то, что нужно, а не пустое место на карте




Добавлено:
Сообщение автоматически объединено:

скрипт хорош, но немного не то...Вот что мне нужно: на протяжении 20 сек пиксель то появляется то исчезает, но если бой завис то пикселя не будет вообще, вот я хочу чтобы скрипт заметил исчезновение пикселя, только если он не будет появляться вообще на протяжении 30ти сек., ну и выполнил действие при сработке..
Если не появился пиксель, то
Код:
sleep (30000)
, можно ещё добавить обновить окно
Код:
Send("{F5}")
и действия :smile:
 

LuxVeritatis

Знающий
Сообщения
7
Репутация
5
Re: [Легенда: Наследие Драконов] Автокликер для игры

Добавил красный и зеленый пикселя, он начал прыгать только на темно серый, в общем тоже не работает этот вариант
Точнее подбирай цвет.
 

Sergio

Новичок
Сообщения
41
Репутация
3
Re: [Легенда: Наследие Драконов] Автокликер для игры

Belfigor сказал(а):
Есть вероятность что на данный момент подобные люди не посещают форум. Когда же они его посетят я думаю они будут тебе благодарны.
Как же вы правы. Но я полагаю бессмысленно сейчас пытаться найти истину в этой теме, как и самого автора топика
 
Верх