Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Макрос оповещение через Mouseover

Упомянутые в теме пользователи:

Показано с 1 по 5 из 5
  1. #1
    Новичок Аватар для sollertis
    Регистрация
    21.06.2012
    Сообщений
    10
    Поблагодарил(а)
    0
    Получено благодарностей: 5 (сообщений: 1).
    Репутация: 5

    Question Макрос оповещение через Mouseover

    Помогите с макросом.
    Цель макроса: ХолиПрист кидает заклинание Оберегающий дух (через mouseover) на цель;
    1. Должно отправится оповещение в YELL чат в виде : "[Линк спела Оберегающий дух] на @Имя_цели "
    2. Должно отправится оповещение в Приват цени в виде : "[Линк спела Оберегающий дух] на Вас"
    3. Заклинание (Оберегающий дух) должно юзнутся на цель маусовера.

    Доп.Условия:
    1.Не должно приходить оповещение ни в Приват ни в YELL чат , если заклинание Оберегающих дух не сработало ( слишком далеко цели, или преграда , или сало и тп)
    2.Если заклинание Оберегающих дух на КД, Не должно приходить оповещение ни в Приват, ни в YELL чат.

    Что смог сделать...
    Краткая форма для 255 символов:

    /use [@mouseover]Оберегающий дух
    /run s=47788;i=" {череп}";un=UnitName("mouseover");L=GetSpellL ink(s);_,d=GetSpellCooldown(s);
    if d<2 then SendChatMessage(i..L.." на "..un..i,"yell");SendChatMessage(i..L.." НА ТЕБЕ!"..i,"WHISPER",nil,un);end;

    Полная форма для лучшего понимания:

    /use [@mouseover] Оберегающий дух
    /run _,d=GetSpellCooldown(47788); //записание значения КД спелла в переменную d
    if d<2 then // Проверили есть ли КД на спелле. если нет продолжили скрипт
    SendChatMessage("{череп}"..GetSpellLink(47788 ).." на "..UnitName("mouseover").."{череп}","yell ");
    //Оповещение в YELL чат , с линком спелла по ID (47788) + имя цели маусовер
    SendChatMessage("{череп}"..GetSpellLink(47788 ).." НА ТЕБЕ! {череп}","WHISPER",nil,UnitName("mouseover")) ;
    //Оповещение в Привет чат цели маусовера , с линком спелла по ID (47788)
    end;

    Проблемы:
    Если цель далеко\за преградой\или нет возможности прочитать заклинание(например стан\сало) , Оберегающий дух конечно не кидается , но оповещения проходят . Как решить эту проблему, какой проверкой?

    PS: Зачем не это нужно объяснять не буду, если есть возможность подсказать низкий поклон вам в ноги, остальные с тупыми ответами - лесом.

  2. #2
    Новичок Аватар для Angerran
    Регистрация
    13.02.2012
    Сообщений
    7
    Поблагодарил(а)
    0
    Получено благодарностей: 4 (сообщений: 3).
    Репутация: 4
    Макросом невозможно проверить LoS или рейндж цели. Также с помощью макроса нельзя проверить наличие стана/молчанки/контроля и иже с ними. Соответственно, выдвинутые тобой условия выполняться не будут.

    Ах да, еще: получение информации о твоем маусовере также нельзя выполнить с помощью макроса (за исключение базовых "nodead"/"harm" и прочего).

  3. #3
    Новичок Аватар для sollertis
    Регистрация
    21.06.2012
    Сообщений
    10
    Поблагодарил(а)
    0
    Получено благодарностей: 5 (сообщений: 1).
    Репутация: 5
    Большое спасибо за ответ.
    Есть функция CheckInteractDistance которая проверяет на несколько значений дистанции, например на 28 м... и это таки нам подходит.
    Короче, прежде чем говорить "нельзя", пере проверяйте свою информацию.
    Видимо особо смысла шарится тут Нет на форуме , ибо вменяемого ответа никто не даст.
    + Модеры, Примите к сведению , предмодерация каждого поста в разделе макросов, приводит к тому что раздел мёртвый. Ждать сутки пока твоё сообщение прочтут и одобрят (прям форум "белого дома") , чудесно , лучше не придумаешь.

  4. #4
    Новичок Аватар для sollertis
    Регистрация
    21.06.2012
    Сообщений
    10
    Поблагодарил(а)
    0
    Получено благодарностей: 5 (сообщений: 1).
    Репутация: 5
    /use [@mouseover]Оберегающий дух
    /run
    k,v,s=" {Череп} ","mouseover","47788";
    m=SendChatMessage;
    L=GetSpellLink(s);
    _,d=GetSpellCooldown(s);
    r=IsSpellInRange(GetSpellInfo(s),v);
    if
    d<2 and r==1 then m(k..L.." на "..UnitName(v)..k,"yell",nil);
    end;

    В свёрнутом состоянии 240 символов, пришлось отказатся от оповещения в Пм, LoS спелла проверить не удается, проверка на дистанцию и кд решена.

  5. #5
    Новичок
    Регистрация
    16.08.2012
    Сообщений
    1
    Поблагодарил(а)
    0
    Получено благодарностей: 0 (сообщений: 0).
    Репутация: 0
    для проверки дистанции лучше использовать IsSpellInRange(47788, "target") вернёт 1 в случае успеха, 0 если не достаем и nil (!) если цель неверная (например цель враждебная или спел только на группу, а цель не в группе)
    LoS проверяется только на сервере
    стан и сало проверить можно через UnitAura, перечислив все подобные эффекты. В макрос не впихуемо ))

    А вобще гораздо проще сделать мини-аддон который вешает обработчик на COMBAT_LOG_EVENT и отфильтровать там события с которыми вешается твой Оберегающий дух

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •