if not <имя лейаута> then end
далее прописываешь дефолт его, если же будет в игре, ну а потом уже библиотеки, вроде local tekcheck = LibStub("tekKonfig-Checkbox")
local tekbutton = LibStub("tekKonfig-Button")
local tekslider = LibStub("tekKonfig-Slider")
local tekdropdown = LibStub("tekKonfig-Dropdown")
ну и далее используя библиотеки пишешь все, вот например одна из функций, которые потом используются уже в настройках
PHP код:
local function texfunc(frame)
local texturedropdown, texturedropdowntext, texturedropdowncontainer = tekdropdown.new(frame, "Texture", "TOPRIGHT", frame, 0, 0)
texturedropdowntext:SetText(oUF_Freebgrid.db.texture or FreebgridDefaults.texture)
texturedropdown.tiptext = "Change the unit's texture."
local function OnClick(self)
UIDropDownMenu_SetSelectedValue(texturedropdown, self.value)
texturedropdowntext:SetText(self.value)
oUF_Freebgrid:SetTex(self.value)
end
UIDropDownMenu_Initialize(texturedropdown, function()
local selected, info = UIDropDownMenu_GetSelectedValue(texturedropdown) or oUF_Freebgrid.db.texture, UIDropDownMenu_CreateInfo()
for name in pairs(oUF_Freebgrid.textures) do
info.text = name
info.value = name
info.func = OnClick
info.checked = name == selected
UIDropDownMenu_AddButton(info)
end
end)
end
ну и далее уже делаешь настройки, используя прописанные ранее функции
как-то так, насколько я понял, ибо я сам не очень хорошо разбираюсь

да, тут не нужно прописывать то, что ты прописывал в асе3, ибо здесь обновление ползунка и т.д сразу предусмотрено, точнее в конкретной библиотеке, тебе нужно лишь прописать имя нужной тебе опции, напр. ползунка, с библиотеке, т.е
PHP код:
local scaleslider, scaleslidertext, scalecontainer = tekslider.new(frame, string.format("Scale: %.2f", oUF_Freebgrid.db.scale or FreebgridDefaults.scale), 0.5, 2, "TOPLEFT", lockpos, "BOTTOMLEFT", 0, -GAP)
scaleslider.tiptext = "Set the units scale."
scaleslider:SetValue(oUF_Freebgrid.db.scale or FreebgridDefaults.scale)
scaleslider:SetValueStep(.05)
scaleslider:SetScript("OnValueChanged", function(self)
oUF_Freebgrid.db.scale = self:GetValue()
scaleslidertext:SetText(string.format("Scale: %.2f", oUF_Freebgrid.db.scale or FreebgridDefaults.scale))
end)
Вроде как-то так.