Thread: lua problem
View Single Post
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