Actually that may be possible via oUF.
oUF allows you to spawn units. All you need to do before is create unit style.
The unitframe layout that matches the default UI is:
http://www.wowinterface.com/download...-oUF_Neav.html
Of course you would have to edit that. What you need to create and register a style function first. This can be done like this:
Lua Code:
--unit frame layout function
local CreateStyle = function(self)
--do stuff here
end
--register the style with Ouf under a unique name
oUF:RegisterStyle("mylayout:private", CreateStyle)
Now you can use a macro to spawn the unitframe.
Lua Code:
/run oUF:SetActiveStyle("mylayout:private")
/run oUF:Spawn("NAMEOFYOURFRIEND1", "mylayoutPrivateParty1")
/run oUF:Spawn("NAMEOFYOURFRIEND2", "mylayoutPrivateParty2")
/run oUF:Spawn("NAMEOFYOURFRIEND3", "mylayoutPrivateParty3")
/run oUF:Spawn("NAMEOFYOURFRIEND4", "mylayoutPrivateParty4")
/run oUF:Spawn("NAMEOFYOURFRIEND5", "mylayoutPrivateParty5")
If your frame is dragable in any way you could just spawn it and move it into position. Or you can change that to:
Lua Code:
/run oUF:SetActiveStyle("mylayout:private")
/run oUF:Spawn("NAMEOFYOURFRIEND1", "mylayoutPrivateParty1"):SetPoint("CENTER",UIParent,"CENTER",0,200)
/run oUF:Spawn("NAMEOFYOURFRIEND2", "mylayoutPrivateParty2"):SetPoint("CENTER",UIParent,"CENTER",0,100)
/run oUF:Spawn("NAMEOFYOURFRIEND3", "mylayoutPrivateParty3"):SetPoint("CENTER",UIParent,"CENTER",0,0)
/run oUF:Spawn("NAMEOFYOURFRIEND4", "mylayoutPrivateParty4"):SetPoint("CENTER",UIParent,"CENTER",0,-100)
/run oUF:Spawn("NAMEOFYOURFRIEND5", "mylayoutPrivateParty5"):SetPoint("CENTER",UIParent,"CENTER",0,-200)
A really simple and absolute basic style function is this one:
Lua Code:
local function CreateStyle(self)
--basic frame settings
self:SetPoint("CENTER",UIParent,"CENTER",0,0)
self:SetSize(270,25)
self:SetScale(1)
--tooltip
self:SetScript("OnEnter", UnitFrame_OnEnter) --tooltip
self:SetScript("OnLeave", UnitFrame_OnLeave) --tooltip
--health bar
local health = CreateFrame("StatusBar", nil, self)
health:SetHeight(20)
health:SetWidth(270)
health:SetPoint("TOP",0,0)
health.bg = health:CreateTexture(nil, "BACKGROUND")
health.bg:SetTexture(1,1,1)
health.bg:SetAllPoints(health)
--power bar
local power = CreateFrame("StatusBar", nil, self)
power:SetHeight(5)
power:SetWidth(270)
power:SetPoint("BOTTOM",0,0)
power.bg = power:CreateTexture(nil, "BACKGROUND")
power.bg:SetTexture(1,1,1)
power.bg:SetAllPoints(power)
--name string
local name = health:CreateFontString(nil, "OVERLAY")
name:SetFont(STANDARD_TEXT_FONT, 12)
name:SetPoint("LEFT", health, 2, 0)
name:SetJustifyH("LEFT")
--hpval string
local hpval = health:CreateFontString(nil, "OVERLAY")
hpval:SetFont(STANDARD_TEXT_FONT, 12)
hpval:SetPoint("RIGHT", health, 2, 0)
hpval:SetJustifyH("RIGHT")
--fix to make sure the name gets cut if it is to long
name:SetPoint("RIGHT", hpval, "LEFT", -5, 0)
--register a tag for the name
self:Tag(name, "[name]")
self:Tag(hpval, "[perhp]")
--health settings
self.Health = health
self.Health.colorClass = true
self.Health.colorHealth = true
self.Health.bg.multiplier = 0.3
--power settings
self.Power = power
self.Power.colorPower = true
self.Power.bg.multiplier = 0.3
end