Configurações Avançadas
🔍 Sistema de Debugging Remoto
-- Desenvolvedor controla debugging da resource remotamente:
-- DEBUG_ENABLED = "false"
-- DEBUG_LEVEL = "1" -- 1=basic, 2=verbose, 3=full
-- LOG_ERRORS_REMOTE = "true" -- Enviar erros para dev
-- TELEMETRY_ENABLED = "false" -- Coletar dados de uso
local function initializeDebugging()
local debugEnabled = LockSystem.Envs.Get("DEBUG_ENABLED") == "true"
local debugLevel = tonumber(LockSystem.Envs.Get("DEBUG_LEVEL")) or 0
local remoteLogging = LockSystem.Envs.Get("LOG_ERRORS_REMOTE") == "true"
local telemetryEnabled = LockSystem.Envs.Get("TELEMETRY_ENABLED") == "true"
if debugEnabled then
outputServerLog("🔍 Debug ativado pelo desenvolvedor - Nível: " .. debugLevel)
setElementData(resourceRoot, "debug_level", debugLevel)
-- Debug avançado - mostrar dados LCK_*
if debugLevel >= 2 then
local shopName = LockSystem.LCK.Get("LCK_SHOP_NAME")
local activeUsers = LockSystem.LCK.Get("LCK_RESOURCE_ACTIVE_USERS")
outputServerLog("🏪 Shop: " .. (shopName or "N/A"))
outputServerLog("👥 Usuários ativos: " .. (activeUsers or "0"))
end
end
-- Sistema de telemetria para o desenvolvedor
if telemetryEnabled then
setTimer(function()
local activeUsers = LockSystem.LCK.Get("LCK_RESOURCE_ACTIVE_USERS")
local shopName = LockSystem.LCK.Get("LCK_SHOP_NAME")
-- Dev pode coletar dados de uso da resource
outputServerLog("📊 Telemetria: " .. (activeUsers or "0") .. " usuários em " .. (shopName or "Unknown"))
end, 300000, 0) -- A cada 5 minutos
end
end
-- Função para logging remoto de erros
local function logError(errorMsg)
local remoteLogging = LockSystem.Envs.Get("LOG_ERRORS_REMOTE") == "true"
if remoteLogging then
-- Enviar erro para sistema do desenvolvedor
outputServerLog("❌ ERRO REMOTO: " .. errorMsg)
-- Aqui o dev poderia implementar envio para seu sistema
end
end
🌍 Sistema Multi-idioma
-- Definir no painel:
-- IDIOMA = "pt_BR"
-- TEXTO_BEMVINDO_PT = "Bem-vindo ao servidor!"
-- TEXTO_BEMVINDO_EN = "Welcome to the server!"
-- TEXTO_BEMVINDO_ES = "¡Bienvenido al servidor!"
local function getText(textKey)
local language = LockSystem.Envs.Get("IDIOMA") or "pt_BR"
local envName = "TEXTO_" .. textKey:upper() .. "_" .. language:sub(1,2):upper()
return LockSystem.Envs.Get(envName) or "Texto não encontrado"
end
-- Usar textos localizados
addEventHandler("onPlayerConnect", root, function()
local welcomeText = getText("bemvindo")
outputChatBox(welcomeText, source, 0, 255, 0)
end)
⚡ Sistema de Emergency Response
-- Desenvolvedor tem controles de emergência:
-- EMERGENCY_SHUTDOWN = "false" -- Desligar resource imediatamente
-- PERFORMANCE_THROTTLE = "false" -- Reduzir performance em caso de problema
-- COMPATIBILITY_MODE = "false" -- Modo compatibilidade para bugs
-- UPDATE_REQUIRED = "false" -- Forçar atualização
local function emergencyResponseSystem()
-- Emergency shutdown - parar resource imediatamente
local emergencyShutdown = LockSystem.Envs.Get("EMERGENCY_SHUTDOWN") == "true"
if emergencyShutdown then
outputServerLog("🚨 EMERGENCY SHUTDOWN - Resource desligada pelo desenvolvedor")
stopResource(getThisResource())
return
end
-- Verificar se atualização é obrigatória
local updateRequired = LockSystem.Envs.Get("UPDATE_REQUIRED") == "true"
if updateRequired then
outputServerLog("⬆️ Atualização obrigatória definida pelo desenvolvedor")
outputChatBox("⚠️ Esta versão da resource está desatualizada. Contate o administrador.", root, 255, 165, 0)
-- Dev pode decidir bloquear funcionalidades
return
end
-- Modo de performance reduzida
local performanceThrottle = LockSystem.Envs.Get("PERFORMANCE_THROTTLE") == "true"
if performanceThrottle then
outputServerLog("🐌 Modo performance reduzida ativado pelo desenvolvedor")
setElementData(resourceRoot, "performance_mode", "throttled")
-- Reduzir timers, desabilitar features pesadas, etc.
end
-- Modo compatibilidade para resolver bugs temporariamente
local compatibilityMode = LockSystem.Envs.Get("COMPATIBILITY_MODE") == "true"
if compatibilityMode then
outputServerLog("🔧 Modo compatibilidade ativado pelo desenvolvedor")
setElementData(resourceRoot, "compatibility_mode", true)
-- Desabilitar features problemáticas temporariamente
end
-- Verificar integridade baseado em dados LCK_*
local activeUsers = tonumber(LockSystem.LCK.Get("LCK_RESOURCE_ACTIVE_USERS")) or 0
local shopName = LockSystem.LCK.Get("LCK_SHOP_NAME")
-- Dev pode definir comportamentos específicos para certas lojas
if shopName and shopName:find("test") then
outputServerLog("🧪 Loja de teste detectada: comportamento especial ativado")
setElementData(resourceRoot, "test_mode", true)
end
end
setTimer(emergencyResponseSystem, 30000, 0) -- Verificar a cada 30 segundos
Atualizado