bad argument #N to '<função>'
Um script passou para o jogo um valor do tipo errado, quase sempre porque algo de que ele precisava (um veículo, um modelo) nunca carregou.
Faça isto primeiro
Descubra se o modelo ou o veículo que ele tenta usar existe de verdade no seu servidor.
O que significa
Um nativo ou uma função padrão recebeu o tipo errado naquela posição. A mensagem diz qual e o que esperava:
bad argument #1 to 'TaskGoToCoordAnyMeans' (number expected, got nil)
A numeração de argumentos começa em 1. Num método chamado com dois-pontos, o argumento #1 é o próprio objeto, então o #2 é a primeira coisa dentro dos parênteses.
O que causa isso
Ordenado pela frequência com que é a resposta.
- 1
Um identificador de entidade que é 0 ou nil
CreateVehicledevolveu 0 porque o modelo nunca carregou, e o identificador foi direto para outro nativo. De longe a forma mais comum. - 2
Um nome de modelo que nunca virou hash
A maioria das posições de modelo quer um hash, não uma string. Use
GetHashKey(name)ou o literal com crases. - 3
Um vetor onde se querem três números, ou o contrário
SetEntityCoords(ped, coords)falha onde se esperaSetEntityCoords(ped, coords.x, coords.y, coords.z, ...). - 4
Um nil de uma configuração ou de uma linha do banco
Ler uma chave que falta produz nil em silêncio; o erro aparece uma linha depois, aqui.
- 5
Ordem de argumentos errada
Dois números trocados não dão erro. Um número onde vai uma string, sim.
Como saber qual é o seu
Imprima cada argumento com o tipo dele na linha de cima:
print(('ped=%s type=%s'):format(tostring(ped), type(ped)))Se o valor é 0 e não nil, o bug de verdade está mais acima: alguma coisa devolveu um identificador falho e ninguém conferiu.
Onde olhar
A linha que ele nomeia, e depois a linha que PRODUZIU o argumento ruim.
Como consertar
Carregue os modelos antes de gerar, e confira os identificadores antes de usar:
local model = GetHashKey('adder')
RequestModel(model)
local deadline = GetGameTimer() + 5000
while not HasModelLoaded(model) and GetGameTimer() < deadline do Wait(0) end
if not HasModelLoaded(model) then return end
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false)
if not DoesEntityExist(veh) then return end
SetModelAsNoLongerNeeded(model)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.