Что нового

Как привязать к PixelSearch координаты курсора?

Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
Вот скрин с Big Boss:
4d628ae23d60.png
 

running-frag

why me?
Сообщения
441
Репутация
60
Уф... Мне это ничего не сказало. Там описание достаточно подробное. Твоя задача проверить будет ли менятся пиксель когда ты там проводишь мышкой.
 
Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
Да, меняется, при наведение курсора на персонажа\моба. Меняется Dec и Hex в Current.
 

running-frag

why me?
Сообщения
441
Репутация
60
scanfail [?]
Да, меняется, при наведение курсора на персонажа\моба. Меняется Dec и Hex в Current.
Это не то.
Найди любую одноцветную зону. Наведи туда мышку. Нажми ALT+SHIFT+P после поводи мыш туда-сюда (через тот пиксель где была мышь на момент ALT+SHIFT+P). Меняется цвет в "pixel" (смотреть в BB Inform)?

PS: есть такое понятие "над" мышкой и "под" мышкой, всё что "под" мышкой само собой будет показывать цвет, а вот "над" не всегда, это равносильно сделать скрин а там не будет мыши как таковой (момент "под" мышкой)
 
Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
Кстати, вот нашел тот скрипт, о котором говорил. У нас с этим парнем была схожая ситуация, вот его скрипт:
Код:
$cursor= _WinAPI_GetCursorInfo() ;курсор атаки
......
For $j=1 to $ColCircle ;начало движения мыши по кругу, первый круг
    For $i = 1 to 360 ;рисуем мышью окружность
        hill()
        MouseMove($iXCenter + $iRadius * Cos($i*$pi/180), $iYCenter + $iRadius * Sin($i*$pi/180), 0) ;точка окружности
        Sleep($iDelay)
        $var = PixelGetColor(639, 731)   ;проверяем цвет пикселя точки
        $cursor_now= _WinAPI_GetCursorInfo() ;хендл курсора 
        if ($cursor_now[2]=$cursor[2]) and $var=0 Then ;если под курсором моб(хендл курсора=хендлу курсора атаки
            $m = MouseGetPos()                      ;
            MouseMove($m[0], $m[1], 5)              ;
            MouseDown("left")                       ;Атака
            Sleep(50)                               ;
            MouseClick( "right", $m[0] ,$m[1],5)    ;
            MouseUp("left")                         ;
            While 1                                 ;Ждем, пока моб будет убит (пока значек атаки не станет черного цвета
                $var = PixelGetColor(639, 731)      ;
                hill()                              ;
                if $var=0 Then                      ;если моб убит, 
                loot()                              ;собираем лут
                ExitLoop                            ;следующий круг        
                EndIf
            WEnd
        EndIf
    Next
$iRadius=$iRadius+$Step
Next

Осталось его только переделать под меня.


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

running-frag [?]
Найди любую одноцветную зону. Наведи туда мышку. Нажми ALT+SHIFT+P после поводи мыш туда-сюда (через тот пиксель где была мышь на момент ALT+SHIFT+P). Меняется цвет в "pixel" (смотреть в BB Inform)?
Проверил. Неправильно понял с самого начала... Не меняется...

Ладно, удачи и думаю, если я тебе не слишком надоел, до завтра ;)
 

running-frag

why me?
Сообщения
441
Репутация
60
Если ты всё правильно сделал, тогда оcтаётся подогнать цвета и shade-variation в PixelSearch. Скрипт должен работать.

PS: В противном случае нужно либо тот пример что ты нашёл либо через скриншоты\WinApi.

upd:
Если цвет не меняется тогда нужно через WinApi. Либо по скринам либо тот пример что ты выше указал.
 

nowost

Знающий
Сообщения
178
Репутация
17
а чем тебе PixelGetColor не нравится? выкопал на офф форуме Created by Valuater
Код:
;*********** Use **************
; Press Esc to terminate script
; Press F8 to open a color dialog box and choose a color
; Or
; Press F9 to get the color under the mouse pointer
; Then press F7 to watch for color change
;
; by Valuater...... Enjoy!!!
;******************************
#include <GuiConstants.au3>
#include <Misc.au3>

; BE SURE TO CHECK THESE TWO ***************************************************
Opt("MouseCoordMode", 0) ;1=absolute, 0=relative, 2=client
Opt("PixelCoordMode", 0) ;1=absolute, 0=relative, 2=client


Global $var, $Color_win, $pos, $my_color, $check

HotKeySet("{ESC}", "Terminate")
HotKeySet("{F9}", "Get_Color")
HotKeySet("{F8}", "Color_Box")
HotKeySet("{F7}", "Check_Color")

ToolTip('Get Color - is Running (F7 - Check Color)(F8 - Color Box)(F9 - Get Color)',0,0)
While 1
    Sleep(100)
WEnd
;;;;;;;;

Func Color_Box()
    $var = _ChooseColor (2)
    $pos = MouseGetPos()
    Show_Color()
EndFunc
Func Terminate()
    Exit 0
EndFunc
Func Get_Color()
    $pos = MouseGetPos()
    $Svar = PixelGetColor(  $pos[0] , $pos[1])
    $var = "0x" & Hex($Svar,6)
    Show_Color()
EndFunc
Func Show_Color()
    GUIDelete($Color_win)
    ClipPut($var)
    $my_color = $var
    $Color_win = GUICreate("RGB Color = " & $var, 290, 150, -1, -1)
    GUISetBkColor($var)
    GUISetFont(9, 400, -1, "MS Sans Serif")
    GUICtrlCreateLabel(" This Color has been Copied to the ClipBoard  " & @CRLF & @CRLF & "  Just Paste it wherever you would like"& @CRLF & @CRLF & @CRLF & " Mouse position X=" & $pos[0] & "  Y=" & $pos[1]   , 10, 10, 270, 100)
    GUICtrlSetFont(-1, 9, 650)
    If $var = 0x000000 Then GUICtrlSetColor( -1, 0xFFFFFF)
    $OK_Btn = GUICtrlCreateButton("&OK", 100, 110, 80, 30)
    GUISetState()
    While 2
        $msg1 = GUIGetMsg()
        If $msg1 = $OK_Btn Or $msg1 = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    GUIDelete($Color_win)   
EndFunc
Func Check_Color()
    $check = NOT $Check
    If $check Then ToolTip('Get Color - is Checking Color',0,0)
    While $check
        $var2 = PixelGetColor(  $pos[0] , $pos[1])
        If $my_color <> $var2 Then
            MsgBox(262208, "Color Check", " the Color has changed   ")
            ExitLoop
        EndIf
    WEnd
    ToolTip('Get Color - is Running',0,0)
EndFunc

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

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Собственно, хотелось бы узнать, как привязать координат курсора(который постоянно перемещается) к pixelsearch-у? Дабы при изменение на нужный цвет, происходило действие(клик и т.д.).

Код:
#NoTrayIcon
#include <WindowsConstants.au3>

HotKeySet('{ESC}', '_Exit')

Global $Color

$hForm = GUICreate('', 80, 20, -1, -1, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW ))
GUISetBkColor(0x000000)
$iColor = GUICtrlCreateLabel('', 2, 2, 16, 16)
$iHex = GUICtrlCreateLabel('', 23, 4, 60, 16)
GUICtrlSetColor($iHex, 0xFFFFFF)
GUISetState()

AdlibRegister('CursorGetColor', 10)

While 1
	Sleep(100)
Wend

Func CursorGetColor()
	Local $iMouse = MouseGetPos()
	If IsArray($iMouse) Then 
	    WinMove($hForm, '', $iMouse[0] + 15, $iMouse[1] + 15)
		$Pixel = PixelGetColor($iMouse[0], $iMouse[1])
		If $Color <> $Pixel Then	
	        GUICtrlSetBkColor($iColor, $Pixel)
	        GUICtrlSetData($iHex, '0x' & Hex($Pixel, 6))
		    $Color = $Pixel
			If $Pixel = 0xFFFFFF Then
				MsgBox(0, '', 'Действие')
			EndIf	
		EndIf	
	EndIf	
EndFunc	

Func _Exit()
	Exit
EndFunc
 
Верх