Limitações e Considerações
🔒 Restrições Técnicas
Tipos de Dados
Sempre Strings: Todos os valores são armazenados e retornados como strings
JSON Suportado: Desenvolvedor pode usar JSON para dados complexos
Conversão Manual: Cabe ao desenvolvedor converter tipos conforme necessário
-- ✅ Dados complexos usando JSON (recomendado para o desenvolvedor)
FEATURE_CONFIG = '{"premium":{"enabled":true,"max_users":50},"debug":{"level":2,"remote_log":true}}'
local function getFeatureConfig()
local configJson = LockSystem.Envs.Get("FEATURE_CONFIG")
if not configJson then return {} end
local success, config = pcall(fromJSON, configJson)
return success and config or {}
end
-- ✅ Alternativa - múltiplas variáveis simples
FEATURE_PREMIUM_ENABLED = "true"
FEATURE_PREMIUM_MAX_USERS = "50"
DEBUG_LEVEL = "2"
DEBUG_REMOTE_LOG = "true"
Limitações de Tamanho
Nome da Variável: Máximo 64 caracteres
Valor: Máximo 1024 caracteres por variável
Quantidade: Máximo 100 variáveis por resource
-- ❌ Nome muito longo
CONFIGURACAO_MUITO_LONGA_DO_SISTEMA_DE_ECONOMIA_AVANCADO = "valor"
-- ✅ Nome conciso
ECONOMIA_CONFIG_AVANCADA = "valor"
⚠️ Considerações de Performance
Cache e Frequência de Acesso
-- ❌ Evitar - consultas excessivas em loops
for i = 1, 1000 do
local config = LockSystem.Envs.Get("ALGUMA_CONFIG") -- Ineficiente
-- processar...
end
-- ✅ Recomendado - cache local
local config = LockSystem.Envs.Get("ALGUMA_CONFIG")
for i = 1, 1000 do
-- usar config cached
-- processar...
end
Inicialização vs Runtime
-- ✅ Carregar configurações na inicialização
local serverConfigs = {}
addEventHandler("onResourceStart", resourceRoot, function()
serverConfigs.nome = LockSystem.Envs.Get("SERVIDOR_NOME")
serverConfigs.maxPlayers = tonumber(LockSystem.Envs.Get("MAX_PLAYERS"))
serverConfigs.economia = tonumber(LockSystem.Envs.Get("MULTIPLICADOR_ECONOMIA"))
end)
-- ✅ Usar configurações pré-carregadas
local function aplicarBonus(player)
local bonus = serverConfigs.economia or 1.0
-- aplicar bonus...
end
🚫 O que NÃO é Possível
-- ❌ Modificar variáveis pelo código
LockSystem.Envs.Set("NOVA_VAR", "valor") -- Não existe
-- ❌ Listar todas as variáveis
local todasVars = LockSystem.Envs.GetAll() -- Não existe
-- ❌ Verificar se variável existe sem acessá-la
local existe = LockSystem.Envs.Exists("VAR_NAME") -- Não existe
-- ❌ Observar mudanças instantâneas
LockSystem.Envs.OnChange("VAR_NAME", callback) -- Não existe
-- Alterações são sincronizadas a cada 10 minutos
💡 Alternativas para Limitações
Para Dados Complexos - Use JSON Strings
-- Desenvolvedor define configurações complexas da resource:
-- SYSTEM_CONFIG = '{"security":{"level":2,"anti_crack":true},"features":{"premium":true,"beta":false},"limits":{"max_users":100,"timeout":30}}'
local function getSystemConfig()
local jsonStr = LockSystem.Envs.Get("SYSTEM_CONFIG")
if not jsonStr then return {} end
local success, config = pcall(fromJSON, jsonStr)
return success and config or {}
end
local systemConfig = getSystemConfig()
local securityLevel = systemConfig.security and systemConfig.security.level or 1
local premiumEnabled = systemConfig.features and systemConfig.features.premium or false
local maxUsers = systemConfig.limits and systemConfig.limits.max_users or 50
Para Arrays - Use Strings Separadas
-- No painel:
-- ADMINS_LISTA = "Admin1,SuperAdmin,Moderador1"
-- VEICULOS_VIP = "Infernus,Cheetah,Banshee"
local function parseList(listStr)
if not listStr then return {} end
local list = {}
for item in listStr:gmatch("([^,]+)") do
table.insert(list, item:trim())
end
return list
end
local adminsList = parseList(LockSystem.Envs.Get("ADMINS_LISTA"))
local vipVehicles = parseList(LockSystem.Envs.Get("VEICULOS_VIP"))
Atualizado