THE ORB
Iniciando o studio

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.

groupsAlguma coisa nunca aparececodePrecisa de um desenvolvedor

Faça isto primeiro

Descubra se o modelo ou o veículo que ele tenta usar existe de verdade no seu servidor.

bug_reportMelhor colar o console inteiro

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. 1

    Um identificador de entidade que é 0 ou nil

    CreateVehicle devolveu 0 porque o modelo nunca carregou, e o identificador foi direto para outro nativo. De longe a forma mais comum.

  2. 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. 3

    Um vetor onde se querem três números, ou o contrário

    SetEntityCoords(ped, coords) falha onde se espera SetEntityCoords(ped, coords.x, coords.y, coords.z, ...).

  4. 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. 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 Fixer

Para esse tipo de erro, o Script Optimizer lê o script e conserta o código por trás disso.

Erros que andam junto com este