Limitações do Compilador

⚠️ Restrições Críticas

1. Proibido: Aspas Simples (')

-- ❌ ERRO - Causa falha na compilação
local query = 'SELECT * FROM users WHERE name = "João"'
local message = 'Olá mundo!'

-- ✅ CORRETO - Usar sempre aspas duplas
local query = "SELECT * FROM users WHERE name = \"João\""
local message = "Olá mundo!"

2. Proibido: Crases (`)

-- ❌ ERRO - Template literals não são suportados
local text = `Usuário: ${playerName}`

-- ✅ CORRETO - Usar concatenação ou format
local text = "Usuário: " .. playerName
local text = string.format("Usuário: %s", playerName)

3. Queries de Database

-- ❌ ERRO - Aspas simples em queries
dbExec(database, 'CREATE TABLE users (id INT, name VARCHAR)')

-- ✅ CORRETO - Aspas duplas e escape quando necessário
dbExec(database, "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT NOT NULL)")

-- ✅ CORRETO - Query complexa do exemplo real
dbExec(self.database, "CREATE TABLE IF NOT EXISTS Groups (ID INTEGER PRIMARY KEY AUTOINCREMENT, groupName TEXT NOT NULL, groupAcl TEXT NOT NULL, members TEXT NOT NULL, type TEXT NOT NULL, capacity TEXT NOT NULL, leader TEXT NOT NULL, balance TEXT NOT NULL, invite TEXT NOT NULL, logs JSON NOT NULL, renewal JSON NOT NULL)")

4. Indentação e Clean Code

-- ❌ ERRO - Código mal formatado pode causar problemas
function test()
local x=1
if x==1 then
print("test")
end
end

-- ✅ CORRETO - Código bem formatado
function test()
    local x = 1
    if x == 1 then
        print("test")
    end
end

📋 Regras de Formatação

Espaçamento Obrigatório

-- ✅ Espaços em operadores
local result = a + b * c
local isValid = (x == 1) and (y ~= 2)

-- ✅ Espaços em funções
function calculateDamage(player, weapon, distance)
    -- código aqui
end

-- ✅ Espaços em condicionais
if player and isElement(player) then
    outputChatBox("Mensagem", player)
elseif type(player) == "string" then
    outputDebugString("Erro: " .. player)
end

Quebras de Linha

-- ✅ Quebras de linha claras
local playerData = {
    name = "João",
    level = 50,
    money = 10000,
    vehicles = {
        {model = 411, x = 0, y = 0, z = 3},
        {model = 522, x = 10, y = 10, z = 3}
    }
}

-- ✅ Funções com quebras
function processPlayerLogin(player, username, password)
    if not player or not isElement(player) then
        return false
    end
    
    local account = getAccount(username, password)
    if account then
        logIn(player, account, password)
        return true
    end
    
    return false
end

Atualizado