패스오브 액자일이라는 게임을 하면서
오토핫키로 피가 달면 1을눌러서 스스로 포션을 빨게하는 메크로를 만들었어
챗지피티랑 클로드라는 ai 한테 물어가면서 만들었어.
수동으로 좌표는 따서 넣어줘야 하지만 그 좌표에 색상이 바뀌면 1을 누르게 하는거랑.
게임프로그램에서만 작동대게 하는거까지는 했어.
색상이 바뀌면 1을 누르는걸로 구현이 되어있어서 피가 달면 1을 잘 빠는데 문제는 1을 눌러서 피가 차면 다시 빨개지니까 색상이 바뀐걸 다시한번 인지하고 또 1을눌러서 포션을 낭비하게대.
여기 가운데를 좌표로 따서 저기 색상이 바뀌면 누르는걸로 구현한거. ㅇㅇ
중복해서 1을 누르는걸 막는방법이 없을까?
아래는 소스코드야.
자세한 답변은 해주면 고맙지만 아니어도 좋아. 아이디어라도 있으면 적어주면 배우는데 도움이 댈거같음.
#Persistent
#IfWinActive, ahk_exe PathOfExile.exe
CoordMode, Pixel, Screen ; 화면 전체 기준으로 좌표 설정
x := 107
y := 828
tolerance := 50
cooldownTime := 200 ; 쿨다운 시간 0.2초 (200 밀리초)
lastActionTime := 0
PixelGetColor, lastColor, x, y, RGB
SetTimer, CheckColor, 50
CheckColor:
if (!WinActive("ahk_exe PathOfExile_KG.exe"))
return
PixelGetColor, currentColor, x, y, RGB
currentTime := A_TickCount
timeSinceLastAction := currentTime - lastActionTime
if (ColorDiff(lastColor, currentColor) > tolerance and timeSinceLastAction > cooldownTime)
{
Send, 1
lastColor := currentColor
lastActionTime := currentTime
}
return
ColorDiff(color1, color2)
{
color1R := color1 & 0xFF
color1G := (color1 >> 8) & 0xFF
color1B := (color1 >> 16) & 0xFF
color2R := color2 & 0xFF
color2G := (color2 >> 8) & 0xFF
color2B := (color2 >> 16) & 0xFF
diffR := Abs(color1R - color2R)
diffG := Abs(color1G - color2G)
diffB := Abs(color1B - color2B)
return diffR + diffG + diffB
}
에휴 빨간색의 범위를 파악하고 그범위가 아니면 물약먹게해야지 바부뭉퉁아
걍 손으로 눌러라
좌표 위치의 빨간색값을 구하고 빨간색 아니면 물약 먹게하면 되지 않아?