매크로

조회 수 1215 추천 0 댓글 9

저는 이미지 서치보다 pixelGetColor를 많이 사용하는데요


요즘은 예쁜이미지, 투명이미지가 많아서 color값이 일정하지않고 일정 범위내에서 변하는 경우가 많이 있어요


pixelGetColor의 경우 색깔값이 RGB로 나눠서 나오기때문에 


오차범위 선정이 조금 까다로운 면이 있는데요


이러한 문제는 10진수를 사용하면 매우간단해집니다


검정색 = 0 흰색은 16777215값인데


이렇게되면 색값이 연속성이 생기게 되고


함수값을 특정 범위로 만들수가 있게 됩니다.


예를들어 붉은색 체력게이지바의 범위색이 일정하진 않더라도 1920~2200값을 유지하는거죠


이런 방법으로 리니지m의 체력바를 체크할수 있습니다


10진수로 변경하는 함수는 다음과 같습니다


;10진수 픽셀 체크


checkPixelDecimal(a,b){

pixelgetcolor, varPixel, a, b

SetFormat, IntegerFast, d

decimalCode := varPixel

decimalCode += 0

return decimalCode

}


이러면 RGB값이 아닌 정수값이 나와서 비교하기가 쉽습니다.


특정위치의 최대값과 최소값을 일일히 체크하기가 어렵고 범위를 넉넉하게 주기가 어려운데


이걸 따로 찾아내는 매크로도 따로 만들어 보았습니다


===========================================================


Gui, Add, ComboBox, x-8 y-67 w140 h106 , ComboBox

Gui, Add, Text, x10 y22 w30 h20 , X값

Gui, Add, Edit, x55 y19 w40 h20 vposX , 114

Gui, Add, Text, x140 y22 w30 h20 , Y값

Gui, Add, Edit, x185 y19 w40 h20 vposY, 92

Gui, Add, Text, x140 y52 w50 h20 , 최대값

Gui, Add, Edit, x185 y49 w70 h20 vcodeMax , 0

Gui, Add, Text, x10 y52 w50 h20 , 최소값

Gui, Add, Edit, x55 y49 w70 h20 vcodeMin, 0

Gui, Add, Button, x20 y120 w100 h30 , 체크

Gui, Add, Button, x125 y120 w100 h30 , 종료

gui, add, text, x30 y90 w100 h30 vshowCode, 0

; Generated using SmartGUI Creator 4.0

Gui, Show, x1090 y487 h170 w294, New GUI Window

Return


GuiClose:

ExitApp


stateNow := false


pixelMax := 0

pixelMin := 0


varPixel :=0


f3::

{

stateNow := false

}

return


button종료:

{

ExitApp

}

return


changecodeDecimal(a){

SetFormat, IntegerFast, d

decimalCode := a

decimalCode += 0

return decimalCode

}






button체크:

{

stateNow := true

gui submit, nohide

WinActivate, 프로그램타이틀

MouseMove, posX, posY

pixelgetcolor, varPixel, posX, posY

varPixel := changecodeDecimal(varPixel)

guiControl, ,codeMax, %varPixel%

guiControl, ,codeMin, %varPixel%

codeMinvar := varPixel

codeMaxvar := varPixel

Loop 

{

WinActivate, 프로그램타이틀 

MouseMove, posX, posY

pixelgetcolor, varPixel, posX, posY

varPixel := changecodeDecimal(varPixel)

if(varPixel > codeMaxvar)

{

guiControl, ,codeMax, %varPixel%

codeMaxvar := varPixel

}

if(varPixel < codeMinvar)

{

guiControl, ,codeMin, %varPixel%

codeMinvar := varPixel

}

guiControl, ,showCode, %varPixel%

if(stateNow = false){

break  

}

sleep, 200

}

}

return

===========================================================


허접합니다만

이걸이용하면 특정포인트의 pixelcolor값이 10진수로 어떻게 변화는지 체크할수 있습니다

그럼

      a := checkPixelDecimal(415,188)

if(a> 13500000 && a <13700000){

mouseClick, left, 392, 335,1,0

sleep, 200

}

이런식으로 정확한 값이 아니더라도 확인할수 있습니다


눈팅덧글로만 봤지만 할것엄따구님 댓글이 매우 도움이 많이되어서 이글을 빌어 감사의 인사를 전합니다


pixelgetcolor도 이렇게 사용하시면 의외로 많이 편하니 자주 이용해보세요^^ 감사합니다


  • 개발자의하루 2017.08.22 23:57

    오오 꽤 유용할거같습니다. 감사합니당

  • 할거엄따구 2017.08.23 00:45

    괜찮은 방법이네요~ 테스트해봐야겠어요 ㅎㅎ

  • 할거엄따구 2017.08.23 01:27

    R값이낮은 픽셀에서는 오감지가 좀 있는거 같네요.

  • 갈리토스 2017.08.23 12:23
    오오 할거엄따구님이 댓글달아주시다니 감사합니다! 분석도 해주시고 영광이에요 보통범위를 실측해서 정해서 큰 오차범위가 안생기던데 R값은 한번 고민해봐야겠네요 감사합니다^^ 모모비활성클릭 매우 잘쓰고있어요 감사해요~~^^
  • 할거엄따구 2017.08.23 12:46
    저도 초보인데 부끄럽게 왜그러세요ㅎㅎ;
    위에 pixel값을 decimal로 변환하신게 어차피 pixel값 FFFFFF 이렇게 된거를 10진수로 변환한거라, R값 1차이에 대한 오차 범위가 뒤에 G, B값의 오차범위를 넘어서서 그런거 같아요.
    R값이 1이라도 변하는 pixel이라면 G , B 값이 0~255까지 변하더라도 다 포함시켜버리니......
    G, B값에 대한 조건 안주고 R값만 조건 주고 판단하는거랑 별 차이가 없게 되는거죠..실제로 테스트해보니 리니지m 피통이 순간순간 요동치는 경우가 있더라구요.
    FF0000과 FEFFFF의 decimal값 차이는 1이기 때문에 전혀 다른 색을 검출할가능성이 생기는거죠...

    참고)
    R값 1변할때 차이 값 = 65536
    G값 1변할때 차이 값 = 256
    B값 1변할때 차이 값 = 1
  • jason 2017.11.19 07:08
    1x1 픽셀 크기의 bmp 파일로 이미지 서치를 하면서 오차값을 주면 어떨까요
  • 도우넛 2017.12.28 01:13

    좋은 정보 공유해주셔서 감사합니다~

  • hihi88 2021.01.23 23:12

    많이 도움이 됐습니다. 감사합니다.

  • 비듀맨 2022.07.21 11:32
    진짜 말도 안 되는 꿀정보네요 감사합니다!

List of Articles
분류 제목 글쓴이 최근변경 추천
정보 활성화된 창으로 esc보내는 라이브러리. 1 헐키 2015.06.19 0/0
정보 혹시나 오토핫키 매크로 직접 만드시는분들~~ 4 프린치크 2014.10.29 0/0
정보 호성님 무한인증 뜨시는분 팁 4 우아아앙이잉 2015.01.06 1/0
정보 현재 사용하고 있는 PC 공인 IP 조회하기 2 저녁말고전역 2018.04.20 0/0
정보 해당이미지를 검색영역에서 모두 찾기 3 와이로 2015.11.11 1/0
정보 항상위에있는 메모장 스크립트 성지순례왔다 2015.06.21 0/0
정보 핫키 하나로 온오프 하기 2 저녁말고전역 2022.07.21 0/0
정보 한/영 전환 및 한글인지 영어인지 체크하는 방법 3 sistt 2017.04.08 1/0
정보 하나의 지정 픽셀로 마우스를 고정 압살맨블로그 2022.12.14 0/0
정보 프로그램 간이 비밀번호 임시 1 T7GG 2016.09.10 0/0
정보 푸시불렛자료-스마트폰으로 매크로에 명령하달입니다. 2 단백질 2019.03.06 0/0
정보 폴더내 이미지 찾는 Loop 5 묵치기 2014.12.01 0/0
정보 팝업 알림, CleanNotify 3 예지력1 2015.11.11 4/0
정보 테일스타 내 포인트 조회기 16 와이로 2017.07.04 4/0
정보 탭타이탄 연타 매크로 입니다. (초보만) 2 피겨맨 2015.07.01 1/0
정보 타이머 샘플입니다. 3 모바게 2014.11.28 1/0
정보 쿠키런 매크로(ImageSearch활용) 입니다. 10 멕아리 2015.02.09 1/0
정보 초보가 초보에게;; 핫키 사용법 8 악동주성 2016.09.03 4/0
정보 지니모션 테마 및 윈도우 버전 상관없이 해상도 변경하... 로뎀나무 2015.01.16 2/0
정보 지니모션 안보이게 하고 매크로 동작 24 Works 2015.04.10 0/0
Board Pagination Prev 1 23456 7 Next
/ 7

전체 최신 인기글

전체 주간 인기글