매크로 입문 – 5-1. 예시를 통한 매크로 실전 (1)

 

이번 편에서는 제가 쓰는 몇 가지 매크로를 통해

실제로 매크로를 어떤 식으로 만들고 사용할 수 있는지 살펴보겠습니다.

 

여태 제 글을 봐 오신 분이라면 매크로 문법은 대충 어떻고,

작동 방식은 어떻게 되는 것인지 1장과 2장에서 충분히 보셨을 것 같지만,

정작 저딴 고리타분한 글 읽어봐도 막상 매크로를 짜려면

이것 참 난감한 경우가 생기곤 합니다.

- 적어도 저는 그랬습니다.. –

 

그래서 먼저 매크로를 짜는 방식부터 말씀을 드리려고 합니다.

 

매크로를 짜시려고 하는 이유는 보통

아 이거 좀 더 편하게 할 수 없을까?

아 스킬창이 너무 복잡한데 좀 간단하게 만들 수 없을까?

이런 불편함을 해소하려는 게 대부분입니다.

 

따라서 먼저 문제점을 가지고 출발을 하게 되는 것이죠.

필요는 발명의 어머니라고 하던가요.

 

첫 번째로 생각을 할 것은 이 문제점을 어떻게 해결할 것인가 입니다.

당연한 말이지만 해결 방식에도 여러 가지가 있을 수가 있습니다.

스킬창이 부족하다 라고 했을 때는 해당 스킬들을

[mod] 조건으로 기능키를 조합해 묶어버릴 수도 있을 것이고,

크게 중요치 않는 버프 같은 스킬이라면 연속시전을 통해 묶어버릴 수도 있는 것이죠.

 

그러므로 자신이 문제를 해결하고자 하는 방향을 먼저 생각을 합니다.

그 이후에는 우선순위를 두는 겁니다.

 

어떤 스킬/아이템을 먼저 사용해야 하는 것인가,

혹은 어떤 대상에게 이 스킬을 사용해야 하는 것인가 하는 것이죠.

 

그 두 가지만 정하고 나면 매크로를 짜는 큰 틀은 완성이 되었다고 보시면 됩니다.

 

다음부터는 앞 장에서 다룬 명령과 조건을 이용해서 매크로를 작성해나가며

디테일을 잡아주면 되는 것이죠.

 

자 본론으로 돌아와서 몇 가지 매크로 예시를 보도록 하겠습니다.

 

처음으로 볼 매크로는 간단한 겁니다.

이제는 질리셨을 지도 모를 소생을 다시 가져오겠습니다.

 

#showtooltip 
/cast [@mouseover,help][help][@player] 
소생

 

이건 제가 실제로도 힐을 할 때 사용하고 있는 매크로입니다.

 

#showtooltip 으로 소생의 아이콘과 툴팁을 보여주고,

 

1순위 조건은 첫 대괄호 [@mouseover,help]에서 가져옵니다.

마우스오버 대상이 우호적이라면.. 이라는 조건이라는 건 이제 쉽게 보이실 겁니다.

그래서 만약 저 조건이 참이라면 뒤의 조건들은 무시한 채 소생을 그 대상에게 시전합니다.

 

1순위 조건이 거짓이라면,

그러니까 마우스오버 대상이 없거나 적대적이라면 2순위 조건으로 갑니다.

2순위 조건은 [help] 인데, [@target,help] 와 같습니다.

대상이 우호적이라면.. 이라는 조건이므로 대상이 우호적이면 대상에게 소생을 겁니다.

 

2순위 조건조차 거짓이다,

그러니까 대상이 없거나 적대적이라면 다시 3순위 조건으로 갑니다.

3순위 조건은 [@player], 즉 자기 자신에게 라는 말이죠.

이 조건은 힐링 스킬에선 항상 참이 되게 되므로 소생이 제 캐릭터에 걸리게 되는 겁니다.

 

참 쉽죠?

 

그 다음으로 볼 매크로는 역시 제가 사용하는 매크로인데,

위의 것 보다 짧습니다.

 

#showtooltip
/cast [@mouseover,exists] 
마법 무효화마법 무효화

 

사제의 마법 무효화라는 스킬은 힐러의 경우 적대적 대상이나

우호적 대상 모두에게 사용할 수 있는 스킬입니다.

 

쇼툴팁은 넘어가서 바로 매크로 설명을 드리면,

1순위로 [@mouseover,exists] 라는 조건이 오게 됩니다.

마우스오버 대상이 존재한다면.. 이라는 조건이고,

단순히 exists라는 조건을 달았기 때문에 그 대상의 피아관계는 무관하게 참이 됩니다.

 

exists 조건을 왜 쓰냐 라고 물어보실 분들이 계실 것 같아서 말씀을 드리자면,

저런 경우에 이그지스트 조건을 사용하지 않으면 마우스오버 대상의 유무와 상관없이

@mouseover 조건 자체는 참값을 리턴해버립니다.

 

따라서 다음 순위의 조건으로 넘어가지 않고

먼저 대상을 정해야 합니다와 같은 에러메세지만 나오게 되는 것입니다.

따라서 복수의 조건을 사용하실 때는 항상 정확한 조건을 넣으셔야 합니다.

 

다시 매크로로 돌아와서 1순위 조건인 마우스오버 대상이 있다면 마해를 하고,

만약 마우스오버 대상이 없다면 명령은 어디로 갈까요?

 

바로 세미콜론으로 넘어가게 됩니다.

 

/명령어 [조건1] 목적어1; [조건2] 목적어2

 

와 같은 매크로는

 

/명령어 [조건1] 목적어1

/명령어 [조건2] 목적어2

 

와 똑 같은 매크로라고 앞서 말씀 드린 바 있습니다.

 

따라서 지금 1순위 조건인 마우스오버 대상 존재 라는 조건이 거짓이라면

첫 줄의 매크로는 실행되지 않고 [조건2] 목적어2 의 명령이 실행되는 것입니다.

고로 /cast 마법 무효화 라는 줄이 실행이 되는데,

마해 스킬은 자체적으로 대상이 있다면 대상에게, 없다면 자신에게 실행되는 매크로이므로

 

사실상 저 매크로는

 

/cast [@mouseover,exists][exists][@player] 마법 무효화

 

와 완벽히 동일한 매크로라고 볼 수 있습니다.

 

뭐가 달라서 저런 식으로 쓰시냐고 물으시면

영타 치기가 귀찮았다는 대답 밖엔 드릴 수가 없습니다만,

이런 식으로 똑 같은 매크로도 스킬에 이미 내포된 조건 등을 이용해서

다르게 짤 수도 있다는 걸 보여드리고자 함이었습니다.