__resource.lua a fxmanifest.lua: come convertire uno script vecchio

Script FiveM vecchio ancora utilizza __resource.lua e mostra un avviso deprecato? Come convertirlo a fxmanifest.lua con fx_version, game, lua54, ui_page e files.

Inizi uno script vecchio e la console avverte che ancora utilizza __resource.lua, che è deprecato. Lo script potrebbe ancora funzionare, ma è bloccato nel vecchio formato del manifest e non può utilizzare opzioni più recenti come Lua 5.4. Questa guida lo converte a fxmanifest.lua in pochi minuti.

Cosa è cambiato

Ogni risorsa ha bisogno di un manifest che dice a FiveM quali file caricare. Il vecchio formato era __resource.lua. Il formato attuale è fxmanifest.lua. Le direttive che conosci (client_script, server_script, ui_page, files) sono le stesse. Quello che cambia è l'intestazione.

Un vecchio manifest sembra così:

lua
resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937'

client_script 'client.lua'
server_script 'server.lua'

ui_page 'html/index.html'
files {
    'html/index.html',
    'html/script.js',
    'html/style.css',
}

La nuova intestazione

Sostituisci la riga resource_manifest_version con due righe:

lua
fx_version 'cerulean'
game 'gta5'

fx_version è obbligatorio. Seleziona il comportamento del manifest, e cerulean è la versione che gli script attuali usano. game 'gta5' dice che la risorsa è per GTA V. Il vecchio UUID in resource_manifest_version è sostituito da fx_version: non hai bisogno di tradurlo a un vecchio nome specifico di versione, solo eliminalo.

Il file completo convertito

lua
fx_version 'cerulean'
game 'gta5'

lua54 'yes'

author 'Your name'
description 'What the resource does'
version '1.0.0'

client_scripts {
    'client.lua',
}

server_scripts {
    'server.lua',
}

ui_page 'html/index.html'

files {
    'html/index.html',
    'html/script.js',
    'html/style.css',
}

Note su ogni parte:

  • client_scripts e server_scripts prendono un elenco. Il singolare client_script 'file.lua' funziona ancora per un file.
  • shared_scripts carica su entrambi i lati. Un'importazione di framework come '@ox_lib/init.lua' va lì.
  • ui_page punta al file HTML del NUI. Ogni file che la pagina carica (JS, CSS, immagini, font) deve essere in files, o non viene inviato al giocatore. I caratteri jolly funzionano: 'html/**/*'.
  • files è anche dove elenchi i dati di cui un client ha bisogno ma non esegue, come i file meta.
  • author, description e version sono facoltativi e solo informativi.

Lua 5.4

lua54 'yes' fa eseguire la risorsa su Lua 5.4. Molte risorse attuali lo richiedono. Attivarlo per uno script vecchio di solito è sicuro, ma controlla due cose: uno script che si basa sul vecchio comportamento di Lua 5.3 potrebbe aver bisogno di una piccola correzione, e gli script che usano ox_lib hanno bisogno di Lua 5.4 abilitato. Lascialo fuori se il vecchio script si comporta diversamente con esso, e testalo.

Mappe, file di dati e asset in streaming

Se il vecchio manifest ha righe data_file per il meta dei veicoli o delle armi, mantienile. Hanno la stessa sintassi in fxmanifest.lua:

lua
files {
    'data/vehicles.meta',
    'data/handling.meta',
}

data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'

I modelli e le texture in streaming in una cartella stream non hanno bisogno di alcuna voce. Per una risorsa solo mappa, aggiungi anche this_is_a_map 'yes'.

Rimuovi il vecchio file

Dopo la conversione, elimina __resource.lua dalla cartella. Lasciare entrambi i file in posizione è confuso per chiunque mantiene il server in seguito, e solo uno di loro dovrebbe descrivere la risorsa.

Quindi riavvia la risorsa:

text
refresh
ensure my_script

refresh è necessario perché il manifest è cambiato. Se il manifest ha un errore, la risorsa non si avvierà: vedi Couldn't start resource per leggere l'errore sopra quella riga.

Errori comuni dopo la conversione

  • Un fx_version o game mancante. Il manifest è rifiutato.
  • Una virgola mancante dentro { }. Ogni voce in un elenco è separata da una virgola.
  • File mancanti da files. Il NUI si carica ma le immagini o gli script sono vuoti, perché la pagina ha chiesto qualcosa che non è stato inviato. Controlla la console F8 e gli strumenti di sviluppo NUI per le richieste non riuscite.
  • Una dipendenza che non è dichiarata. Aggiungi dependency 'ox_lib' se lo script lo usa, in modo che l'ordine di avvio sia controllato. Vedi Could not find dependency.

Attenzione: non impostare fx_version a un nome molto vecchio copiato da un tutorial del 2019 solo per abbinare l'età dello script. Usa cerulean e correggi tutto ciò che si rompe.

Elenco di controllo

Sintomo Correzione
La console avverte su __resource.lua Crea fxmanifest.lua, elimina il vecchio file
Riga resource_manifest_version Sostituisci con fx_version 'cerulean' e game 'gta5'
NUI vuoto dopo la conversione Elenca ogni file NUI sotto files e mantieni ui_page
Funzioni ox_lib mancanti Aggiungi lua54 'yes' e lo script condiviso @ox_lib/init.lua
Risorsa non trovata dopo la modifica Esegui refresh, quindi ensure
La risorsa non si avvia Leggi le righe sopra Couldn't start resource

Risposte rapide

È ancora supportato __resource.lua?

FiveM lo legge ancora per vecchie risorse, ma è deprecato e stampa un avviso. Le nuove funzionalità come lua54 esistono solo in fxmanifest.lua, quindi convertilo.

Quale fx_version dovrei usare?

cerulean è la scelta comune oggi. È la versione che la maggior parte degli script attuali dichiara, e funziona su un artefatto server attuale.

Devo mantenere resource_manifest_version?

No. fx_version lo sostituisce. Elimina la riga resource_manifest_version quando converti.

Script senza questo problema

Clothing DesignerDisegna vestiti dentro FiveM — pennello, livelli, import di immagini e IA — e poi indossali.Vedi script →Drag RopeTrascina i giocatori con una corda e legali ai veicoli, con la lunghezza della corda in tempo reale.Vedi script →Item Creator V2Crea oggetti utilizzabili con animazioni, props, effetti e altro — senza scrivere codice.Vedi script →

Continua a leggere