매크로

조회 수 1730 추천 2 댓글 15

별이되어라를 기준으로 작성한 예제가 대부분이기에 별이되어라를 하지 않으실경우 이해가 힘드실수 있습니다. ㅠㅠ


몬길, 다던왕, 세나, 등등의 게임을 이름만 알고 플레이 하진 않기에 다른 게임으로 풀어서 설명하는데는 한계가 있네요..


이해해 주셨음 합니다.



1. 분기는 가능한한 잘개 쪼개고 또 쪼개어 주세요.


(1)번글에서 말씀드렸듯이, getcolor 문이 아닌이상 변수가 아무리 많이 늘어나고 분기문이 아무리 많이 늘어나도 지니모션/폰에는 큰 부담이 되지 않습니다.


이를 이용해, 차후 게임상에서의 오류를 줄이고 기능을 추가하게 될때 쉽게 코딩하게 하기 위해 최대한 분기당 명령문을 짧고 잘게 쪼개주는것이 좋습니다.?


그럼 이걸 어디에 쓰느냐... 하는점은 예제로 보시겠습니다.



:dun
sleep 300


//난이도 , 맵 , 방번호 체크. 만약 55번맵(성채) 10번방 (9번방 클리어시 10번방이 다음갈 방으로 등록됨) 4번난이도 (신화이니깐 4번..) 일경우 email 분기로 이동. email 분기에선 사용자의 휴대폰으로 카톡, 이메일을 보내 매크로가 종료됨을 알리고 종료.
#diffisum = #zone*10000+#stage*100+#difficult
if #diffisum == 551004
goto :email
endif


// 10번방일경우 메인으로 이동. (이동하면서 방번호 초기화)
if #stage == 10
go to :gomain

// 11번맵(놀우드)의 8번방일경우 메인으로 이동. 놀우드의 경우 8번방이 존재하지 않기에 만든 조항.
elseif #stage == 8 and #zone == 11
goto :gomain

// 12번맵의 9번방일경우 메인으로 이동. 위 주석과 마찬가지.
elseif #stage == 9 and #zone == 12
goto :gomain

elseif #stage == 9 and #zone == 21
goto :gomain
elseif #stage == 9
goto :dun9

// 8번방일경우 8번방 입장으로 이동.
elseif #stage == 8
goto :dun8
elseif #stage == 7
goto :dun7
elseif #stage == 6
goto :dun6
elseif #stage == 5
goto :dun5
elseif #stage == 4
goto :dun4
elseif #stage == 3
goto :dun3
elseif #stage == 2
goto :dun2
elseif #stage == 1
goto :dun1

// 0번방이란것은 존재할수 없기에 오류가 난것으로판단. 메인으로 돌아가 다시 처음부터 시작.
elseif #stage == 0
goto :gomain
else

// 다른경우는 존재할수 없지만 혹시나를 위해 준비한 부분. start 분기로 갈경우, 나가기가 있을때 나가기를 클릭하여 마을로 돌아갑니다.
goto :start
endif
goto :start



위 예제 처럼 사용할수 있습니다.


55번맵~11번맵을 하나의 분기로 묶고, 9번방 ~ 1번방을 또 하나의 분기로 묶는다면,


오동작을 막기위해선 9번방부터 일일이 클릭하는방식으로 만들거나,


한방 돈뒤 1~9번방 다시체크를 해야하기에 getcolor 명령어가 남발될수있습니다.


이를 방별로 하나하나 떼어낸뒤, 간단한 변수 몇개를 첨가해줌으로써


getcolor 는 맵을 고른후 최초의 1회만 실행하고 이후 그 맵을 클리어할때까진 어느 방을 돌아야할진 변수로 체크하고


getcolor 의 사용은 줄여줄수 있습니다.


물론 dun1~9 분기문속엔 #stage 변수로 몇번방을 현재 돌고 그다음에 돌방이 몇번방인지 명시해줘야겠죠.?



2. #color 값은 분기문속의 getcolor 값 만큼 만들어주세요.


왜인지는 알수 없습니다만, 이렇게 짜주는쪽이 오동작이 줄어들더군요.. 열댓번 테스트해본 결과입니다.


예를들어..


:dunend


getcolor #color #getx #gety

if #color == #white

goto :loop5

endif


getcolor #color2 #dunendx #dunendy

if #color2 == #white

goto :loop5

endif

.

.

.


getcolor #color8 #stageselectx #stageselecty

if #color8 == #white

goto :dun

endif



이런식입니다.


변수가 조금 늘어나기에 메모리가 "몇 바이트" 더 먹는 아주아주 작은 단점이 있지만,


왜 인지 알수없을 getcolor 명령문의 오동작이 줄어들고, 명령문을 훨씬 알아보기 편해집니다.



3. 특정한 경우를 제외하곤 sleep 문은 최대한 터치 명령어 이후로.?


습관적으로 분기문, if문 이후에 혹은 기기의 오연산을 막기위해 쉬라고 sleep 을 주는 경우가 많습니다만, (특히 1~100 정도의 작은수로 )


이는 사용자입장에선 불필요한 딜레이가 늘어나고, 기기입장에선 처리해야할 명령문이 한줄 늘어난것에 불과합니다.


터치 명령어를 내린 이후 / 혹은 안전성을 위해 터치 명령어 이전이 아니라면 sleep 문은 최대한 줄여주는것이 좋습니다.


getcolor #color6 #dunendx #dunendy
if #color6 == #white
touchPress 0 #dunendx #dunendy
sleep 500
goto :loop5
endif

getcolor #color7 #dunfailx #dunfaily
if #color7 == #white
touchPress 0 #dunfailx #dunfaily
sleep 500
goto :loop5
endif


getcolor 문이 연달아 나왔지만, 조건에 충족되어 터치하는경우가 아니라면 sleep 은 없이 다음 연산으로 바로 넘어갑니다.


3-1. 지니모션이 아닌 휴대폰으로 구동시, 그리고 그 휴대폰의 성능이 떨어질경우엔,


getcolor 문이 연속으로 올경우에 sleep 값을 주거나, 히로매크로 옵션의 캡쳐 시간을 0초에서 1초로 올리는것을 고려해봄직 합니다.


단 캡쳐시간을 1초로 올리게 될경우 오동작이 될 여지가 많기에 이를 유념하고 코딩하여야 합니다.?


지니모션으로 할경우엔.. 코어2듀오(콘로) 이후 세대 cpu 라면 신경쓰지 않아도 됩니다.



말재주가 없어 길게쓰기가 힘드네요 ㅠ 오늘은 여기까지 적어보겠습니다.


내일.. 혹은 그이후에 적을거리가 걱정이네요 분량이 될련지..


  • 곰발바닥 2014.10.26 12:07
    팁들 감사합니다.
    elseif로 묶는건 생각도못했는데.. ㅎㅎ
    전 getcolor를 남발해서 작성한 스크립트를 사용하고있는데
    getcolor가 폰에 무리를 줄수있다는 말씀이시죠?
  • BeMoon 2014.10.26 13:33
    최신 휴대폰의 경우 무리를 준다기보단 베터리를 빨리 닳게 한다고 표현하고 프네요.

    구형 휴대폰의 경우 약간 버벅이게 만들어 오동작이 생길수 있게 한다.. 가 맞는표현 같구요.

    그렇다고해서 getcolor 문을 안쓰고 잘동작하는 스크립트를 짤순 없으니 ^^;; 줄이는데까지만 줄이고 쓰는게 정답같습니다.
  • Hangoon 2014.10.26 12:22
    T900에서 getcolor 잘 작동하나요??
  • BeMoon 2014.10.26 13:34
    네. T900 이라면 지니모션 말씀하시는것같은데..

    지니모션에서 히로매크로 잘작동합니다. 기종은 T900 이던 갤럭시 계열이던 가리지 않습니다.
  • 보물창고 2014.10.26 13:40

    전 무슨 말씀인지 영~~ 모르겠네요..?무지가 죄네요 ㅠ

  • 보물창고 2014.10.26 13:42

    헐... 2렙 됐네요? ㅋㅋ 아싸.. 이제 내일만 출석하면 열람권한이 생기네요 ^^

  • profile
    시나브로 2014.10.27 18:03

    오.. 예시까지 들어서 설명해주시니 이해하기가 훨씬 좋네요.


  • 토도리아 2014.10.31 16:17

    우~호~~ 하나하나 배우고있어요 ㅋㅋ?

  • yawa 2014.11.04 23:36
    궁금한게 있습니다.
    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
    10번방일경우 메인으로 이동. (이동하면서 방번호 초기화)
    8번방일경우 메인으로 이동. 놀우드의 경우 8번방이 존재하지 않기에 만든 조항
    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
    이런식으로 예제 들어주셨는데요. 자동으로 9~1 좌표 클릭 하라는 명령어는 쉬워도
    9~1 방 클릭할때마다 겟컬러 안쓰고 그 방에 정확히 들어갔다고 인식 시키죠?
    ?
  • yawa 2014.11.04 23:53
    흠 곰곰히 생각해보니 설명서에 나와있는데로 하자면 방하나 클릭 하라는 명령 실행 할때마다
    카운터 1씩 추가 할 수가 있겠군요. 대신 방 끝날때 그냥 자동클릭을 확인하고 슬립으로 타이밍 맞춰서 마을가게 하는거
    말고 효율적으로 할 수 있는 방법 있을까요?
  • BeMoon 2014.11.05 18:33
    던전 끝나고 나오는 인터페이스들을 getcolor 값으로 픽셀값을 따주시는걸

    루프문 돌려주시면 될거같네요.
  • 올케 2015.01.05 21:22

    어렵네요 ㄷㄷ

  • 럭크 2015.01.15 21:18

    감사합니다~ 근데 좀 어렵네요;;

  • fps2 2015.01.19 07:28

    어렵군요 ㅜㅜ

  • 코로키 2015.06.13 18:33
    으아 역시 초보는 봐도 모르겠네요 ㅠ

List of Articles
분류 제목 글쓴이 최근변경 추천
자유 야호호호호 님 ~ 우앙쿵쾅 2014.10.28 0/0
질문 amd 씨퓨라 블택밖에 안되서... 1 관능팔뚝 2014.10.31 0/0
질문 히로매크로질문있습니다 4 닦이 2014.10.29 0/0
질문 악마님 매크로 수정해서 쓰고 있어요 (열쇠창 확인 한... 이장님아들 2014.10.27 0/0
질문 전용범 수정 한건데 고수님들 봐 주세요 1 히로몬길 2014.10.27 0/0
자유 보안 오류 모르시는분들 보세요 2 히로몬길 2014.10.28 2/0
질문 (몬길) SCREEN_SIZE: 480x800 이걸로 만들어 주실 분 ... 10 헬로우고니1 2015.04.12 0/0
정보 업데이트 후 악마 5.0 수정방법 41 zine 2014.11.09 0/0
정보 악마/범용 님 이미지 인식 히로매크로 쓰는분 수정방법... 7 VeryBL 2014.10.27 2/0
질문 밑에 헬로우 고니님께 드리는글 저는 잘되내요 이렇... 12 프랩히로좋아 2014.10.27 0/0
질문 지니모션에서 히로는 색인식 보안에러뜨나요 다른분들도? 1 먹기란 2014.10.26 1/0
자유 헬로우고니 님께 드리는 글. 2 BeMoon 2014.10.26 1/0
정보 예제로 보는 히로 매크로 실전 팁들 (2) 15 BeMoon 2015.06.13 2/0
질문 BeMoon님이 올려 주신 팁 적용 이렇게 하는게 맞는지요? 1 이장님아들 2014.10.26 0/0
질문 히로매크로 설치후 다음날이면 플레이스토어 오류남 1 땅따먹기 2014.10.25 0/0
정보 예제로 보는 히로 매크로 실전 팁들. 15 BeMoon 2014.12.19 0/0
질문 히로 매크로에서 게임 시간을 지정 할수 있나요? 6 이장님아들 2014.10.25 0/0
질문 히로 용범님꺼 쓰고잇는대 저는 보안걸리내요 색값때문... 5 금발남2 2014.10.25 0/0
질문 히로 매크로 디바이스 설치 폴더 질문 2 구칠이 2014.10.27 0/0
질문 블루스택에서 히로매크로 재생을 어떻게 하나요? 제발 ... 2 척룡 2015.03.17 0/0
Board Pagination Prev 1 ... 112113114115116117118119120 ... 123 Next
/ 123

전체 최신 인기글

전체 주간 인기글