Add files via upload
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
-- SuperWoW GUID probe.
|
||||
-- This module does not alter aura tracking or rendering. It only inspects the
|
||||
-- extended UnitExists return value and the unit token exposed by nameplates.
|
||||
|
||||
local function CleanText(text)
|
||||
if not text then return nil end
|
||||
text = string.gsub(text, "|c%x%x%x%x%x%x%x%x", "")
|
||||
text = string.gsub(text, "|r", "")
|
||||
return text
|
||||
end
|
||||
|
||||
local function SafePlateToken(plate)
|
||||
if not plate or not plate.GetName then return nil end
|
||||
|
||||
-- SuperWoW extends frame:GetName(index). ShaguTweaks already uses
|
||||
-- plate:GetName(1) for its SuperWoW nameplate castbar implementation.
|
||||
local ok, token = pcall(function() return plate:GetName(1) end)
|
||||
if ok then return token end
|
||||
return nil
|
||||
end
|
||||
|
||||
local function UnitExistsData(unit)
|
||||
if not unit then return nil, nil end
|
||||
local ok, exists, guid = pcall(UnitExists, unit)
|
||||
if not ok then return nil, nil end
|
||||
return exists, guid
|
||||
end
|
||||
|
||||
function BNP:GetSuperWoWGUID(unit)
|
||||
local exists, guid = UnitExistsData(unit)
|
||||
if exists and guid then return guid end
|
||||
return nil
|
||||
end
|
||||
|
||||
function BNP:GetPlateSuperWoWData(plate)
|
||||
local token = SafePlateToken(plate)
|
||||
local exists, guid = UnitExistsData(token)
|
||||
return token, exists, guid
|
||||
end
|
||||
|
||||
function BNP:PrintGUIDDiagnostic()
|
||||
BNP:Print("=== SuperWoW GUID Diagnose ===")
|
||||
|
||||
local targetName = UnitName("target")
|
||||
local targetExists, targetGUID = UnitExistsData("target")
|
||||
BNP:Print("Target: " .. tostring(targetName or "kein Ziel"))
|
||||
BNP:Print("UnitExists(target): " .. tostring(targetExists) .. " | GUID: " .. tostring(targetGUID))
|
||||
|
||||
local visible = 0
|
||||
local sameName = 0
|
||||
local guidMatches = 0
|
||||
local index = 0
|
||||
|
||||
for plate in pairs(BNP.plates) do
|
||||
if plate and plate:IsShown() then
|
||||
visible = visible + 1
|
||||
local plateName = plate.name and plate.name.GetText and CleanText(plate.name:GetText()) or nil
|
||||
|
||||
if not targetName or plateName == targetName then
|
||||
sameName = sameName + 1
|
||||
index = index + 1
|
||||
local token, exists, guid = BNP:GetPlateSuperWoWData(plate)
|
||||
if targetGUID and guid and targetGUID == guid then guidMatches = guidMatches + 1 end
|
||||
|
||||
BNP:Print("Plate " .. index .. ": " .. tostring(plateName))
|
||||
BNP:Print(" Token: " .. tostring(token) .. " | Exists: " .. tostring(exists))
|
||||
BNP:Print(" GUID: " .. tostring(guid) .. " | Target-Match: " .. tostring(targetGUID and guid == targetGUID or false))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
BNP:Print("Sichtbar: " .. visible .. " | gleicher Name: " .. sameName .. " | GUID-Matches: " .. guidMatches)
|
||||
end
|
||||
Reference in New Issue
Block a user