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