Inquisition
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Я щас точно психану! Вот, скрипт функции: http://autoit.pastebin.com/m72def3ad Для тех кому лень, выложу его сдесь тоже. Код: $i = 0 ;Переменная, просто переменная. Func CombatCheck() ;Функция которая проверяет если бой закончился, если закончился то кликает нужное меню. Sleep(3000) $CombatCheck = PixelSearch(352, 365, 353, 366, 0x7AB800, 1) If IsArray($CombatCheck) Then MouseClick("left", 381, 426) Sleep(1000) MouseClick("left", 511, 455) Sleep(300) MouseClick("left", 511, 441) Sleep(300) MouseClick("left", 511, 408) Sleep(10000) Start() EndIf EndFunc Func Start() ;Просто для проверки работает ли CombatCheck() MsgBox( 0, "Cake", "Pie" ) EndFunc While 1 ;Ищет пиксель и прибавляет еденицу к i, до тех пор пока он(пиксель) не найдется или пока переменная i не приравнятся 6. Do Sleep(1000) $i = $i + 1 $Upper2 = PixelSearch(328, 377, 329, 378, 0x68181b, 12) Until IsArray($Upper2) or $i = 6 If IsArray($Upper2) Then MouseClick("left", $Upper2[0], $Upper2[1] - 1) EndIf If Not IsArray($Upper2) Then CombatCheck() EndIf Wend | И эта функция полностью работает. Все просто супер замечательно! А вот, основной скрипт. В котором содержится вышеуказаная функция: http://autoit.pastebin.com/m665206b5 Для ленивых, выложил его сдесь. Код: WinActivate("Легенда: Наследие Драконов") ;Активирует окно. WinWaitActive("Легенда: Наследие Драконов") ;Ждет пока оно откроется. Opt("MouseCoordMode", 0) ;1=absolute, 0=relative, 2=client Opt("PixelCoordMode", 0) ;1=absolute, 0=relative, 2=client $i = 0 ;Переменная, просто переменная. Dim $Runner ;Тоже просто переменная... Dim $Array[5] = ["","414,223","471,233","528,220","470,204"] ;Позиции пикселей, для передвижение от одной карты к другой. HotKeySet("{ESC}", "Terminate") ;Выкл. HotKeySet("{F9}", "ShowMe") ;Вкл. While 1 ;Ждет пока запустится $Runner. Sleep(20) If $Runner Then Start() WEnd Func ShowMe() ;Для включения $Runner = Not $Runner EndFunc Func Terminate() ;Для Включения Exit 0 EndFunc Func CombatCheck() ;Функция которая проверяет если бой закончился, если закончился то кликает нужное меню. Sleep(3000) $CombatCheck = PixelSearch(352, 365, 353, 366, 0x7AB800, 1) If IsArray($CombatCheck) Then MouseClick("left", 381, 426) Sleep(1000) MouseClick("left", 511, 455) Sleep(300) MouseClick("left", 511, 441) Sleep(300) MouseClick("left", 511, 408) Sleep(10000) Start() EndIf EndFunc Func Start() ;Основная часть бота. $Coord = PixelSearch(129, 261, 858, 490, 0xfa6541) ;Ищет монстра и кликает на него. If IsArray($Coord) Then MouseClick("left", $Coord[0], $Coord[1] - 1) ;Тыкает найденного монстра. EndIf If Not IsArray($Coord) Then ;Если монстр не найден, передвигается на случайно выбранную карту. $Random = Random(1, 4, 1) $Split = StringSplit($Array[$Random], ",") MouseClick("left", $Split[1], $Split[2]) Start() ;Перезапускает заново основной скрипт если монстр не найден. EndIf MouseClick("left", 289, 230) ;Начинает бой. Sleep(1000) ;/////////////////////////////////////////////////////////////////////////////////////// ;Скрипт боя ;/////////////////////////////////////////////////////////////////////////////////////// Do ;Ищет появилась ли кнопка с атакой и кликает её, если в течении 6ти секунд не появилась кнопка, то запускает скрипт CombatCheck() Sleep(1000) $i = $i + 1 $Bottom1 = PixelSearch(352, 456, 353, 457, 0x68181b, 3) Until IsArray($Bottom1) or $i = 6 If IsArray($Bottom1) Then MouseClick("left", $Bottom1[0], $Bottom1[1] - 1) EndIf If Not IsArray($Bottom1) Then CombatCheck() Endif Do Sleep(1000) $i = $i + 1 $Upper1 = PixelSearch(328, 377, 329, 378, 0x68181b, 12) Until IsArray($Upper1) or $i = 6 If IsArray($Upper1) Then MouseClick("left", $Upper1[0], $Upper1[1] - 1) EndIf If not IsArray($Upper1) Then CombatCheck() EndIf Do Sleep(1000) $i = $i + 1 $Upper11 = PixelSearch(328, 377, 329, 378, 0x68181b, 12) Until IsArray($Upper11) or $i = 6 If IsArray($Upper11) Then MouseClick("left", $Upper11[0], $Upper11[1] - 1) EndIf If Not IsArray($Upper11) Then CombatCheck() EndIf Do Sleep(1000) $i = $i + 1 $Middle1 = PixelSearch(357, 429, 358, 430, 0x731111, 15) Until IsArray($Middle1) or $i = 6 If IsArray($Middle1) Then MouseClick("left", $Middle1[0], $Middle1[1] - 1) EndIf If Not IsArray($Middle1) Then CombatCheck() EndIf Do Sleep(1000) $i = $i + 1 $Bottom2 = PixelSearch(352, 456, 353, 457, 0x68181b, 3) Until IsArray($Bottom2) or $i = 6 If IsArray($Bottom2) Then MouseClick("left", $Bottom2[0], $Bottom2[1] - 1) EndIf If Not IsArray($Bottom2) Then CombatCheck() EndIf Do Sleep(1000) $i = $i + 1 $Upper2 = PixelSearch(328, 377, 329, 378, 0x68181b, 12) Until IsArray($Upper2) or $i = 6 If IsArray($Upper2) Then MouseClick("left", $Upper2[0], $Upper2[1] - 1) EndIf If Not IsArray($Upper2) Then CombatCheck() EndIf Do Sleep(1000) $i = $i + 1 $Upper22 = PixelSearch(328, 377, 329, 378, 0x68181b, 12) Until IsArray($Upper22) or $i = 6 If IsArray($Upper22) Then MouseClick("left", $Upper22[0], $Upper22[1] - 1) EndIf If Not IsArray($Upper22) Then CombatCheck() EndIf Do Sleep(1000) $i = $i + 1 $Middle2 = PixelSearch(357, 429, 358, 430, 0x731111, 15) Until IsArray($Middle2) or $i = 6 If IsArray($Middle2) Then MouseClick("left", $Middle2[0], $Middle2[1] - 15) EndIf If Not IsArray($Middle2) Then CombatCheck() EndIf EndFunc ;Начинает все заново | Здесь эта чертова функция вообще не запускается! Там где стоит CombatCheck(), как будто бы стоит пробел. Скрипт идет дальше до следующий строки и не делает ничего написанного в CombatCheck(). Но! Если вставить в CombatCheck() MsgBox() То он запустит MsgBox(), но пиксель искать так и не будет. Это полнейший бред так как в первом скрипте все работает. И по логике все тоже должно работать. Help! #Edit: Я заметил что функция работает тогда и только тогда когда CombatCheck() запускается в первый раз. Условно говоря после $Bottom1 запускается а вот после $Upper1 не запускается. | Всего записей: 10 | Зарегистр. 14-11-2008 | Отправлено: 22:30 17-11-2008 | Исправлено: Inquisition, 23:47 17-11-2008 |
|