Собственно вот вопрос.
При каких условиях бот считывает роли группы как танк/лекарь?
Сделано это через бафы/ауры на членах группы или же через фрейм?
И еще возможно ли считывать ауры/бафы/таланты с члена рейда в 3.3.5 версиях для определения роли?
Проблема в большинстве своем с протоваром. его защитная стойка считается аурой и ее в бафах не указать у остальных же это просто баф
-Облик медведя
-Власть льда
-Праведное неистовство
Вопрос по определеню роли в рейде на классике.
Re: Вопрос по определеню роли в рейде на классике.
Код: Выделить всё
function GetPlayerRole(unit)
if not UnitExists(unit) then return "UNKNOWN" end
local _, class = UnitClass(unit)
local spec = GetSpecialization(unit)
-- Таблица соответствия классов и спеков ролям
local roleMap = {
WARRIOR = {[1] = "TANK", [2] = "DPS", [3] = "DPS"},
PALADIN = {[1] = "HEALER", [2] = "TANK", [3] = "DPS"},
DRUID = {[1] = "TANK", [2] = "DPS", [3] = "HEALER", [4] = "DPS"},
PRIEST = {[1] = "HEALER", [2] = "HEALER", [3] = "DPS"},
DEATHKNIGHT = {[1] = "TANK", [2] = "DPS", [3] = "DPS"},
-- Добавьте остальные классы по необходимости
}
-- Проверка баффов/аур
local function HasBuff(buffName)
for i = 1, 40 do
local name = UnitBuff(unit, i)
if name == buffName then return true end
end
return false
end
-- Проверка специфичных условий
if class == "WARRIOR" and HasBuff("Защитная стойка") then
return "TANK"
elseif class == "DRUID" and HasBuff("Облик медведя") then
return "TANK"
elseif class == "DEATHKNIGHT" and HasBuff("Власть льда") then
return "TANK"
elseif class == "PALADIN" and HasBuff("Праведное неистовство") then
return "TANK"
end
return roleMap[class] and roleMap[class][spec] or "DPS"
end
Данная функция считывает и сравнивает с теми то что есть в игре с теми что внесены в Таблицу соответствия классов и спеков ролям.
если будет не соответствие то вернет - "UNKNOWN". Например несоответствие может быть по причине языкового клиента WOW.
возвращаемые значения:
Для воина в защитной стойке: "TANK"
Для друида в облике медведя: "TANK"
Для жреца со специализацией Свет или Послушание: "HEALER"
Для мага (любая специализация): "DPS"
Для несуществующего юнита: "UNKNOWN"
и еще обязательно переделать входной параметр:
"player" - сам игрок
"target" - текущая цель игрока
"mouseover" - объект, над которым находится курсор мыши
"party1" до "party4" - члены группы (в группе до 5 человек)
"raid1" до "raid40" - члены рейда (в рейде до 40 человек)
"pet" - питомец игрока
"focus" - фокус игрока
Пример вызова функции:
GetPlayerRole("player") и сравнивать значения через пользовательский код в боте
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость