매크로

2015.04.28 17:06

if 구문 예제

조회 수 1966 추천 5 댓글 31
이번에는 제가 짯었던 스크립트들 중에서 예시로 들만한것들을 몇개 가지고 와서 if 구문으로 이런것도 할수 있다 !?
라는 심플한 예를 보도록 하겠습니다.?

몇몇 스크립트들을 보시면 설정을 해야 하는 스크립트 들이 있지요.?
자신이 돌고싶은 난이도 라던가 던전 번호라던가 그것에 대한 저의 해결법입니다.?
제가 짠것은 #level 은 난이도 #stage 는 각 코드에 맞는 던전입니다.?
설정할때 각각 설정하게 해서 하는방법도 있었지만 그렇게되면 2군대의 숫자를 바꿔야 하기에
#muhan 이라는 변수에 하나로 합쳤습니다. 10자리는 난이도 1자리는 던전 코드 입니다

var #muhan 39 << 이쪽이 레이드를 돌게 될 숫자 코드입니다.
:start
if #muhan > 0 << #muhan 이 0보다 클경우.. 실행되는 스크립트 입니다.?
레이드 돌게될 곳을 설정하게되니 당연히 0보다 크겠지요..
#level = #muhan << #level 에 #muhan과 같은 값을 부여합니다.
#level = #level / 10 << 바루 윗줄에서 부여된 #level 에서 10을 나눕니다.?
이렇게되면 사람의 상식으로는 3.9가 되겠지만?
히로메크로상에서는 3이라는 정수만 남게 됩니다.
#muhan = #muhan - #level * 10 << 기존 #muhan 39의 값에서 #level * 10 의 값을 빼게됩니다?
이렇게되면 기존 #muhan 의 값이 39인데 30이 빠지게 되고?
1자리인 9만 남게 됩니다.
#stage = #muhan << 위에서 #muhan 이 9로 바뀌게되고 그 값을 #stage 에?
부여를 하게 됩니다.?
endif
:end


위에서 구한 #level 과 #stage 는 아래에 스크립트에서 사용되게 됩니다.?

#level 에 따른 난이도 터치
if #level == 1
touchpress 0 63 102
elseif #level == 2
touchpress 0 63 183
elseif #level == 3
touchpress 0 63 254
elseif #level == 4
touchpress 0 63 332
endif
sleep 1000

#stage 에 따른 시작 지점 설정
제 메크로는 시즌1/2가 통합이 되있어서 시즌1일때와 시즌2일때 레이드를 찾아가는 시작점이 다릅니다.?
그 다른 지점을 설정해서 찾아가도록 만들고 이 아래 부분에 #stage 별로 시작지점에서 찾아가는 스크립트가?
합쳐져 있습니다.?
if #stage > 0 and #stage < 6
touchpress 0 460 269
sleep 1000
touchdown 0 454 66
touchmove 0 0 800
touchup 0
endif
if #stage > 5 and #stage < 9
touchdown 0 435 63
sleep 50
touchmove 0 126 714
sleep 50
touchup 0
endif


별되에서는 예전에 실시간으로 색값이 일정한 범위 안에서 변경이 되도록 패치가 한번 있었었습니다.?
그 후로 다시 원상 복귀가 되었는지는 모르겠지만 전 아직 색값을 구한 후 기준값과 비교하기 위해서 아래와 같은 스크립트를 사용하고있습니다.?

원하는 부분의 색값을 가지고 옵니다. 가지고와서 #compcolor1 ~ #compcolor4
에 지정을 하고?
getcolor #compcolor1 #main1x #main1y
getcolor #compcolor2 152 176
getcolor #compcolor3 259 268
getcolor #compcolor4 271 314

그에 해당하는 기준값을 ?#originlcolor1 ~?#originlcolor4 에 지정을 해주고?
#originalcolor1 = #main1c
#originalcolor2 = 16579836
#originalcolor3 = 16777215
#originalcolor4 = 16777215

색값을 비교한 후 돌아올 곳의 값을 #goto 값에 몇개의 색값을 비교해야 하는지는 #cmpnum 값에?
그리고 본격적으로 색값 비교를 하기위한곳으로 가기위한 goto :compare1234 입니다.?
#goto = 52
#cmpnum = 4
goto :compare1234

비교후 다시 돌아오기 위한 라벨입니다.?
비교시 결정되는 #result1 ~#result5 의 값으로 if 구문을 짜주시면 되겠습니다?
1일경우 맞다 0일경우 아니다?
:goto52
if #result1 == 1
toast 레이드 대기 화면
sleep 1000
toast 레이드 시작
sleep 100
이하 생략...

그 후 저같은경우에는 스크립트 상에서 거의 아래쪽에 위치해있습니다.?

최초 실행시 #result1 ~#result5 까지의 값을 기본값인 0 으로 설정을 해주고?
:compare1234
#resultall = 0
#result1 = 0
#result2 = 0
#result3 = 0
#result4 = 0
#result5 = 0

이 아래부터 실질적인 색값 비교 스크립트이고?
#cmpnum 의 숫자에 따라 스크립트가 진행되는 부분이 달라지게 됩니다.?
히로메크로에서 사용하는 색값은 B*256*256 + G*256 + R 값으로 이루어지며 각값의 값은 256이 최대치 입니다.?
이것을 역계산을 하게 된다면?
색값을 256으로 나눈 후 나오는 나머지 값은 R
색값을 256으로 두번 나눈 후 나오는 나머지 값은 G
색값을 256으로 세번 나눈 후 나오는 나머지 값을 B 값이 됩니다.?

:compare1
if #cmpnum = 0
goto :compare6
endif
//R1 비교
R값을 비교하기 위해서 구한 색값에서 256으로 나눈값의 나머지 값을 구하게 됩니다.?
그 후 설정한 기본값도 같이 R값을 구해서?
#offset 값을 더한값과 뺀값을 각각 ?#tempcolorhigh 와 #tempcolorlow 에 지정을 하고?

구한값이 이 범위 안에 들어오는지 아닌지 확인하고 맞다면 G를 똑같은 방법으로 비교를 하고?
또 맞다면 B까지 확인 후에 모조리 맞다면 기본색과 같은색?하나라도 다르면 다른색 인것으로 확인을 하게 됩니다.?

#r = #compcolor1 % 256
#tempcolor = #originalcolor1 % 256
#tempcolorhigh = #tempcolor + #offset
#tempcolorlow = #tempcolor - #offset
if #tempcolorhigh < #r?or #tempcolorlow > #r
goto :compare2
endif
//color1 G 비교% 256
#g = #compcolor1 / 256 % 256
#tempcolor = #originalcolor1 / 256 % 256
#tempcolorhigh = #tempcolor + #offset
#tempcolorlow = #tempcolor - #offset
if #tempcolorhigh < #g or #tempcolorlow > #g
goto :compare2
endif
// color1 B 비교
#b = #compcolor1 / 256 / 256 % 256
#tempcolor = #originalcolor1 / 256 / 256 % 256
#tempcolorhigh = #tempcolor + #offset
#tempcolorlow = #tempcolor - #offset
if #tempcolorhigh < #b or #tempcolorlow > #b
goto :compare2
endif
#result1 = 1
#resultall = 1
:compare2
if #cmpnum == 1
#cmpnum = 0
goto :compare6
endif
// color2 R 비교
#r = #compcolor2 % 256
#tempcolor = #originalcolor2 % 256
#tempcolorhigh = #tempcolor + #offset
#tempcolorlow = #tempcolor - #offset
if #tempcolorhigh < #r or #tempcolorlow > #r
#resultall = 0
goto :compare3
endif
// color2 G 비교
#g = #compcolor2 / 256 % 256
#tempcolor = #originalcolor2 / 256 % 256
#tempcolorhigh = #tempcolor + #offset
#tempcolorlow = #tempcolor - #offset
if #tempcolorhigh < #g or #tempcolorlow > #g
#resultall = 0
goto :compare3
endif
// color2 B 비교
#b = #compcolor2 / 256 / 256 % 256
#tempcolor = #originalcolor2 / 256 / 256 % 256
#tempcolorhigh = #tempcolor + #offset
#tempcolorlow = #tempcolor - #offset
if #tempcolorhigh < #b or #tempcolorlow > #b
#resultall = 0
goto :compare3
endif
#result2 = 1
:compare3 ~:compare5 중략.. 원리는 1~2와 같습니다.?

:compare6
비교를 다한 후 다시 돌아가기 위한 스크립트를 정리해줄 goto :back 입니다.
goto :back


:back의 라벨로 오시게 되면 위에서 설정한 #goto 값은 이쪽에서 처리가 됩니다.?
:back
if #goto == 1
goto :goto1
elseif #goto == 2
goto :goto2
이하 생략..

이걸로 제가 색값을 따는 방법까지 알아 봤습니다.?

아마 실전으로 사용하는 스크립트라 더 이해가 쉬울수도 더 어려울수도 있겠습니다만..?
이번 색값 비교 스크립트 부분의 경우는?
저의 모든 스크립트에 포함이 되있는 부분이라 설명을 하고 가는것이 맞다라고 보고 소개를 드렸습니다.?




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

전체 최신 인기글

전체 주간 인기글