THE ORB
Iniciando o studio

GetPlayer(source) devolveu nil no servidor

O servidor procurou um jogador e não achou: normalmente ele desconectou no meio da ação.

groupsAlguma ação falha de vez em quandocodePrecisa de um desenvolvedor

Faça isto primeiro

De vez em quando é normal. O tempo todo significa que o script não confere se o jogador ainda está lá.

bug_reportMelhor colar o console inteiro

O que significa

Um handler do servidor pediu ao framework um objeto de jogador e não recebeu nada. Todo acesso a campos que vier depois falha.

O que causa isso

Ordenado pela frequência com que é a resposta.

  1. 1

    O jogador se desconectou no meio da operação

    Entre o evento disparar e o handler rodar, ele saiu. Comum com qualquer operação demorada ou com espera.

  2. 2

    O source não é o que você acha

    Dentro de um callback ou de uma closure aninhada, source não é o que você pensa. Tem que capturar no topo do handler:

    local src = source
  3. 3

    O jogador está conectado mas não carregado

    Durante o playerConnecting, e por um momento depois de entrar, ainda não existe objeto de jogador: o personagem não foi escolhido.

  4. 4

    O source veio do cliente

    Um cliente que manda o próprio id pode mandar o de qualquer um. Isso é um buraco de segurança além de um nil.

  5. 5

    A função de busca errada

    GetPlayerFromId (id de servidor) e GetPlayerFromIdentifier (licença), usadas uma pela outra por engano.

Como saber qual é o seu

local src = source
print('src', src, GetPlayerName(src))

Se o GetPlayerName também é nil, ele saiu ou nunca entrou por completo. Se o nome resolve mas o objeto do framework não, ele está conectado mas não carregado.

Onde olhar

O topo do handler do evento, e cada lugar em que source é lido depois de uma espera.

Como consertar

RegisterNetEvent('shop:buy', function(item, count)
    local src = source                       -- capture primeiro, sempre
    local xPlayer = ESX.GetPlayerFromId(src)
    if not xPlayer then return end           -- ele saiu, ou nunca carregou
    -- nunca confie num id mandado pelo cliente: src é a autoridade
end)

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 Conversor de scripts traduz um resource entre ESX, QBCore e Qbox.

Erros que andam junto com este