Проверка на количество целей

kio57
Сообщения: 250
Зарегистрирован: 14 дек 2017, 13:01

Проверка на количество целей

Сообщение kio57 » 04 май 2024, 11:05

Привет всем. Близы запретили отслеживание по условию (Количество целей по заклинанию(АОЕ)) ?
Сегодня перестало работать у меня во всех сборках. Создание новой сборки с одним условием тоже это подтверждает(
Подскажите пожалуйста как то можно ещё это условие отследить?
Вложения
Снимок экрана 2024-05-04 140526.png
Снимок экрана 2024-05-04 140526.png (30.83 КБ) 184 просмотра

noname123
Сообщения: 134
Зарегистрирован: 19 мар 2020, 09:15

Re: Проверка на количество целей

Сообщение noname123 » 05 май 2024, 13:34

Привет.

Отслеживать необходимость клива можно через спелл пета "Кровавая стрела" https://www.wowhead.com/ru/spell=288962 ... 0%BB%D0%B0
Эта способность есть у питомцев "Кровавое чудовище". Чтобы этих петов приручать нужно выбить https://www.wowhead.com/ru/item=166502/ ... 0%BC%D1%8B падает он с Зула в Ульдире. Как только выбил фолик, то можно по соседству зайти в Подгнилье и приручить там второго босса.
Как только пет получен с этой способностью, то нужно её вынести на панель своих спеллов (не петовская панель). И через пользовательский код ниже можно получать количество мобов в радиусе 10м относительно своих петов.
p.s. Не обязательно бегать с питомцем с этой способностью, главное чтобы эта способность находилась на твоей близовской панеле.

Код: Выделить всё

function BeastCleavePetCount()
local UnitsInRange = 0
local spells = {
    [1] = {id = 288962, name = "Кровавая стрела", range = 10},
    [2] = {id = 16827, name = "Цапнуть", range = 5},
    [3] = {id = 17253, name = "Укус", range = 5},
    [4] = {id = 49966, name = "Хлопок", range = 5},
}
local getSpellActionSlot = function(spellId)
    for i = 1, 180 do
        local actionType, id = GetActionInfo(i)
        if actionType == "spell" and id == spellId then
            return i
        end
    end
end
local choosePriorityActionSlot = function()
    for i = 1, 4 do
        local actionSlot = getSpellActionSlot(spells[i].id)
        if actionSlot then
            --print(spells[i].name .. " (" .. spells[i].range .. "yd) will be used for Beast Cleave Tracking.")
            return actionSlot
        end
    end
    --print("No valid spell found to track Beast Cleave.")
end
local actionSlot = choosePriorityActionSlot()
 for i = 1,40 do
  if UnitExists("nameplate"..i) then
   if IsActionInRange(actionSlot,"nameplate"..i) and UnitCanAttack("player", "nameplate"..i) then
    UnitsInRange = UnitsInRange + 1
   end
  end
 end
 return UnitsInRange
end
На всякий случай объясню как этот код работает. Он проверяет все близовские слоты на которые выносятся заклинания. Находит (нужно самому предварительно разместить) дамажащий спелл питомца (Кровавая стрела, Цапнуть, Укус или Хлопок) и возвращает количество мобов до которых достаёт найденная способность (нэймплейты мобов должны быть включены). Для наилучшего результата лучше использовать на панели спелл "Кровавая стрела".

p.s. в середине кода можешь у "--print..." убрать "--" чтобы через чатик посмотреть была ли найдена способность пета на панели спеллов.
Последний раз редактировалось noname123 05 май 2024, 20:46, всего редактировалось 2 раза.

kio57
Сообщения: 250
Зарегистрирован: 14 дек 2017, 13:01

Re: Проверка на количество целей

Сообщение kio57 » 05 май 2024, 19:10

noname123 писал(а):
05 май 2024, 13:34
Привет.

Отслеживать необходимость клива можно через спелл пета "Кровавая стрела"
Вроде разобрался. спасибо огромное! не очень только понял насчёт "--print". Бот в чат спамит не переставая эту фразу. Вернул --
Сработало даже с обычным петом через "цапнуть" и даже без выноса на панельку этой кнопки. Понимаю, что радиус АОЕ уменьшен вдвое, но пока нет кровавого пета - работает.
Ещё раз спасибо. Пошёл приручать

kio57
Сообщения: 250
Зарегистрирован: 14 дек 2017, 13:01

Re: Проверка на количество целей

Сообщение kio57 » 05 май 2024, 19:44

Получил пета. Не очень понимаю изменилось ли что-то) так же работает в мили с мобами. так же спамит нонстопом в чат при удалении "--"
Просто вынести на ЛЮБУЮ панель эту кнопку с плевком?

noname123
Сообщения: 134
Зарегистрирован: 19 мар 2020, 09:15

Re: Проверка на количество целей

Сообщение noname123 » 05 май 2024, 20:19

То что ты убираешь "--" это нужно для того чтобы посмотреть в чате найден твой спелл петовский или нет. Если написано что спелл был найден (там пишется название спелла и дистанция его), то всё ок. Можно обратно ставить "--" чтобы не спамило. Это чисто для РАЗОВОЙ проверки.

Если допустим у тебя никакого спелла не было найдено петовского (и соответственно пользовательский код не будет работать), то в чате в таком случае будет надпись "No valid spell found to track Beast Cleave." и ты уже понимал бы что что то пошло не так. Допустим я первый раз на Elvui панельку когда вынес спелл, то он у меня не определился и я понял это по этой надписи.

kio57
Сообщения: 250
Зарегистрирован: 14 дек 2017, 13:01

Re: Проверка на количество целей

Сообщение kio57 » 05 май 2024, 20:39

noname123 писал(а):
05 май 2024, 20:19
То что ты убираешь "--" это нужно для того чтобы посмотреть в чате найден твой спелл петовский или нет. Если написано что спелл был найден (там пишется название спелла и дистанция его), то всё ок. Можно обратно ставить "--" чтобы не спамило. Это чисто для РАЗОВОЙ проверки.

Если допустим у тебя никакого спелла не было найдено петовского (и соответственно пользовательский код не будет работать), то в чате в таком случае будет надпись "No valid spell found to track Beast Cleave." и ты уже понимал бы что что то пошло не так. Допустим я первый раз на Elvui панельку когда вынес спелл, то он у меня не определился и я понял это по этой надписи.
Всегда пишет в чат: No valid spell found to track Beast Cleave. сообщений по 10 в секунду.
на панельку боковую вынес и цапнуть и кровавую плевалку

noname123
Сообщения: 134
Зарегистрирован: 19 мар 2020, 09:15

Re: Проверка на количество целей

Сообщение noname123 » 05 май 2024, 20:43

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

Если всё нормально, то должна спамиться надпись вроде такой "Кровавая стрела (10yd) will be used for Beast Cleave Tracking."

kio57
Сообщения: 250
Зарегистрирован: 14 дек 2017, 13:01

Re: Проверка на количество целей

Сообщение kio57 » 06 май 2024, 06:12

noname123 писал(а):
05 май 2024, 20:43
Да, я уже на ханта зашёл глянуть и сам удивился что не работает код. Видимо когда подчищал его лишнего удалил и не заметил. В первом сообщении всё исправил. Попробуй заменить, сохранить и перезагрузить интерфейс.

Если всё нормально, то должна спамиться надпись вроде такой "Кровавая стрела (10yd) will be used for Beast Cleave Tracking."
Перестало спамить при любых условиях) ну да ладно. всё равно отключал бы скорее всего) Ещё раз спасибо. А реально такой код переделать под другие аое спелы других классов? раз отключили условие (количество существ в радиусе) - было бы очень полезно. Что надо где заменить на нужную абилку в коде? если можно конечно это сделать

noname123
Сообщения: 134
Зарегистрирован: 19 мар 2020, 09:15

Re: Проверка на количество целей

Сообщение noname123 » 06 май 2024, 06:39

А ты удалял "--" перед "print" ? тоже не спамит ? Если без минусов перед принтом тоже не спамит значит код не работает и надо бы найти причину). С принтом вообще не спамить должно только в одном случае, если в сборке условия нету с этой функцией.
Код то в итоге работает у тебя этот ?


А так да, проверку рэнджи через игрушки отключили во время боя и все разработчики вашек и аддонов у кого была такая функция переработали её добавив проверку рэнджи через собственные спеллы.

Возвращает количество юнитов в бою в радиусе выбранного спелла.

Код: Выделить всё

function CheckUnitsInSpellRange(spellid)
 local UnitsInRange = 0
 for i = 1,40 do
  if UnitExists("nameplate"..i) then
   if MyIsSpellInRange(spellid, "nameplate"..i) == 1 and UnitAffectingCombat("nameplate"..i) then
    UnitsInRange = UnitsInRange + 1
   end
  end
 end
 return UnitsInRange
end

kio57
Сообщения: 250
Зарегистрирован: 14 дек 2017, 13:01

Re: Проверка на количество целей

Сообщение kio57 » 06 май 2024, 15:40

noname123 писал(а):
06 май 2024, 06:39
А ты удалял "--" перед "print" ? тоже не спамит ? Если без минусов перед принтом тоже не спамит значит код не работает и надо бы найти причину). С принтом вообще не спамить должно только в одном случае, если в сборке условия нету с этой функцией.
Код то в итоге работает у тебя этот ?


А так да, проверку рэнджи через игрушки отключили во время боя и все разработчики вашек и аддонов у кого была такая функция переработали её добавив проверку рэнджи через собственные спеллы.

Возвращает количество юнитов в бою в радиусе выбранного спелла.

Код: Выделить всё

function CheckUnitsInSpellRange(spellid)
 local UnitsInRange = 0
 for i = 1,40 do
  if UnitExists("nameplate"..i) then
   if MyIsSpellInRange(spellid, "nameplate"..i) == 1 and UnitAffectingCombat("nameplate"..i) then
    UnitsInRange = UnitsInRange + 1
   end
  end
 end
 return UnitsInRange
end
Работает вроде) но не спамит и это хорошо. может у меня в сборке ещё где то условия на АОЕ стоят, но вроде как нет)
За последнее спасибо ещё раз - попробую! Интересует как использовать только. В пользовательский код я вставляю, а там да или нет. Где количество целей менять? +1 где в условии снизу? То есть сейчас условие будет соблюдено если будет больше одной цели? +2 это больше двух?

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость