• Страница 1 из 1
  • 1
Форум » Обсуждение аддонов » Разработка аддонов WoW » Кнопка в меню игры
Кнопка в меню игры
Nyll
Привет, сегодня мы будем делать кнопку в главном меню игры, которая будет открывать настройки аддона.



Такие кнопки делаются через библиотеки, и не только, есть люди которым лень писать эту кнопку, по этому они берут и ставят либы(библиотеки)
Мы постараемся с вами сделать такую кнопку без использывания библиотек.

Полезные ссылки:
Инструкция по созданию toc файла - тык
Ссылка на предыдущие статью - тык
Скачать notepad++ - тык
API функции - тык

Как и всегда создаем папку для аддона, в папке создаем 2 файла. Первый файл toc и второй файл lua.
Тос файл называем так же как и папку с аддоном(если назвать по другому вы можете столкнутся с неработоспособностью аддона)

Теперь открываем тос документ и заполняем его..
После того как заполнили тос файл, открываем наш lua файл и изменяем кодировку на UTF-8 (Это нужно для того чтобы отображался русский текст)
После того как изменили кодировку пишем туда:

Code

wowjp = {}
wowjp.Menu = {}
wowjp.Menu.Object = GameMenuFrame
wowjp.Menu.Buttons = {}

function wowjp.AddButton(text, pos, func)

    if not text then
     table.insert(wowjp.Menu.Buttons, 0)
     return nil
    end

    local button;

    if type(text) == "table" then
     button = text
     button:SetParent(wowjp.Menu.Object)
    else
     button = CreateFrame("BUTTON", nil, wowjp.Menu.Object,
      "GameMenuButtonTemplate")
     button:SetText(text or "")
    end
       
    if func then
     button:SetScript("OnClick", func)
    end
       
    if pos then
     table.insert(wowjp.Menu.Buttons, pos, button)
    else
     table.insert(wowjp.Menu.Buttons, button)
    end
       
    if wowjp.Menu.Object:IsVisible() then
     wowjp.OnShow()
    end
       
    return button

end

function wowjp.OnShow()
    wowjp.orig_OnShow()

    local extra_yoffset = 0
    local prev_button = nil
    local menu_height = 70
       
    for index, button in ipairs(wowjp.Menu.Buttons) do
       
     if button == 0 then
      extra_yoffset = extra_yoffset - 15;
     else
      button:ClearAllPoints()
      if index == 1 then
       button:SetPoint("TOP", button:GetParent(), "TOP", 0, -37)
      else
       button:SetPoint("TOP", prev_button, "BOTTOM", 0,
        -1 + extra_yoffset)
      end
         
      menu_height = menu_height + button:GetHeight() + 1 +    
       math.abs(extra_yoffset)
         
      prev_button = button
      extra_yoffset = 0
         
     end
       
    end

    wowjp.Menu.Object:SetHeight(menu_height)
       
end

local addonOptionsButton =
    wowjp.AddButton("|cff8888FFWoWJP|r", 7, function()
    DEFAULT_CHAT_FRAME:AddMessage("Опции аддона")
    end)

wowjp.AddButton(GameMenuButtonOptions)
wowjp.AddButton(GameMenuButtonSoundOptions)
wowjp.AddButton(GameMenuButtonUIOptions)
wowjp.AddButton(GameMenuButtonKeybindings)
wowjp.AddButton(GameMenuButtonMacros)
wowjp.AddButton(GameMenuButtonLogout)
wowjp.AddButton(GameMenuButtonQuit)
wowjp.AddButton()
wowjp.AddButton(GameMenuButtonContinue)

wowjp.orig_OnShow =
    wowjp.Menu.Object:GetScript("OnShow")
wowjp.Menu.Object:SetScript("OnShow", wowjp.OnShow)


Весь код вам расписывать не буду, так как он очень большой wink Я вам распишу части кода, чтобы вы поняли из чего состоит этот аддон.

Code
local addonOptionsButton =
wowjp.AddButton("|cff8888FFWoWJP|r", 7, function()
DEFAULT_CHAT_FRAME:AddMessage("Опции аддона")
end)

Это наша кнопка, при нажатии на кнопку в чат будет писать "Опции аддона" т.к мы пока не будем не к чему присоединять ее, в следующем гайде я постараюсь вам рассказать как сделать "Настройки аддона" в вкладки "Интерфейс"
Code
wowjp.AddButton("|cff8888FFWoWJP|r", 7, function()

Название кнопки и место расположения, у нас написано WoWJP синим цветом. В кнопки вы можете использовать любые скрипты, на цвета и т.д

Code
wowjp.AddButton(GameMenuButtonOptions)
wowjp.AddButton(GameMenuButtonSoundOptions)
wowjp.AddButton(GameMenuButtonUIOptions)
wowjp.AddButton(GameMenuButtonKeybindings)
wowjp.AddButton(GameMenuButtonMacros)
wowjp.AddButton(GameMenuButtonLogout)
wowjp.AddButton(GameMenuButtonQuit)
wowjp.AddButton()
wowjp.AddButton(GameMenuButtonContinue)

Стандартные пункты в меню игры.

Вот и все, в в следующей статьи мы будем делать настройки аддона в "Интерфейсе"

[download]Скачать - 3.3[/download]
Прикрепления: 3225805.jpg (274.5 Kb)
Маме беркута привет!
Сообщение # 1 отредактировано Nyll - Пятница, 24.02.2012, 12:13
JustL
Скаут
Неплохо,под ту кнопку можно поставить кучу интересных прибомбасов)
Сборка 3.3.5a FUN Core Готова.
http://wowjp.net/forum/123-184824-1


30.11.2011:Looked the last series of the Book of Death,anime super,that's only in the end it was a great pity Kira.Who did not look look =)
Сообщение # 2 написано 02.12.2011 в 17:00
Форум » Обсуждение аддонов » Разработка аддонов WoW » Кнопка в меню игры
  • Страница 1 из 1
  • 1
Поиск: