Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Шатер Тетушки Акары. > Add-ons > Макросы


Автор: Wintorez 20.03.2005 - 22:23
Сделал себе макросы для вара, смена оружия для Retalation и instant-ударов. Постоянно он ходит с dual wield, для вышеназванных абилок происходит смена на двуручник и затем обратно.
Пример для Overpower (с Retalation-макросом может и не будет вместе работать, не успел доделать и потестить, надо вставить проверку на тип оружия в экипе):
/script PickupInventoryItem(17);PickupContainerItem(4,2);UseContainerItem(4,1);
/cast Overpower(Rank 1);
/in 1 /script UseContainerItem(4,1);UseContainerItem(4,2);

Соответственно, все вводится без пробелов, пробел только после команд (/script, /cast и т.п.). Каждая команда, кроме команд-параметров (в последней строке /script является параметром к /in), начинается с новой строки. Сумки нумеруются справа налево, бэкпак - 0, левая сумка - 4. Ячейки в сумках нумеруются слева направо и сверху вниз, начиная с 1. Ячейки в equip: 16 - main hand, 17 - off-hand. Команда Pickup симулирует левый клик, Use - правый клик. /in <second> <command> [argument].... - после паузы в X секунд выполняет команду <command> с заданными параметрами или без таковых. Дробные числа в качестве секунд не прокатили, т.е. юзаем целые.

Пример для Execute:
/script PickupInventoryItem(17);PickupContainerItem(4,2);UseContainerItem(4,1);
/cast Execute(Rank 1);
/in 1 /script UseContainerItem(4,1);UseContainerItem(4,2);

Пример для Retalation:
/script PickupInventoryItem(17);PickupContainerItem(4,2);UseContainerItem(4,1);
/cast Retalation;
/in 15 /script UseContainerItem(4,1);UseContainerItem(4,2);

В последнем примере время действия абилки 15 секунд, соответственно после этого произойдет смена оружия на дуал-вилд. Retalation не имеет ранка, смотрите синтаксис.

Для того, чтобы юзать Overpower и Execute во время действия Retalation, можно воспользоваться условием типа
oi=(GetInventoryItemLink("player",17));
if (oi) then
end;
Но я это потестить не успел, когда сделаю - напишу. GL, макросы рулят biggrin.gif

Автор: Caryon 21.03.2005 - 12:38
Я тоже думал сделать макрос для переключения на даггер при амбуше/бакстабе для роги, а потом обратно. Вопрос такой: переключение осуществляется мгновенно? Я пока пользуюсь аддоном, там переключение на кнопке, и такое впечатление, что оно занимает некоторое время.

Автор: Dice 21.03.2005 - 13:01
Настоятельно рекомендую тестить макросы, взяв в руки дешёвое оружие. Например, купив у вендора.

/script PickupInventoryItem(16);
/script PickupInventoryItem(17);

Это макрос для свопа (мейнхэнд в оффхэнд и наоборот). Сам не пробовал, но нстаивают, что верно. Попробую сегодня.

Также предлагают такой вариант:
/script PickupInventoryItem(16);
/script PickupInventoryItem(17, 1);
/script PickupInventoryItem(17);
/script PickupInventoryItem(16, 1);

Какой лучше и какой ваще работает - хз.

Автор: Wintorez 22.03.2005 - 05:02
2Caryon: Переключение работает мгновенно, если это первое переключение. После каста переключение не работает, нужна задержка в 1 секунду.


2Dice: Не совсем понял насчет дешевого оружия... Зачем?
Тох, не будет так работать. Вот тебе макрос для смены офф на майн (естественно оба оружия должны быть оне-ханд):
/script PickupInventoryItem(16);PickupInventoryItem(17);PickupInventoryItem(16);

Еще раз повторяю, команда Pickup эмулирует одиночный левый клик мышкой. Второй макрос вообще хз, что значит (17,1) - что такое 1 в параметре номера слота в инвентори??? Слоты в инвентори имеют порядковый номер, от 1 до 19 вроде, причем 18 ето нижний тринкет. Я не знаю точную нумерацию слотов, кроме 16-18, но второй макрос бред имхо.

Автор: Dice 22.03.2005 - 09:58
2Wintorez:
Серёг, насчёт первого макроса - я сам тыщу раз переспросил, так как кажется, что не хватает одной строки. На самом деле всё работает (я про первый), а про второй - сам не понимаю, что там написано. wink.gif
Тестить с дешёвым оружием, так как в случае ошибки возможно случайная продажа предметов вендору или уничтожение предмета. О таком тоже читал - народ периодически ноет по этому поводу.

А вообще, вот рулезные программулинки (надо установить обе, чтобы работали): автоматически меняют оружие при смене стойки (у роги: нормал/стелс; у ворриора - разные stance и т.д.) Просто супер. Причём на каждое состояние можно повесить три комплекта, которые переключаются одной кнопкой. Я в полном восторге от проги, всем милишникам крайне рекомендую.

Автор: Dice 22.03.2005 - 10:02
В предыдущем посте первый файл, здесь второй. Ставить надо оба. Ридми элементарный - почитайте, там разбираться нех делать.

Автор: Wintorez 22.03.2005 - 11:06
2Dice: Не знаю Тох, я тестил то, что в первом макросе, у меня после этого сворд висел на курсоре, а не в руке был. Хотя знаешь, возможно, я его как часть макроса тестил, у меня там сумки задействованы...

Автор: GinniE 1.04.2005 - 18:16
блин, задолался
пишу
/script UseContainerItem(1,1);
/cast Backstab(Rank 7);
/in 1 /script UseContainerItem(1,1);
- ругается на то, что маст даггер еквиппед, хотя вепоны меняются
пишу
/script UseContainerItem(1,1);
/in 1 /cast Backstab(Rank 7);
/in 1 /script UseContainerItem(1,1);
все меняется, ни на что не ругается, но бэк не проходит....
F1 plz

Автор: Poul 1.04.2005 - 20:21
2GinniE:
А чего ты этим макросом добиться хочешь? Он у тебя только юзает випон, смены тут не прописано. Плюс, юзать даггер из main hand, это 16-й слот, а ты пытаешься его прямо из сумки заюзать. blink.gif

Автор: GinniE 2.04.2005 - 02:29
дык он сразу кидается из сумки в майн ханд

Автор: Poul 2.04.2005 - 15:18
2GinniE:
Зато тратит на это секунду.
/in 1 и /cast back разбей на 2 строки.

Автор: Wanderer 8.04.2005 - 12:07
Товарищи, кто-нить для мага писал макросы? хотелось бы посмотреть, а то как-то в лаге умирать заипало wink.gif

Автор: Poul 8.04.2005 - 12:09
2Strange Guest:
Думаешь в лаге поможет? Все равно 1 макрос = 1 каст, и никак иначе.

Автор: Caryon 11.05.2005 - 10:46
Такой вопрос. Может ли скрипт определить, что я нахожусь под влиянием спелла fear/poly? Хочу сделать аддон, который автоматически кастует антифеар/антиполи.

Автор: gluk 14.06.2005 - 09:39
Тэк, вопрос к умным: нужен скрипт, который одним нажатием кнопочки Дизмаунтит меня и вводит в стелс. Если же я не на маунте - я просто вхожу в стелс, если я в стелсе - выводит оттуда.

скачал такой аддон - нифига не работает..
http://www.warcraftrealms.com/mods/Mfiend-1500-1.1.zip
Дело в том, что нигде нет описания к нему, поэтому и не разобрался..

Там написано вот это...
- <Bindings>
<Binding name="MFiend Trigger" header="MFiend">MF_DismountAndStealth();</Binding>
</Bindings>
ну и
- <Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ C:ProjectsWoWBinInterfaceFrameXMLUI.xsd">
<script file="MFiend.lua" />
- <Frame name="MFiend_Frame">
- <scripts>
<OnLoad>MFiend_OnLoad();</OnLoad>
</Scripts>
</Frame>
</Ui>

Подскажите? sad.gif

Автор: Caryon 14.06.2005 - 10:12
То, что ты написал - это xml файл, просто интерфейс. Надо lua смотреть.
Вобщем должно быть что-то типа такого:
Код

/script
CancelPlayerBuff("Reins of the Nightsaber")
cast(stealth, 4)

В первую функцию, разумеется, своего маунта надо вписАть.

Все это навскидку, и надо тестить.

Автор: alsimon 6.12.2005 - 18:48
наработки СДГ орда... макросы для хиллеров и декурсеров...

Для начала всем хилерам в рейде надо подсоеденится к каналу Heal.
Делается это коммандой /join Heal
Ну а дальше вы начинаете выполнять свою работу будь то хилинг мт, хилинг ат или же просто хилинг своей группы. Если наблюдаются проблемы с маной а бой обещяет быть долгим вы юзаете первый макрос, тем самым давая знать, что вы не в состоянии держать своего подопечного здоровым. Следует заметить, что по любому поводу спамить прозьбой о замене не стоит... Т.е. если например ваш маг/рог или еще кто наагрил, а у вас нету маны -- не стоит спамить в канала об этом, пусть умрет спокойно за свою ошибку. Другое дело если вы весите на одном из танков.

Отдельно стоит обратить внимание на использование макросов при хиллинге боссов. Тут история отдельная.
Обычно рейдлидер выделяет 4-6 хилеров только на хил мт.
Далее хиллеры разбиваются на две группы, группа 1 и группа 2.
Далее члены каждой из групп получают свои внутригрупповые номера.
Далее каждый из них получает свой порог маны.
Для группы хиллеров из 3х человек пороги будут выглядить так:

Первый хиллер будет хилить до 75% маны.
Второй хиллер будет хилить до 50% маны.
Третий хиллер будет хилить до 25% маны.

Для группы из 2х хилеров так:
Первый хилит до 66% маны.
Второй хилит до 33% маны.

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

Ситуация для примера.
Есть 2 группы хилров по 3 человека.
Первая группа доходит до третьего хилера, у него заканчиватся порог маны - его заменяет первый хиллер из второй группы.
В это время у хилера №1 из группы №1 уже полная мана, а впереди еще 3 человека из ротации - что ему делать? Решать ему, но он вполне может еще процентов 30% маны потратить на подхил рейда.

Макросы:
Макрос на прозьбу о замене:


Код:

/6 ### Нужна замена на < %t > ###
/oomГде /6 - это номер канала Heal.


Макрос с сообщением о готовности заменить:

Код:

/6 *** Заменил на < %t > ***
/readyГде /6 - это номер канала Heal.

В принципе текст макроса может быть любым, тут принципиальны только две вещи:
1. Спец символы в начале и конце строки (### - прозьба о замене, *** - замена)
2. Указание цели на ком.

Автор: alsimon 6.12.2005 - 18:54
Речь пойдёт об Addon Decursive

Код:
## Interface: 1500
## Title: Decursive
## Author: Quu
## Description: This is a raid cleaning mod. The idea behind this is to itterate though the raid party, and cure who ever needs it. It also work on teams, but was written with raids in mind. Pets were added since some debuffs are PBAoE.

В стандартном функционале нет возможности забиндить клавишу "декурсить только свою партию в рейде". После добавления этих строчек - такая функциональность появится. Пока /команду свою ещё не пробовал добавлять

\decursive\Bindings.xml

Код:
<Binding name="RBCLEAN_OWN" header="DECURSIVE">dcr_Clean_Own();</Binding>

\decursive\localization.lua

Код:

BINDING_NAME_RBCLEAN_OWN = "Clean Own Group";

\decursive\decursive.lua

Код:

-- Очищает только свою партию
function Dcr_CleanArray_Own(UnitArray, LastChecked)
Dcr_debug("Checking array");
-- this is just to save us from going to far
local partyMax = GetNumRaidMembers() + 4;
if (LastChecked >= partyMax) then
LastChecked = 0;
end
local i;
Dcr_debug( "Starting the check at 1");
for i = 1, 4 do
if (Dcr_CureUnit(UnitArray[i])) then
return true, i;
end;
end
return false, 0;
end


Код:

-- Вызывает очищение только своей партии
function Dcr_Clean_Own()
-----------------------------------------------------------------------
-- first we do the setup, make sure we can cast the spells
-----------------------------------------------------------------------
if ( not Dcr_Spell_Book) then
Dcr_errln(DCR_NO_SPELLS);
return false;
end
local canCastSpell = false;
local spellName, spellID;
for spellName, spellID in Dcr_Spell_Book do
local last_cast, cooldown;
last_cast, cooldown = GetSpellCooldown(spellID, SpellBookFrame.bookType)
if (cooldown ~= 0) then
Dcr_debug( "Spell not ready... "..spellName);
else
canCastSpell = true;
end
end
if (not canCastSpell) then
Dcr_errln(DCR_NO_SPELLS_RDY);
return false;
end
-----------------------------------------------------------------------
-----------------------------------------------------------------------
-- then we see what our target looks like, if freindly, check them
-----------------------------------------------------------------------
local targetEnemy = false;
local targetName = nil;
local cleaned = false;
local resetCombatMode = false;
if (UnitExists("target")) then
-- if we are currently targeting something
if (Dcr_CombatMode) then
Dcr_debug("when done scanning... if switched target reset the mode!");
resetCombatMode = true;
end
if (UnitIsFriend("target", "player") or UnitIsCharmed("target")) then
-- try cleanign the current target first
cleaned = Dcr_CureUnit("target");
-- we are targeting a player, save the name to switch back later
targetName = UnitName("target");
else
-- we are targeting an enemy... switch back when done
targetEnemy = true;
end
end;
-----------------------------------------------------------------------
-----------------------------------------------------------------------
-- now we check the partys (raid and local)
-----------------------------------------------------------------------
-- try to clean self
if (not cleaned) then
cleaned = Dcr_CleanSelf();
end
-- try to clean the parties
if (not cleaned) then
cleaned, Dcr_LastUnitChecked = Dcr_CleanArray_Own(Dcr_Unit_Array, Dcr_LastUnitChecked);
end;
-- after 1.5.0 this will replace the other tests
--if (not cleaned) then
-- cleaned, Dcr_LastPetChecked = Dcr_CleanArray(Dcr_PEt_Array, Dcr_LastPetChecked);
--end;

-----------------------------------------------------------------------
-----------------------------------------------------------------------
-- ok... done with the cleaning... lets try to clean this up
-- basically switch targets back if they were changed
-----------------------------------------------------------------------
if (targetEnemy) then
-- we had somethign "bad" targeted
if (not UnitIsEnemy("target", "player")) then
-- and we scanned a pet, cast dispell magic, or some how broke target... switch back
Dcr_debug("targeting enemy");
TargetLastEnemy();
if (resetCombatMode) then
-- resetCombatMode is the fix
Dcr_DelayTimer = Dcr_SpellCombatDelay;
Dcr_debug("done... now we wait for the leave combat event");
end
end
-- now that we are back on the enemy....
-- lets see if we want to cast dispell magic if nothing was cleaned
if (Dcr_CastDispellMagic and (not cleaned)) then
if (not UnitIsFriend("target", "player")) then
-- becasue neaturals can be attacked
local spellName;
for spellName in Dcr_Enemy_SpellArray do
if (Dcr_Spell_Book[spellName]) then
Dcr_println(string.gsub(DCR_DISPELL_ENEMY, "$s", spellName));
local spellID = Dcr_Spell_Book[key];
CastSpell(spellID, SpellBookFrame.bookType);
cleaned = true;
end
end
end
end
elseif (targetName) then
-- we had a freindly targeted... switch back if not still targeted
if ( targetName ~= UnitName("target") ) then
TargetByName(targetName);
end
else
-- we had nobody targeted originally
if (UnitExists("target")) then
-- we scanned a pet
ClearTarget();
end
end
if (not cleaned) then
Dcr_println( DCR_NOT_CLEANED);
Dcr_LastUnitChecked = 0;
Dcr_LastPetChecked = 0;
end
return cleaned;
end


Автор: alsimon 6.12.2005 - 18:55
Новая версия:
возможность задать классы, которые нужно декурсить/диспелить
возможность включать и выключать декурс рейда
возможность забиндить декурс только своей группы
возможность сделать свою группу приоритетной перед рейдом
Больше ничего пока в голову не приходит.
Вызывается:

посмотреть настройки

Код:
/dec ?

включить/выключить каждый из классов:

Код:
/dec {class}+
/dec {class}-

{class}={'DRU', 'HUN', 'MAG', 'PAL', 'PRI', 'ROG', 'SHA', 'LOC', 'WAR'}

включить/выключить приоритет группы над рейдом

Код:
/dec G+
/dec G-

включить/выключить декурс рейда

Код:
/dec R+
/dec R-

Автор: MoNK 6.12.2005 - 19:40
Если выключаешь декурс рейда, декурс группы сохраняется?

Автор: Reebok 15.04.2007 - 13:50
Люди напишите ПЛИЗ скрипт на:
Снять лук
Снять стрелы
Буду примного благодарен
Мне говорили что есть какая то каманда на снятие шмотки но я её не нашол нигда =((

Автор: Darvin 15.04.2007 - 16:15
/script PickupInventoryItem(slotId)

где slotId это:
AmmoSlot 0
MainHandSlot 16
SecondaryHandSlot 17
RangedSlot 18

/script PutItemInBackpack(y); у - в какую сумку ложим

Автор: Reebok 15.04.2007 - 20:36
Ой спасибо терь буду читерить )

Автор: Reebok 15.04.2007 - 21:08
огромное при огромное спасибо )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)