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 필요함
■ 기타 매크로
○ 풀링 매크로
=====================================================================================
기본적인 매크로 사용법을 모르시는 분들을 위한 글입니다.
그림을 보시면서 하나씩 따라해 보시면 쉽게 매크로를 사용하실 수 있으실 껍니다.
매크로의 세계로 오세요^^;;;
■ 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;
테스트 했던게 너무 엉성 했던지-ㅅ-;;
몇가지 문제가 발생했었습니다...
휴...다 수정했는것 같아요..
이제 혹시 오류가 발견되더라도...더이상의 수정은 없을껍니다-ㅅ-;;