|
Форум Обсуждение аддонов Разработка аддонов WoW Кнопка у мини карты |
Кнопка у мини карты |
Приветствую всех сегодня вам расскажу, как сделать модуль к аддону который добавляет иконку к мини карте. Инструкция по созданию toc файла - клик Ссылка на предыдущие статью - Анимация Скачать notepad++ - Скачать API функции - WoWJP API При наведении на кнопку у мини карты будет появляться GameTooltip с названием нашего аддона. Начнем делать аддон с того что создадим переменную с названием нашего аддона. Code local addonname = "MynameAddon" Возможно она у вас уже есть она нам понадобится для того чтобы при наведении на кнопку мини карты показывало название вашего аддона. Дальше создаем основную, фрейму кнопки. Code local IconMiniMap = CreateFrame("Button", "MyIconMiniMapButton", Minimap) Как вы могли заметить расположение фреймы кнопки будет на фрейме под названием «Minimap». Теперь добавим эффектов к нашей кнопки. Эффект будет «Свечение» при наведении на кнопку. IconMiniMap:SetHighlightTexture("Interface\\Minimap\\UI-Minimap-ZoomButton-Highlight"); Дальше указываем размер нашей кнопки. Code IconMiniMap:SetWidth(32) IconMiniMap:SetHeight(32) IconMiniMap:SetFrameStrata("LOW") Указываем позицию кнопки на мини карте. Code IconMiniMap:SetPoint("CENTER", -12, -80) Теперь создаем текстуру для кнопки. Code IconMiniMap.icon = IconMiniMap:CreateTexture(nil, "BACKGROUND") Дальше указываем путь к текстуре. Путь можно узнать тут Code IconMiniMap.icon:SetTexture("interface\\FriendsFrame\\UI-Toast-ChatInviteIcon") Указываем размер. Code IconMiniMap.icon:SetWidth(22); IconMiniMap.icon:SetHeight(22); Указываем позицию текстуры на кнопке. Code IconMiniMap.icon:SetPoint("CENTER", 0, 0) Дальше создаем еще одну текстуру для рамки кнопки. Code IconMiniMap.border = IconMiniMap:CreateTexture(nil, "ARTWORK") Указываем путь к текстуре рамки для кнопки. Code IconMiniMap.border:SetTexture("Interface\\Minimap\\MiniMap-TrackingBorder") Указываем позицию. Code IconMiniMap.border:SetTexCoord(0,0.6,0,0.6); IconMiniMap.border:SetAllPoints(IconMiniMap); Дальше создаем событие, для кнопки которое, будет выполнять открытие фреймы при клике на кнопку. Code IconMiniMap:SetScript("OnClick", function(self) Frame:Show() end) Теперь создаем событие, которые будет выводить GameTooltip при наведении на кнопку у мини карты. Code IconMiniMap:SetScript("OnEnter",function(self) GameTooltip:SetOwner(self, "ANCHOR_LEFT") GameTooltip:AddLine(addonname) GameTooltip:Show() end) Дальше создаем событие которое будет прятать нашу надпись после того как мы убрали курсор с кнопки. Code IconMiniMap:SetScript("OnLeave", function(self) GameTooltip:Hide(); self.icon:SetPoint("CENTER", 0, 0); end) Хотелось бы напомнить, что Lua код читается с верху в низ. Если вы создадите сначала фрейму а потом текстуру для нее то будет ошибка потому-что фрейма будет посылать запрос к текстуре, которая еще не загрузилась и по этому будет ошибка. Я это напомнил вам из-за того что мне задают много вопросов почему у них не работает аддон. Вот и все у нас готова кнопка для мини карты. Хочу сказать спасибо человеку Kante за идею для гайда. [download]minimapicon.lua - для WoW 3.X, 4.X
[/download]
Маме беркута привет!
|
| |||
| |||