매크로

조회 수 2333 추천 3 댓글 46

1편 :?http://tailstar.net/hiromacro/1002422

2편 : http://tailstar.net/hiromacro/1013187


1편에서는 색값과 좌표 따는 방법을?

2편에서는 그 색값과 좌표를 이용해서 스크립트 짜는 것을 보았습니다.?


하지만 2편에서 만든 스크립트는 기능 수행 상 오류는 없었지만?

한 가지 문제점이 있었습니다.?


별되의 아이템 판매 방식의 문제인데?


아이템 클릭 후 판매 버튼을 누르면?

무기나 방어구와 같은 장비는 보라색 까지는 등급 이하 판매 버튼이 활성화가 되지만?


장신구,이벤트 스크롤, 물약 과 같은 경우는 같은 위치에 취소 버튼이 활성화가 되어서 매크로가 제대로 실행이 되지 않는 문제 점이 있었습니다.?


그리하여 문제점을 잡기 위해서 한 가지 다른 방법을 추가 하였습니다.?


1. 아이템 창의 왼쪽 라인 아이템들의 색값을 읽은 다음?

2. 보라색 등급이하 이면 아이템을 클릭하여?

3. 판매 버튼을 누른 후?

4. 등급 이하 아이템 판매 버튼을?

5. 누르고 "나가기" 버튼을 누르자

6. 만약 4번에서 등급 이하 아이템 판매 가 있는 위치의 버튼을 누른 후 아이템이 판매 되지 않는 경우 아이템 세부 정보 창을 닫고 같은 라인의 오른쪽 끝의 색값을 읽은 후 2~5번 까지 다시 돌아 가기



아래가 작업을 한 후의 스크립트 입니다.?

기존의 스크립트는 설명을 드렸으니 이번에 변경된 부분에서만 설명을 드리겠습니다.

변수 관련은 추가된 부분만 추가 하겠습니다.?




//인벤관련 좌표

var #iny2 1180 ? ?오른쪽 마지막 아이템 아이템 색값 읽을 Y좌표

var #inych2 1120 ?오른쪽 마지막 아이템 선택할 Y좌표



//아이템 디테일 닫기 ? 물약/장신구/이벤트 아이템의 새부정보 창을 닫기 위한 변수 지정

var #closex 647

var #closey 1157

var #closec 16777215

var #closecheck 0


var #invline 0




?:inven1

#invline = 0?

#invline 을 넣은 이유는 스크립트가 실행이 되면서 몇번째 라인의 아이템을 스캔해서 넘어 갔는 지를 확인하고 그 후의 스크립트를 진행하기 위해 추가 하였습니다.?

sleep 1500

getcolor #backcheck #backx #backy

sleep 1000


if #backcheck == #back

getcolor #invc1 #inx1 #iny1

getcolor #invc2 #inx2 #iny1

getcolor #invc3 #inx3 #iny1

getcolor #invc4 #inx4 #iny1

sleep 1000

log #invc1 _invc1_1

log #invc2 _invc2_1

log #invc3 _invc3_1

log #invc4 _invc4_1

else

goto :inven1

endif



if #invc1 == #invw or #invc1 == #invg or #invc1 == #invb or #invc1 == #invp

#invline = #invline + 1 ? ?

touchpress 0 #inx1 #inych1

elseif #invc2 == #invw or #invc2 == #invg or #invc2 == #invb or #invc2 == #invp

#invline = #invline + 2

touchpress 0 #inx2 #inych1

elseif #invc3 == #invw or #invc3 == #invg or #invc3 == #invb or #invc3 == #invp

#invline = #invline + 3

touchpress 0 #inx3 #inych1

elseif #invc4 == #invw or #invc4 == #invg or #invc4 == #invb or #invc4 == #invp

#invline = #invline + 4

touchpress 0 #inx4 #inych1

else

goto :inven2

endif


#invline 에 몇번째 줄에서 아이템 값을 가지고 와서 if 구문이 넘어 가는지 알기 위해서 각 라인마다 일의 자리수에 1~4로 표기가 되도록 만들었습니다.?

바로 아래 줄의 log #invline _invenline 의 로그에서 그 위치가 확인이 됩니다.?

1일 경우 처음 줄 2일 경우 두번째 줄 의 방식으로요..


log #invline _invenline


sleep 1000

touchpress 0 #sex #sey

log touch sell_1

sleep 1000

touchpress 0 #asx #asy

sleep 1000

getcolor #closecheck #closex #closey

sleep 1000

if #closecheck == #closec

touchpress 0 #closex #closey

sleep 1000

goto :inven2

else?

goto :invenout

endif

여기 #closecheck 의 부분은 아이템 세부정보창이 열려있는지 확인하는 과정입니다. 여기서 아무런 문제가 없이 아이템이 판매가 되었다면 아이템 세부정보 창이 자동으로 닫기기에 그냥 아이템 창 나가기로 진행이 되며?

그렇지 않다면 세부 정보 창이 열려있으므로 아이템 창 나가기가 아닌 다음 스크립트를 진행을 하러 가게 됩니다.

:inven2

if #invline == 1

goto :inven11

elseif #invline == 2

goto :inven12

elseif #invline == 3

goto :inven13

elseif #invline == 4

goto :inven14

endif


여기서는 위에서 아이템 줄을 결정한 #invline 의 숫자에 따라 진행하는 매크로의 위치를 바꾸기 위해서 작업하였습니다.?

1번일 경우 처음줄 오른쪽

2번일 경우 두번째줄 오른쪽

3번일 경우 세번째줄 오른쪽

4번일 경우 네번째줄 오른쪽?

에서 부터 색값을 다시 읽고 확인하도록 하였습니다.?

아래 :inven11,?:inven12,?:inven13,?:inven14, 는 그에 따른 각각의 라벨을 지정하여 스크립트가 따라서 진행 하도록 만들어 놓았습니다.


:inven11

getcolor #invc1 #inx1 #iny2

getcolor #invc2 #inx2 #iny2

getcolor #invc3 #inx3 #iny2

getcolor #invc4 #inx4 #iny2

sleep 1000

log #invc2 _invc2_1_1

log #invc3 _invc3_1_1

log #invc4 _invc4_1_1

if #invc1 == #invw or #invc1 == #invg or #invc1 == #invb or #invc1 == #invp

touchpress 0 #inx1 #inych2

elseif #invc2 == #invw or #invc2 == #invg or #invc2 == #invb or #invc2 == #invp

touchpress 0 #inx2 #inych2

elseif #invc3 == #invw or #invc3 == #invg or #invc3 == #invb or #invc3 == #invp

touchpress 0 #inx3 #inych2

elseif #invc4 == #invw or #invc4 == #invg or #invc4 == #invb or #invc4 == #invp

touchpress 0 #inx4 #inych2

else

goto :invenout

endif


goto :invcon

:inven12

getcolor #invc2 #inx2 #iny2

getcolor #invc3 #inx3 #iny2

getcolor #invc4 #inx4 #iny2

sleep 1000

log #invc2 _invc2_1_1

log #invc3 _invc3_1_1

log #invc4 _invc4_1_1

if #invc2 == #invw or #invc2 == #invg or #invc2 == #invb or #invc2 == #invp

touchpress 0 #inx2 #inych2

elseif #invc3 == #invw or #invc3 == #invg or #invc3 == #invb or #invc3 == #invp

touchpress 0 #inx3 #inych2

elseif #invc4 == #invw or #invc4 == #invg or #invc4 == #invb or #invc4 == #invp

touchpress 0 #inx4 #inych2

else

goto :invenout

endif


goto :invcon

:inven13


getcolor #invc3 #inx3 #iny2

getcolor #invc4 #inx4 #iny2

sleep 1000

log #invc3 _invc3_1_1

log #invc4 _invc4_1_1

if #invc3 == #invw or #invc3 == #invg or #invc3 == #invb or #invc3 == #invp

touchpress 0 #inx3 #inych2

elseif #invc4 == #invw or #invc4 == #invg or #invc4 == #invb or #invc4 == #invp

touchpress 0 #inx4 #inych2

else

goto :invenout

endif


goto :invcon

:inven14

getcolor #invc4 #inx4 #iny2

sleep 1000

log #invc4 _invc4_1_1_4


if #invc4 == #invw or #invc4 == #invg or #invc4 == #invb or #invc4 == #invp

touchpress 0 #inx4 #inych2

else

goto :invenout

endif

goto :invcon


:invcon

sleep 1000

touchpress 0 #sex #sey

log touch sell_2

sleep 1000

touchpress 0 #asx #asy

sleep 1000

getcolor #backcheck #backx #backy

sleep 1000


if #backcheck == #back

touchpress 0 #backx #backy

sleep 1000

#invline = #invline + 1

goto :inven2

endif


여기서 :invcon 을 넣은 이유는 여기 스크립트는 단순 판매 버튼 클릭 모두판매 버튼 클릭으로 이루어 져 있는데?

:inven11,?:inven12,?:inven13,?:inven14 4군대에 전부다 넣기에는 스크립트가 의미없이 길어 지는 듯하여 하나로 합친것입니다.

:inven11,?:inven12,?:inven13,?:inven14를 진행 후 :invcon을 진행한 후 :invenout로 연속 진행 하게 됩니다.??



:invenout

sleep 1000

getcolor #backcheck #backx #backy

sleep 1000

if #back == #backcheck

touchpress 0 #backx #backy

sleep 1000

goto :dun

else

goto :invenout

endif


:end


이놈은 10월 30일 패치 전까지는 잘 작동을 하다가?

10월 30일 패치 후 2편과 동일한 증상이 발생을 하게 됩니다.

이 후의 내용은 스크립트를 다시 짠 후에 진행을 하도록 하겠습니다.?



List of Articles
제목 글쓴이 최근변경 추천
00시간 00분 동안 대기 하기 7 하늘보글이 2023.01.16 0/0
초보용 반복 강좌 159 존레넌 2023.09.21 5/0
초보의 초보를위한 매크로를 만들때 하나의 프로세스. 91 묵응 2023.08.27 15/0
한글로 만들어보는 매크로. 35 묵응 2019.11.22 5/0
생초보도 만들수 있는 매크로 (Feat.한글로 풀어보는 ... 73 묵응 2021.05.02 8/0
본격 매크로 스크립트 만들어보기(1) 66 샤먼 2023.07.27 4/0
if 구문 예제 31 샤먼 2022.01.12 5/0
기본 구문 설명 : if 36 샤먼 2019.08.20 5/0
기본 문구 설명 var, getcolor 55 샤먼 2019.01.15 6/0
기본 구문 설명 touchpress, touchdown, touchup, touc... 49 샤먼 2019.11.22 6/0
히로매크로에서 하드웨어키로 스크린샷을 찍어보자! 43 닷찌 2020.04.01 3/0
히로매크로 쉽게 알기 - 4 (별이되어라 스스스작 좌표... 126 태환은린 2021.07.19 12/0
히로매크로 쉽게 알기 - 3 (스크립트 복사와 수정법) 96 태환은린 2019.11.22 8/0
히로매크로 제작 강좌-4 (부제: 장비 판매) 40 샤먼 2018.05.24 2/0
히로매크로 쉽게 알기 - 2 (별이되어라 모든사냥터사냥... 160 태환은린 2019.11.22 9/0
히로매크로 쉽게 알기 - 1 308 태환은린 2023.07.21 33/0
히로매크로 제작 강좌-3 (부제: 장비 판매) 46 샤먼 2021.04.29 3/0
심심해서 발로 써보는 히로매크로 강좌_3 75 가풍기 2020.10.09 12/0
히로매크로 제작 강좌-2 (부제: 장비 판매) 59 샤먼 2022.02.18 2/0
히로메크로 제작 강좌-1 (부제: 장비 판매) 121 샤먼 2021.02.13 8/0
Board Pagination Prev 1 2 Next
/ 2

전체 최신 인기글

전체 주간 인기글