1편 :?http://tailstar.net/hiromacro/1002422
1편에서 필요한 좌표 값 및 색값을 땄습니다.
그럼 이제는 자신이 원하는 내용을 스크립트로 옮겨 적어야 하는 과정이 남아 있죠.
우선 원하는 기능이 정확하게 어떤 것인지 정리할 필요성이 있습니다.?
제가 잡은 기능은 크게 "보라등급 이하의 아이템을 모두 판매" 라는 단 하나의 목적이 있었죠.?
오늘은 제가 실수를 한 스크립트를 가지고 제가 실수를 한 부분과 수정 과정에 대해 이야기를 해보도록 하겠습니다.?
처음 제가 생각을 했을 때는?
1. 아이템 창의 왼쪽 라인 아이템들의 색값을 읽은 다음?
2. 보라색 등급이하 이면 아이템을 클릭하여?
3. 판매 버튼을 누른 후?
4. 등급 이하 아이템 판매 버튼을?
5. 누르고 "나가기" 버튼을 누르자
라는 매크로 였습니다. ?변수 부분은 스크립트를 만드는 사람의 성격 차이긴 한데?
개인적으로는 변수를 좋아 합니다. 그 이유는 제가 보통 작업을 지니모션, 노트3 두 가지 환경에서 작업을 하고?
매크로를 짜게 되는데 변수를 지정하고 각각의 환경에서의 변수를 가지고 있으면 차후 스크립트를 수정을 할 때?
수정이 쉬워지는 장점이 있기에 거진 대다수의 값들을 변수 처리 하여 사용합니다.?
변수를 지정할 때의 주의 점은
1. 각각의 변수끼리 같은 이름이 되어서는 안되고?
2. 나중에 수정을 위해서 변수를 봤을 때 이해 할 수 있는 네이밍이 필요로 합니다.?
아래의 스크립트의 좌표값이나 색값은?
DEVICE: Samsung Galaxy Note 2 - 4.3 - API 18 - 720x1280 4.3
SCREEN_SIZE: 720x1280
와 같은 환경의 지니모션 입니다.?
=======================================================================================
//여기는 1편에서 확인한 X좌표와 Y좌표값 입니다.?
var #inx1 593
var #inx2 460
var #inx3 327
var #inx4 193
var #iny1 671
var #inych1 729
//좌표값을 넣어서 아이템 창 왼쪽 라인에 아이템들을 바꿔서 배치해 보면서 뽑아낸 색값입니다.?
var #invw 16777215 <흰색
var #invg 6148644 <녹색
var #invb 16748826 <파란색
var #invp 16725918 <보라색
var #invo 2332159 <주황색
var #invr 794579 <빨간색
//좌표 값에서 getcolor 코드로 색값을 받아와서 저장 시킨 후 기존의 아이템 색깔과 비교하기 위한 변수 입니다.?
var #invc1 0
var #invc2 0
var #invc3 0
var #invc4 0
//판매 좌표
var #sex 67
var #sey 852
//모두판매
var #asx 248
var #asy 497
// 뒤로가기버튼
var #backx 95
var #backy 54
var #back 6843088
var #backcheck 0
여기 까지가 필요한 변수 지정이 끝났고 이제부터 본격 스크립트가 시작됩니다.?
=====================================================================================
:start
:inven1 ? << 인벤토리에 왔을 때의 상황을 라벨로 지정한 것입니다.?
? ? ? ? ? ? ? ? ?반복 실행이나 스크립트를 중간에 뛰어 넘어야 할 경우 지정하시고?
? ? ? ? ? ? ? ? goto :inven1 과 같이 구문을 써 주시게 되면 됩니다.?
getcolor #backcheck #backx #backy ?
sleep 1000
if #backcheck == #back ? ?<< 나가기 버튼의 색값이 지정해놓은 색값과 같을 경우 1,2,3,4번째 줄의 왼쪽좌표값의 색값 확인
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
touchpress 0 #inx1 #inych1
elseif #invc2 == #invw or #invc2 == #invg or #invc2 == #invb or #invc2 == #invp
touchpress 0 #inx2 #inych1
elseif #invc3 == #invw or #invc3 == #invg or #invc3 == #invb or #invc3 == #invp
touchpress 0 #inx3 #inych1
elseif #invc4 == #invw or #invc4 == #invg or #invc4 == #invb or #invc4 == #invp
touchpress 0 #inx4 #inych1
else
goto :invenout
endif
<< 여기는 바로 위에서 색값을 읽었을 때 각 색값을 비교하여 왼쪽 라인의 아이템이 보라색,파란색,녹색,흰색 일 경우?
그 아이템을 클릭하는 스크립트입니다.?
상위 등급의 아이템이 위로 올라가는 별되의 시스템상?
스크립트의 진행은 가장 위에 줄부터 시작하여 색값을 비교 하게 됩니다.?
sleep 1000
touchpress 0 #sex #sey ? <<판매 버튼 클릭
log touch sell_1
sleep 1000
touchpress 0 #asx #asy ?<< 등급이하 판매 버튼 클릭
sleep 1000
goto :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
감사합니다~!