
Сообщение от
Xайдекс
Есть еще такая штука в сексимапе, показывающая никнеймы пингующих игроков, этого очень сильно не хватает стандартной миникарте)
Вложение 943417
Вот (прям из сексимапа последнего перенес):
Код:
local UnitName, UnitClass = UnitName, UnitClass
local MinimapPingName = CreateFrame("Frame", "&parentName", MinimapPing)
MinimapPing.name = MinimapPingName
MinimapPingName:SetBackdrop({
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
insets = {left = 4, top = 4, right = 4, bottom = 4},
edgeSize = 16,
tile = true,
})
MinimapPingName:SetBackdropColor(0,0,0,0.8)
MinimapPingName:SetBackdropBorderColor(0,0,0,0.6)
MinimapPingName:SetPoint("TOP", MinimapPing, "BOTTOM", 0, 15)
MinimapPingName:SetFrameStrata("HIGH")
MinimapPingName.text = MinimapPingName:CreateFontString(nil, "ARTWORK", "GameFontNormalSmall")
MinimapPingName.text:SetAllPoints()
MinimapPing:HookScript('OnEvent', function(self, event, unit)
if event ~= "MINIMAP_PING" or not unit then return end
local _, class = UnitClass(unit)
local color = class and RAID_CLASS_COLORS[class] or GRAY_FONT_COLOR
self.name.text:SetFormattedText("|cFF%02x%02x%02x%s|r", color.r * 255, color.g * 255, color.b * 255, UnitName(unit))
self.name:SetSize(self.name.text:GetStringWidth() + 12, self.name.text:GetStringHeight() + 10)
end)
- - - Updated - - -
Кстати, нашел более качественные текстуры
Capture1.PNG
https://www.dropbox.com/s/swrsao8n5a...Blips.tga?dl=0
Чтобы их использовать достаточно указать путь до этой новой текстуры.
Код:
тут
partyUnitButton.icon:SetTexture(...)
и тут
raidUnitButton.icon:SetTexture(...)
- - - Updated - - -
Добавил поддержку BattlefieldMinimap (карта, которая отображается по Shift + M)
WoWScrnShot_061321_203639.jpg
Теперь для корректировки размера иконок две переменные WORLDMAP_UNITBUTTON_TEXTURE_SIZE и BATTLEFIELDMINIMAP_UNITBUTTON_TEXTURE_SIZE
Менять размер можно все также в самом файле или из игры с помощью макроса
Код:
/run WORLDMAP_UNITBUTTON_TEXTURE_SIZE = <значение>
или
/run BATTLEFIELDMINIMAP_UNITBUTTON_TEXTURE_SIZE = <значение>
Код:
WORLDMAP_UNITBUTTON_TEXTURE_SIZE = 16 -- default - 16
BATTLEFIELDMINIMAP_UNITBUTTON_TEXTURE_SIZE = 12 -- default - 12
local select = select
local GetNumRaidMembers, UnitIsPlayer, UnitClass, UnitInParty, PlayerIsPVPInactive = GetNumRaidMembers, UnitIsPlayer, UnitClass, UnitInParty, PlayerIsPVPInactive
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
local function OnLoad(frame)
local size = frame == "BattlefieldMinimap" and BATTLEFIELDMINIMAP_UNITBUTTON_TEXTURE_SIZE or WORLDMAP_UNITBUTTON_TEXTURE_SIZE
for i=1,4 do
local partyUnitButton = _G[frame.."Party"..i]
partyUnitButton:SetSize(size, size)
partyUnitButton.icon:SetTexture('Interface\\Minimap\\PartyRaidBlips.blp')
end
for i=1,40 do
local raidUnitButton = _G[frame.."Raid"..i]
raidUnitButton:SetSize(size, size)
raidUnitButton.icon:SetTexture('Interface\\Minimap\\PartyRaidBlips.blp')
end
end
local function OnUpdate(self)
local unit = self.unit
if not UnitIsPlayer(unit) then return end
local class = select(2, UnitClass(unit))
if GetNumRaidMembers() > 0 then
if UnitInParty(unit) then
self.icon:SetTexCoord(
BLIP_TEX_COORDS[class][1],
BLIP_TEX_COORDS[class][2],
BLIP_TEX_COORDS[class][3],
BLIP_TEX_COORDS[class][4]
)
else
self.icon:SetTexCoord(
BLIP_TEX_COORDS[class][1],
BLIP_TEX_COORDS[class][2],
BLIP_TEX_COORDS[class][3] + BLIP_RAID_Y_OFFSET,
BLIP_TEX_COORDS[class][4] + BLIP_RAID_Y_OFFSET
)
end
else
self.icon:SetTexCoord(
BLIP_TEX_COORDS[class][1],
BLIP_TEX_COORDS[class][2],
BLIP_TEX_COORDS[class][3],
BLIP_TEX_COORDS[class][4]
)
end
end
local function OnEnter(self)
local unit = self.unit
if not UnitIsPlayer(unit) then return end
local tooltip = self:GetName():find("BattlefieldMinimap") and WorldMapTooltip or GameTooltip
local tooltipText = ""
local class = select(2, UnitClass(unit))
local color = RAID_CLASS_COLORS[class]
local coloredName = ("|cFF%02x%02x%02x%s|r"):format(color.r * 255, color.g * 255, color.b * 255, UnitName(unit))
if PlayerIsPVPInactive(unit) then
tooltipText = PLAYER_IS_PVP_AFK:format(coloredName)
else
tooltipText = coloredName
end
tooltip:SetText(tooltipText)
tooltip:Show()
end
do -- WorldMap
OnLoad("WorldMap")
hooksecurefunc("WorldMapUnit_Update", OnUpdate)
hooksecurefunc('WorldMapUnit_OnEnter', OnEnter)
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', OnEnter)
end)
end