|
|
Модератор форума: Singler |
Форум Полезное Макросы для WoW Руководство по макросам |
Руководство по макросам |
Макросы в ВоВ используются для оптимизации и упрощения интерфейса игрока. Начиная от самых простых макросов таких как высказывание в чат «полечите меня срочно», когда ваше здоровье опускается ниже 20%, и заканчивая более сложными макросами такими как смена стоек у воина или каст лечащего заклинания во 2ую или 3ю строчку Эмерженси монитора, стандартного для большинства игроков аддона – CT_raid. Итак начнем с общих макросов, и затем перейдем к конкретным примерам. Для просмотра макросов на данном персонаже, а так же для создания новых и редактирования уже имеющихся используется команда: /macro Она позволяет открыть окно менеджмента макросов. Всего у вас может быть 18 макросов общих для Аккаунта и 18 для конкретного персонажа, итого в сумме 36 макросов, что достаточно много. Замечание: Начиная с патча 1.хх колдовство заклинаний больше не требует окончания в записи "(rank X)”. Достаточно записать: /cast Holy Light для колдовства спела максимального ранга. Макросы такого типа не позволяют кастить спелы более низкого ранга на выбранную цель, для использования низких рангов нужно дописывать окончание (rank X), где Х – нужный ранг спела. Пример: /cast Holy Light (rank 1);
/script CastSpellByName('Holy Light', 1)
/script if ( not UnitIsFriend("player", "target") ) then CastSpellByName("Spell", 1); end
/script class = UnitClass("target"); if ( ( class == "Rogue" ) or ( class == "Warrior" ) ) then CastSpellByName("Blessing of Might"); else CastSpellByName("Blessing of Wisdom"); end
/script Pre="Power Word: Fortitude(Rank " Sp={1,2,14,26,38,50} if (UnitLevel("target") ~= nil and UnitIsFriend("player","target")) then for i=6,1,-1 do if (UnitLevel("target") >= Sp[i]) then CastSpellByName(Pre..i..")") return end end end
/script for i=1,40 do TargetNearestFriend(); if UnitHealth("target")/UnitHealthMax("target") < 0.7 then if UnitIsPlayer("target") then CastSpellByName("Lesser Healing Wave") end end end; TargetLastEnemy();
/cast Healing Touch /party Healing %t in 3.5 seconds
/script TargetUnit("party1") /cast Flash Heal /script TargetLastTarget()
/script i=1;m=0;while(UnitBuff("target",i)~=nil) do if(strfind(UnitBuff("target",i),"Regeneration")~=nil) then m=1; end;i=i+1;end; c=CastSpellByName; if(m==1) then c("Mark of the Wild(Rank 10)");else c("Thorns(Rank 10)");end;
/script SpellNumber=26; SpellName,SpellRank=GetSpellName(SpellNumber,"spell"); M=format("Spell %d: %s %s",SpellNumber,SpellName,SpellRank); DEFAULT_CHAT_FRAME:AddMessage(M); Использовать предмет: /script UseContainerItem(bag, slot);
Макрос автоматически использует предмет в заданной сумке на заданном месте, полезен при использовании алхимии или просто при переодевании тринкетов.
/target [Player Name]
/script UseContainerItem(#, #);
/script TargetLastEnemy(); Очень полезный макрос для дуэлей 1v1. Вот еще один пример макроса для бинтов, более сложный, с проверкой на наличие бинтов в инвентаре, фокусировки на предыдущей цели или сбросе фокуса, если цель – вы сами: /script if (not GetContainerItemLink(x,x)) then OpenBag([same bag number as before]); else
TargetUnit("player");UseContainerItem(3,15);TargetUnit("playertarget");if (UnitIsPlayer("target"))
then ClearTarget() end end
/script UseAction(ActionID, 0, 1);
/script if( SpellIsTargeting() ) then SpellTargetUnit("player"); end
Хот-бар: Номер слота Более продвинутый вариант того же макроса, использует бинты на самого себя в любом случае, даже если цель дружественна и находится в радиусе действия, очень полезен в ПвЕ: /scriptp="player";t="target";if(not UnitCanAttack(t, p))then ot=UnitName(t);TargetUnit(p); else ot=nil;end;UseAction(ActionID);if(SpellIsTargeting())then SpellTargetUnit(p); end if(ot) then TargetByName(ot);end
/script UseContainerItem (#,#); /script PickupInventoryItem (16); Меняя в последней строке 16 на 17 получим макросы для заточки правой и левой рук. Переключение Хот-баров: /script CURRENT_ACTIONBAR_PAGE = X;
/script ChangeActionBarPage();
/script CURRENT_ACTIONBAR_PAGE = 1;
/script ChangeActionBarPage(); == Macro Frame Toggling ==
/script if ( not MacroFrame:IsVisible() ) then ShowUIPanel(MacroFrame); else HideUIPanel(MacroFrame); end;
Иногда хочется изменить видео опции игры, что бы комфортнее себя чувствовать в густо населенных игроками зонах, таких как Банк или Аукцион, так же при большой нагрузке в ПвЕ зонах, примером может служить первая фаза Разоргора ( 1 босс БВЛ ): Для хорошего качества видео: /z SetFarclip(777)
/z SetWorldDetail(2)
/z SetBaseMip(1)
/z SetFarclip(477)
/z SetWorldDetail(1)
/z SetBaseMip(1)
/z SetFarclip(177)
/z SetWorldDetail(0)
/z SetBaseMip(0)
/script currentRes = GetCurrentResolution(); if (currentRes == 3)
then SetScreenResolution(15); SetCVar("gxWindow", 0); SetMultisampleFormat(16);
else SetCVar("gxWindow", 1); SetScreenResolution(3); SetMultisampleFormat(1); end; Числовые значения подобраны для переключения из разрешения 1600x1200 full anti-aliasing в разрешение 1024x768 1x anti-aliasing
/script if ( GetCVar("UnitNamePlayer") == "1" ) then SetCVar("UnitNamePlayer",0) else SetCVar("UnitNamePlayer",1) end
/script if ( GetCVar("UnitNameNPC") == "1" ) then SetCVar("UnitNameNPC",0) else SetCVar("UnitNameNPC",1) end Автоматическая смена чата: /script if (GetNumRaidMembers() > 0) then PR = "Raid"; elseif (GetNumPartyMembers() > 0)
then PR = "Party"; else PR = "Say"; end; Для того что бы автоматически написать какую либо фразу в выбранный чат, добавьте строку: /script SendChatMessage("Ты Gijdalah нуб и ничего не понимаешь!!!",PR);
Макросы для помощи танку: /assist %t
/script AttackTarget(); Этот макрос слишком простой и не может покрыть всего того функционала который необходим зачастую в быстро протекающем бое, попробуем сделать более сложный вариант макроса, разделив при этом часть автоматической выборки подходящего танка, и часть фокуса на цели выбранного танка: ---- Для выбора танка ----
/script LeaderPlayerName = UnitName("target") or UnitName("party1") or "";
/script DEFAULT_CHAT_FRAME:AddMessage("######## Set main assist to: " .. LeaderPlayerName);
---- Для атаки цели танка ----
/script AssistByName(LeaderPlayerName or UnitName("party1") or UnitName("player"));
/script DEFAULT_CHAT_FRAME:AddMessage("######## Assisting ".. LeaderPlayerName .. " with target " .. (UnitName("target") or "NO TARGET")); При использовании первого макроса, в памяти интерфейса запоминается ник выбранного игрока, что бы при нажатии второго макроса, выбиралась цель ранее запомненного танка, не зависимо от того где он находится, не нужно использовать первый макрос каждый раз, только один раз для начальной установки танка. Но это два макроса, они будут занимать два слота на вашем интерфейсе, хотя они и очень удобные. Попробуем совместить оба макроса в один не потеряв при этом функциональности. Макрос будет выглядеть следующим образом: /script p=PAsi or""u=UnitName;t="target"c=IsControlKeyDown()if©then p=u(t)or u("party1")or""else AssistByName(p)end;DEFAULT_CHAT_FRAME:AddMessage("######## "..(c and("Set assist: "..p)or("Assisting "..p.." with "..(u(t)or"NO TARGET"))))PAsi=p Тот же макрос в более удобном для чтения виде, так как выше приведенный, не читаем из за оптимизации под длину в 255 символов: /script
p=PAsi or"";
u=UnitName;
t="target";
c=IsControlKeyDown();
if© then
p=u(t) or u("party1") or ""
else
AssistByName(p)
end;
DEFAULT_CHAT_FRAME:AddMessage("######## "..
(c and
("Set assist: "..p)
or
("Assisting "..p.." with "..(u(t) or "NO TARGET"))));
PAsi=p; Итак, как же пользоваться этим макросом: Для установки нужного танка, удерживая Ctrl кликните на иконку использования макроса. Обычный клик на иконку использования макроса выберет необходимую цель. Модификация этого макроса с возможностью колдовства разных заклинаний на цель выбранного танка (выбрано заклинание Полиморф, что может быть заменено на любое другое): /script t=Tg1 or""c=IsControlKeyDown()if©then t=UnitName("target")or""else TargetByName(t)if(IsShiftKeyDown())then CastSpellByName('Polymorph')end end ChatFrame1:AddMessage("######## "..(c and("Tg1 set to: "..t)or("Targeting: "..t)))Tg1=t Тот же макрос в удобном виде: /script
t=Tg1 or""
c=IsControlKeyDown()
if© then
t=UnitName("target")or""
else
TargetByName(t)
if(IsShiftKeyDown()) then
CastSpellByName('Polymorph')
end
end
DEFAULT_CHAT_FRAME:AddMessage("######## "..
(c and
("Tg1 set to: "..t)
or
("Targeting: "..t)))
Tg1=t Итак, как же пользоваться этим макросом: Для установки нужного танка, удерживая Ctrl кликните на иконку использования макроса. Обычный клик на иконку использования макроса выберет необходимую цель. Если удерживая Shift кликнуть на иконку использования макроса, то персонаж начнет колдовать выбранное заклинание (полиморф) на текущую цель выбранного ранее танка.
/target Totem
/cast Moonfire(Rank 1)
Более сложный вариант:
/script u=UnitName;
s=strfind;
t="target";
for i = 1,10,1 do TargetNearestEnemy()
if (not UnitCanAttack("player",t))then
break;
end;
if ((s(u(t),"Totem") or s(u(t),"Ward")) and not s(UnitCreatureType(t),"Human")) then
CastSpellByName("Shoot");
break;
end;
end;
/script if IsAltKeyDown() then L1="Instance Start"; T1=GetTime();
M=format("Timer Set [%s]",L1); else N=GetTime(); D=N-T1;
M=format("Time Elapsed - [%s]: %02dh:%02dm:%02ds",L1, D/3600,mod((D/60),60), mod(D,60)); end
SendChatMessage(M,"SAY"); Макрос отсчитывает время с момента установки начального времени отсчета, что бы установить оное, нужно зажав Alt кликнуть на иконку использования макроса. При использовании макроса, выдается искомое время с точностью до секунды.
Атака петом: /script PetAttack();
Более продвинутый вариант:
/target player
/assist
/script PetAttack();
/script PetAttack(); CastPetAction(4);
/script PetAggressiveMode();
/script PetDefensiveMode();
/script PetPassiveMode();
/script PetFollow();
/script PetAttack();
/script PetStopAttack();
/script CastPetAction(X);
Просто перечислю некоторые примеры оригинальных макросов для каждого класса.
Nature's Swiftness + Healing Touch – без глобального кулдауна: /cast Nature's Swiftness
/script SpellStopCasting();
/cast Healing Touch(Rank 10)
/script if ( SpellIsTargeting() ) then SpellTargetUnit ("player"); end
Выбор ближайшей цели, если цель рога – выстрел Scatter Shot: /script TargetNearestEnemy(); if (UnitClass("target")=="rogue") then CastSpellByName("Scatter Shot"); CastSpellByName("Hunter's Mark (Rank 4)");end
Raptor strike + Wing clip:
/cast Raptor Strike
/cast Wing Clip
/cast Hunters Mark(Rank #);
/cast Concussive Shot();
/cast Autoshoot();
/cast Feed Pet
/script PickupContainerItem (#,#)
Макрос для вызова всех типов мана-кристалов, требует многочисленного нажатия: /script local c=function(a) local f,d a="Mana "..a for i=0,4 do for k=1,GetContainerNumSlots(i) do
d=GetContainerItemLink(i,k) or "" if strfind(d,a) then f = 1 end end end if not f then CastSpellByName("Conjure "..a) end end c "Ruby" c "Citrine" c "Jade"
/script UseAction(37); SpellStopCasting(); CastSpell(82,"spells"); SpellStopCasting(); CastSpell(158,"spells"
/cast Polymorph
/script local n,p,t=UnitName,"party","target" for i=2,5 do if n(p..i) then if
UnitIsUnit(p..i..t,t) then SendChatMessage("I am about to sheep your target, please change
targets.","WHISPER",nil,n(p..i)) end end end
Авто-бафф дружественных целей использующих Ману – Wisdom Blessing и остальных, включая себя – Might Blessing: /script power = UnitPowerType("target"); if ( power == 0 ) then CastSpellByName("Blessing of Wisdom") else CastSpellByName("Blessing of Might") end; if ( SpellIsTargeting() ) then CastSpellByName("Blessing of Might"); TargetUnit("player"); end;
Макрос для рог которые используют Sinister Strike как основную атаку, макрос использует Riposte, если возможно: /script if (UnitMana("Player")>=999) then CastSpellByName("Sinister Strike"); end;if (IsUsableAction(18) and UnitMana("Player")>=10) then CastSpellByName("Riposte"); end;
/script if UnitMana("Player")>=40 then CastSpellByName("Sinister Strike"); end;
Nature Swiftness + healing /script local a=IsAltKeyDown();local c,d=GetSpellCooldown(157,0);if(c==0)then CastSpell(157,0) else if(a)then TargetUnit("player") end;if(d==0.001)then CastSpell(146,0) else CastSpell(152,0) end;if(a)then TargetLastTarget() end;end Макрос делает следующее:
/party +88 agility totem, 30 yards, stay close
/cast Grace of Air
Stormstrike + тринкет:
/script UseInventoryItem(14);
/script SpellStopCasting();
/cast Stormstrike(Rank 1)
Колдовство страха и одновременное отключение атаки пета: /cast Fear(Rank #)
/script PetFollow();
Battle stance -> Mocking blow: /script texture,name,isActive,isCastable = GetShapeshiftFormInfo(1); if isActive then CastSpellByName("Mocking Blow()"); else CastSpellByName("Battle Stance()"); end; Требуется минимум 2 нажатия.
/script texture,name,isActive,isCastable = GetShapeshiftFormInfo(2); if isActive then CastSpellByName("Taunt()"); else CastSpellByName("Defensive Stance()"); end; Требуется минимум 2 нажатия.
/script texture,name,isActive,isCastable = GetShapeshiftFormInfo(3); if isActive then CastSpellByName("Berserker Rage()"); else CastSpellByName("Berserker Stance()"); end; Требуется минимум 2 нажатия.
Серверное время: /script hour,min=GetGameTime()
/script DEFAULT_CHAT_FRAME:AddMessage(format("Server time is %s:%s",hour,min));
Координаты и локация:
/script px,py=GetPlayerMapPosition("player")
/script DEFAULT_CHAT_FRAME:AddMessage(format("[ %s ] %s , %s",GetZoneText(),px,py));
/script i = GetNumQuestLeaderBoards(); for j = 1, i, 1 do a1, a2, a3 = GetQuestLogLeaderBoard(j); SendChatMesssage(a1, "PARTY"); end;
/script SelectGossipAvailableQuest(1); CompleteQuest(); GetQuestReward(); Макрос часто используют для неоднократного выполнения квеста – Dark Iron Residue
/script CT_RA_Emergency_TargetMember(1)
/script CT_RA_Emergency_TargetMember(2)
/cast Lesser Healing Wave(Rank 6);
/script TargetLastTarget(); Макрос выбирает 2 строчку монитора, если такой нет, то первую, и кастует на цель. источник: woh.ru
shatunoff95 (профиль вк)
Сообщение # 1 написано 27.01.2011 в 13:24
|
| |||
| |||