저는 이미지 서치보다 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도 이렇게 사용하시면 의외로 많이 편하니 자주 이용해보세요^^ 감사합니다
오오 꽤 유용할거같습니다. 감사합니당