Кто-то сможет помочь произвести небольшую кастомизацию дефолтных плейтов?
1. Убрать прозрачность нейпмлейтов при активном выбранном таргете
393kd1Z1va8.jpg
2. Добавить значения хп (оставшиеся) в циферках на полоске здоровья
Спасибо
Кто-то сможет помочь произвести небольшую кастомизацию дефолтных плейтов?
1. Убрать прозрачность нейпмлейтов при активном выбранном таргете
393kd1Z1va8.jpg
2. Добавить значения хп (оставшиеся) в циферках на полоске здоровья
Спасибо
Последний раз редактировалось ida; 05.07.2020 в 11:55.
PHP код:
local function formatV(v)
if v > 0 then
if v < 1e3 then
return v
elseif v < 1e6 then
return ("%.1fk"):format(v/1e3)
else
return ("%.1fm"):format(v/1e6)
end
end
end
local function healthbar_valuechanged_cb(self,value)
self.text:SetText(formatV(value))
end
local function healthbar_show_cb(self)
self.text:SetText(formatV(self:GetValue()))
end
local function nameplate_update_cb(self)
self:SetAlpha(1)
end
local function InitNamePlate(frame)
local healthbar = frame:GetChildren()
healthbar.text = healthbar:CreateFontString(nil,"ARTWORK")
healthbar.text:SetFont("Fonts\\FRIZQT__.TTF",11,"OUTLINE")
healthbar.text:SetPoint("CENTER")
healthbar_show_cb(healthbar)
healthbar:SetScript("OnValueChanged",healthbar_valuechanged_cb)
healthbar:SetScript("OnShow",healthbar_show_cb)
frame:SetScript("OnUpdate",nameplate_update_cb)
end
local function IdentifyFrame(self)
if self:GetName() then return end
if self.GetRegions then
local region = self:GetRegions()
if region.GetTexture then
local texturePath = region:GetTexture()
if texturePath == "Interface\\TargetingFrame\\UI-TargetingFrame-Flash" then
return "NamePlate"
elseif texturePath == "Interface\\Tooltips\\ChatBubble-Background" then
return "ChatBubble"
end
end
end
end
local function iterateChildrens(object,...)
if not object then return end
local type = IdentifyFrame(object)
if type == "NamePlate" then
InitNamePlate(object)
elseif type == "ChatBubble" then
--InitChatBubble(object)
end
return iterateChildrens(...)
end
local select,WorldFrame = select,WorldFrame
local lastWorldFrameChildsCount = 0
CreateFrame("frame"):SetScript("OnUpdate",function()
local worldFrameChildsCount = WorldFrame:GetNumChildren()
if worldFrameChildsCount ~= lastWorldFrameChildsCount then
iterateChildrens(select(lastWorldFrameChildsCount+1,WorldFrame:GetChildren()))
lastWorldFrameChildsCount = worldFrameChildsCount
end
end)
Забыл об еще одном. Возможно убрать смешивание неймплейтов как здесь?
UMwbxdkQTHg.jpg
И сделать полное наложение плейта если они пересекаются, как здесь:
k7cZHpuz6ew.jpg
Спасибо!
@Sproody, ваша помощь все еще актуальна?
Последний раз редактировалось ida; 05.07.2020 в 17:59.
Я просто на примере ниже показал как мне надо, это одна задача. Где именно этот чекбокс в настройках игры? Все перепробовал, не нашел
Мне именно надо чтобы они не перемешивались друг с другом, как на 2 скрине (если нажать на таргет, то будет как на 2 скрине), а вне таргета как на скрине выше, это и надо устранить. Короче, надо сделать так, чтобы в любых случаях они не перемешивались, а были как на скрине ниже не зависимо в таргете или нет.
Последний раз редактировалось ida; 05.07.2020 в 20:56.
А, ну это уже надо писать какой то скрипт, в близз интерфейсе можно включить, что бы индикаторы никогда не накладовались друг на друга.
Т.е. Первый индикатор будет автоматически выкидыватся за рамки второго.
Включается это во вкладке с настройками неймплейт, поймешь по названию, либо же потыкаешь галочки
Последний раз редактировалось Friskes; 05.07.2020 в 22:14.
PHP код:
local function healthbar_valuechanged_cb(self,value)
self.text:SetText(value)
end
local function healthbar_show_cb(self)
self.text:SetText(self:GetValue())
end
local function nameplate_update_cb(self)
self:SetAlpha(1)
end
local function InitNamePlate(frame)
local healthbar = frame:GetChildren()
healthbar.text = healthbar:CreateFontString(nil,"ARTWORK")
healthbar.text:SetFont("Fonts\\FRIZQT__.TTF",11,"OUTLINE")
healthbar.text:SetPoint("CENTER")
healthbar_show_cb(healthbar)
healthbar:SetScript("OnValueChanged",healthbar_valuechanged_cb)
healthbar:SetScript("OnShow",healthbar_show_cb)
frame:SetScript("OnUpdate",nameplate_update_cb)
end
local function IdentifyFrame(self)
if self:GetName() then return end
if self.GetRegions then
local region = self:GetRegions()
if region.GetTexture then
local texturePath = region:GetTexture()
if texturePath == "Interface\\TargetingFrame\\UI-TargetingFrame-Flash" then
return "NamePlate"
elseif texturePath == "Interface\\Tooltips\\ChatBubble-Background" then
return "ChatBubble"
end
end
end
end
local function iterateChildrens(object,...)
if not object then return end
local type = IdentifyFrame(object)
if type == "NamePlate" then
InitNamePlate(object)
elseif type == "ChatBubble" then
--InitChatBubble(object)
end
return iterateChildrens(...)
end
local select,WorldFrame = select,WorldFrame
local lastWorldFrameChildsCount = 0
CreateFrame("frame"):SetScript("OnUpdate",function()
local worldFrameChildsCount = WorldFrame:GetNumChildren()
if worldFrameChildsCount ~= lastWorldFrameChildsCount then
iterateChildrens(select(lastWorldFrameChildsCount+1,WorldFrame:GetChildren()))
lastWorldFrameChildsCount = worldFrameChildsCount
end
end)