Пятница, 18.07.2025, 05:37
Вы вошли какГость | Группа "Гости"
 
Главная

Регистрация

Вход

RSS


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Макросы
АнгродДата: Понедельник, 01.03.2010, 13:42 | Сообщение # 1
Лейтенант
Группа: Адмиралы
Сообщений: 44
Репутация: 3
Статус: Offline
Макросы в ВоВ используются для оптимизации и упрощения интерфейса игрока. Начиная от самых простых макросов таких как высказывание в чат «полечите меня срочно», когда ваше здоровье опускается ниже 20%, и заканчивая более сложными макросами такими как смена стоек у воина или каст лечащего заклинания во 2ую или 3ю строчку Эмерженси монитора, стандартного для большинства игроков аддона – CT_raid. Итак начнем с общих макросов, и затем перейдем к конкретным примерам.

Для просмотра макросов на данном персонаже, а так же для создания новых и редактирования уже имеющихся используется команда:

/macro

Она позволяет открыть окно менеджмента макросов. Всего у вас может быть 18 макросов общих для Аккаунта и 18 для конкретного персонажа, итого в сумме 36 макросов, что достаточно много.

Заклинания

Замечание: Начиная с патча 1.хх колдовство заклинаний больше не требует окончания в записи “(rank X)”. Достаточно записать: /cast Holy Light для колдовства спела максимального ранга. Макросы такого типа не позволяют кастить спелы более низкого ранга на выбранную цель, для использования низких рангов нужно дописывать окончание (rank X), где Х – нужный ранг спела. Пример: /cast Holy Light (rank 1);
Колдовство заклинаний на самого себя без потери фокуса на цели:

Code
/script  CastSpellByName('Holy Light', 1)

Колдовство заклинаний на самого себя если нельзя колдовать заклинание на выбранную цель:

Данный макрос кастует заклинание “spell” на самого себя только в том случае если цель враждебна

Code
/script if ( not UnitIsFriend("player",    "target") ) then CastSpellByName("Spell", 1); end

Колдовство заклинаний на цель конкретного класса:

Используется в основном для баффов рейда, по конкретным классам, возможны модификации применительно к ПвП

Code
/script class = UnitClass("target"); if ( ( class  == "Rogue" ) or ( class == "Warrior" ) ) thenCastSpellByName("Blessing of Might"); else  CastSpellByName("Blessing of Wisdom"); end

Колдовство заклинаний на цели разных уровней(баффы):
Используется очень редко, но я все же приведу пример пристовского макроса для баффа на стамину, с проверкой уровня цели:

Code
/script Pre="Power Word: Fortitude(Rank "  Sp={1,2,14,26,38,50} if (UnitLevel("target") ~= nil and  UnitIsFriend("player","target")) thenfor i=6,1,-1 do if (UnitLevel("target") >=  Sp[i]) then CastSpellByName(Pre..i..”)”) return end end  end

Колдовство заклинаний на ближайшую цели с проверкой кол-ва % здоровья цели:
Приведу пример на основе каста хилиерских заклинаний на ближайшие цели с проверкой на кол-во здоровья цели, макрос лечит ближайшую дружественную цель со здоровьем ниже 70%, проверяются только ближайшие 40 целей.

Code
/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();

Анонсирование кастуемых заклинаний в пати-чат:

Code
/cast Healing Touch/party Healing %t in 3.5  seconds

Колдовство заклинаний на конкретных игроков партии:
Всегда лечит первого игрока партии Флешкой, при этом не сбивает фокуса на выделенной цели.

Code
/script TargetUnit("party1")/cast Flash Heal/script TargetLastTarget()

Колдовство нескольких заклинаний (баффов) с проверкой на наличие оных на цели:
Кастует различные баффы на цель, только в том случае если на цели еще нет такого заклинания(баффа), пример версии для друида:

Code
/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;

Макрос для поиска номера заклинания в книге умений:
Иногда использования скриптов CastSpellByName приводит к тому что длинна макроса превышает допустимые 255 символов, например макрос: /script CastSpellByName(’Holy Light’, 1) занимает достаточно много символов, когда как проще использовать макрос: /script CastSpellByNumber(); Но как же узнать какой номер у того или иного заклинания из вашей книги? На помощь приходит очень полезный и распространенный макрос проверки номера заклинания, он выдает на экран имя спела с соответствующим номером:

Code
/script SpellNumber=26;  SpellName,SpellRank=GetSpellName(SpellNumber,"spell");M=format("Spell %d: %s  %s",SpellNumber,SpellName,SpellRank);  DEFAULT_CHAT_FRAME:AddMessage(M);
 
АнгродДата: Понедельник, 01.03.2010, 13:43 | Сообщение # 2
Лейтенант
Группа: Адмиралы
Сообщений: 44
Репутация: 3
Статус: Offline
Инвентарь и Предметы

Использовать предмет:

Code
/script UseContainerItem(bag,  slot);

* Bag – это номер сумки, от 0 до 4, где 0 – начальная сумка.

* Slot – это номер слота в сумке от 1 до 20.

Макрос автоматически использует предмет в заданной сумке на заданном месте, полезен при использовании алхимии или просто при переодевании тринкетов.
Быстрое использование Бинтов на самого себя:

Code
/target [Player Name]/script UseContainerItem(#, #);
/script TargetLastEnemy();

Очень полезный макрос для дуэлей 1v1. Вот еще один пример макроса для бинтов, более сложный, с проверкой на наличие бинтов в инвентаре, фокусировки на предыдущей цели или сбросе фокуса, если цель – вы сами:

Code
/script if (not GetContainerItemLink(x,x)) then  OpenBag([same bag number as before]); elseTargetUnit(”player”);UseContainerItem(3,15);TargetUnit(”playertarget”);if  (UnitIsPlayer(”target”))then ClearTarget() end end

Использование предмета из Хот-бара:
Приведу пример использования Бинтов лежащих в одном из слоте одного из шести хот-баров, макрос использует бинты на выбранную дружественную цели, или на самого себя если цель враждебна:

Code
/script UseAction(ActionID, 0, 1);
/script if( SpellIsTargeting() ) then  SpellTargetUnit("player"); end

ActionID – это номер слота одного из шести хот-баров, он выбирается соответственно из таблицы:

Хот-бар: Номер слота
1: 1 2 3 4 5 6 7 8 9 10 11 12
2: 13 14 15 16 17 18 19 20 21 22 23 24
3: 25 26 27 28 29 30 31 32 33 34 35 36
4: 37 38 39 40 41 42 43 44 45 46 47 48
5: 49 50 51 52 53 54 55 56 57 58 59 60
6: 61 62 63 64 65 66 67 68 69 70 71 72

Более продвинутый вариант того же макроса, использует бинты на самого себя в любом случае, даже если цель дружественна и находится в радиусе действия, очень полезен в ПвЕ:

Code
/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

Использование точильных камней на оружие:
Простой макрос сократит вам время

Code
/script UseContainerItem (#,#);
/script PickupInventoryItem (16);

Меняя в последней строке 16 на 17 получим макросы для заточки правой и левой рук.

 
АнгродДата: Понедельник, 01.03.2010, 13:43 | Сообщение # 3
Лейтенант
Группа: Адмиралы
Сообщений: 44
Репутация: 3
Статус: Offline
Интерфейс

Переключение Хот-баров:

Code
/script CURRENT_ACTIONBAR_PAGE =  X;
/script ChangeActionBarPage();

Где X – номер нужного нам хот-бара, от 1 до 6.

Пример готового и усложненного макроса, выводом на экран сообщения о смене макроса:

Code
/script CURRENT_ACTIONBAR_PAGE = 1;
/script ChangeActionBarPage(); == Macro Frame  Toggling ==/script if ( not MacroFrame:IsVisible() ) then  ShowUIPanel(MacroFrame); else HideUIPanel(MacroFrame); end;
 
АнгродДата: Понедельник, 01.03.2010, 13:44 | Сообщение # 4
Лейтенант
Группа: Адмиралы
Сообщений: 44
Репутация: 3
Статус: Offline
Изменение видео опций

Иногда хочется изменить видео опции игры, что бы комфортнее себя чувствовать в густо населенных игроками зонах, таких как Банк или Аукцион, так же при большой нагрузке в ПвЕ зонах, примером может служить первая фаза Разоргора (1 босс БВЛ ):

Для хорошего качества видео:

Code
/z SetFarclip(777)/z SetWorldDetail(2)/z SetBaseMip(1)

Для среднего качества видео:
Code
/z SetFarclip(477)/z SetWorldDetail(1)/z SetBaseMip(1)

Для плохого качества видео:
Code
/z SetFarclip(177)/z SetWorldDetail(0)/z SetBaseMip(0)

Переключение игры из Full-screen в Window режим:
Полезен для съемки видео или просто для удобной настройки посторонних программ:

Code
/script currentRes = GetCurrentResolution(); if  (currentRes == 3)then SetScreenResolution(15); SetCVar("gxWindow",  0); SetMultisampleFormat(16);else SetCVar("gxWindow", 1);  SetScreenResolution(3); SetMultisampleFormat(1); end;

Числовые значения подобраны для переключения из разрешения 1600×1200 full anti-aliasing в разрешение 1024×768 1x anti-aliasing

Отключение имен игроков / npc:
Полезный макрос, для снятия нагрузки с экрана и любителям скриншотов

Code
/script if ( GetCVar("UnitNamePlayer") == "1" )  then SetCVar("UnitNamePlayer",0) else SetCVar("UnitNamePlayer",1)  end

Для имен npc:

Code
/script if ( GetCVar("UnitNameNPC") == "1" ) then  SetCVar("UnitNameNPC",0) else SetCVar("UnitNameNPC",1) end
 
АнгродДата: Понедельник, 01.03.2010, 13:48 | Сообщение # 5
Лейтенант
Группа: Адмиралы
Сообщений: 44
Репутация: 3
Статус: Offline
Окно чата

Автоматическая смена чата:
Макрос для автоматической смены между чатам /s если вы вне партии, /p если вы в партии на 5 человек, /raid если вы находитесь в рейде, макрос только устанавливает чат, но не пишет сообщения:

Code
/script if (GetNumRaidMembers() > 0) then PR = "Raid"; elseif  (GetNumPartyMembers() > 0) then PR = "Party"; else PR = "Say";  end;

Для того что бы автоматически написать какую либо фразу в выбранный чат, добавьте строку:

Code
/script SendChatMessage("Ты Gijdalah нуб и ничего  не понимаешь!!!",PR);
 
АнгродДата: Понедельник, 01.03.2010, 13:49 | Сообщение # 6
Лейтенант
Группа: Адмиралы
Сообщений: 44
Репутация: 3
Статус: Offline
Бой

Макросы для помощи танку:
Самый простой макрос для атаки цели которую атакует выбранный заранее танк:

Code
/assist %t /script AttackTarget();

Этот макрос слишком простой и не может покрыть всего того функционала который необходим зачастую в быстро протекающем бое, попробуем сделать более сложный вариант макроса, разделив при этом часть автоматической выборки подходящего танка, и часть фокуса на цели выбранного танка:

—- Для выбора танка —-

Code
/script LeaderPlayerName = UnitName("target") or  UnitName("party1") or "";
/script DEFAULT_CHAT_FRAME:AddMessage("######## Set  main assist to: " .. LeaderPlayerName);

—- Для атаки цели танка —-
Code
/script AssistByName(LeaderPlayerName or  UnitName("party1") or UnitName("player"));
/script DEFAULT_CHAT_FRAME:AddMessage("########  Assisting ".. LeaderPlayerName .. " with target " .. (UnitName("target") or "NO  TARGET"));

При использовании первого макроса, в памяти интерфейса запоминается ник выбранного игрока, что бы при нажатии второго макроса, выбиралась цель ранее запомненного танка, не зависимо от того где он находится, не нужно использовать первый макрос каждый раз, только один раз для начальной установки танка.

Но это два макроса, они будут занимать два слота на вашем интерфейсе, хотя они и очень удобные. Попробуем совместить оба макроса в один не потеряв при этом функциональности. Макрос будет выглядеть следующим образом:

Code
/script p=PAsi  or""u=UnitName;t="target"c=IsControlKeyDown()if(c)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 символов:

Code
/scriptp=PAsi or"";u=UnitName;t="target";c=IsControlKeyDown(); if(c) thenp=u(t) or u("party1") or ""elseAssistByName(p)end; DEFAULT_CHAT_FRAME:AddMessage("########  "..(c and("Set assist: "..p)or("Assisting "..p.." with "..(u(t) or "NO  TARGET")))); PAsi=p;

Итак, как же пользоваться этим макросом:

Для установки нужного танка, удерживая Ctrl кликните на иконку использования макроса.

Обычный клик на иконку использования макроса выберет необходимую цель.

Модификация этого макроса с возможностью колдовства разных заклинаний на цель выбранного танка (выбрано заклинание Полиморф, что может быть заменено на любое другое):

Code
/script t=Tg1 or""c=IsControlKeyDown()if(c)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

Тот же макрос в удобном виде:

Code
/scriptt=Tg1 or""
c=IsControlKeyDown()
if(c) 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 кликнуть на иконку использования макроса, то персонаж начнет колдовать выбранное заклинание (полиморф) на текущую цель выбранного ранее танка.

Макросы для уничтожения тотемов:
Простейший вариант:

Code
/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;

Таймер:

Code
/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 кликнуть на иконку использования макроса. При использовании макроса, выдается искомое время с точностью до секунды.

 
АнгродДата: Понедельник, 01.03.2010, 13:51 | Сообщение # 7
Лейтенант
Группа: Адмиралы
Сообщений: 44
Репутация: 3
Статус: Offline
Макросы для петов

Атака петом:
Простой макрос атаки пета по выбранной цели

Code
/script PetAttack();
Более продвинутый вариант:
/target player
/assist
/script PetAttack();

Атака специальным заклинанием пета (например Dash):

Code
/script PetAttack();  CastPetAction(4);

Команды для пета:
Список всех команд пету

Code
/script PetAggressiveMode();
/script PetDefensiveMode();
/script PetPassiveMode();
/script PetFollow();
/script PetAttack();
/script PetStopAttack();
/script CastPetAction(X);

Для последней строки, X – номер заклинания пета в панели управления петом.

 
АнгродДата: Понедельник, 01.03.2010, 13:52 | Сообщение # 8
Лейтенант
Группа: Адмиралы
Сообщений: 44
Репутация: 3
Статус: Offline
Примеры макросов

Серверное время:
Макрос выдает на экран, серверное время

Code
/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));

Макрос печатающий цели квеста в пати-чат:

Code
/script i = GetNumQuestLeaderBoards(); for j = 1,  i, 1 do a1, a2, a3 = GetQuestLogLeaderBoard(j); SendChatMesssage(a1, "PARTY");  end;

Макрос автоматической сдачи квеста неограниченное кол-во раз:

Code
/script SelectGossipAvailableQuest(1);  CompleteQuest(); GetQuestReward();

Макрос часто используют для неоднократного выполнения квеста – Dark Iron Residue

Макрос лечения 2 строки Эмерженси монитора, аддона CT_raid:
Очень полезный для любого лекаря макрос, спам которого позволяет сократить оверхил, и четко и быстро реагировать на повреждения рейда

Code
/script  CT_RA_Emergency_TargetMember(1)
/script  CT_RA_Emergency_TargetMember(2)
/cast Lesser Healing Wave(Rank  6);
/script TargetLastTarget();

Макрос выбирает 2 строчку монитора, если такой нет, то первую, и кастует на цель Lesser healing wave rank 6.

 
АнгродДата: Понедельник, 01.03.2010, 13:53 | Сообщение # 9
Лейтенант
Группа: Адмиралы
Сообщений: 44
Репутация: 3
Статус: Offline
Макросы экстремально полезны для вашей боеспособности или оптимизации игры, так как реакция человека не совершенна, макросы позволяют нам сократить кол-во действий необходимых для выполнения тех или иных необходимостей как в рейдах так и в ПвП.

P.S не забывайте, что разнообразие макросов ограничено только вашей фантазией и длинной в 255 символов.
©Medivhru

 
  • Страница 1 из 1
  • 1
Поиск: