스크립트 픽셀체크 하여 90%에 알아서 먹는 자동물약 만들기 [게임매크로 5탄]
페이지 정보
본문
안녕하세요 게임 매크로를 만들어 보는 것을 하고 있습니다.
얼마 전에는 OCR을 통해서 수치를 파악해서 만들어 보는 부분이었는데 OCR 이 값을 못 가져올 때도 있고,
픽셀로 만든 부분보다 느릴때도 있고, 픽셀로만 해야 할 경우도 있다 보니 이번에는 OCR을 사용하지 않고
게임의 HP 그래픽만 가지고 해보려 합니다.
혹시 OCR 을 이용한 방법이 궁금 하시면
http://ngmsoftware.com/bbs/board.php?bo_table=user_tip_and_tech&wr_id=5&page=2
참고하세요
위 이미지와 같이 리니지m 의 경우 그래픽적인 요소가 있어서 hp의 색 값이 실시간으로 바뀌다 보니 이럴 땐?
어떤 식으로 제작 가능할까요?
일단은 hp의 그래픽을 가져와야 합니다
hp 부분의 가장 하단의 한 픽셀을 가져올 건데요
이라는 것을 통해서 이미지를 가져올 것입니다.
작업 부분에 덮어쓰기로 해주시고 저장 위치를 잡아 주신 후에
의 캡처 영역을 잡아 주시고
기본 설정 부분에 보시면 가로 274 크기에 세로 1픽셀의 크기로 이미지가 잡혀 있을 것입니다.
그런데 세로 픽셀 1 픽셀이 너무 작다 보니까 구분하기도 힘들고 사람 눈으로도 보기도 힘들어서
저장될 이미지의 크기를 수정해 주려 합니다.
세로의 크기를 10배 키워서 10 픽셀로 해주었습니다.
위 버튼을 눌러서 실행을 합니다
저장된 이미지를 확인해보면 아래와 같이 저장되어 있을 겁니다.
위와 같은 이미지가 저장되어 있습니다.
추후 hp 가 있는 부분과 없는 부분을 구분하기 위해서 체력이 빠져 있을 때
이미지 필터 저장을 가지고 저장한 부분입니다.
이제는 위 이미지를
위와 같이 만들어주어야 hp 가 얼마나 있는지 구분해볼 수 있을 텐데요 필터 저장의 속성 값들을
알아내기 위해서
새로 만들기 -> 이미지를 진행해줍니다.
위 버튼을 눌러서 이미지 가져오기를 합니다.
이렇게 불러오기 한 후에
저는 대비와 밝기를 100 씩 줬더니
위 이미지처럼 확연하게 체력 이미지 부분이 변경되신 것을 보실 수 있습니다.
그럼 위에 처럼 체력이 있는 부분과 없는 부분이 확실히 구분이 됩니다.
이제 여기에서 알아낸 값을
에서 적용하여 줍니다.
위와 같이 속성을 지정해주고
실행 버튼을 돌려주면
위와 같이 우리가 hp 부분이 있는 부분과 피가 빠져있는 이미지가 처리되어 있으신 것을 보실 수 있을 것입니다.
이미지 필터 저장을 하는 이유는 위에 hp 바를 필터 처리해서 위 이미지처럼
움직이는 hp 이미지라도 붉은색과 흰색으로 구분하여 저장 가능합니다.
게임마다 속성이 다르겠지만 위 방법과 비슷한 방법으로 지금의 hp 체력의 바를 구해낼 수 있는 것입니다.
그럼 구해낸 hp 바를 가지고 지금 hp 가 몇 %에 해당되는지를 구해보도록 하겠습니다.
변수를 하나 추가해줍니다. 변수명은 만피hp좌표로 해주었습니다. (원하시는 걸로 하셔도 됩니다)
이미지 크기에 해당되는
가로 274 X 세로 10입니다 그중에 1 픽셀의 크기를 가지고 피가 몇 % 인지 알아볼 것이라
문자열에는 274, 9, 1, 1을 넣어줬습니다.
위 이미지에서 보시면 저기 끝에 검은색이 273, 9, 1, 1 위치에 해당합니다.
이제 저기 검정색 좌표를 하나씩 줄여가면서 빨간색이 나올 때까지 줄여 그 좌표가 어딘지를 구해보겠습니다.
빨간색 좌표값을 만나면 넣어줄 변수도 하나 만들어 줍니다.
퍼센트를 계산해서 넣을 변수를 하나 만들어줍니다.
속성은 아래와 같습니다
그리고 저장된 이미지를 확인해 봅니다.
빨간색과 흰색이 나뉘어 있습니다. 빨간색은 체력이 있는 부분이고 흰색 부분은 체력이 빠진 부분입니다
되돌리기 해줄 분기점을 만들어줍니다.
직사각형 사칙연산을 통해서 1픽셀씩 마이너스시켜줄 것입니다.
가져오기를 통해서
왼쪽 피연산자에 만피hp좌표 값을 넣어줍니다.
왼쪽 피연산자에 값을 받아 온 후 1, 0, 0, 0 씩 좌표를 차감해갑니다.
그러면 처음에는 X 값이 274-1 =273 이 되고 이 값을 픽셀 서치의 값으로 넣어서 픽셀 값이 있는지 검사해볼 것입니다.
이제 만들어진 결괏값을 다시 만피hp좌표값에 추가하기를 통해서 넣어줍니다. 그리고 X좌표의 값도 지금 hp좌표값에 추가하기로 넣어줍니다.
두 개의 값을 두개의 변수에 넣어줬습니다.
이제 픽셀 서치를 통해서 위 위 좌표의 값에 체력 값이 있는지 체력값이 없는지를 확인할 것입니다.
픽셀 서치를 할 수 있습니다 얼마전 패치를 통해서 파일에서도 픽셀 서치를 할수 있도록 되었는데요
작업 부분에서 파일을 선택 주시고 찾기 파일 선택 주시고
색상 선택은 흰색으로 해주시면 흰색 부분을 찾습니다.
찾기 영역은 위에서 차감해놓은 변수를 통해서 대입해줍니다.
이렇게 찾기 영역에 가져온 값을 넣어줘서 픽셀 값을 확인합니다.
조건 설정에서 위 좌표에 흰색이면 다시 시작점인 분기점으로 돌려서 1픽셀씩 차감하면서 내려오고
흰색의 픽셀이 아니라면 밑으로 내려가게 다름에는 비워 둡니다.
이제 위에서 계속 1픽셀씩 줄여서 반복하다가 빨간색 픽셀을 만나면 위에 스마트 사칙연산을 시작합니다.
274는 전체 hp 체력 바의 크기입니다. 퍼센트를 구하려면 지금의 hp 바에서 전체 hp를 나누고 거기에 100을 곱해주면 됩니다.
변수 A는 전체 체력 픽셀 수 변수 B에는 지금의 hp 바 픽셀을 가져오기로 넣어줄 것입니다.
변수 B에 지금의 hp좌표값을 넣어줬습니다.
이제 스마트 사칙연산으로 구해진 % 값을 퍼센트 변수에 넣어줍니다
저는 돌려보니까
지금 hp좌표 값의 픽셀 값이 254 좌표에서 흰색 좌표가 아니게 바뀌게 되면서
254 / 274 * 100을 하여 92%가 나왔습니다.
지금 체력이 92% 에 해당되는 것입니다.
이제 숫자 체크를 통해서 90% 해당되면 마우스로 물약을 클릭해주도록 해보겠습니다.
숫자 체크 하나 넣어주시고요
비교 대상 숫자에다가 퍼센트 변수의 값을 넣어줍니다.
비교대상 숫자는 위에 가져오기를 통해서 % 값을 가져오고
비교조건은 Less Than (보다 작음)으로 해주시면 됩니다.
비교할 숫자는 90입니다 90% 비교를 한다는 뜻입니다.
같음 조건은 비워 두시고 다를 경우 모든 변수를 다시 초기화하고 다시 매크로를 초기화하기 위해
젤 위에 피체크라는 그룹을 만들어 분기점으로 위로 올려주겠습니다.
그룹은 젤 위에 만들어 주었습니다.
그리고 더블 클릭을 통해서 물약을 클릭해주도록 하였습니다.
끝나면 다시 피체크 부분으로 액션 이동을 시켜 다시 반복되도록 하였습니다
설명이 길어져서 좀 복잡한 것 같지만 어려워하시는 분들이 계실 것 같아서 최대한 여러 번 중복적으로 설명하였습니다.
사실 12줄 밖에 되지 않습니다.......
짜잔 완성되었습니다.
90% 가 되면 물약을 먹고 있습니다~ 뭐 더 쉬운 방법도 있겠지만 픽셀을 1픽셀씩 줄여가며
%를 구해보는 예제를 만들어보면서
변수의 활용 반복문, 조건문 등등 여러 가지를 이용해보았습니다~ 학습의 목적이라 여러가지를
활용해 보았습니다. 직접 자기에 맞는 게임으로 만들어 보시고 궁금하신 점은 댓글 남겨주세요 ㅎ
- 다음글NGM 매크로 내캐릭 주위 몬스터, 아이템 찾기 [게임매크로 4탄] 20.04.21