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