Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Создание простенького GUI (интерфейса для управления настройками аддона)

Упомянутые в теме пользователи:

Показано с 1 по 3 из 3
  1. #1
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,192
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399

    Создание простенького GUI (интерфейса для управления настройками аддона)

    Есть библиотеки , например асе3 и им подобные. У всех свои плюсы и минусы. Самый самый и самый такой минусовый минус , это размер (много намутишь будет долго грузить вход и игровой мир и тд) . Ну и разумеется для них есть отдельные туторы на их офф сайтах. В гугл асе3 и готово =)

    Я же опишу как создать нечто более легкое и гибкое своими руками. Ну это наверное будет в стиле "виндовс" или даже хз как оформить , но как получится в любом случае GUI это гребаный геморой ,куча текста , и не важно на каком языке - факт в том , что без "визуального редактора" это вызывает бугурт :p

    Сейчас скорее всего пойдут мысли "вот нахринячил гору текста !!11" и тд...но где GUI и рамки - там гора текста , привыкаем , даже если юзать библиотеки , гора текста от этого не на много уменьшиться

    Начнем)

    Часть 1 -- Создаем так называемую основу .
    Это будет библиотека , и юзать его прийдется через LibStub , в подробности можно не вдаваться , код сюда влил для того что бы увековечить , ведь на фаило обменниках и тд может произойти слет и все заново Вообщем ниже я опишу как теперь создавать менюшки и юзать либстуб.

    PHP код:
    local MAJOR_VERSION "DreamsCfg-1.0"
    local MINOR_VERSION 0;

    if 
    not LibStub then 
        error
    (MAJOR_VERSION .. " нима LibStub"
    end

    local DreamsCfg
    oldLib LibStub:NewLibrary(MAJOR_VERSIONMINOR_VERSION)

    if 
    not DreamsCfg then
        
    return
    end

    if oldLib then
        oldLib 
    = {}
        for 
    kv in pairs(DreamsCfg) do
            
    DreamsCfg[k] = nil
            oldLib
    [k] = v
        end
    end

    local getArgs
    doneArgs
    do
        
    local tmp = {}
        function 
    getArgs(...)
            
    assert(next(tmp) == nil)
            for 
    1select('#', ...), do
                
    local kselect(i, ...)
                
    tmp[k] = v
            end
            
    return tmp
        end
        
    function doneArgs(args)
            
    assert(args == tmp)
            for 
    k in pairs(args) do
                
    args[k] = nil
            end
            
    return nil
        end
    end

    local WotLK 
    not not ToggleAchievementFrame

    local panels
    if oldLib then
        panels 
    oldLib.panels or {}
    else
        
    panels = {}
    end
    DreamsCfg
    .panels panels

    local panelMeta
    if oldLib then
        panelMeta 
    oldLib.panelMeta or {}
    else
        
    panelMeta = {}
    end
    DreamsCfg
    .panelMeta panelMeta
    for funcName in pairs(panelMeta) do
        for 
    panel in pairs(panels) do
            
    panel[funcName] = nil
        end
        panelMeta
    [funcName] = nil
    end

    do
        
    local function update(control, ...)
            if (...) ~= 
    control.value then
                control
    :SetValue(...)
            
    end
        end
        
    function panelMeta:Refresh()
            for 
    control in pairs(self.controls) do
                if 
    control.getFunc then
                    update
    (controlcontrol.getFunc())
                
    end
            end
            
    if self.refreshFunc then
                self
    :refreshFunc()
            
    end
        end
        local 
    function panel_OnShow(self)
            
    self:SetScript("OnShow"self.Refresh)
            
    self:controlCreationFunc()
            
    self.controlCreationFunc nil
            self
    :Refresh()
        
    end
        local 
    function panel_okay(self)
            for 
    control in pairs(self.controls) do
                
    control.oldValue control.value
                
    if control.okayFunc then
                    control
    .okayFunc()
                
    end
            end
        end
        local 
    function panel_cancel(self)
            for 
    control in pairs(self.controls) do
                
    control:SetValue(control.oldValue)
                if 
    control.cancelFunc then
                    control
    .cancelFunc()
                
    end
            end
        end
        local 
    function panel_default(self)
            for 
    control in pairs(self.controls) do
                
    control:SetValue(control.default)
                if 
    control.defaultFunc then
                    control
    .defaultFunc()
                
    end
            end
        end
        local 
    function CreatePanel(nameparentNamecontrolCreationFunc)
            
    local panel
            
    if not parentName then
                panel 
    CreateFrame("Frame"name .. "_Panel")
            else
                
    panel CreateFrame("Frame"parentName .. "_Panel_" .. name)
            
    end
            panels
    [panel] = true

            panel
    .name name
            panel
    .controls = {}
            
    panel.parent parentName

            panel
    .okay panel_okay
            panel
    .cancel panel_cancel
            panel
    .default = panel_default

            InterfaceOptions_AddCategory
    (panel)

            
    panel.controlCreationFunc controlCreationFunc
            panel
    :SetScript("OnShow"panel_OnShow)
            for 
    kv in pairs(panelMeta) do
                
    panel[k] = v
            end
            
            
    return panel
        end
        
    function DreamsCfg.AddOptionsPanel(namecontrolCreationFunc)
            return 
    CreatePanel(namenilcontrolCreationFunc)
        
    end
        
        
    function DreamsCfg.AddSuboptionsPanel(parentNamenamecontrolCreationFunc)
            return 
    CreatePanel(nameparentNamecontrolCreationFunc)
        
    end
    end

    function panelMeta:CreateTitleTextAndSubText(titleTextsubTextText)
        
    local title self:CreateFontString(nil"ARTWORK""GameFontNormalLarge")
        
    title:SetText(titleText)
        
    title:SetJustifyH("LEFT")
        
    title:SetJustifyV("TOP")
        
    title:SetPoint("TOPLEFT"16, -16)
        
        
    local subText self:CreateFontString(nil"ARTWORK""GameFontHighlightSmall")
        
    subText:SetText(subTextText)
        
    subText:SetNonSpaceWrap(true)
        
    subText:SetJustifyH("LEFT")
        
    subText:SetJustifyV("TOP")
        
    subText:SetPoint("TOPLEFT"title"BOTTOMLEFT"0, -8)
        
    subText:SetPoint("RIGHT", -320)
        
        return 
    titlesubText
    end

    do
        
    local backdrop = {
            
    bgFile = [=[Interface\Buttons\WHITE8X8]=],
            
    edgeFile = [=[Interface\Tooltips\UI-Tooltip-Border]=],
            
    tile true,
            
    tileSize 16,
            
    edgeSize 16,
            
    insets = { left 3right 3top 3bottom },
        }

        function 
    panelMeta:CreateScrollFrame()
            
    local name
            local i 
    0
            repeat
                i 
    1
                name 
    self:GetName() .. "_ScrollFrame" .. i
            until not _G
    [name]
            
    local scrollFrame CreateFrame("ScrollFrame"nameself"UIPanelScrollFrameTemplate")
            
    scrollFrame:SetFrameLevel(scrollFrame:GetFrameLevel() + 1)
            
    local bg CreateFrame("Frame"nilscrollFrame)
            
    bg:SetPoint("TOPLEFT"scrollFrame"TOPLEFT", -33)
            
    bg:SetPoint("BOTTOMRIGHT"scrollFrame"BOTTOMRIGHT"3, -3)
            
    bg:SetBackdrop(backdrop)
            
    bg:SetBackdropColor(0000.25)
            
    local scrollChild CreateFrame("Frame"name .. "_Child"scrollFrame)
            
    scrollFrame:SetScrollChild(scrollChild)
            
    scrollChild:SetWidth(1)
            
    scrollChild:SetHeight(1)
            return 
    scrollFramescrollChild
        end
    end

    do
        
    local function slider_OnValueChanged(self)
            
    self.value self:GetValue()
            
    self:SetValue(self:GetValue())
        
    end
        
        local 
    function slider_SetValue(selfvalue)
            
    getmetatable(self).__index.SetValue(selfvalue)
            
    self.value value
            self
    .changeFunc(value)
            if 
    self.currentText then
                self
    .currentText:SetText(self.currentTextFunc(value))
            
    end
        end
        
        
    function panelMeta:CreateSlider(...)
            
    local args getArgs(...)
            
    local name
            local i 
    0
            repeat
                i 
    1
                name 
    self:GetName() .. "_Slider" .. i
            until not _G
    [name]
            
    local slider CreateFrame("Slider"nameself"OptionsSliderTemplate")
            
    self.controls[slider] = true
            _G
    [slider:GetName() .. "Text"]:SetText(args.name)
            
    slider.tooltipText args.description
            _G
    [slider:GetName() .. "Text"]:SetTextColor(NORMAL_FONT_COLOR.rNORMAL_FONT_COLOR.gNORMAL_FONT_COLOR.b)
            
    _G[slider:GetName() .. "Low"]:SetText(args.minText)
            
    _G[slider:GetName() .. "Low"]:SetTextColor(HIGHLIGHT_FONT_COLOR.rHIGHLIGHT_FONT_COLOR.gHIGHLIGHT_FONT_COLOR.b)
            
    _G[slider:GetName() .. "High"]:SetText(args.maxText)
            
    _G[slider:GetName() .. "High"]:SetTextColor(HIGHLIGHT_FONT_COLOR.rHIGHLIGHT_FONT_COLOR.gHIGHLIGHT_FONT_COLOR.b)
            
            
    local current
            
    if args.getFunc then
                slider
    .getFunc args.getFunc
                current 
    args.getFunc()
            else
                
    current args.current
            end
            
            
    if args.currentTextFunc then
                slider
    .currentTextFunc args.currentTextFunc
                local currentText 
    slider:CreateFontString(nil"ARTWORK""GameFontHighlightSmall")
                
    slider.currentText currentText
                currentText
    :SetPoint("TOP"slider"CENTER"0, -8)
                
    currentText:SetText(args.currentTextFunc(current))
            
    end
        
            slider
    .default = args.default
            
    slider:SetMinMaxValues(args.minValueargs.maxValue)
            if 
    args.step then
                slider
    :SetValueStep(args.step)
            
    end
            slider
    .oldValue current
            slider
    .value current
            slider
    :SetValue(slider.value)
            
    slider.changeFunc args.setFunc
            slider
    .SetValue slider_SetValue
            slider
    :SetScript("OnValueChanged"slider_OnValueChanged)
            
    slider.okayFunc args.okayFunc
            slider
    .cancelFunc args.cancelFunc
            slider
    .defaultFunc args.defaultFunc
            args 
    doneArgs(args)
            return 
    slider
        end
    end

    local 
    function generic_OnEnter(self)
        
    GameTooltip:SetOwner(self"ANCHOR_TOPRIGHT")
        
    GameTooltip:SetText(self.tooltipTextnilnilnilnil1)
    end
    local 
    function generic_OnLeave(self)
        
    GameTooltip:Hide()
    end

    do
        
    local function dropDown_SetValue(selfvalue)
            
    self.value value
            UIDropDownMenu_SetSelectedValue
    (selfvalue)
            
    self.changeFunc(value)
        
    end
        local helper__num
    helper__values
        local 
    function helper()
            
    local valuetext helper__values[helper__num], helper__values[helper__num+1]
            if 
    value == nil then
                helper__num
    helper__values nilnil
                
    return nil
            end
            helper__num 
    helper__num 2
            
    return valuetext
        end
        local 
    function get_iter(values)
            if 
    type(values) == "function" then
                
    return values
            end
            helper__num 
    1
            helper__values 
    values
            
    return helper
        end
        local SetValue_wrapper
        
    if WotLK then
            
    function SetValue_wrapper(self, ...)
                return 
    dropDown_SetValue(...)
            
    end
        
    else
            
    SetValue_wrapper dropDown_SetValue
        end
        local 
    function dropDown_menu(self)
            for 
    valuetext in get_iter(self.values) do
                
    local info UIDropDownMenu_CreateInfo()
                
    info.text text
                info
    .value value
                info
    .checked self.value == value
                info
    .func SetValue_wrapper
                info
    .arg1 self
                info
    .arg2 value
                UIDropDownMenu_AddButton
    (info)
            
    end
        end
        
        local tmp 
    = {}

        function 
    panelMeta:CreateDropDown(...)
            
    local args getArgs(...)
            if 
    type(args.values) ~= "function" then
                
    for 1#args.values, 2 do
                    
    local kargs.values[i], args.values[2]
                    
    tmp[k] = v
                end
            end
            
    for k in pairs(tmp) do
                
    tmp[k] = nil
            end
            local name
            local i 
    0
            repeat
                i 
    1
                name 
    self:GetName() .. "_DropDown" .. i
            until not _G
    [name]
        
            
    local dropDown CreateFrame("Frame"nameself"UIDropDownMenuTemplate")
            
    self.controls[dropDown] = true
            
    if args.name ~= "" then
                local label 
    dropDown:CreateFontString(nil"BACKGROUND""GameFontNormal")
                
    label:SetText(args.name)
                
    label:SetPoint("BOTTOMLEFT"dropDown"TOPLEFT"163)
            
    end
            dropDown
    .tooltipText args.description
            dropDown
    .values args.values
            UIDropDownMenu_Initialize
    (dropDown, function()
                
    dropDown_menu(dropDown)
            
    end)
            if 
    WotLK then
                UIDropDownMenu_SetWidth
    (dropDown90)
            else
                
    UIDropDownMenu_SetWidth(90dropDown)
            
    end
            local current
            
    if args.getFunc then
                dropDown
    .getFunc args.getFunc
                current 
    args.getFunc()
            else
                
    current args.current
            end
            UIDropDownMenu_SetSelectedValue
    (dropDowncurrent)
            
    dropDown.default = args.default
            
    dropDown.value args.current
            dropDown
    .oldValue args.current
            dropDown
    .changeFunc args.setFunc
            dropDown
    .SetValue dropDown_SetValue
            dropDown
    :EnableMouse(true)
            
    dropDown:SetScript("OnEnter"generic_OnEnter)
            
    dropDown:SetScript("OnLeave"generic_OnLeave)
            
    dropDown.okayFunc args.okayFunc
            dropDown
    .cancelFunc args.cancelFunc
            dropDown
    .defaultFunc args.defaultFunc
            args 
    doneArgs(args)
            return 
    dropDown
        end
    end

    do
        
    local function donothing() end
        local 
    function button_OnClick(self)
            
    self.clickFunc()
        
    end

        
    function panelMeta:CreateButton(...)
            
    local args getArgs(...)
            
    local name
            local i 
    0
            repeat
                i 
    1
                name 
    self:GetName() .. "_Button" .. i
            until not _G
    [name]
        
            
    local button CreateFrame("Button"nameself"UIPanelButtonTemplate")
            
    self.controls[button] = true
            button
    :SetText(args.name)
            
    button.tooltipText args.description
            button
    :SetWidth(120)
            
    button:SetHeight(22)
            
    button.SetValue donothing
            button
    .clickFunc args.func
            button
    :SetScript("OnClick"button_OnClick)
            
    button:SetScript("OnEnter"generic_OnEnter)
            
    button:SetScript("OnLeave"generic_OnLeave)
            
    args doneArgs(args)
            return 
    button
        end
    end

    do
        
    local function toggle_SetValue(selfvalue)
            
    value not not value
            self
    .changeFunc(value)
            
    self.value value
            self
    :SetChecked(value)
        
    end
        local 
    function toggle_OnClick(self)
            
    self:SetValue(not not self:GetChecked())
        
    end

        
    function panelMeta:CreateToggle(...)
            
    local args getArgs(...)
            
    local name
            local i 
    0
            repeat
                i 
    1
                name 
    self:GetName() .. "_Toggle" .. i
            until not _G
    [name]
        
            
    local toggle CreateFrame("CheckButton"nameself"InterfaceOptionsCheckButtonTemplate")
            
    self.controls[toggle] = true
            _G
    [toggle:GetName() .. "Text"]:SetText(args.name)
            
    toggle:SetHitRectInsets(0, -_G[toggle:GetName() .. "Text"]:GetWidth() - 100)
            
    toggle.tooltipText args.description
            toggle
    .default = args.default
            
    local current
            
    if args.getFunc then
                toggle
    .getFunc args.getFunc
                current 
    args.getFunc()
            else
                
    current args.current
            end
            toggle
    .value current
            toggle
    .oldValue current
            toggle
    .changeFunc args.setFunc
            toggle
    .SetValue toggle_SetValue
            toggle
    :SetScript("OnClick"toggle_OnClick)    
            
    toggle:SetChecked(current)
            
    toggle:SetScript("OnEnter"generic_OnEnter)
            
    toggle:SetScript("OnLeave"generic_OnLeave)
            
    toggle.okayFunc args.okayFunc
            toggle
    .cancelFunc args.cancelFunc
            toggle
    .defaultFunc args.defaultFunc
            args 
    doneArgs(args)
            return 
    toggle
        end
    end

    do
        
    local function update(selfrgba)
            if 
    not self.hasAlpha then
                a 
    1
            end
            self
    .info.r
            self
    .info.g
            self
    .info.b
            
    if self.hasAlpha then
                self
    .info.opacity a
            end
            self
    .color:SetTexture(rgba)
            if 
    self.value == self.oldValue then
                self
    .value = {}
            
    end
            self
    .value[1] = r
            self
    .value[2] = g
            self
    .value[3] = b
            
    if self.hasAlpha then
                self
    .value[4] = a
            end
            self
    .info.r
            self
    .info.g
            self
    .info.b
            
    if self.hasAlpha then
                self
    .info.opacity a
            end
            
    if self.hasAlpha then
                self
    .changeFunc(rgba)
            else
                
    self.changeFunc(rgb)
            
    end
        end    
        local 
    function button_SetValue(self, ...)
            if 
    select('#', ...) == and type((...)) == "table" then
                
    return button_SetValue(selfunpack(value))
            
    end
            update
    (self, ...)
        
    end
        local 
    function button_OnClick(self)
            
    OpenColorPicker(self.info)
        
    end    
        local 
    function swatchFunc(self)
            
    local rgColorPickerFrame:GetColorRGB()
            
    local opacity OpacitySliderFrame:GetValue()
        
            
    update(selfrgbopacity)
        
    end
        local 
    function cancelFunc(self)
            
    local previousValues ColorPickerFrame.previousValues
            local r
    gbopacity previousValues.rpreviousValues.gpreviousValues.bhasAlpha and previousValues.opacity or 1
        
            update
    (selfrgbopacity)
        
    end

        
    function panelMeta:CreateColorPicker(...)
            
    local args getArgs(...)
            
    local name
            local i 
    0
            repeat
                i 
    1
                name 
    self:GetName() .. "_ColorPicker" .. i
            until not _G
    [name]
        
            if 
    not args.hasAlpha then
                args
    .defaultA 1
            end
            
            local button 
    CreateFrame("Button"nameself)
            
    self.controls[button] = true
            
            
            local currentR
    currentGcurrentBcurrentA
            
    if args.getFunc then
                button
    .getFunc args.getFunc
                currentR
    currentGcurrentBcurrentA button.getFunc()
                if 
    not args.hasAlpha then
                    currentA 
    1
                end
            
    else
                
    currentR args.currentR
                currentG 
    args.currentG
                currentB 
    args.currentB
                
    if not args.hasAlpha then
                    currentA 
    1
                
    else
                    
    currentA args.currentA
                end
            end
            
            button
    .tooltipText args.description
            local text 
    button:CreateFontString(nil"ARTWORK""GameFontHighlight")
            
    text:SetText(args.name)
            
    text:SetPoint("LEFT"button"RIGHT"01)
            
    button:SetHitRectInsets(0, -text:GetWidth() - 100)
            
    local color button:CreateTexture(nil"ARTWORK")
            
    button.color color
            color
    :SetTexture(currentRcurrentGcurrentBcurrentA)
            
    local background button:CreateTexture(nil"BORDER")
            
    background:SetTexture([=[Tileset\Generic\Checkers]=])
            
    background:SetTexCoord(00.500.5)
            
    local border button:CreateTexture(nil"BACKGROUND")
            
    border:SetTexture([=[Interface\ChatFrame\ChatFrameColorSwatch]=])
            
    button:SetWidth(26)
            
    button:SetHeight(26)
            
    background:SetPoint("CENTER")
            
    background:SetWidth(14)
            
    background:SetHeight(14)
            
    color:SetPoint("CENTER")
            
    color:SetWidth(14)
            
    color:SetHeight(14)
            
    border:SetAllPoints(button)
            
    button.default = { args.defaultRargs.defaultGargs.defaultB }
            
    button.oldValue = { currentRcurrentGcurrentB }
            if 
    hasAlpha then
                button
    .default[4] = args.defaultA
                button
    .oldValue[4] = currentA
            end
            button
    .value button.oldValue
            button
    .hasAlpha args.hasAlpha
            button
    .changeFunc args.setFunc
            button
    .SetValue button_SetValue
            local 
    function swatchFunc_wrapper()
                
    swatchFunc(button)
            
    end
            local 
    function cancelFunc_wrapper()
                
    cancelFunc(button)
            
    end
            button
    .info = {
                
    swatchFunc swatchFunc_wrapper,
                
    hasOpacity args.hasAlpha,
                
    opacityFunc args.hasAlpha and swatchFunc_wrapper or nil,
                
    currentR,
                
    currentG,
                
    currentB,
                
    opacity args.hasAlpha and currentA or nil,
                
    cancelFunc cancelFunc_wrapper,
            }
            
    button:SetScript("OnClick"button_OnClick)
            
    button:SetScript("OnEnter"generic_OnEnter)
            
    button:SetScript("OnLeave"generic_OnLeave)
            
    button:RegisterForClicks("LeftButtonUp")
            
    button.okayFunc args.okayFunc
            button
    .cancelFunc args.cancelFunc
            button
    .defaultFunc args.defaultFunc
            args 
    doneArgs(args)
            return 
    button
        end
    end

    function DreamsCfg.AddSlashCommand(name, ...)
        
    local num 0
        local name_upper 
    name:upper()
        for 
    1select('#', ...) do
            
    local cmd select(i, ...)
            
    num num 1
            _G
    ["SLASH_" .. name_upper .. num] = cmd
            local cmd_lower 
    cmd:lower()
            if 
    cmd_lower ~= cmd then
                num 
    num 1
                _G
    ["SLASH_" .. name_upper .. num] = cmd_lower
            end
        end

        _G
    .hash_SlashCmdList[name_upper] = nil
        _G
    .SlashCmdList[name_upper] = function()
            
    InterfaceOptionsFrame_OpenToCategory(name)
        
    end
    end

    for funcNamefunc in pairs(panelMeta) do
        
    DreamsCfg[funcName] = func
        
    for panel in pairs(panels) do
            
    panel[funcName] = func
        end
    end 
    Последний раз редактировалось DreamlØlz; 26.01.2015 в 14:23.

  2. 1 пользователь сказал cпасибо DreamlØlz за это полезное сообщение:

    Foximys (26.01.2015)

  3. #2
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,192
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Вообщем в топик выше уже ничего не влезит ,по этому переходим сюда:p
    Вот собственно собрал я код и добавил LibStub , что бы париться просто качаем и все. Там уже бд есть.
    Качнуть образец можно тут:
    Вложение 264793


    И так качнули и видим следующие строки (если собирали руками , эта ну сваими а не маими , тогда строчки добавляем):
    Это и будет функция , которая при вызове создаст намше меню. Точнее сказать в ее теле и будет меню)
    PHP код:
    LibStub("DreamsCfg-1.0").AddOptionsPanel("Dreamlol's script", function(self)  

    end); 

    Думаю внутри и так будет все более менее понятно. Везде где могли быть непонятки ставил комменты.

    PHP код:
    --//Это массив для сохранения дефолт настроек в нашу бд.
    DoMenuDB = {
            
    color = {1,111},
    };

    LibStub("DreamsCfg-1.0").AddOptionsPanel("Dreamlol's script", function(self

        
    local scrollFrame self:CreateScrollFrame()
        
    scrollFrame:SetPoint('TOPRIGHT',0,0)
        
    scrollFrame:SetSize(100,100)
     
        
    self:CreateButton(
            
    'name''Кнопка',
            
    'description''Это выплывет при наведении на кнопку',
            
    'func', function()
                        print(
    "Клик на кнопку"
                    
    end
            
    ):SetPoint('TOP'00) --//позиция , небольшая хитрость , что бы не давать глобальных имен =)

        
    self:CreateColorPicker(
            
    'name''Выбор цвета',
            
    'description''Инфа при наведении мышкой',
            
    'hasAlpha'true, --будет ли ползунок прозрачности
            
    'defaultR'1, --стандартный красный
            
    'defaultG'1, --стандартный зеленый
            
    'defaultB'1, --стандартный голубой
            
    'defaultA'1, -- стандартная прозрачность
            
    'currentR'DoMenuDB.color.r,
            
    'currentG'DoMenuDB.color.g,
            
    'currentB'DoMenuDB.color.b,
            
    'currentA'DoMenuDB.color.a,
            
    'setFunc',  function(rgba)
                            
    DoMenuDB.color.rDoMenuDB.color.gDoMenuDB.color.bDoMenuDB.color.rgb
                        end
        
    ):SetPoint('CENTER'00)
        
        
    self:CreateDropDown(
            
    'name''Выбор',
            
    'description''Инфа при наведении',
            
    'values', {
                
    'ONE'"Выбор1",
                
    'TWO'"Выбор2",
                
    'THREE'"Выбор3",
             },
            
    'default''ONE',
            
    'current'DoMenuDB.choice,
            
    'setFunc', function(valueDoMenuDB.choice value end
        
    ):SetPoint('TOPLEFT',0,0)
        
        
    self:CreateSlider(
            
    'name''Ползунок',
            
    'description''Инфа при наведении',
            
    'minText''0%',
            
    'maxText''100%',
            
    'minValue'0,
            
    'maxValue'100,
            
    'step'0.05,
            
    'default'50,
            
    'current'DoMenuDB.currentRange,
            
    'setFunc', function(valueDoMenuDB.currentRange value end,
            
    'currentTextFunc', function(value) return ("%.0f%%"):format(valueend
        
    ):SetPoint('BOTTOMLEFT'00)
        
        
    self:CreateToggle(
            
    'name''Сраная галка)',
            
    'description''инфа при наведении',
            
    'default'false,
            
    'getFunc', function() return DoMenuDB.myToggle end,
            
    'setFunc', function(valueDoMenuDB.myToggle value end
        
    ):SetPoint('BOTTOMRIGHT',0,0)
    end);
    LibStub("DreamsCfg-1.0").AddSlashCommand("Dreamlol's script""/scr""/scriptcfg"); 
    Последний раз редактировалось DreamlØlz; 26.01.2015 в 14:34.

  4. #3
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,192
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Вот что у меня получилось :

    PS не обращаем внимания на позиции , это я так на рандом поставил, а так элементы управления можно ставить куда угодно.


Похожие темы

  1. [MoP] При рестарте игры сбрасываются все настройки интерфейса и графики
    от Skalger в разделе Проблемы с подключением(logon, tbc, legion, bfa, sl)
    Ответов: 2
    Последнее сообщение: 30.12.2014, 09:54
  2. Удаление персонажей маленького лвл.
    от Klick в разделе Вопросы Logon, TBC, Legion, BFa, SL
    Ответов: 1
    Последнее сообщение: 23.08.2012, 02:57
  3. Ответов: 39
    Последнее сообщение: 07.05.2012, 23:32
  4. Проблема с изучением оборонительной стойки
    от Fanman в разделе Вопросы Logon, TBC, Legion, BFa, SL
    Ответов: 2
    Последнее сообщение: 07.02.2012, 18:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •