Что нового

[Легенда: Наследие Драконов] Обсуждение процесса написания бота.

Автор
Z

zoxer1

Знающий
Сообщения
72
Репутация
6
у тебя скрипт делает 1 проход поскрипту...
может такой цикл тебе нужен....
Код:
$StartCoordX = 163
$StartCoordY = 375
$EndCoordX =486
$EndCoordY = 540
$SearchColor = 0x9BB7D2
$Find = 0 ; переменная Нашел-Нет
$YSector = 0

    
    While 1
    ToolTip("Начинаю поиск", 100, 300)
    While $YSector <= 19 AND $Find <> 1
        $XSector = 0
        While $XSector <= 19 AND $Find <> 1     
            ToolTip("Сканирование", 100, 300)
            $AlfaX = ($EndCoordX - $StartCoordX) / 20 
            $AlfaY = ($EndCoordY - $StartCoordY) / 20 
            $coord = PixelSearch( $StartCoordX+$AlfaX * $XSector, $StartCoordY+$AlfaY * $YSector, $StartCoordX+$AlfaX * ($XSector+1), $StartCoordY+$AlfaY * ($YSector+1), $SearchColor, 10 );
            If Not @error Then
                BusyTest ($coord[0], $coord[1])         
            EndIf
            $XSector = $XSector + 1
        WEnd
        $YSector = $YSector + 1
    WEnd
    If $Find = 0 Then
    EndIf
	Sleep(1000)
    WEnd
    Func BusyTest ($Cord_X, $Cord_Y) ; проверка на занятость кустика 
    $busy = PixelSearch($Cord_X-30, $Cord_Y-30, $Cord_X+20, $Cord_Y+20, 0xFFEB00, 15)
    If NOT @error Then
        $Find = 0
    Else
        ToolTip("Найден!!!", 100, 300)
        MouseMove($Cord_X + 4, $Cord_Y - 5)
        Sleep(Random(100, 200))
        MouseClick("left")
        Sleep(Random(100, 200))
        MouseMove($Cord_X - 4, $Cord_Y + 5)
        Sleep(Random(200, 400))
        MouseClick("left")
        Sleep(Random(150, 250))
        MouseClick("left")
        $Find = 1
        Sleep(Random(19000, 21000))
        $nnn = PixelSearch(385, 390, 423, 418, 0xFFEDA3)
        If Not @error Then
           Sleep(Random(200, 400))
           MouseMove(533, 420)
           Sleep(Random(100, 200))
           MouseClick("left")
        EndIf
     EndIf
	EndFunc

правда не представляю, что должен делать скрипт :scratch:
что за ошибка?

Если тебе еще нужен скрипт на крафт вот накидал.
Скрипт работает на уже открытой станице Професии, с 2мя рецептами, добавленными в избранное. т.е. их там должно быть только ДВА рецепта или они должны быть на самом верху.

Код:
global $proverka_1 = 0x4A9800 ; цвет зеленой галочки в рецептах
global $proverka_1_x = 857 ; ee координаты Х
global $proverka_1_y = 396 ; ee координаты У

global $proverka_2 = 0xD00000 ; цвет карсной надписи "30 сек"
global $proverka_2_x = 688 ; ee координаты Х
global $proverka_2_y = 394 ; ee координаты У

global $count = 0 ; счетчик
global $nujno = 2 ; сколько циклов

; координаты кнопки ОБНОВИТь
Global $refresh_x = 621
Global $refresh_y = 470


Global $sozdat = 0x2D1600
Global $sozdat_x = 770
Global $sozdat_y = 396

Global $activated = 0
Global $craft_page = 0
Global $button_test = 0

_activate()
_ready_test()
_button_test()


Func _activate()
	If WinExists("[class:OperaWindowClass]") Then
		WinActivate("[class:OperaWindowClass]")
		$activated = 1
		Sleep(500)
	EndIf
EndFunc

Func _ready_test()
	If $activated = 1 Then
		$ready_coord = PixelSearch( $proverka_1_x, $proverka_1_y, $proverka_1_x, $proverka_1_y, $proverka_1, 50 ) ; странно но меньше 50 не находит цвет
		If Not @error Then
			$craft_page = 1
		Else
			MsgBox (0, "Error!", "Не найдены контрольные точки страницы Крафта")
		EndIf
	EndIf
EndFunc

Func _button_test()
	$check = 0
	While $check = 0
		$check = _check($sozdat_x, $sozdat_y, $sozdat)			
		Sleep(100) ;ждем обновления страницы
	WEnd
	
	If $check = 1 Then
		$button_test = 1
		_craft()
	EndIf
EndFunc

Func _craft()
	$check_1 = 0
	$check_2 = 0
	if $button_test = 1 Then
		MouseMove($sozdat_x, $sozdat_y) ; 1ый рецепт
		MouseClick("left")
		While $check_1 = 0
			$check_1 = _check($proverka_2_x, $proverka_2_y, $proverka_2)			
			Sleep(100) ;ждем обновления страницы
		WEnd
		
		MouseMove($sozdat_x, $sozdat_y+33) ; 2ой рецепт
		MouseClick("left")
		While $check_2 = 0
			$check_2 = _check($proverka_2_x, $proverka_2_y+33, $proverka_2)			
			Sleep(100) ;ждем обновления страницы
		WEnd
		$count += 1
		_craft_check()
		
	EndIf	
EndFunc

Func _check($x, $y, $color)
	$coord = PixelSearch( $x-5, $y, $x+5, $y, $color, 50 )
	If Not @error Then
		Return 1
	Else
		Return 0
	EndIf
EndFunc

Func _craft_check()
	if $nujno = $count Then
		MsgBox(0, "Задание выполнено", "Крафт закончен")
		Exit
	Else
		Sleep (30000) ;ждем отката
		_refresh()
	EndIf
EndFunc

Func _refresh()
	MouseMove($refresh_x, $refresh_y)
	MouseClick("left")
	Sleep(1000)
	_button_test()
EndFunc
скрипт работает на основе поиска цветов и тебе придется поменять все значения переменных на свои
 

iamOmg

Новичок
Сообщения
97
Репутация
2
гениально про крафт, а про мой скрипт не очень, по второму кругу не идёт)) скрипт на рыбалку)) первую рыбу собирает и все ждёт чегото)))
только в скрипте на крафт задержки не айс надо
Код:
Sleep(Random(200, 400))

хотя бы))
 
Автор
Z

zoxer1

Знающий
Сообщения
72
Репутация
6
ну зарандомить это ты уже какнить сам :laugh:
а так крафт работает =)

про рыбалку незнаю... если чегото ждет - может не находит рыбу? проверь через выводы сообщении какихнить =) мне кажется поиск рыбы самый трудный из всех=0) когда пробовал приходилось тыкать по воде и проверять на наличие нужной рыбы, скрипт работал долго, а потом забил
 

iamOmg

Новичок
Сообщения
97
Репутация
2
делаю скрипт на охоту, в охоте 20 секторов в которых бот ищет нужный пиксель, сектора выбираются Random))
как сделать так чтоб каждый сектор только один раз проверялся, чтоб в конечном итоге все сектора по 1 разу проверились?
прога выглядит похожей на этот скрипт))
Код:
$variant = Random(1, 4, 1)
Switch $variant
Case 1
    MouseMove(487, 225)
	Sleep(Random(100,250))
	MouseClick(487, 225) ; 1ая сторона
Case 2
    MouseMove(488, 202)
	Sleep(Random(100,250))
	MouseClick(488, 202) ; 2ая сторона
Case 3
    MouseMove(552, 201)
	Sleep(Random(100,250))
	MouseClick(552, 201) ; 3ая сторона   
Case 4
    MouseMove(558, 225)
	Sleep(Random(100,250))
	MouseClick(558, 225) ; 4ая сторона        
EndSwitch
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Сюда заглядывал?
http://autoit-script.ru/index.php/topic,8225.0.html
 
Верх