tentativa de concatenar um valor nil
Um script tentou montar uma mensagem com um valor que faltava, normalmente um nome de jogador ou uma configuração que você deixou em branco.
Faça isto primeiro
Confira o arquivo de configuração daquele script procurando um ajuste que nunca foi preenchido.
O que significa
Foi usado o operador .. com algo que não é nem string nem número. A mensagem nomeia: attempt to concatenate a nil value (local 'name').
O Lua concatena números sem problema, então isso quase sempre é um nil, e quase sempre está dentro de uma string que está sendo montada para um print, uma notificação, uma mensagem de chat ou uma consulta.
O que causa isso
Ordenado pela frequência com que é a resposta.
- 1
Um campo de tabela que falta dentro de uma mensagem
'Welcome ' .. player.nameonde o objeto do jogador não temname, ou o objeto inteiro é nil. Montar a mensagem é onde o dado que falta morde pela primeira vez. - 2
Uma função que não devolveu nada
GetPlayerName(src)devolve nil para um jogador que já saiu, e o resultado vai direto para uma linha de log. - 3
Um valor de configuração que nunca foi definido
Config.Webhook .. '?wait=true'com a webhook vazia numa configuração que o usuário nunca preencheu. - 4
Montar SQL por concatenação
Que além disso é um buraco de injeção, então esse erro está fazendo um favor ao chamar a atenção para ele.
Como saber qual é o seu
Envolva o operando em tostring() temporariamente: o erro some e a mensagem imprime nil exatamente onde estava o valor que faltava, e isso diz qual é sem adivinhar nada.
Onde olhar
A linha que ele nomeia. Leia a expressão inteira: uma concatenação longa pode ter cinco operandos e só um é nil.
Como consertar
Coloque um valor padrão, ou use string.format, que tolera nil em %s:
local name = GetPlayerName(src) or 'unknown'
print(('player %s bought %s'):format(name, item or 'nothing'))E para SQL, use marcadores de posição em vez de concatenar:
MySQL.query('SELECT * FROM users WHERE identifier = ?', { identifier })Ainda travado no seu próprio código?
Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.
bug_reportAbrir o Server FixerPara esse tipo de erro, o Script Optimizer lê o script e conserta o código por trás disso.