Что нового

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

iamOmg

Новичок
Сообщения
97
Репутация
2
Извините я тут новенький, многого незнаю)) сообщение исправил) :-\
 

iamOmg

Новичок
Сообщения
97
Репутация
2
а как сделать так чтоб прога производила действия только если будут соответствовать несколько точек с цветами(разными)
и если все точки будут соответствовать, произвести клик мышкой)) :scratch: :blink:
 
Автор
Z

zoxer1

Знающий
Сообщения
72
Репутация
6
ну наверное я бы сделал так
Код:
$coord_1 = PixelSearch(1316, 355, 1380, 364, 0x2D1600)
$coord_2 = PixelSearch(1316, 355, 1380, 364, 0x2D1600)

if IsArray($cord_1) and IsArray($cord_2) Then
	;.......
	
EndIf

писал не проверяя на работоспособность мб прокатит
 

iamOmg

Новичок
Сообщения
97
Репутация
2
а можно пожалуйста поподробней, я просто новичок в этом деле) :scratch:
а, и ещё как сделать так чтоб он совершал опр действие при отсутствие опр цветов в заданной обл.?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Самый примитивный вариант
Код:
PixelSearch 1 ;Ищим цвет в 1 точке
if Not @error Then ;Если нашли цвет в 1 точке
    PixelSearch 2 ;Ищим цвет в 2 точке
    if Not @error Then    ;Если нашли цвет в 2 точке
        PixelSearch 3 ;Ищим цвет в 3 точке
        if Not @error Then ;Если нашли цвет в 3 точке
            ;Если нашли цвет в точках 1 2 и 3
        Else
            ;Если нашли цвет в точках 1 2 но не нашли в точке 3
        EndIf
    Else
        ;Если нашли цвет в точке 1 но не нашли в точке 2
    EndIf
Else
    ;Если не нашли цвет в точке 1 
EndIf

Его аналог в слегка инной формулировке
Код:
$1 = PixelSearch 1, $2 = PixelSearch 2, $3 = PixelSearch 3
If $1 <> 0 Then
    If $2 <> 0 Then
        If $3 <> 0 Then
            ;
        Else
            ;
        EndIf
    Else
        ;
    EndIf
Else
    ;
EndIf

Вот еще один вариант:
Код:
$1 = PixelSearch 1, $2 = PixelSearch 2, $3 = PixelSearch 3
If $1 <> 0 And $2 <> 0 And $3 <> 0 Then ;Если цвет найден при всех 3-х проверках
    
If $1 <> 0 Or $2 <> 0 Or $3 <> 0 Then ;Если хотябы одна проверка успешна
    
If $1 = 0 And $2 <> 0 And $3 = 0 ;Если в точках 1 и 3 цвет не найден а в точке 2 найден
;и тд и тп
 

iamOmg

Новичок
Сообщения
97
Репутация
2
а как сделать так чтоб скрипт закрывался при нажатии опр. клавиши?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
HotKeySet("{ESC}")

Func _finish()
	Exit
EndFunc
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Код:
HotKeySet("{ESC}", "_finish")

Func _finish()
    Exit
EndFunc
 

iamOmg

Новичок
Сообщения
97
Репутация
2
чегото не фурычит, куда я его точно должен запихнуть? :alien:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Belfigor,
ну да, скопировал, вставил и когда Ctrl+Alt+E исправлял на ESC то затёр и название функции. :rofl:

iamOmg,
вставить где угодно (сам понимаешь код с поправкой Belfigor)
 

iamOmg

Новичок
Сообщения
97
Репутация
2
не фурычит, я нажимаю Esc, а он продолжает крафтить) :scratch:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
HotKeySet в начало скрипта, саму функцию в любое место.
 

iamOmg

Новичок
Сообщения
97
Репутация
2
Как сделать так чтоб рандомна поставить паузу во время скрипта или выполнить опр действие))
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Вообще-то это в хелпе пример по функции random
Код:
If Random() < 0.5 Then
    ;Capitals
Else
    ;Lower case
Endif
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Может паузу на рандомное время?
Код:
Sleep(Random(1000,2000))
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Для рандомной паузы классно :ok:
Но он же хочет ещё и рандомно выполнять какое-то действие. ;)
 

iamOmg

Новичок
Сообщения
97
Репутация
2
пасибо, а ктонить знает как сделать после компиляции при перенесение на другой комп чтоб картинка в интерфейсе сохранялась?
что то рандом не работает мне надо чтоб он тыкал на выбор из 4 точек только в 1 рандомно
 
Автор
Z

zoxer1

Знающий
Сообщения
72
Репутация
6
первый вопрос не понятен
на второй у меня такой ответ
Код:
$variant = Random( 1, 4 )

Switch $variant
Case 1
	MouseClick(1,1) ; 1ая точка
Case 2
	MouseClick(2,2) ; 2ая точка
Case 3
	MouseClick(3,3) ; 3ая точка    
Case 4
	MouseClick(4,4) ; 4ая точка        
EndSwitch
 

iamOmg

Новичок
Сообщения
97
Репутация
2
zoxer1
пасибо, почему я не могу сделать этот скрипт повторяющимся? пишет ошибка

Код:
$StartCoordX = 163
$StartCoordY = 375
$EndCoordX =486
$EndCoordY = 540
$SearchColor = 0x9BB7D2
$Find = 0 ; переменная Нашел-Нет
$YSector = 0

	
    
	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
	
	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
 
Верх