THE ORB
Démarrage du studio

tentative d'appeler une valeur nil

Un script a tenté d'utiliser une fonction qui n'existe pas, en général parce qu'il a été écrit pour une autre version de votre framework.

groupsCette fonctionnalité cesse de marchercodeIl faut un développeur

Faites d'abord ceci

Vérifiez que le script est fait pour votre framework et pour votre version de celui-ci.

bug_reportCollez plutôt toute votre console

Ce que ça veut dire

Le script a tenté d'invoquer quelque chose qui n'est pas une fonction. Le nom entre parenthèses dit quoi : (global 'ESX'), (field 'GetPlayerData'), (method 'getJob').

method 'x' mérite une lecture attentive : cela signifie que l'appel a utilisé deux-points (obj:x()) et que la table n'a pas de x. C'est presque toujours une différence de version du framework, où la méthode a été renommée ou déplacée.

Ce qui la provoque

Classé par fréquence : la cause la plus probable en premier.

  1. 1

    Une native qui n'existe pas de ce côté

    Des natives client appelées sur le serveur, ou l'inverse. La plupart des natives de dessin, de saisie et de caméra sont client uniquement : sur le serveur ce global est simplement nil, et l'appeler c'est appeler nil.

  2. 2

    Une méthode du framework renommée entre versions

    xPlayer.getJob() contre xPlayer.job, QBCore.Functions.GetPlayerData contre PlayerData, ESX Legacy contre ESX 1.1. Les scripts écrits pour une version appellent des méthodes que l'autre n'a pas.

  3. 3

    Un export qui a résolu vers nil

    exports['res']:method() où la ressource est arrêtée, mal nommée, ou n'exporte pas ce nom. FiveM renvoie nil au lieu de lever une erreur, donc l'échec atterrit ici.

  4. 4

    La fonction est définie plus bas dans le fichier

    Lua affecte local function f quand cette ligne s'exécute, pas à l'analyse. Appeler f() au-dessus de sa définition, c'est appeler nil.

  5. 5

    Une faute de frappe

    TriggerServerEvnet, ou GetPlayerPedId alors que la vraie native est PlayerPedId.

Comment savoir laquelle est la vôtre

print(type(laChose))

au-dessus de l'appel. nil pour une native signifie que vous êtes du mauvais côté : consultez la référence des natives, qui indique client ou serveur pour chaque entrée. table signifie que vous appelez une table, ce qui veut généralement dire que . a été utilisé là où : fallait.

Où regarder

Le fichier et la ligne nommés. Si le nom est une native globale, cherchez dans la référence des natives avant de supposer que votre code est fautif.

Comment la corriger

-- exports : vérifiez que la ressource tourne avant de lui faire confiance
if GetResourceState('ox_inventory') ~= 'started' then return end
local count = exports.ox_inventory:Search(src, 'count', 'water')

-- méthodes du framework : lisez l'API de cette version, ne devinez pas
local job = xPlayer.job          -- ESX Legacy
-- local job = xPlayer.getJob()  -- ESX plus ancien

Toujours bloqué sur votre propre code ?

Cette page explique ce que cette erreur signifie en général. Collez votre console dans Server Fixer : il classera tout ce qui s'y trouve et vous dira quoi faire en premier ; et si vous préférez ne pas y toucher, ORBIE peut réparer le script et vous rendre la ressource prête à déposer.

bug_reportOuvrir le Server Fixer

Pour ce type d'erreur, le Script Optimizer lit le script et répare le code derrière tout ça.

Les erreurs qui voyagent avec celle-ci