Shestak UI
Go Back   Shestak UI > Interface Forums > Russian Community > Technical Support

Technical Support Ask for help or find solutions about ShestakUI.

Advertising

 
Thread Tools
Old 19.11.2013, 11:08   #1
 Assistant User Information

Wetxius's Avatar
Bug Шляпа для сафари

Авто надевание шляпы для сафари не работает. Она надевается слишком поздно, поэтому бонусный опыт не дают.
Шляпу надо надевать до начала битвы. Там идет эвент начала PET_BATTLE_OPENING_START и сразу с ним теряется контроль над персонажем, то есть нельзя одевать шляпу. Ближайший эвент PET_BATTLE_PET_ROUND_RESULTS. Я с ним тестил, но это тоже поздно. Нужно до PET_BATTLE_OPENING_START видать, а там только PLAYER_TARGET_CHANGED с проверками типа петов.

lua Code [Select]:
local T, C, L, _ = unpack(select(2, ...))
if C.automation.safari_hat ~= true then return end

----------------------------------------------------------------------------------------
--  Auto equip Safari Hat
----------------------------------------------------------------------------------------
local frame = CreateFrame("Frame"), hat, show
frame:RegisterEvent("PLAYER_TARGET_CHANGED")
frame:RegisterEvent("PET_BATTLE_CLOSE")
frame:SetScript("OnEvent", function(self, event)
    if event == "PLAYER_TARGET_CHANGED" and not hat then
        if UnitIsWildBattlePet("target") and not InCombatLockdown() then
            if ShowingHelm() then
                show = true
            else
                show = false
            end
            if GetItemCount(92738) > 0 then
                hat = GetInventoryItemLink("player", 1)
                EquipItemByName(92738)
                ShowHelm(true)
            end
        end
    elseif event == "PET_BATTLE_CLOSE" or (event == "PLAYER_TARGET_CHANGED" and not C_PetBattles.IsInBattle()) then
        if hat then
            EquipItemByName(hat)
            ShowHelm(show)
            hat = nil
        end
    end
end)
Say Thank:
Shestak (23.11.2013)
Old 19.11.2013, 11:08   #1.5 - Disable Ads

Advertise on this site

Old 19.11.2013, 12:47   #2
Shestak
 Junior Member User Information

Shestak's Avatar
А не выбирать в цель можно? Или изначально нужно выбрать в цель? (я к тому, что мб как-то можно обойти этот код, и тогда он не будет срабатывать). Не?
Old 19.11.2013, 13:32   #3
Wetxius
 Assistant User Information

Wetxius's Avatar
Не, там же мы кликаем правой кнопкой для начала боя с петов, и автоматом берется цель. В теории сработает всегда (и я тестил вчера/сегодня одевает)

Добавлено через 19 минут
https://github.com/Shestak/ShestakUI...0664d3c536d8e1
Обновил
Says Thank:
Oldslacker (19.11.2013), Shestak (19.11.2013)
Old 19.11.2013, 23:44   #4
newbie
 Elder Member User Information

newbie's Avatar
Quote:
Originally Posted by Wetxius View Post
Не, там же мы кликаем правой кнопкой для начала боя с петов, и автоматом берется цель. В теории сработает всегда (и я тестил вчера/сегодня одевает)

Добавлено через 19 минут
https://github.com/Shestak/ShestakUI...0664d3c536d8e1
Обновил
Старый вариант исправно работает, выкачал с ним уже 400 петов до 25 лвл
После этого обновления шапка перестала одеваться, пришлось откатиться до старой версии
Аддоны все отключал, кэш и втф чистил.
Old 20.11.2013, 10:14   #5
Wetxius
 Assistant User Information

Wetxius's Avatar
Вы проверяли 10% бонус? У меня со старым вариантов опыт не давался. И новый вариант у меня исправно работает
P.S. Как мне воспроизвести не надевание шляпы?
Old 20.11.2013, 23:34   #6
newbie
 Elder Member User Information

newbie's Avatar
Только что потестил на Серое копытце, за победу над ним дают фиксированное количество опыта
Старый код: шляпа одевается, бонус к опыту есть http://i.imgur.com/QT6XnMD.jpg
Новый код: шляпа не одевается, бонусного опыта соответственно тоже нет http://i.imgur.com/dJ8W8Vd.jpg

Как воспроизвести? не знаю, мб вступить в бой с укротителем или любым другим диким петом
Old 21.11.2013, 10:23   #7
Wetxius
 Assistant User Information

Wetxius's Avatar
Слетал я к Но-Но, и у меня оделась шапка.
И серое копытце тоже шапка оделась. Делаю правый клик на пета, идет выбор таргета, значит код сработает.
Для укротителей работать естественно не будет, тк там таргет не пет.
Old 23.11.2013, 14:41   #8
Wetxius
 Assistant User Information

Wetxius's Avatar
Добавил проверку для укротителей.
Код выполняется, когда у вас в таргете укротитель, и окошко на подтверждение битвы.
Если кого из списка нет, просьба сообщать.
Says Thank:
newbie (24.11.2013), Shestak (23.11.2013)
Old 24.10.2014, 12:20   #9
Wetxius
 Assistant User Information

Wetxius's Avatar
Хм, теперь шляпа для сафари не надевается. При использовании вешает бафф без времени.
Соответственно, старый код теперь не работает. А функция использования предметов у Близзов заблокирована. Надо подумать, как теперь напоминать, что баф отсутствует. Может вывод в чат, или рейд анонс, как для BadGear.

Добавлено через 15 минут
lua Code [Select]:
local SafariHatCheck = CreateFrame("Frame")
SafariHatCheck:RegisterEvent("PET_BATTLE_OPENING_DONE")
SafariHatCheck:SetScript("OnEvent", function()
    local name = GetSpellInfo(158486)
    if not UnitAura("player", name) and GetItemCount(92738) > 0 then
        -- PlaySound("RaidWarning", "master")
        PlaySoundFile(C.media.warning_sound, "Master")
        RaidNotice_AddMessage(RaidWarningFrame, NO.." "..GetSpellLink(158486).."!", {r = 0.41, g = 0.8, b = 0.94}, 3)
        print(NO.." "..GetSpellLink(158486).."!")
    end
end)
Такой код, на старте битвы петов идет анонс. Можно открыть сумку, и бафнуть шляпу.
Say Thank:
Shestak (25.10.2014)
Old 09.02.2018, 16:46   #10
Wetxius
 Assistant User Information

Wetxius's Avatar
Может кто затестить код для показа кнопки шляпы?

lua Code [Select]:
local frame = CreateFrame("Frame")
frame:RegisterEvent("ADDON_LOADED")
frame:SetScript("OnEvent", function(self, event, addon)
    if addon == "Blizzard_Collections" then
        if not PlayerHasToy(92738) then return end
        local button = CreateFrame("Button", "PetJournalSafariButton", PetJournal, "SecureActionButtonTemplate, ActionButtonTemplate")
        button.icon:SetTexture("Interface\\Icons\\inv_helm_cloth_petsafari_a_01")
        button:SetAttribute("type", "toy")
        button:SetAttribute("toy", 92738)
        if C.skins.blizzard_frames == true then
            button:SetPoint("TOPLEFT", PetJournal, "TOPRIGHT", 1, 0)
            button:SetTemplate("Default")
            button:StyleButton()
            button:SetNormalTexture(nil)
            button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
            button.icon:ClearAllPoints()
            button.icon:SetPoint("TOPLEFT", 2, -2)
            button.icon:SetPoint("BOTTOMRIGHT", -2, 2)
        else
            button:SetPoint("TOPLEFT", PetJournal, "TOPRIGHT", 3, -24)
        end

        button:SetScript("OnEnter", function(self)
            GameTooltip:SetOwner(self, "ANCHOR_BOTTOMRIGHT")
            GameTooltip:SetToyByItemID(92738)
        end)

        button:SetScript("OnLeave", function()
            GameTooltip:Hide()
        end)
    end
end)
Код положить в файл ShestakUI\Core\Temp.lua
Интересует, срабатывает ли надевание по клику.
Say Thank:
Shestak (13.02.2018)

Tags
баг, сафари

Thread Tools



Mobile Style Русский English Deutsch Italian Chinese