# Suporte e Resolução de Problemas

### 🔍 Problemas Comuns

#### Variável Retorna `nil`

**Possíveis Causas:**

```lua
-- 1. Variável não definida no painel
-- 2. Nome da variável incorreto (case-sensitive)
-- 3. Sistema ainda não inicializado
```

**Soluções:**

```lua
-- ✅ Verificação robusta
local function getEnvSafe(envName, defaultValue)
    local value = LockSystem.Envs.Get(envName)
    
    if value == nil then
        outputServerLog("⚠️ Env não encontrada: " .. envName)
        return defaultValue
    end
    
    if value == "" then
        outputServerLog("⚠️ Env vazia: " .. envName)
        return defaultValue
    end
    
    return value
end

local serverName = getEnvSafe("SERVIDOR_NOME", "Servidor Padrão")
```

#### Valores Inesperados

**Problema:** Variável retorna valor diferente do esperado

```lua
-- ❌ Problema comum - espaços em branco
-- No painel: MAX_PLAYERS = " 128 "
local maxPlayers = tonumber(LockSystem.Envs.Get("MAX_PLAYERS"))  -- nil!

-- ✅ Solução - sempre fazer trim
local function getEnvTrimmed(envName)
    local value = LockSystem.Envs.Get(envName)
    return value and value:trim() or nil
end

local maxPlayers = tonumber(getEnvTrimmed("MAX_PLAYERS")) or 64
```

#### Conversão de Tipos Falhando

```lua
-- ❌ Conversão pode falhar
local rate = tonumber(LockSystem.Envs.Get("XP_RATE"))  -- nil se não for número

-- ✅ Conversão segura
local function safeToNumber(str, default)
    if not str then return default end
    local num = tonumber(str)
    return num or default
end

local xpRate = safeToNumber(LockSystem.Envs.Get("XP_RATE"), 1.0)
```

### 🐛 Sistema de Debug

```lua
-- Sistema completo de debug para Envs
local function debugEnvSystem()
    print("=== DEBUG ENV SYSTEM ===")
    
    -- Verificar se sistema está disponível
    if not LockSystem or not LockSystem.Envs then
        print("❌ Sistema Envs não disponível")
        return
    end
    
    print("✅ Sistema Envs disponível")
    
    -- Lista de variáveis para testar
    local testVars = {
        "SERVIDOR_NOME",
        "MAX_PLAYERS", 
        "ECONOMIA_MULTIPLICADOR",
        "DISCORD_WEBHOOK",
        "DEBUG_ATIVO"
    }
    
    print("\n--- Variáveis Testadas ---")
    for _, varName in ipairs(testVars) do
        local value = LockSystem.Envs.Get(varName)
        local status = value and "✅" or "❌"
        local displayValue = value or "nil"
        
        print(string.format("%s %s = %s", status, varName, displayValue))
    end
    
    print("========================")
end

-- Comando admin para debug
addCommandHandler("debugenv", function(player)
    if not hasObjectPermissionTo(player, "general.adminpanel") then
        return outputChatBox("❌ Sem permissão", player, 255, 0, 0)
    end
    
    debugEnvSystem()
    outputChatBox("✅ Debug executado - verifique console", player, 0, 255, 0)
end)
```

### 📞 Quando Contatar Suporte

Entre em contato se:

* Variáveis definidas no painel retornam sempre `nil`
* Alterações no painel não refletem no código após 15+ minutos
* Sistema `LockSystem.Envs` não está disponível mesmo com autenticação ok
* Performance degradada após usar muitas variáveis Envs

### 🔧 Ferramentas de Diagnóstico

```lua
-- Função para diagnóstico completo
local function diagnosticEnvs()
    local report = {
        system_available = LockSystem and LockSystem.Envs and true or false,
        timestamp = getRealTime().timestamp,
        tested_vars = {}
    }
    
    if report.system_available then
        local commonVars = {
            "SERVIDOR_NOME", "MAX_PLAYERS", "DEBUG_ATIVO",
            "ECONOMIA_MULTIPLICADOR", "DISCORD_WEBHOOK"
        }
        
        for _, varName in ipairs(commonVars) do
            local value = LockSystem.Envs.Get(varName)
            report.tested_vars[varName] = {
                exists = value ~= nil,
                empty = value == "",
                value_type = type(value),
                length = value and #value or 0
            }
        end
    end
    
    -- Salvar relatório para análise
    local reportFile = fileCreate("env_diagnostic.json")
    if reportFile then
        fileWrite(reportFile, toJSON(report, true))
        fileClose(reportFile)
        print("📋 Relatório de diagnóstico salvo em env_diagnostic.json")
    end
    
    return report
end
```

**Lembre-se**: As variáveis Envs são uma ferramenta poderosa para criar recursos configuráveis e adaptáveis. Use-as para tornar seus recursos mais flexíveis e fáceis de manter! 🎯
