패스오브 액자일이라는 게임을 하면서

오토핫키로 피가 달면 1을눌러서 스스로 포션을 빨게하는 메크로를 만들었어


챗지피티랑 클로드라는  ai 한테 물어가면서 만들었어.

수동으로 좌표는 따서 넣어줘야 하지만 그 좌표에 색상이 바뀌면 1을 누르게 하는거랑.

게임프로그램에서만 작동대게 하는거까지는 했어.


색상이 바뀌면 1을 누르는걸로 구현이 되어있어서 피가 달면 1을 잘 빠는데 문제는 1을 눌러서 피가 차면 다시 빨개지니까 색상이 바뀐걸 다시한번 인지하고 또 1을눌러서 포션을 낭비하게대.

7ee99e36ebd518986abce89541807d6e21

여기 가운데를 좌표로 따서 저기 색상이 바뀌면 누르는걸로 구현한거. ㅇㅇ


중복해서 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

}