Форумы SDlive

Форумы SDlive (http://forum.sdlive.ru/index.php)
-   Игровой мир (http://forum.sdlive.ru/forumdisplay.php?f=9)
-   -   Макросы (http://forum.sdlive.ru/showthread.php?t=14)

Mike 13.02.2007 21:53

Макросы
 
Макросы в мире WoW и все что с ними каким-либо образом взаимосвязано :p

gOOd 16.02.2007 09:09

Как будет выгледеть макрос, на юзанье бутылочки с жизнями когда жизнек меньше 30% остаётся.:)

Charm 17.02.2007 05:51

Напишите кто-нибудь полезных макросов

AezAkmI= 19.02.2007 10:58

Взято с http://worldofwarcraft.ru/macro/


РУКОВОДСТВО ПО МАКРОСАМ



Общая информация
Макросы в ВоВ используются для оптимизации и упрощения интерфейса игрока. Начиная от самых простых макросов таких как высказывание в чат «полечите меня срочно», когда ваше здоровье опускается ниже 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)

Колдовство заклинаний на самого себя если нельзя колдовать заклинание на выбранную цель:
Данный макрос кастует заклинание “spell” на самого себя только в том случае если цель враждебна
/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
[i]for i=6,1,-1 do if (UnitLevel("target") >= Sp) then CastSpellByName(Pre..i..")") return end end end

Колдовство заклинаний на ближайшую цели с проверкой кол-ва % здоровья цели:
Приведу пример на основе каста хилиерских заклинаний на ближайшие цели с проверкой на кол-во здоровья цели, макрос лечит ближайшую дружественную цель со здоровьем ниже 70%, проверяются только ближайшие 40 целей.
/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")~=n il) 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(); Но как же узнать какой номер у того или иного заклинания из вашей книги? На помощь приходит очень полезный и распространенный макрос проверки номера заклинания, он выдает на экран имя спела с соответствующим номером:
/script SpellNumber=26; SpellName,SpellRank=GetSpellName(SpellNumber,"spel l");
M=format("Spell %d: %s %s",SpellNumber,SpellName,SpellRank); DEFAULT_CHAT_FRAME:AddMessage(M);



Инвентарь и Предметы |
Использовать предмет:
/script UseContainerItem(bag, slot);
  • Bag – это номер сумки, от 0 до 4, где 0 – начальная сумка.
  • Slot – это номер слота в сумке от 1 до 20.
Макрос автоматически использует предмет в заданной сумке на заданном месте, полезен при использовании алхимии или просто при переодевании тринкетов.

Быстрое использование Бинтов на самого себя:
/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);Target Unit("playertarget");if (UnitIsPlayer("target"))

then ClearTarget() end end

Использование предмета из Хот-бара:
Приведу пример использования Бинтов лежащих в одном из слоте одного из шести хот-баров, макрос использует бинты на выбранную дружественную цели, или на самого себя если цель враждебна:
/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
Более продвинутый вариант того же макроса, использует бинты на самого себя в любом случае, даже если цель дружественна и находится в радиусе действия, очень полезен в ПвЕ:
/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 получим макросы для заточки правой и левой рук.

AezAkmI= 19.02.2007 10:59

Интерфейс |
Переключение Хот-баров:
/script CURRENT_ACTIONBAR_PAGE = X;

/script ChangeActionBarPage();
  • Где X – номер нужного нам хот-бара, от 1 до 6.
Пример готового и усложненного макроса, выводом на экран сообщения о смене макроса:
/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)

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

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

Для имен игроков:
/script if ( GetCVar("UnitNamePlayer") == "1" ) then SetCVar("UnitNamePlayer",0) else SetCVar("UnitNamePlayer",1) end

Для имен npc:
/script if ( GetCVar("UnitNameNPC") == "1" ) then SetCVar("UnitNameNPC",0) else SetCVar("UnitNameNPC",1) end



Окно чата |
Автоматическая смена чата:
Макрос для автоматической смены между чатам /s если вы вне партии, /p если вы в партии на 5 человек, /raid если вы находитесь в рейде, макрос только устанавливает чат, но не пишет сообщения:
/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(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 символов:
/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;
Итак, как же пользоваться этим макросом:
Для установки нужного танка, удерживая Ctrl кликните на иконку использования макроса.
Обычный клик на иконку использования макроса выберет необходимую цель.
Модификация этого макроса с возможностью колдовства разных заклинаний на цель выбранного танка (выбрано заклинание Полиморф, что может быть заменено на любое другое):
/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
Тот же макрос в удобном виде:
/script

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

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

AezAkmI= 19.02.2007 11:00

Макросы для петов |
Атака петом:
Простой макрос атаки пета по выбранной цели
/script PetAttack();

Более продвинутый вариант:

/target player

/assist

/script PetAttack();

Атака специальным заклинанием пета (например Dash):
/script PetAttack(); CastPetAction(4);

Команды для пета:
Список всех команд пету
/script PetAggressiveMode();

/script PetDefensiveMode();

/script PetPassiveMode();

/script PetFollow();

/script PetAttack();

/script PetStopAttack();

/script CastPetAction(X);
  • Для последней строки, 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"

Колдовство заклинаний с использованием тринкетов / ПоМа, как мы знаем ТоеП не стекается с ЗХЧ после патча 1.10, но макрос все равно очень полезен, приведу пример ЗХЧ + ПоМ + фростболт 11 ранга:
/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
Макрос делает следующее:
  • если Nature Swiftness не на кулдавне, кастует его.
  • если на вас активен Nature Swiftness, кастует Healing Wave 9 rank на выбранную цель
  • во всех остальных случаях кастует Lesser healing wave rank 6 на выбранную цель.
Макрос анонса тотемов в пати-чат:
/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 нажатия.

Defensive stance -> Taunt:
/script texture,name,isActive,isCastable = GetShapeshiftFormInfo(2); if isActive then CastSpellByName("Taunt()"); else CastSpellByName("Defensive Stance()"); end;
Требуется минимум 2 нажатия.

Berserker stance -> Berserker rage
/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

Макрос лечения 2 строки Эмерженси монитора, аддона CT_raid:
Очень полезный для любого лекаря макрос, спам которого позволяет сократить оверхил, и четко и быстро реагировать на повреждения рейда
/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.



Заключение |
Макросы экстремально полезны для вашей боеспособности или оптимизации игры, так как реакция человека не совершенна, макросы позволяют нам сократить кол-во действий необходимых для выполнения тех или иных необходимостей как в рейдах так и в ПвП.
P.S не забывайте, что разнообразие макросов ограничено только вашей фантазией и длинной в 255 символов.


Извините, но тут ограничение на символы...

Gero 21.02.2007 15:10

можете написать макрос на 2-ую строчку?(третью)

Ghost 22.02.2007 17:56

дайте макрос чтоб перестовал бить когда делаеш гоуг

Neruat 17.03.2007 16:55

мой любимый макрос

/w [имя друга] WOOUCH!!!!!!!

:D

ASIX 19.03.2007 11:08

спс Аезакми я нашёл много полезных макроссов

MnZrK 20.03.2007 20:53

Хотелось бы список всех доступных функций ...

Mike 20.03.2007 22:35

вот, ртм когда-то кидал это на арену
Код HTML:

/assist [name] - Assist your target or the named unit if specified
/cast name - Cast the named spell, which may include the rank in parenthesis
/afk [message] - Toggle yourself as "away from keyboard"
/dnd [message] - Toggle yourself as "do not disturb"
/duel [name] - Request a duel with your target, or the named unit if specified
/yield - Surrender to your opponent in a duel
/emote message - Emote the message (e.g. /emote picks his nose -> [slouken] picks his nose)
/follow - Automatically move to follow your current target
/guild message - Send the message to your guild chat
/ignore name - Toggle ignoring the named unit
/inspect - Inspect your target
/invite [name] - Invite your target or the named unit to your group
/join name - Join (or create) the named chat channel
/leave name - Leave the named chat channel
/logout - Sit down and logout
/ffa - Set "free for all" loot policy
/master name - Set the named unit to be the master looter
/roundrobin - Set "round robin" loot policy
/party message - Send the message to your party chat
/played - Show how much time your character has been online
/pvp - Enable PvP for the next 5 minutes
/raid message - Send the message to your raid chat
/random num - Roll a random number between 1 and num
/reply message - Send the message to the last player to whisper to you
/say message - Send the message to people around you
/target name - Target the named unit
/time - Show the current game time
/trade - Initiate a trade with your target
/uninvite name - Remove the named unit from your group
/whisper name message - Whisper the message to the named unit
/who - List the players around your level in the current zone

There are a couple of special powerful commands that can be used in macros that are beyond the scope of basic macros.

/console command - Execute a console command (console commands are not documented and are subject to change)
/script commands - Execute lua script commands (scripting is beyond the scope of this document)


Mike 20.03.2007 22:36

+
Код HTML:

Основы:
Макросы, написанные на языке Lua(www.lua.org). Lua - маленький и быстрый, но достаточно мощный язык написанный на Си. Поэтому, зная хотя бы основы Си? вы без труда разберётесь в этом нехитром деле - написание макросов для вов.
Наберите в строке чата /macros - откроется список макросов, тычем кнопку new, потом придумываем имя, выбираем картинку, потом вводим код. Стоп, а что собственно вводить? Ну что ж, подумаем вообще, зачем нам всё это, правильно, для автоматизации наших действий, а какие они бывают можно почитать здесь - http://forum.worldofwarcraft.ru/index.php?showtopic=1683. Первое что приходит в голову это говорить вашей группе кого атаковать:

CODE

/p Atacking %t


(%t подставляет имя выделенного вами персонажа.)
Хорошо, теперь допустим мы маг, кто играл магом - знает какая это беда кастить полиморф в группе, когда члены группы, по несогласованности, начинают атаковать и частенько под руку попадается овечка.

CODE

/p Polymorphing! DONT atack %t!
/cast Polymorph (Rank X)


(X - это уровень вашего заклинания)
Идём дальше. Нужен скрипт, который лечил и предупреждал остальных хилеров, что вы уже лечите эту цель:

CODE

/script if ((UnitName("target") ~= nil) AND (UnitIsFriend("player", "target"))
then SendChatMessage("Healing (+n)!", "PARTY", "COMMON", UnitName("target") ); end
/cast SpellName (Rank X)


Думаю понятно, описание функции смотрите ниже.
Ещё один полезный макрос:

CODE

script ToggleBag(0);
/script ToggleBag(1);
/script ToggleBag(2);
/script ToggleBag(3);
/script ToggleBag(4);


Открывает/закрывает все сумки полезно перебиндить на "b".

Приведу основные функции:
Хотя это всё функции, некоторые из них являться только информационными, а некоторые, влияют непосредственно на игру, поэтому я разделил всё на методы и свойства, для удобства.
----------------------------------------------[Методы]
--[действия]--
AttackTarget();
Пример: AttackTarget();
Описание: Атакует выделенного персонажа.

CastSpellByName(spellname)
Пример: CastSpellByName("Demon Skin");
Описание: Кастует указанное заклинание

TargetUnit(targetcode);
Пример: TargetUnit("player");
Описание: Выделяет персонажа указанного в параметре "player", "party1".."party5", "npc", "target".

TargetUnitsPet(targetcode);
Пример: TargetUnitsPet("player");
Описание: Выделяет пэта указанного персонажа.

TargetLastEnemy();
Пример: TargetLastEnemy();
Описание: Выделяет последнего атакованного персонажа.

AssistUnit(target)
Пример: AssistUnit("target");
Описание: Помогает атаковать персонажу, указанному в параметре.

AssistByName(target)
Пример: AssistByName("Marco");
Описание: Помогает атаковать персонажу с именем указанным в параметре.

FollowUnit(target)
Пример: FollowUnit("target");
Описание: Следует за персонажем указанным в параметре.

FollowUnitByName(target)
Пример: FollowByName("Beeblebrox");
Описание: Следует за персонажем с именем указанным в параметре.

ToggleBag(bagnumber)
Пример: ToggleBag(0);
Описание: Открывает/закрывает сумку сумки расположены: 4-3-2-1-0. 0 это бэкпак.

--[группа и взаимодействия]--
InviteByName(target)
Пример: InviteByName(GetSlashCmdTarget(msg));
Описание: Приглашает в группу персонажа с именем указанным в параметре.

UninviteByName(target)
Пример: UninviteByName(GetSlashCmdTarget(msg));
Описание: Удаляет из группы персонажа с именем указанным в параметре.

InitiateTrade(target)
Пример: InitiateTrade("target");
Описание: Приглашает к торговле персонажа указанного в параметре.

InspectUnit(target)
Пример: InspectUnit("target");
Описание: Показывает информацию о персонаже.
BeginTrade();
Описание: Согласиться на торговлю.

CancelTrade();
Описание: Отказаться от торговли.

AcceptGroup()
Описание: Согласиться на приглашение в группу.

DeclineGroup()
Описание: Отказаться от группы

PromoteToPartyLeader(unit);
Описание: Делает лидером указанного игрока.

LeaveParty()
Описание: Покинуть группу.

AddFriend(name)
Описание: Добавить друга.

RemoveFriend(name)
Описание: Удалить друга

AddOrDelIgnore(name);
Описание: Добавляет/удаляет игрока из игнор-листа.

Duel(name)
Описание: Вызывает на дуэль игрока.

CancelDuel();
Описание: Отменяет дуэль.

SetLootMethod(methodstring, player)
Описание: Устанавливает способ лута: "freeforall","roundrobin","master".

LootSlot(slotidnumber, 0)
Пример: LootSlot(((LOOTFRAME_NUMBUTTONS - 1) * (LootFrame.page - 1)) + this:GetID(), 0);
Описание: Лутит указанный предмет


Mike 20.03.2007 22:36

+
Код HTML:

--[Движения]--
MoveForwardStart(starttime);
Описание: Игрок начинает бежать вперёд.

MoveForwardStop(time);
Описание: Игрок прекращает бежать вперёд.

MoveBackwardStart(starttime);
Описание: Игрок начинает бежать назад.

MoveBackwardStop(stoptime);
MoveBackwardStop(arg1);
Описание: Игрок прекращает бежать назад.

TurnLeftStart(starttime);
Описание: Игрок начинает бежать влево.

TurnLeftStop(arg1);
Описание: Игрок прекращает бежать влево.

TurnRightStart(starttime);
Описание: Игрок начинает бежать вправо.

TurnRightStop(stoptime);
Описание: Игрок прекращает бежать вправо.

StrafeLeftStart(StartTime);
Описание: Игрок начинает стрэйфить влево.

StrafeLeftStop(stoptime);
Описание: Игрок прекращает стрэйфить влево.

StrafeRightStart(starttime);
Описание: Игрок начинает стрэйфить вправо.

StrafeRightStop(stoptime);
Описание: Игрок прекращает стрэйфить вправо.

Jump();
Описание: Заставляет игрока прыгать.

SitOrStand()
Описание: Заставляет присесть/встать

--[гильдия]--
AcceptGuild()
Описание: Принимает приглашение в гильдию.

DeclineGuild()
Описание: Отказывается от приглашение в гильдию.

GuildInviteByName(player);
Описание: Приглашение в гильдию для игрока, имя которого указанно в параметре.

GuildUninviteByName(player)
Описание: Выгоняет из гильдии игрока, имя которого указанно в параметре.

GuildPromoteByName(player)
Описание: Увеличивает статус игрока, имя которого указанно в параметре.

GuildDemoteByName(player)
Описание: Уменьшает статус игрока, имя которого указанно в параметре.

GuildSetLeaderByName(player)
Описание: Делает лидером игрока, имя которого указанно в параметре.

GuildSetMOTD(message)
Описание: Устанавливает приветственное сообщение.

GuildLeave()
Описание: Покинуть гильдию.

--[пэт]--
PetAttack();
Описание: Заставляет вашего пэта атаковать.

PetAbandon();
Описание: Бросить вашего пэта.

PetRename(name)
Описание: Переименовать вашего пэта.

PetPassiveMode();
Описание: Переключает вашего пэта в пассивный режим.

PetDefensiveMode()
Описание: Переключает вашего пэта в защитный режим.

PetAggressiveMode()
Описание: Переключает вашего пэта в агрессивный режим.

PetWait()
Описание: Останавливает вашего пэта в пассивный режим.

PetFollow()
Описание: Заставляет вашего пэта следовать за вами.

--[разное]--
SendChatMessage(msg, mode, language, channel);
Пример: SendChatMessage(msg, "WHISPER", this.language, lastTell);
Описание: Отправляет сообщение mode:"SAY", "YELL", "PARTY", "AFK", "DND", language: "COMMON", "DRACONIC", "ORCISH" ...

RandomRoll(low,high);
Пример: RandomRoll("1","100");
Описание: Выдаёт случайное число, удобно при розыгрыше сундуков.

PlaySound(filename);
Пример: PlaySound("BAGMENUBUTTONPRES");
Описание: Проигрывает звуковой файл.

Screenshot();
Описание: Делает скриншот.

ForceLogout()
Описание: Усиленный дисконнект.

Logout()
Описание: Дисконнект.

Quit()
Описание: Выход из игры

----------------------------------------------[Свойства]
UnitName(string)
Пример: target = UnitName("target");
Описание: Возвращает имя игрока

GetFriendInfo(friendid)
Пример: name, level, class, area, connected = GetFriendInfo(friendIndex);
Описание: Возвращает информацию о друге.

UnitXP(target)
Пример: local currXP = UnitXP("player");
Описание: Возвращает опыт игрока

UnitXPMax(target)
Пример: local nextXP = UnitXPMax("player");
Описание: Показывает максимальный опыт игрока.

GetUnitMoney(target)
Пример: if ( UnitMoney("player") >= moneyCost ) then
Описание: Показывает количество денег игрока.

UnitExists(unitname)
Пример: if ( UnitExists(unit) and UnitIsPlayer(unit) ) then
Описание: Возвращает true если персонаж существует.

UnitIsPlayer(unitname)
Пример: if ( UnitExists(unit) and UnitIsPlayer(unit) ) then
Описание: Возвращает true если персонаж является игроком.

PetCanBeAbandoned()
Описание: Возвращает true если пэт может быть брошен.

UnitIsUnit(unitnamea, unitnameB)
Пример: UnitIsUnit("target", "pet")
Описание: Возвращает true если unitnamea является unitnameB

UnitReaction("target", "player")
Пример: UnitReaction("target", "player")
Описание: Возвращает тип поведения: neutral hostile, friendly.

GuildInfo()
Описание: Показывает инфо о гильдии

GetPartyMember(index[or id])
Пример: GetPartyMember(3)
Описание: Возвращает имя члена партии.

UnitIsPartyLeader(unitname)
Пример: UnitIsPartyLeader("target")
Описание: Возвращает true если персонаж лидер группы.

GetLootMethod()
Пример: lootMethod, lootMaster = GetLootMethod();
Описание: Возвращает тип и мастера(если есть) лута

UnitInParty(unitname)
Пример: UnitInParty("target")
Описание: Возвращает true если персонаж входит в группу.

GetPlayerMapPosition(playerid);
Пример: playerX, playerY = GetPlayerMapPosition("player");
Описание: Возвращает ваши координаты.

GetCorpseMapPosition();
Пример: corpseX, corpseY = GetCorpseMapPosition();
Описание: Возвращает координаты вашего тела.

//-------------------------------------[chanel]
LeaveChannelByName(channelname)
LeaveChannelByName("Trade");
Leaves the channel with the specified name.

ListChannelByName(channelname)
ListChannelByName("trad")
Lists all of the channels that match the specified regular expression.

ListChannels()
ListChannels();
Lists all of the channel.

SetChannelPassword(username, password)
SetChannelPassword("Xiphoris","cantkeepassecret")l
Changes the password of the current channel if that is a legal action.

ChannelModerator(channel,player)
ChannelModerator("uimods","Kelthan");
Sets the specified player as the channel moderator.

ChannelUnmoderator(channel, player)
ChannelUnmoderator("uimods", "xiphoric");
Takes the specified user away from the moderator status.


ChannelMute(channel, player)
ChannelMute("uimods","zileas");
Turns off the specified player's ability to speak in a channel.

ChannelUnmute(channel,player)
ChannelUnmute("uimods", "marco");
Unmutes the specified user from the channel.

ChannelInvite(channel,player)
ChannelInvite("cutestelves","glorfindel");
Invites the specified user to the chatroom.

ChannelKick(channel,player)
ChannelKick("bigllamas", "Strong_Bad_Is_Geh");
Kicks the specified user from the channel.

ChannelBan(channel,player)
ChannelBan("uimods", "alexyoshi")
Bans a player from the specified channel.

ChannelUnban(channel, player)
ChannelUnban("uimods", "kat");
Unbans a player from a channel.

ChannelToggleAnnouncements(channel);
ChannelToggleAnnouncements(channel);
Sets the channel to display announcements.

getglobal(prevFrame:GetName().."EditBox"):GetText()


Распространение приветствуеться с обязательным сохранением имени автора(Team20.Freezzz).


SeT 21.03.2007 06:30

Вложений: 1
Скинул все в архив

Eyra 29.03.2007 10:46

А можно мне макрос, чтобы мой перс крутился как при дрейн лайф, а то крутишься за рогой в пвп, а из- за лагов он в другом месте, и каст сбрасывается=(

Korsar 14.04.2007 07:32

Korsar
 
а можно сделать макрос, чтоб оружие левой руки менялось с правым и наоборот?

ggg 14.04.2007 08:05

Цитата:

Сообщение от Korsar (Сообщение 6084)
а можно сделать макрос, чтоб оружие левой руки менялось с правым и наоборот?

Можно не макросом - например на доп. экшен бары поставить те випоны которые у тебя и жать на тот который нужен в данный момент. Или юзай аддон WeaponQuickSwap - как-то так.

grAss 14.04.2007 16:56

а можно сделать так чтобы когда юзашь ванишь сразу юзался стелс?

Void 14.04.2007 16:59

Цитата:

Сообщение от grAss (Сообщение 6123)
а можно сделать так чтобы когда юзашь ванишь сразу юзался стелс?

просто по-моему, зажав шифт, щёлкнуть при открытом макросе в спелбуке на стелс и ваниш. Может, даже, прокатит.

grAss 14.04.2007 17:10

не получилось

ggg 14.04.2007 17:21

Цитата:

Сообщение от grAss (Сообщение 6133)
не получилось

Попробуй на допустим доп. экшен бар поставить ваниш, и в настройках его на шифт забиндить, затем также со стелсом но на другую кнопку - нудно но подругому никак вроде:hz:

Void 14.04.2007 17:35

Цитата:

Сообщение от grAss (Сообщение 6133)
не получилось

по причине глобал кулдауна?

ну тогда никак.. по-крайней мере близзы писали, что таймер lua нельзя создать

grAss 14.04.2007 19:25

Цитата:

Сообщение от Void (Сообщение 6144)
по причине глобал кулдауна?

ага

ASIX 17.04.2007 16:38

может кто подсказать? вот мне бы хотелось такой макрос, что при нажатии на клавишу например "l", мой рога юзал багстап или при нажатии "z", входил в стелс . так можно сделать?

Void 17.04.2007 16:39

Цитата:

Сообщение от ASIX (Сообщение 6531)
может кто подсказать? вот мне бы хотелось такой макрос, что при нажатии на клавишу например "l", мой рога юзал багстап или при нажатии "z", входил в стелс . так можно сделать?

це не макрос - це key bindings настроить надо. И вынести соответственные функции на доп. action bars

Ghost 21.04.2007 20:20

а как сделать поочередный каст?Вот например хочу чтоб нажал а он скастовал стаминку Иннер фаер и спирит на меня сразу.

HAYSE 22.04.2007 10:01

Цитата:

Сообщение от Ghost (Сообщение 6862)
а как сделать поочередный каст?Вот например хочу чтоб нажал а он скастовал стаминку Иннер фаер и спирит на меня сразу.

/cast spell...
/cast spell...
/cast spell...
мб, я не пробовал.

Ghost 22.04.2007 10:48

Цитата:

Сообщение от HAYSE (Сообщение 6894)
/cast spell...
/cast spell...
/cast spell...
мб, я не пробовал.

неа со словом spell ваще не кастит а вот так токо последний спелл
Код:

/cast Inner Fire and then
/cast Power Word: Fortitude


Wisard 22.04.2007 15:17

Дайте макрос на использование Рипосте если можно а потом Синистер Страйк (описанный не катит:( )

Void 22.04.2007 15:28

Цитата:

Сообщение от Ghost (Сообщение 6908)
неа со словом spell ваще не кастит а вот так токо последний спелл
Код:

/cast Inner Fire and then
/cast Power Word: Fortitude


в ВоВе есть такая вещь, как глобальный кулдаун. И, кажется, где-то я читал, что средствами макросов нельзя сделать так, что при нажатии одной кнопки на цель подряд вешаются несколько заклинаний с инстант кастом. Читал давно, так что, может быть, это уже не так. В некоторых аддонах, связаных с экшен барами есть возможность создания скриптов. Думаю, через них можно.

Visor 07.06.2007 17:05

дорогой войд, может ты гденибудь снова почитаеш? мне тоже интересно

Мерк 09.06.2007 00:08

Цитата:

Сообщение от Visor (Сообщение 10776)
дорогой войд, может ты гденибудь снова почитаеш? мне тоже интересно

Есть инструкция по макросам БК, стянутая с одного из форумов, моно запостить надо?;)

Ghost 09.06.2007 18:13

да надо

Мерк 10.06.2007 07:43

Вложений: 1
Цитата:

Сообщение от Ghost (Сообщение 10978)
да надо

Нате ловите;)

Wisard 11.06.2007 10:58

я слепой или там нету опции "если можно-юзать"?ъ
А то я скоко пытаюсь восстановить макрос типа
"cast Riposte (если можно); cast Sinister Strike"

Freeman 11.06.2007 17:03

Скольок не пробовал юзать макросы на два спела подряд у нас на мангосе, чаще всего получаю сообщение: "Another action in progress", так как при отработке скрипта действие исполняется еще первой строки, а управление передается уже второй.
ЗЫ: Надо попробовать на офе, сдается что там несколько не так, ибо часто в примерах макросах попадается два и более спела или абилок.

Foxter 11.06.2007 21:28

Цитата:

Сообщение от Freeman (Сообщение 11121)
...
ЗЫ: Надо попробовать на офе, сдается что там несколько не так, ибо часто в примерах макросах попадается два и более спела или абилок.

На 99% уверен, что работать не будет
(думаю, может сработать, если первый спелл не активирует глобальный кулдаун...)

Skill 12.06.2007 17:55

Цитата:

Сообщение от Wisard (Сообщение 11088)
я слепой или там нету опции "если можно-юзать"?ъ
А то я скоко пытаюсь восстановить макрос типа
"cast Riposte (если можно); cast Sinister Strike"

если найдешь как напиши плис буду оч благодарен

fikys 13.06.2007 17:29

проверьте макрос плизз, а то он чето не пашет:
/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;


Часовой пояс GMT +1, время: 02:07.