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

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

Страница 3 из 3 ПерваяПервая 123
Показано с 25 по 27 из 27

Тема: Карта!

  1. #25
    Почетный флудер Аватар для Artur91425
    Регистрация
    25.10.2012
    Адрес
    Россия
    Сообщений
    2,783
    Поблагодарил(а)
    339
    Получено благодарностей: 553 (сообщений: 389).
    Репутация: 1042
    Поправил тултип и видоизменил формат ХП. Проблем с тултипом не должно быть больше никаких. В формат записываешь все так, как хочешь видеть.
    %.2f - цифра показывает количество знаков после запятой
    Если хочешь выводить знак процента, то нужно писать такую конструкцию %%%%
    Отсальные символы вроде можешь писать прям как они есть. В любом случае, если формат будет написан некорректно, то в игре получишь ошибку или будет кривое отображение текста.
    Код:
    local SETTINGS = {
      BLIP_TEXTURE = 'Interface\\Minimap\\PartyRaidBlips.blp',
      WorldMap = {
        UnitButtonSize = 16, -- default - 16
        CurrentHP = {
          show = true,
          format = '|cffffffff[%.2f%%%%]|r',
        },
      },
      BattlefieldMinimap = {
        UnitButtonSize = 12, -- default - 12
        CurrentHP = {
          show = true,
          format = '|cffffffff[%.2f%%%%]|r',
        },
      },
      Minimap = {
        ShowPingName = true,
      }
    }
    
    local select = select
    local UnitIsPlayer, UnitClass, UnitName = UnitIsPlayer, UnitClass, UnitName
    local GetNumRaidMembers, UnitInParty, CreateFrame = GetNumRaidMembers, UnitInParty, CreateFrame
    
    local BLIP_TEX_COORDS = {
      ['WARRIOR'] = { 0, 0.125, 0, 0.25 },
      ['PALADIN'] = { 0.125, 0.25, 0, 0.25 },
      ['HUNTER'] = { 0.25, 0.375, 0, 0.25 },
      ['ROGUE'] = { 0.375, 0.5, 0, 0.25 },
      ['PRIEST'] = { 0.5, 0.625, 0, 0.25 },
      ['DEATHKNIGHT'] = { 0.625, 0.75, 0, 0.25 },
      ['SHAMAN'] = { 0.75, 0.875, 0, 0.25 },
      ['MAGE'] = { 0.875, 1, 0, 0.25 },
      ['WARLOCK'] = { 0, 0.125, 0.25, 0.5 },
      ['DRUID'] = { 0.25, 0.375, 0.25, 0.5 }
    }
    
    local BLIP_RAID_Y_OFFSET = 0.5
    
    -- add hex string to RAID_CLASS_COLORS
    for _, v in pairs(RAID_CLASS_COLORS) do
      v.colorStr = ("ff%.2x%.2x%.2x"):format(v.r * 255, v.g * 255, v.b * 255)
    end
    
    local function GetColoredName(unit)
      local name = UnitName(unit)
      local class = select(2, UnitClass(unit))
      local colorHexString = RAID_CLASS_COLORS[class].colorStr
      local coloredName = ('|c%s%s|r'):format(colorHexString, name)
      return name, coloredName
    end
    
    local function ColoringUnit(text, unit)
      local name, coloredName = GetColoredName(unit)
      return text:gsub(name, coloredName)
    end
    
    local function AddCurrentHP(text, unit, frame)
      if not SETTINGS[frame].CurrentHP.show then return text end
      local name = UnitName(unit)
      local HP = SETTINGS[frame].CurrentHP.format:format(UnitHealth(unit) / UnitHealthMax(unit) * 100)
      return text:gsub(name, '%1 '..HP)
    end
    
    -- replace texture
    local function OnLoad(frame)
      local size = SETTINGS[frame].UnitButtonSize
      for i=1,4 do
        local partyUnitButton = _G[frame..'Party'..i]
        partyUnitButton:SetSize(size, size)
        partyUnitButton.icon:SetTexture(SETTINGS.BLIP_TEXTURE)
      end
      for i=1,40 do
        local raidUnitButton = _G[frame..'Raid'..i]
        raidUnitButton:SetSize(size, size)
        raidUnitButton.icon:SetTexture(SETTINGS.BLIP_TEXTURE)
      end
    
      -- draw a PvP flag above the player arrow
      WorldMapFlag1:SetFrameStrata('HIGH')
      WorldMapFlag2:SetFrameStrata('HIGH')
    end
    
    -- set the correct texture depending on the class
    local function OnUpdate(self)
      local unit = self.unit
      if not UnitIsPlayer(unit) then return end
    
      local class = select(2, UnitClass(unit))
      local coord = BLIP_TEX_COORDS[class]
      if GetNumRaidMembers() > 0 then
        if UnitInParty(unit) then
          self.icon:SetTexCoord(coord[1], coord[2], coord[3], coord[4])
        else
          self.icon:SetTexCoord(coord[1], coord[2], coord[3] + BLIP_RAID_Y_OFFSET, coord[4] + BLIP_RAID_Y_OFFSET)
        end
      else
        self.icon:SetTexCoord(coord[1], coord[2], coord[3], coord[4])
      end
    end
    
    -- coloring nicknames
    local function OnEnter(self, frame)
      local tooltip = frame == 'BattlefieldMinimap' and GameTooltip or WorldMapTooltip
      local tooltipText = _G[tooltip:GetName()..'TextLeft1']:GetText()
      local unit_type, max_members
      if GetNumRaidMembers() > 0 then
        unit_type = 'raid'
        max_members = MAX_RAID_MEMBERS
      else
        unit_type = 'party'
        max_members = MAX_PARTY_MEMBERS
      end
      for i=1, max_members do
        if UnitName(unit_type..i) then
          tooltipText = AddCurrentHP(tooltipText, unit_type..i, frame)
          tooltipText = ColoringUnit(tooltipText, unit_type..i)
        end
      end
      tooltip:SetText(tooltipText)
      tooltip:Show()
    end
    
    do -- WorldMap
      OnLoad('WorldMap')
      hooksecurefunc('WorldMapUnit_Update', OnUpdate)
      hooksecurefunc('WorldMapUnit_OnEnter', function(self)
        OnEnter(self, 'WorldMap')
      end)
    end
    
    do -- BattlefieldMinimap
      local f = CreateFrame('Frame')
      f:RegisterEvent('ADDON_LOADED')
      f:SetScript('OnEvent', function(self, event, addon)
        if addon ~= 'Blizzard_BattlefieldMinimap' then return end
        OnLoad('BattlefieldMinimap')
        hooksecurefunc('BattlefieldMinimap_OnUpdate', OnUpdate)
        hooksecurefunc('BattlefieldMinimapUnit_OnEnter', function(self)
          OnEnter(self, 'BattlefieldMinimap')
        end)
      end)
    end
    
    do -- Minimap
      if SETTINGS.Minimap.ShowPingName then
        local MinimapPingTooltip = CreateFrame("GameTooltip", '$parentName', MinimapPing, 'GameTooltipTemplate')
        MinimapPing:HookScript('OnEvent', function(self, event, unit)
          if event ~= "MINIMAP_PING" or not unit then return end
          local class = select(2, UnitClass(unit))
          local color = RAID_CLASS_COLORS[class]
          MinimapPingTooltip:SetOwner(MinimapPing, 'ANCHOR_BOTTOM', 0, 15)
          MinimapPingTooltip:SetText(UnitName(unit), color.r, color.g, color.b)
          MinimapPingTooltip:Show()
        end)
      end
    end

  2. 3 пользователей сказали cпасибо Artur91425 за это полезное сообщение:

    (Станислав) (15.06.2021),Anorver (18.06.2021),HA1DEKS (14.06.2021)

  3. #26
    Местный
    Регистрация
    31.08.2014
    Сообщений
    33
    Поблагодарил(а)
    23
    Получено благодарностей: 3 (сообщений: 3).
    Репутация: 3
    А можно портировать из более поздних дополнений, возможность отображение на миникарте выделенной цели?

    fed1fba028208720f6241e64760b72d7.jpg
    Последний раз редактировалось Ruswon; 15.06.2021 в 14:02.

  4. #27
    Гуру Аватар для 6Grimmjow6
    Регистрация
    23.07.2014
    Сообщений
    398
    Поблагодарил(а)
    825
    Получено благодарностей: 106 (сообщений: 79).
    Репутация: 2474
    Цитата Сообщение от Ruswon Посмотреть сообщение
    А можно портировать из более поздних дополнений, возможность отображение на миникарте выделенной цели?

    fed1fba028208720f6241e64760b72d7.jpg
    Тоже интересует эта тема.

    Также ещё интересует вот что: тут была тема с патчем на убирание трекинга дружественных мобов на карте; можно ли выпилить трекинг союзных гуманоидов-игроков? Я так понимаю, что это непросто выполнить, парой строк кода не обойтись?

Страница 3 из 3 ПерваяПервая 123

Ваши права

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