# Comparação: Envs vs LCK\_\* Variables

### 📊 Tabela Comparativa Detalhada

| Aspecto           | Envs Variables               | LCK\_\* Variables               |
| ----------------- | ---------------------------- | ------------------------------- |
| **Definição**     | Painel do servidor           | Sistema automático              |
| **Modificação**   | Admin pode alterar           | Impossível modificar            |
| **Conteúdo**      | Configurações personalizadas | Dados do usuário/sistema        |
| **Atualização**   | A cada 10 minutos            | A cada 10 minutos               |
| **Escopo**        | Por resource                 | Por usuário/sessão              |
| **Tipo de Dados** | Sempre strings               | Strings (com dados específicos) |
| **Uso Principal** | Configurações editáveis      | Informações dinâmicas           |
| **Segurança**     | Configurável                 | Protegido automaticamente       |

### 🎯 Quando Usar Cada Um

#### Use **Envs Variables** para:

```lua
-- ✅ Controles de resource pelo desenvolvedor
local systemEnabled = LockSystem.Envs.Get("SYSTEM_ENABLED") == "true"

-- ✅ Kill switches e emergency controls
local emergencyShutdown = LockSystem.Envs.Get("EMERGENCY_SHUTDOWN") == "true"

-- ✅ Controle de features
local premiumEnabled = LockSystem.Envs.Get("FEATURE_PREMIUM_ENABLED") == "true"

-- ✅ Debug e telemetria
local debugLevel = tonumber(LockSystem.Envs.Get("DEBUG_LEVEL")) or 0

-- ✅ Configurações de comportamento da resource
local maxUsers = tonumber(LockSystem.Envs.Get("MAX_CONCURRENT_USERS")) or 100
```

#### Use *LCK\_ Variables*\* para:

```lua
-- ✅ Informações do usuário autenticado
local discordId = LockSystem.LCK.Get("LCK_DISCORD_ID")

-- ✅ Recursos que o usuário possui
local userResources = LockSystem.LCK.Get("LCK_USER_RESOURCES")

-- ✅ Estatísticas dinâmicas
local activeUsers = LockSystem.LCK.Get("LCK_RESOURCE_ACTIVE_USERS")

-- ✅ Informações da loja/contexto
local shopName = LockSystem.LCK.Get("LCK_SHOP_NAME")
```

### 🔗 Usando Ambos Juntos

```lua
local function adaptiveResourceBehavior()
    -- Usar Envs para controles do desenvolvedor
    local systemEnabled = LockSystem.Envs.Get("SYSTEM_ENABLED") == "true"
    local debugMode = LockSystem.Envs.Get("DEBUG_ENABLED") == "true"
    local maxUsers = tonumber(LockSystem.Envs.Get("MAX_CONCURRENT_USERS")) or 100
    
    if not systemEnabled then
        outputServerLog("❌ Resource desabilitada pelo desenvolvedor")
        return false
    end
    
    -- Usar LCK_* para dados dinâmicos
    local activeUsers = tonumber(LockSystem.LCK.Get("LCK_RESOURCE_ACTIVE_USERS")) or 0
    local shopName = LockSystem.LCK.Get("LCK_SHOP_NAME") or "Unknown"
    local userResources = LockSystem.LCK.Get("LCK_USER_RESOURCES")
    
    -- Combinar: controle do dev + dados reais
    if activeUsers > maxUsers then
        outputServerLog("⚠️ Limite definido pelo dev excedido: " .. activeUsers .. "/" .. maxUsers)
        -- Dev definiu o limite, sistema aplica baseado em dados reais
        return false
    end
    
    if debugMode then
        outputServerLog("🔍 DEBUG: Shop=" .. shopName .. " Users=" .. activeUsers)
    end
    
    return true
end
```
