Азеритовые таланты: проверка наличия.

Ответить
deNoor
Сообщения: 33
Зарегистрирован: 20 янв 2018, 18:29

Азеритовые таланты: проверка наличия.

Сообщение deNoor » 26 янв 2019, 02:25

В ротации в белом поле своего кода нужно вставить это (или обновить вручную вдумчиво, если уже делаете реакцию на события).

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

AzeriteSpells = {}

local function GetAzeriteSpells()
  local slotIDs = {1, 3, 5} -- Inventory slots with azerite talents
  for _,slot in ipairs(slotIDs) do
    if GetInventoryItemID("player",slot)~=nil then
      local itemLocation = ItemLocation:CreateFromEquipmentSlot(slot)
      if C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItem(itemLocation) then
        local  allTierInfo = C_AzeriteEmpoweredItem.GetAllTierInfo(itemLocation)
        for _, tier in ipairs(allTierInfo) do
          for _, azeritePowerID in ipairs(tier.azeritePowerIDs) do
            if C_AzeriteEmpoweredItem.IsPowerSelected(itemLocation, azeritePowerID) then
              AzeriteSpells[C_AzeriteEmpoweredItem.GetPowerInfo(azeritePowerID).spellID]=true
            end
          end
        end
      end
    end
  end
end

local Eye = CreateFrame("Frame")
Eye:RegisterEvent("PLAYER_ENTERING_WORLD")
Eye:RegisterEvent("PLAYER_EQUIPMENT_CHANGED")
Eye:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED")
Eye:RegisterEvent("AZERITE_EMPOWERED_ITEM_SELECTION_UPDATED")
Eye:SetScript("OnEvent", 
  function(self, event, ...)
    if event == "PLAYER_EQUIPMENT_CHANGED" then
      GetAzeriteSpells()
    elseif event == "AZERITE_EMPOWERED_ITEM_SELECTION_UPDATED" then
      GetAzeriteSpells()
    elseif event == "PLAYER_SPECIALIZATION_CHANGED" then
      GetAzeriteSpells()
    elseif event == "PLAYER_ENTERING_WORLD" then
      GetAzeriteSpells()
      Eye:UnregisterEvent("PLAYER_ENTERING_WORLD")
    end
  end
)
Дальше в ротации можно добавлять проверки типа "пользовательский код с галкой bool и выбором TRUE", где в поле вставляется AzeriteSpells[spellID]
Например: AzeriteSpells[287059]
Тут ID это пассивное умение, которое дарует выбранный азеритовый талант. Его можно найти на вовхеде.
Когда умение есть, проверка пройдёт; когда умения нет, проверка не пройдёт.

Также можно узнать, какие спеллы у вас сейчас выбраны, написав в чат игры + Enter:

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

/dump AzeriteSpells
AZERITE_EMPOWERED_ITEM_SELECTION_UPDATED — событие изменения азеритовых талантов (как при выборе нового, так и при полном сбросе у перековщика).

Если в будущем азеритовые вещи появятся не только в шлеме, плече и груди, нужно будет обновить проверяемые номера слотов.

Ответить

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

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