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