2006/2/7 - 양변, 얼방, 속박 매크로 일부/SuperMacro 버전/애드온 사용법 링크 수정했습니다.

2006/2/7 - 신비한 폭발(자동 얼방) 매크로 추가했습니다.

2006/2/7 - 양변 매크로를 재수정 했습니다. 기존 버전도 잘 돌아갑니다만 코드를 조금 바꿨습니다.

2006/2/7 - 소생/고통/흡혈 매크로를 수정 했습니다. 흡혈/고통이 모두 걸려 있을 경우 이제 고통을 시전합니다.

2006/2/7 - 라면사제 Plus를 재수정하였습니다. 이제 라면사제 Plus(소실제거버전)과 함수 충돌이 일어나지 않습니다.

2006/2/11 - 얼방 매크로/자동 얼방 매크로의 심각한 오류를 잡았습니다.

========================================================================


안녕하세요^^

렉사르 서버 허접 법사 "물맛이좋아요" 입니다.

그 동안 만들어 두었고 올려 두었던 매크로들을 정리해서 올려 보겠습니다.

새로 추가한 매크로 들도 있어요.

제가 주로 법사/사제를 플레이 하기 때문에 법사/사제 매크로 들이구요.

좀 많아서 목차도 만들어 놨습니다...-ㅅ-;;;


★ 목차

■ Macro 사용법 링크

■ UI 설치 방법 링크

■ SuperMacro 사용법

■ 마법사 매크로

○ 라면 법사 - SuperMacro 필요없음

○ 라면 법사  Plus - SuperMacro 필요함

○ 물맛표 양변 매크로 - SuperMacro 필요함

○ 얼방 매크로 - SuperMacro 필요함

○ 낙스라마스의 눈 처리 매크로(신버전) - SuperMacro 필요함

○ 신비한 폭발(자동 얼방) 매크로 - SuperMacro 필요함

■ 사제 매크로

○ 부활 매크로 - SuperMacro 필요없음

○ 라면 힐러 - SuperMacro 필요없음

○ 라면 힐러 Plus - SuperMacro 필요함

○ 라면 힐러 Plus(소실 제거 버전) - SuperMacro 필요함

○ 언데드 속박 매크로(신버전) - SuperMacro 필요함

○ 소생 / 어둠의 권능:고통 + 흡혈을 버튼 하나로- SuperMacro 필요함

■ 기타 매크로

○ 풀링 매크로



=====================================================================================



Macro 사용법 링크

기본적인 매크로 사용법을 모르시는 분들을 위한 글입니다.

그림을 보시면서 하나씩 따라해 보시면 쉽게 매크로를 사용하실 수 있으실 껍니다.

매크로의 세계로 오세요^^;;;


UI 설치 방법

UI 기본 사용방법/설치 방법을 모르시는 분은 다음 링크를 보고 배워보세요^^


■ SuperMacro 사용법 - 다운로드(SuperMacro 3.12, 한글화 damjau님)


- SuperMacro는 "World of WarcraftInterfaceAddOnsSuperMacro" 에 설치하셔야 합니다.


SuperMacro는 매크로의 255 byte 제한을 풀어주는 아주 고마운 UI 입니다.

/매크로 라고 치면 매크로 창이 뜹니다.

수퍼 매크로를 설치 했다면 매크로 입력하는 부분이 창이 2개가 뜰 것입니다.



- 왼쪽에 매크로 명령 입력 오른쪽에 확장 LUA 입력이 보이시나요?




위쪽에 보면 새로운 계정 매크로/새로운 캐릭터 매크로 라고 보이죠?

계정 매크로는 거기 만들어 놓으면 그 계정에 다른 케릭터도 공유 한다는 것이구요

케릭터 매크로는 그 케릭터만 쓴다는 것입니다.

둘 중에서 하나 골라서 선택해 보자구요.




그러면 오른쪽에 새 창이 뜰 겁니다.

일단 매크로의 이름을 써 주시고..

이름은 뭐 별로 중요하지가 않으니 대충 써도 됩니다.

그리고 아이콘을 정하시구요..

맘에 드는 아이콘 암꺼나 쓰면 되지만..

순간 치유 매크로 인데 정신 분열 들어가 있음 좀 이상하잖아요?

하여튼 적절하게 골라서 넣어주세요..



그럼 왼쪽에 새로운 매크로 아이콘이 생겼을 것입니다.

하지만 안에 든것은 아무 것도 없겠죠?

매크로를 만들어 넣어서 사용하시면 됩니다.

한 번 테스트 해볼 까요?


왼쪽 - 매크로 명령 입력


/script msg();


이렇게 쓰시구요..(붙여넣기 하심 되용)


오른쪽 -  확장 LUA 입력



function msg()
SendChatMessage("SuperMacro 잘 돌아 갑니다.")
end;


이제 매크로 아이콘을 스킬창으로 드래그 하시구요~

한번 사용해 보세요~

메세지가 정상적으로 출력 된다면....잘 돌아가는것이겠죠^^?


2006/2/7 추가

SuperMacro 3.12 버전 이상에 보시면 새로운 기능이 추가 되었습니다.

/매크로 를 입력하시면 나오는 SuperMacro 창 좌측 하단에 보면

일반/수퍼 라는 탭이 생겼는데요

그 중 수퍼 탭을 클릭하시면

기존 처럼 매크로 입력/확장 LUA 입력 을 나눌 필요 없이

한방에 7000자 까지 쓸 수 있는 새로운 매크로를 사용하실 수 있습니다.

신비한 폭발(자동 얼방) 매크로는 이 새로운 수퍼 매크로를 사용했답니다^^

한글화 해주신 damjau님 감사합니다ㅠ.ㅠ..


■ 마법사 매크로

○ 라면 법사 - SuperMacro 필요없음

- 기능

1. 타겟이 없을 때 아무일 없음;;

2. 타겟이 적대적일 때 얼음화살로 공격

3. 타겟이 아군이고 타겟의 타겟이 적대적 일 때 타겟의 타겟에게 얼음화살로 공격

4. 타겟이 아군일 때 공격 후에도 타겟 유지

- 탱커 선택 후 계속 매크로 버튼만 누르면 탱커가 치고 있는 몹을 계속 1.4 하며 탱커가 다른 몹을 치더라도 탱커가 치는 몹을 따라서 계속 1.4하게 됨


- 코드

/script local t="target";if(UnitExists(t))then e=not UnitCanAttack("player",t);f=UnitCanAttack(t,"targettarget");if e and f then AssistUnit(t);end;CastSpellByName("얼음 화살");if e and f then TargetLastTarget();end;end;


○ 라면 법사  Plus - SuperMacro 필요함

- 기능

1. 라면 법사 얼음 화살 매크로 기능과 동일

2. Alt 키를 누른 상태에서 매크로를 실행하면 잔달라 + 단명 + 냉정 + 아케인


- 코드

내용이 너무 많아서 링크-ㅅ-;;

○ 물맛표 양변 매크로 - SuperMacro 필요함

- 기능

0. 매크로의 이름을 "변이" 로 만드셔야 합니다.

1. 변이를 시전 하면서 대상의 레벨과 이름을 표시해 줍니다.

2. 대상이 변이를 시전할 수 없는 대상이라면(예: 언데드, 아군 등) 메세지를 출력하지 않습니다.

3. 대상과의 거리를 체크하여 양변을 할 수 없는 거리라면 양변 메세지를 출력하지 않습니다.

4. Alt 키를 누른 상태로 매크로를 시전하면 냉정 + 변이를 시전 합니다.


- 코드

매크로 명령 입력

/script local a,b,c,d;a="target"b=UnitCreatureType(a)d=GetActionID("변이")c=IsActionInRange(d)if UnitCanAttack("player",a)and c==1 and (b=="야수"or b=="인간형"or b=="동물")then CastPomByAlt()PolymorphMsg()end;CastSpellByName("변이")

확장 LUA 입력

function CastPomByAlt()
if(IsAltKeyDown())then CastSpellByName("냉정")SpellStopCasting()end;end;
function PolymorphMsg()
d=UnitLevel("target")SendChatMessage("[Lv "..d.."] <%t>을(를) 앙변 합니다!")end;
function GetActionID(SpellName)
local ActionID=nil,k;for i=1,72 do k=GetSpellText(i);if(k==SpellName)then ActionID=i;break;end;end;return ActionID;end;
function GetSpellText(slot)
GameTooltip:SetAction(slot);
return GameTooltipTextLeft1:GetText();end;

○ 얼방 매크로 - SuperMacro 필요함

- 기능


0. 매크로의 이름을 "얼음 방패" 로 만드셔야 합니다.

1. 얼방 사용 가능시 얼방 사용

2. 얼방 사용 불가시 매서운 한파 사용

3. 얼방 연타시에도 얼방이 풀리지 않음

- 코드

매크로 명령 입력

/script if(CheckCoolTimeByName("얼음 방패")<2)then SpellStopCasting()CastSpellByName("얼음 방패")else CastSpellByName("매서운 한파")end;


확장 LUA 입력

function CheckCoolTimeByName(SName)
local ctBlock; _,ctBlock,_=GetActionCooldown(GetActionID(SName)) return ctBlock;end;
function GetActionID(SpellName)
local ActionID=nil,k;for i=1,72 do k=GetSpellText(i);if(k==SpellName)then ActionID=i;break;end;end;return ActionID;end;
function GetSpellText(slot)
GameTooltip:SetAction(slot);
return GameTooltipTextLeft1:GetText();end;


○ 낙스라마스의 눈 처리 매크로(신버전) - SuperMacro 필요함

- 기능

1. 낙스라마스의 눈에게 화염 작열이 시전 가능한 거리라면 화염 작열 사용

2. 화염 작열을 시전 가능한 거리보다 멀지만 얼음 화살은 사용할 수 있는 거리일 때 냉정 + 얼음 화살 사용

3. 낙스라마스의 눈이 죽었다면 처리 메세지 출력

4. 처리 불가능한 거리일 땐............아무일 없죵-ㅅ-;;;

5. 처리 했는지 여부를 낙스라마스의 시체가 있는지 확인하는 식이기 때문에 다른 사람이 처리했더라도 메세지는 뜹니다아~


- 코드

매크로 명령 입력

/대상 낙스라마스의 눈
/script if UnitCanAttack("player","target")and(UnitName("target")=="낙스라마스의 눈") then AttackNa()end;EliminateMsg();


확장 LUA 입력

function AttackNa()
if(IsActionInRange(GetActionID("화염 작열"))==1) then CastSpellByName("화염 작열") elseif(IsActionInRange(GetActionID("얼음 화살"))==1)then CastSpellByName("냉정")SpellStopCasting()CastSpellByName("얼음 화살")end;end;
function EliminateMsg()
if UnitHealth("target")==0 then SendChatMessage("낙스라마스의 눈이 죽었습니다.")end;end;
function GetActionID(SpellName)
local ActionID=nil,k;for i=1,72 do k=GetSpellText(i);if(k==SpellName)then ActionID=i;break;end;end;return ActionID;end;
function GetSpellText(slot)
GameTooltip:SetAction(slot);
return GameTooltipTextLeft1:GetText();end;


○ 신비한 폭발(자동 얼방) 매크로 - SuperMacro 3.12 이상 필요함

수퍼 매크로 새 버전이 나왔길래 그 기념으로 만들어 봤습니다.

수퍼 매크로 3.12 버전 이상을 설치하시고  /매크로 라고 누르시면

매크로 창 왼쪽 아래에 일반/수퍼 라고 새로 생긴 탭이 있답니다.

거기서 수퍼 탭을 누르시고 거기에서 매크로를 만들면 됩니다.

따로 일반 매크로입력/확장 매크로 입력을 구분하지 않고

한방에! 7000자 까지 매크로가 사용가능하군요 와우!!



- 기능

1. 신비한 폭발 사용

2. 피가 1000이하로 감소하였을 경우 얼음 방패 사용

3. 피가 1000이하이고 얼음 방패가 쿨타임 중일 때 매서운 한파 사용

4. 얼음 방패도 매서운 한파도 쿨 타임 중일 때.....그냥 죽을 때 까지 신폭 사용-ㅅ-;;;

5. alt 키를 누른 상태에서 사용하면 얼방/한파 사용 하지 않고 계속 신폭 사용

- 코드 첫 번째 줄 중간에 보시면 if(UnitHealth("player")<1000)then hp=1 end; 라는 부분이 있습니다. 여기서 1000을 다른 숫자로 고쳐 주시면 얼방 사용 hp를 조절하실 수 있습니다.

- 이 매크로의 치명적인 결함은.....매크로의 아이콘이 신폭이 아니라 얼방..의 아이콘 이랍니다-ㅅ-;;;


- 코드

/script local hp,AltKeyUp;hp=0;AltKeyUP=not IsAltKeyDown();if(UnitHealth("player")<1000)then hp=1 end;if(AltKeyUP and hp ==1 and CheckCoolTimeByName("얼음 방패")<2)then SpellStopCasting()CastSpellByName("얼음 방패")elseif(AltKeyUP and hp==1 and CheckCoolTimeByName("매서운 한파")==0)then CastSpellByName("매서운 한파")else CastSpellByName("신비한 폭발")end;function CheckCoolTimeByName(SName)local ctBlock; _,ctBlock,_=GetActionCooldown(GetActionID(SName)) return ctBlock;end;function GetActionID(SpellName)local ActionID=nil,k;for i=1,72 do k=GetSpellText(i);if(k==SpellName)then ActionID=i;break;end;end;return ActionID;end;function GetSpellText(slot) GameTooltip:SetAction(slot);return GameTooltipTextLeft1:GetText();end;


■ 사제 매크로

○ 부활 매크로 - SuperMacro 필요없음

- 기능

1. 타겟을 클릭 한 후 매크로를 시전하면 부활 메시지를 출력합니다.

2. 타겟이 없는 경우 메세지를 출력하지 않습니다.(부할 스킬 시전은 됩니다.)

- 코드

/script a="target";if(not UnitExists(a))then CastSpellByName("부활")else b=UnitIsFriend("player", a)CastSpellByName("부활")if UnitHealth(a)==0 then SendChatMessage("<%t>님에게 부활을 시전합니다.")end;end;


○ 라면 힐러 - SuperMacro 필요없음

- 기능

1. 타겟이 없는 경우 자신에게 힐을 시전합니다.

2. 타겟이 아군인 경우 타겟에게 힐을 시전합니다.

3. 타겟이 몹 혹은 적군인 경우 - 타겟이 바라보고 있는 대상에게 힐을 시전합니다. 그리고 그 대상을 유지 합니다.

- 몹을 클릭한 상태에서 그 몹에게 계속 힐(?) 을 넣으면 몹이 공격하는 대상에게 힐이 들어갑니다. 그리고 몹이 다른 대상을 공격한다면 힐하는 대상 역시 바뀝니다. 보스 전에 좋겠지요.

- 코드

/script if(not UnitExists("target"))then TargetUnit("player");end;t="target";e=not UnitCanAssist("player",t);if(e)then AssistUnit(t);end;CastSpellByName("순간 치유");if(e) then TargetLastTarget();end;


사제의 "순간 치유" 를 기본으로 만들었습니다.

다른 클래스/다른 스킬은 CastSpellByName("순간 치유") 부분을 다른 스킬로 바꿔 넣으시면 됩니다.

레벨을 정하고 싶으시다면 CastSpellByName("순간 치유(3 레벨)") 과 같은 식으로 바꿔 주시면 됩니다.

○ 라면 힐러 Plus - SuperMacro 필요함

- 기능

1. 대상이 없을 때 - 자신에게 치유 스킬 사용

2. 대상이 아군 일 때 - 아군에게 치유 스킬 사용

3. 대상이 적군 일 때 - 대상이 공격하고 있는 아군에게 치유 스킬 사용(그리고 적군을 타겟 유지)

4. 힐을 하는 대상의 잃은 체력에 따라서 다른 랩의 치유 스킬 사용 사용

5. 잃은 체력이 1000 이상일 때 최고랩 순치, 잃은 체력이 1000미만 400 이상 일 때 5랩 순치 그 400 미만일 때 2랩 순치 사용

6. 대상이 적군 이고 공격하는 대상이 플레이어 일때 - 소실 사용

7. 대상이 아군이고 대상의 대상의 대상이 플레이어 일때 - 소실 사용

- 코드

매크로 명령 입력

/script l=7;if(not UnitExists("target"))then TargetUnit("player")end;CastFlashHealOrFade(l);

확장 LUA 입력

function CastFlashHealOrFade(l)
f=UnitCanAttack("player","target")if(f and UnitName("player")==UnitName("targettarget"))then CastSpellByName("소실")TargetLastTarget()elseif(not f and UnitName("player")==UnitName("targettargettarget"))then CastSpellByName("소실")TargetLastTarget()else if(f)then AssistUnit("target")end;local dhp=UnitHealthMax("target") - UnitHealth("target");if(dhp < 400) then l=2 elseif(dhp < 1000)then l=5 end;CastSpellByName("순간 치유("..l.." 레벨")end;if(f)then TargetLastTarget()end;end;

○ 라면 힐러 Plus(소실 제거 버전) - SuperMacro 필요함

- 기능

1. 대상이 없을 때 - 자신에게 치유 스킬 사용

2. 대상이 아군 일 때 - 아군에게 치유 스킬 사용

3. 대상이 적군 일 때 - 대상이 공격하고 있는 아군에게 치유 스킬 사용(그리고 적군을 타겟 유지)

4. 힐을 하는 대상의 잃은 체력에 따라서 다른 랩의 치유 스킬 사용 사용

5. 잃은 체력이 1000 이상일 때 최고랩 순치, 잃은 체력이 1000미만 400 이상 일 때 5랩 순치 그 400 미만일 때 2랩 순치 사용

- 코드

매크로 명령 입력

/script l=7;if(not UnitExists("target"))then TargetUnit("player")end;CastFlashHeal(l);


확장 LUA 입력


function CastFlashHeal(l)
t="target"f=not UnitCanAssist("player",t)if(f)then AssistUnit(t)end;
local dhp=UnitHealthMax(t)-UnitHealth(t);if(dhp<400)then l=2 elseif(dhp<1000)then l=5 end;CastSpellByName("순간 치유("..l.." 레벨")if(f)then TargetLastTarget()end;end;

○ 언데드 속박 매크로 - SuperMacro 필요함

- 기능

0. 매크로의 이름을 "언데드 속박" 으로 만드셔야 합니다.

1. 언데드 속박을 시전 하면서 대상의 레벨과 이름을 표시해 줍니다.

2. 대상이 언데드 속박을 시전할 수 없는 대상이라면(예: 인간형 등) 메세지를 출력하지 않습니다.

3. 대상과의 거리를 체크하여 속박 할 수 없는 거리라면 메세지를 출력하지 않습니다.


매크로 명령 입력

/script local a,b,c,d;a="target"b=UnitCreatureType(a)d=GetActionID("언데드 속박")c=IsActionInRange(d)if UnitCanAttack("player",a)and c==1 and (b=="언데드")then ShackleUndeadMsg()end;CastSpellByName("언데드 속박")

확장 LUA 입력

function ShackleUndeadMsg()
d=UnitLevel("target")SendChatMessage("[Lv "..d.."] <%t>을(를) 속박합니다.")end;
function GetActionID(SpellName)
local ActionID=nil,k;for i=1,72 do k=GetSpellText(i);if(k==SpellName)then ActionID=i;break;end;end;return ActionID;end;
function GetSpellText(slot)
GameTooltip:SetAction(slot);
return GameTooltipTextLeft1:GetText();end;


○  소생 / 어둠의 권능:고통 + 흡혈을 버튼 하나로- SuperMacro 필요함


- 기능

1. 대상이 없을 때 - 자신에게 소생 사용

2. 대상이 아군일 때 - 대상에게 소생 사용

3. 왼쪽 alt키를 누른상태 이며 대상이 아군일 때 - 아군이 공격하는 대상에게 어둠의 권능: 고통 사용, 만약 상대가 고통에 걸려 있는 경우 흡혈 사용 그리고 타겟 유지

4. 대상이 적군일 때 - 대상에게 어둠의 권능: 고통 사용,  만약 상대가 고통에 걸려 있는 경우 흡혈 사용

5. 왼쪽 alt키를 누른상태 이며 대상이 적군일 때 - 적군이 공격하는 대상에게 소생 사용 그리고 타겟 유지


- 코드

매크로 명령 입력

/script t="target"p="player";if(not UnitExists(t))then TargetUnit(p)Renew()else e=UnitCanAttack(p,t)a=IsAltKeyDown();if(e) then if(a)then Renew() else PainUnsum()end;else if(a)then PainUnsum()else Renew()end;end;end;


확장 LUA 입력

function Renew()
local t="target"local e=not UnitCanAssist("player",t)if(e)then AssistUnit(t)end;CastSpellByName("소생")if(e)then TargetLastTarget()end;end;
function PainUnsum()
local t="target"local e=not UnitCanAttack("player",t)local f=UnitCanAttack(t,"targettarget");if(e)and(f)then AssistUnit(t)end;Unsum()if(e)and(f)then TargetLastTarget();end;end;
function Unsum()
local k=0;local j=0;local a="Interface\\Icons\\Spell_Shadow_ShadowWordPain";b="InterfaceIconsSpell_Shadow_UnsummonBuilding";for i=1,16 do if(a==UnitDebuff("target", i)) then k=1;end;if(b==UnitDebuff("target", i)) then j=1;end;end; if(k==1 and j==0) then CastSpellByName("흡혈의 선물") else CastSpellByName("어둠의 권능: 고통");end;
end;

■ 기타 매크로

○ 풀링 매크로

- 기능

1. 총/활/투척/석궁/마법봉 등으로 사용 가능(무기 마다 다른 매크로를 만들 필요 없음)

2. 풀링 가능한 거리면 메세지를 출력하고 사격 합니다.

3. 풀링 불가능한 거리라면 메세지를 출력하지 않습니다.

4. 몹의 레밸 표시는 서비스..

- 메세지가 출력 되지 않는 다면 해당 무기의 사용스킬(마법봉 이라면 "마법봉 발사" 스킬)을 스킬창 아무곳이나 넣어두면(보이지 않는 곳에도 상관 없음) 메세지가 출력 될 것입니다.

- 코드


매크로 명령 입력

/script local Spell=GetRangedWeaponSpellByType();if(Spell ~=nil)then CastSpellByName(Spell)SendPullMSG(Spell)else SendChatMessage("장거리 무기가 없습니다.")end


확장 LUA 입력

function GetRangedWeaponSpellByType()
local rwCode, rwType, rwSpell;_,_,rwCode=strfind(GetInventoryItemLink("player",18),"(%d+):") if(rwCode ~= nil)then _, _, _, _, _, rwType = GetItemInfo(rwCode)else rwSpell = nil;end;if rwType then if rwType == "총기류" then rwSpell = "총 발사";elseif rwType == "활류" then rwSpell = "활 발사";elseif rwType == "석궁류" then rwSpell = "석궁 발사";elseif rwType == "투척 무기류" then rwSpell = "투척"; elseif rwType == "마법봉류" then rwSpell = "마법봉 발사";end;return rwSpell;end; end;
function SendPullMSG(Spell)
c=IsActionInRange(GetActionID(Spell));
if UnitCanAttack("player","target") and UnitHealth("target")>0  and c==1 then d=UnitLevel("target")SendChatMessage("[Lv "..d.."] <%t>을(를) 풀링합니다.")end;end
function GetActionID(SpellName)
local ActionID=nil,k;for i=1,72 do k=GetSpellText(i);if(k==SpellName)then ActionID=i;break;end;end;return ActionID;
end;
function GetSpellText(slot)
GameTooltip:SetAction(slot);
return GameTooltipTextLeft1:GetText();end;



테스트 했던게 너무 엉성 했던지-ㅅ-;;


몇가지 문제가 발생했었습니다...


휴...다 수정했는것 같아요..


이제 혹시 오류가 발견되더라도...더이상의 수정은 없을껍니다-ㅅ-;;