Melhores Práticas

✅ Organização de Variáveis

Estrutura para Controle de Resource

-- Controles fundamentais da resource
SYSTEM_ENABLED = "true"
SYSTEM_VERSION_MIN = "2.1.0"
EMERGENCY_SHUTDOWN = "false"

-- Controles de features
FEATURE_PREMIUM_ENABLED = "true"
FEATURE_BETA_TESTING = "false"
FEATURE_ADVANCED_SECURITY = "true"

-- Debugging e telemetria
DEBUG_ENABLED = "false"
DEBUG_LEVEL = "1"
TELEMETRY_ENABLED = "false"
LOG_ERRORS_REMOTE = "true"

-- Performance e compatibilidade
PERFORMANCE_THROTTLE = "false"
COMPATIBILITY_MODE = "false"
MAX_CONCURRENT_USERS = "100"

🔒 Segurança de Dados Sensíveis

-- ✅ Para dados sensíveis, use verificações adicionais
local function getSecureEnv(envName)
    local value = LockSystem.Envs.Get(envName)
    
    if not value or value == "" then
        outputServerLog("⚠️ Variável sensível não configurada: " .. envName)
        return nil
    end
    
    return value
end

-- Usar para tokens e chaves
local discordToken = getSecureEnv("DISCORD_BOT_TOKEN")
local apiKey = getSecureEnv("API_SECRET_KEY")

if not discordToken then
    outputServerLog("❌ Discord bot desabilitado - token não configurado")
end

📝 Sistema de Cache para Performance

-- Cache de variáveis para evitar múltiplas consultas
local envCache = {}
local cacheTimeout = 60000  -- 1 minuto

local function getCachedEnv(envName)
    local now = getTickCount()
    
    if envCache[envName] and (now - envCache[envName].timestamp) < cacheTimeout then
        return envCache[envName].value
    end
    
    local value = LockSystem.Envs.Get(envName)
    envCache[envName] = {
        value = value,
        timestamp = now
    }
    
    return value
end

-- Usar cache para variáveis consultadas frequentemente
local serverName = getCachedEnv("SERVIDOR_NOME")

🔄 Sistema de Sincronização (10 minutos)

-- Comando para limpar cache e verificar configurações atuais
-- Nota: Alterações no painel são sincronizadas automaticamente a cada 10 minutos
addCommandHandler("reloadconfig", function(player)
    if not hasObjectPermissionTo(player, "general.adminpanel") then
        return
    end
    
    -- Limpar cache (se usando)
    envCache = {}
    
    -- Verificar configurações atuais
    local serverName = LockSystem.Envs.Get("SERVIDOR_NOME")
    local maxPlayers = LockSystem.Envs.Get("MAX_PLAYERS")
    
    outputChatBox("🔄 Cache limpo - próxima sincronização em até 10 min:", player, 0, 255, 0)
    outputChatBox("📝 Servidor: " .. (serverName or "N/A"), player, 255, 255, 255)
    outputChatBox("👥 Max Players: " .. (maxPlayers or "N/A"), player, 255, 255, 255)
end)

Atualizado