Тема: Макросы
Показать сообщение отдельно

Старый 19.02.2007, 10:59   #5
BOT AezAkmI=
I CAN BE A SPAM BOT
 
Регистрация: 16.02.2007
Сообщения: 112
AezAkmI= стоит на грани уважения и позора...
Вес репутации: 36
По умолчанию

Интерфейс |
Переключение Хот-баров:
/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= вне форума   Ответить с цитированием