@ox_lib/init.lua non trovato e errori di ox_lib: come risolvere

Errori su @ox_lib/init.lua, No such export in resource ox_lib, o ox_lib non si avvia: usa la release build, assicuralo per primo, aggiungi lo shared_script, abilita lua54.

Uno script che usa ox_lib non carica nella console e il messaggio menziona @ox_lib/init.lua, o fallisce con:

text
No such export <name> in resource ox_lib

o ox_lib stesso non si avvia mai. Tutti questi derivano dalle stesse poche cause: il download sbagliato, il nome della cartella sbagliato, l'ordine di avvio sbagliato, o una riga mancante nel manifesto. Ecco la soluzione per ognuno.

Cosa è ox_lib

ox_lib è una libreria condivisa su cui molti script si basano: callback, notifiche, menu, barre di progresso, locale. Uno script sceglie di partecipare con una riga nel suo manifesto:

lua
shared_script '@ox_lib/init.lua'

Il prefisso @ox_lib/ dice a FiveM di leggere il file dalla risorsa chiamata ox_lib, non dalla cartella dello script stesso. Quindi ox_lib deve esistere, avere esattamente quel nome, e essere avviato.

1. Scarica la release, non la zip del codice sorgente

Questa è la causa che la maggior parte delle persone incontra. Su GitHub, il pulsante verde Code ti dà una zip del codice sorgente. ox_lib ha un'interfaccia web (menu, barre di progresso) che è costruita da file sorgente. La zip del codice sorgente non contiene i file costruiti, quindi ox_lib o non carica l'interfaccia utente o registra un messaggio su l'interfaccia utente non essere costruita.

Invece:

  1. Apri il repository di ox_lib su GitHub, poi Releases.
  2. Sulla versione più recente, scarica il file denominato ox_lib.zip sotto Assets.
  3. Decomprimi. La cartella all'interno deve essere ox_lib e fxmanifest.lua deve stare direttamente in essa.
text
resources/[standalone]/ox_lib/fxmanifest.lua

Se hai una cartella sorgente chiamata ox_lib-main, rimuovila e installa la release. Vedi anche Could not find dependency per problemi di nome della cartella.

2. Avvia ox_lib prima degli script

In server.cfg, ox_lib deve venire prima di qualsiasi risorsa che lo importa:

cfg
ensure oxmysql
ensure ox_lib
ensure es_extended   # or qb-core / qbx_core

ensure my_script

Se my_script è assicurato sopra ox_lib, potrebbe caricarsi per primo e fallire. Spostarlo verso il basso è la soluzione. Vedi l'ordine ensure corretto in server.cfg.

Aggiungi la dipendenza anche nel manifesto dello script, così FiveM lo controlla:

lua
dependency 'ox_lib'

3. Aggiungi lo shared script e lua54

Gli script che usano le funzioni lib. hanno bisogno di due righe in fxmanifest.lua. Senza l'importazione, lib è nil nello script, e ottieni errori come attempt to index a nil value (global 'lib'):

lua
fx_version 'cerulean'
game 'gta5'

lua54 'yes'

shared_script '@ox_lib/init.lua'

client_scripts { 'client/*.lua' }
server_scripts { 'server/*.lua' }

L'ordine è importante: shared_script '@ox_lib/init.lua' deve essere elencato in modo da caricarsi prima dei file di script che chiamano lib. Mettilo sopra client_scripts e server_scripts.

4. No such export in resource ox_lib

text
No such export <name> in resource ox_lib

Questo significa che lo script chiama un export di ox_lib che non esiste sul tuo server. Ci sono due cause:

  • Un ox_lib vecchio. Lo script è stato scritto per una versione più nuova. Aggiorna alla release build più recente.
  • ox_lib non si è avviato, quindi nessuno dei suoi export esiste. Guarda la console dove ox_lib si avvia. Se ha stampato un errore lì, risolvi quello per primo.

Controlla che ox_lib si avvia pulitamente: esegui ensure ox_lib nella console del server e leggi cosa stampa. Un avvio sano non stampa errore e nessuna riga di fallimento.

5. Controlla l'artifact del server

ox_lib ha bisogno di una build del server FiveM ragionevolmente attuale. Se ox_lib rifiuta di avviarsi e il messaggio menziona la versione del server, aggiorna i tuoi artifact. I passaggi sono in aggiornamento degli artifact del server FiveM.

6. Lo script stesso non è la colpa

Se ox_lib è installato e avviato, ma uno script ancora si rompe, conferma che:

  • La cartella dello script è denominata come la sua riga ensure dice.
  • Non hai copiato ox_lib nella cartella dello script. Deve esserci una risorsa ox_lib, a livello superiore di resources (o in una cartella tra parentesi).
  • Nessuna seconda copia di ox_lib esiste in un'altra cartella di categoria. Due cartelle con lo stesso nome di risorsa causano comportamenti imprevedibili.

Consiglio: quando aggiorni ox_lib, elimina la vecchia cartella invece di decomprimere su di essa. I vecchi file rimasti indietro possono mescolarsi con i nuovi.

Checklist

Sintomo Soluzione
@ox_lib/init.lua fallisce Installa ox_lib con quel nome di cartella esatto
Le parti dell'interfaccia utente di ox_lib mancano Usa ox_lib.zip da Releases, non la zip del codice sorgente
No such export ... in resource ox_lib Aggiorna ox_lib; controlla che si sia avviato senza errori
lib è nil in uno script Aggiungi shared_script '@ox_lib/init.lua' al suo manifesto
Lo script carica prima di ox_lib ensure ox_lib sopra lo script in server.cfg
Errori di sintassi Lua al caricamento Aggiungi lua54 'yes' al manifesto

Risposte rapide

Da dove scarico ox_lib?

Dalla pagina Releases del repository di ox_lib, usando il file ox_lib.zip allegato alla versione più recente. Non usare il pulsante verde Code, Download ZIP, che non ha file web compilati.

Perché lo script fallisce con @ox_lib/init.lua?

FiveM carica quel file dalla risorsa ox_lib. Se la cartella manca, è nominata male, o non si avvia, il percorso non può essere risolto e lo script fallisce.

Ho bisogno di lua54 per ox_lib?

Sì. Una risorsa che importa @ox_lib/init.lua dovrebbe dichiarare lua54 'yes' nel suo manifesto, poiché ox_lib stesso usa Lua 5.4.

Script senza questo problema

Mic PhoneUn telefono pieghevole che si apre in un tablet e arriva sul telefono vero del giocatore.Vedi script →Item Creator V2Crea oggetti utilizzabili con animazioni, props, effetti e altro — senza scrivere codice.Vedi script →Quest CreatorUn editor visuale di missioni e dialoghi con gli NPC, costruito nodo per nodo in gioco.Vedi script →

Continua a leggere