PHP код:
local Config = {
Point = {x = 0, y = 0}, -- Позиция фрейма (Относительно центра);
Time = 4, -- Время отображения фрейма (не считая анимацию);
Sound = "RaidWarning" -- Звук при выигрыше;
};
local Core = CreateFrame("Button", nil, UIParent);
Core:RegisterEvent("ADDON_LOADED");
Core:SetScript("OnEvent", function(self, event, ...) return self[event](self, ...) end);
function Core:CreateMainFrame()
self:SetPoint("CENTER", UIParent, Config.Point.x, Config.Point.y);
self:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", tile = true, tileSize = 16, edgeSize = 2});
self:SetBackdropColor(131/255, 139/255, 139/255, 0.6);
self:SetSize(200, 50);
self:Hide();
self:SetAlpha(0);
self.Icon = self:CreateTexture(nil, "ARTWORK");
self.Icon:SetPoint("LEFT", self, 5, 0);
self.Icon:SetSize(35, 35);
self.Title = self:CreateFontString(nil, "OVERLAY");
self.Title:SetPoint("TOPLEFT", self.Icon, "TOPRIGHT", 3, 0);
self.Title:SetFont("Fonts\\FRIZQT__.TTF", 10, "OUTLINE");
self.Title:SetTextColor(1, 215/255, 0);
self.Title:SetText("Вы получили");
self.Item = self:CreateTexture(nil, "ARTWORK");
self.Item:SetPoint("TOPLEFT", self.Title, "BOTTOMLEFT", 0, -3);
self.Item:SetSize(152, 21);
self.Item:SetTexture(0, 0, 0, 0.8);
self.Item.Text = self:CreateFontString(nil, "OVERLAY");
self.Item.Text:SetPoint("TOPLEFT", self.Item, "TOPLEFT", 3, 0);
self.Item.Text:SetPoint("BOTTOMRIGHT", self.Item, "BOTTOMRIGHT", 0, 0);
self.Item.Text:SetFont("Fonts\\FRIZQT__.TTF", 12, "OUTLINE");
end;
function Core:CreateAnim()
self.Anim = self:CreateAnimationGroup("Loot");
self.Anim:SetScript("OnFinished", function(self) self:GetParent():Hide(); end);
self.Anim:SetLooping("NONE");
local in1 = self.Anim:CreateAnimation("Alpha");
in1:SetDuration(1);
in1:SetOrder(1);
local in2 = self.Anim:CreateAnimation("Alpha");
in2:SetDuration(1);
in2:SetOrder(2);
in1:SetChange(1);
in2:SetStartDelay(Config.Time);
in2:SetChange(-1);
end;
function Core:ADDON_LOADED(addonName)
self:CreateMainFrame();
self:CreateAnim();
self:RegisterEvent("CHAT_MSG_LOOT");
self:UnregisterEvent("ADDON_LOADED");
end;
function Core:OnUpdate(ItemName, Quality, Texture)
if self.Anim:IsPlaying() then self.Anim:Stop(); end;
self:Show();
PlaySound(Config.Sound);
self.Icon:SetTexture(Texture);
self.Item.Text:SetText(ItemName);
local r, g, b = GetItemQualityColor(Quality);
self:SetBackdropBorderColor(r, g, b, 0.8);
self.Item.Text:SetTextColor(r, g, b);
self.Anim:Play();
end;
Core:SetScript("OnMouseDown", function(self, button)
if button ~= "LeftButton" then return; end;
if ( not ItemRefTooltip:IsShown() ) then
ItemRefTooltip:SetOwner(UIParent, "ANCHOR_PRESERVE");
ItemRefTooltip:SetHyperlink(self["Hyperlink"]);
else
ItemRefTooltip:Hide();
end
end);
local p = gsub(LOOT_ROLL_YOU_WON, "%%s", "(.+)");
function Core:CHAT_MSG_LOOT(Message)
local _,_,Item = Message:find(p)
if Item then
local Name,_,Quality,_,_,_,_,_,_,Texture = GetItemInfo(Item);
self["Hyperlink"] = Item;
self:OnUpdate(Name, Quality, Texture);
end;
end;