Thread Tools Display Modes
09-05-23, 12:21 PM   #1
Sibille
A Kobold Labourer
Join Date: Sep 2023
Posts: 1
Question lua problem

Hello, I started coding an addon.
First for my guild then + (we never know)

but I encounter a problem, when saving the options in the DB, all the options work, but not those of "enableChatFunctionality".
I can't find solution... the print returns "nil".

I share my code file here

Code:
-- Opt.lua

-- Initialisation de la base de données
SweetCornerDB = SweetCornerDB or {}

local ADDON_NAME = "SweetCorner"
local LibStub = LibStub
local AceConfig = LibStub("AceConfig-3.0")
local AceGUI = LibStub("AceGUI-3.0")
local AceConfigDialog = LibStub("AceConfigDialog-3.0")

local addonVersion = "version  " .. GetAddOnMetadata(ADDON_NAME, "Version")

-- Initialise l'état des DB
SweetCornerDB.enableAddon = SweetCornerDB.enableAddon or true
SweetCornerDB.enableBasicMessages = SweetCornerDB.enableBasicMessages or true
SweetCornerDB.enableCustomMessages = SweetCornerDB.enableCustomMessages or false
SweetCornerDB.customMessageText = SweetCornerDB.customMessageText or {}
SweetCornerDB.enableMinimapButton = SweetCornerDB.enableMinimapButton or true
SweetCornerDB.enableChatFunctionality = SweetCornerDB.enableChatFunctionality or true

-- Tableau des messages de base
_G.messages = {"Salut", "Salutations", "yop", "hello", "bonjour", "slt"}

local nextOrder = 0

local function GetNextOrder()
    nextOrder = nextOrder + 1
    return nextOrder
end

local function RefreshOptions()
    AceConfig:RegisterOptionsTable(ADDON_NAME, options)
    AceConfigDialog:SetDefaultSize(ADDON_NAME, 700, 500)
end

local generalOptions = {
    type = "group",
    name = "Général",
    order = GetNextOrder(),
    args = {
        enableMinimapButtonOption = {
            type = "toggle",
            name = "Activer le bouton de la Minimap",
            desc = "Active ou désactive l'affichage du bouton de la Minimap",
            get = function() return SweetCornerDB.enableMinimapButton end,
            set = function(_, value)
                SweetCornerDB.enableMinimapButton = value
                UpdateVisibility()  -- Mettre à jour la visibilité du bouton
            end,
            order = GetNextOrder(),
            width = "full",
        },
    },
}

local salutOptions = {
    type = "group",
    name = "Salut Guilde",
    order = GetNextOrder(),
    args = {
        enableAddon = {
            type = "toggle",
            name = "Activer le salut Guilde",
            desc = "Active ou désactive le salut automatique en guilde lors de la connexion",
            get = function() return SweetCornerDB.enableAddon end,
            set = function(_, value)
                SweetCornerDB.enableAddon = value
            end,
            order = GetNextOrder(),
            width = "full",
        },
        enableBasicMessages = {
            type = "toggle",
            name = "Messages de base",
            desc = "Active ou désactive les messages de base",
            get = function() return SweetCornerDB.enableBasicMessages end,
            set = function(_, value)
                SweetCornerDB.enableBasicMessages = value
            end,
            order = GetNextOrder(),
            width = "full",
        },
        BasicMessagesConfig = {
            type = "group",
            name = "",
            order = GetNextOrder(),
            inline = true,
            args = {
                BasicMessagesTitre = {
                    type = "description",
                    name = "|cFF999999          Pré-Config :|r",
                    fontSize = "small",
                    order = GetNextOrder(),
                },
                BasicMessagesDescription = {
                    type = "description",
                    name = function()
                        local color = SweetCornerDB.enableBasicMessages and "|cFFFFFFFF" or "|cFF888888"
                        return color .. "        " .. table.concat(_G.messages, ",   ") .. "|r"
                    end,
                    fontSize = "medium",
                    order = GetNextOrder(),
                },
                EmptyLine = {
                    type = "description",
                    name = " ",
                    fontSize = "medium",
                    order = GetNextOrder(),
                },
            },
        },
        enableCustomMessages = {
            type = "toggle",
            name = "Messages personnalisés",
            desc = "Active ou désactive les messages personnalisés",
            get = function() return SweetCornerDB.enableCustomMessages end,
            set = function(_, value)
                SweetCornerDB.enableCustomMessages = value
                RefreshOptions()
            end,
            order = GetNextOrder(),
            width = "full",
        },
        CustomMessagesConfig = {
            type = "group",
            name = "",
            order = GetNextOrder(),
            inline = true,
            args = {
                CustomMessagesText = {
                    type = "input",
                    name = "Personnalisez votre message :",
                    desc = "Entrez votre message personnalisé ici.",
                    get = function() return SweetCornerDB.customMessageText[1] end,
                    set = function(_, value)
                        if value and value ~= "" then  -- Vérifie si la valeur n'est pas vide
                            if string.len(value) <= 15 then  -- Vérifie si la valeur a 15 caractères ou moins
                                SweetCornerDB.customMessageText[1] = value
                            else
                                print("|cff00fff7" .. ADDON_NAME .. "|r: " .. "|cffff0000On t'a demandé un message de salutation, pas un roman !|r")
                                RefreshOptions()
                            end
                        else
                            print("|cff00fff7" .. ADDON_NAME .. "|r: Le message personnalisé ne peut pas être vide.")
                            SweetCornerDB.customMessageText[1] = nil  -- Met la valeur à vide
                            SweetCornerDB.enableCustomMessages = false  -- Désactive la case "Messages personnalisés"
                            RefreshOptions()
                        end
                    end,
                    disabled = function() return not SweetCornerDB.enableCustomMessages end,
                    order = GetNextOrder(),
                    width = "full",
                }       
            },
        },
    },
}

local chatOptions = {
    type = "group",
    name = "Chat Options",
    order = GetNextOrder(),
    args = {
        enableChatFunctionality = {
            type = "toggle",
            name = "Activer le bouton du chat",
            desc = "Active ou désactive le bouton du chat",
            get = function() return SweetCornerDB.enableChatFunctionality end,
            set = function(_, value)
                SweetCornerDB.enableChatFunctionality = value
                UpdateChatButtonsVisibility()  -- Mettre à jour la visibilité du bouton
                print(type(options))
            end,
            order = GetNextOrder(),
            width = "full",
        },
    },
}

local options = {
    type = "group",
    childGroups = "tab",
    args = {
        sweetcorner = {
            type = "group",
            name = addonVersion,
            args = {
                general = generalOptions,
                salut = salutOptions,
                chat = chatOptions,
                reloadButton = {
                    type = "execute",
                    name = "ReloadUI",
                    desc = "/reload",
                    func = function()
                        ReloadUI()
                    end,
                    order = GetNextOrder(),
                },
                resetToDefaultButton = {
                    type = "execute",
                    name = "Reset Config",
                    desc = "Réinitialise la configuration",
                    func = function()
                        ResetToDefaults()  -- Assurez-vous que cette fonction est accessible
                        UpdateButtonVisibility()
                        RefreshOptions()
                    end,
                    order = GetNextOrder(),
                },
                EmptyLine03 = {
                    type = "description",
                    name = " ",
                    order = GetNextOrder(),
                },
            },
        },
    },
    name = "|cff00fff7" .. ADDON_NAME ..  "|r|cff797979 Options",
}

AceConfig:RegisterOptionsTable(ADDON_NAME, options)
AceConfigDialog:SetDefaultSize(ADDON_NAME, 700, 500)

AceConfigDialog:AddToBlizOptions(ADDON_NAME, ADDON_NAME)
download link, if you want

thanks for your advices
  Reply With Quote

WoWInterface » Developer Discussions » Lua/XML Help » lua problem


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off