Personalizzazione
Le impostazioni si trovano in config.lua. I file che comunicano con il tuo framework, il tuo inventario e la tua risorsa di target sono lasciati aperti, così un server con una configurazione diversa può adattarli senza toccare il codice principale protetto da escrow.
Quale file decide cosa
Sezione intitolata “Quale file decide cosa”| File o cartella | Cosa decide | Aperto? |
|---|---|---|
config.lua | Ogni impostazione di questa pagina, la funzione di notifica, gli oggetti e gli aromi | Aperto |
locales/*.lua | Ogni testo: menu, etichette del target, messaggi. Un file per lingua | Aperto |
server_functions.lua | Recupero del giocatore, aggiunta, rimozione e controllo oggetti, registrazione oggetti usabili, callback lista aromi e ReduceStress | Aperto |
client/client_functions.lua | Lettura dei dati del giocatore e controllo del lavoro per il menu di configurazione | Aperto |
target/target.lua | Ogni opzione di target su narghilè e mobili, per ox_target e qb-target | Aperto |
client/client.lua, server/server.lua, locale.lua | Posizionamento, tubo, fumo, proprietà e rifornimenti | Protetto (Escrow) |
html/ | Il menu di configurazione: index.html, style.css, script.js | File in chiaro |
inventory_items/ | Definizioni oggetti pronte all’uso per ESX, ox_inventory e QBCore | Riferimento |
inventory_images/ | Un’icona per ogni oggetto | Asset |
mic_hookah_prop/stream/ | I dieci modelli di narghilè | Asset, risorsa separata |
Framework, target e immagini
Sezione intitolata “Framework, target e immagini”| Opzione | Cosa fa | Predefinito |
|---|---|---|
Config.Locale | Lingua | en |
Config.Framework | esx, qbcore o qbox | esx |
Config.ESXResourceName | Nome della cartella di ESX | es_extended |
Config.QBResourceName | Nome della cartella di QBCore | qb-core |
Config.QBoxResourceName | Nome della cartella di QBox | qbx_core |
Config.Target | ox_target o qb-target | ox_target |
Config.QBTargetResourceName | Nome della cartella di qb-target | qb-target |
Config.InventoryImagePath | Da dove il menu di configurazione carica le icone degli aromi | nui://ox_inventory/web/images/ |
Accesso
Sezione intitolata “Accesso”| Opzione | Cosa fa | Predefinito |
|---|---|---|
Config.AdminGroups | Gruppi che possono aprire il menu e raccogliere qualsiasi narghilè o mobile. false significa che tutti sono considerati admin | false |
Config.AllowedJobs | Lavori che possono aprire il menu di configurazione. false significa qualsiasi lavoro | false |
Di base, chiunque può gestire il narghilè di chiunque. Per fare in modo che ogni narghilè appartenga al giocatore che lo ha posizionato, elenca i tuoi gruppi staff in Config.AdminGroups — ad esempio admin e superadmin. Su ESX la lista viene confrontata con il gruppo del giocatore; su QBCore e QBox, con il campo permission del giocatore.
Con una lista configurata:
| Chi | Aprire menu di configurazione | Raccogliere | Afferrare tubo |
|---|---|---|---|
| Il giocatore che l’ha posizionato | sì (se il suo lavoro è consentito) | sì | sì |
| Un gruppo admin | sì (se il suo lavoro è consentito) | sì | sì |
| Chiunque altro | no | no | sì |
Config.AllowedJobs protegge solo il menu di configurazione. Chiunque può afferrare il tubo e fumare da un narghilè acceso.
Fumo e rifornimenti
Sezione intitolata “Fumo e rifornimenti”| Opzione | Cosa fa | Predefinito |
|---|---|---|
Config.MaxActiveTime | Cosa significa “pieno” per carbone e acqua. Un hookah_coal o hookah_water lo riempie fino a questo valore | 1800 |
Config.ConsumptionPerPuff | Quanto ogni tiro sottrae a charcoal e water | 10 e 10 |
Config.MaxPuffsPerSession | Calcolato dai due valori sopra (1800 ÷ 10 = 180). Solo come riferimento; lo script non lo legge | 180 |
Config.MaxHoseDistance | Metri di estensione del tubo prima che si stacchi | 3.5 |
Config.MaxSimultaneousUsers | Limite previsto di persone che fumano dallo stesso narghilè | 4 |
Config.Stress | Chiama ReduceStress a ogni tiro | true |
Il narghilè non si consuma a tempo: carbone e acqua scendono solo quando qualcuno fa un tiro. Quando uno dei due arriva a zero, il narghilè si spegne e deve essere ricaricato.
ReduceStress in server_functions.lua riceve l’ID server del giocatore a ogni tiro quando Config.Stress è attivo. Viene fornito vuoto, con esempi commentati: un evento client, un export o un evento server della tua risorsa di stress o HUD. Inserisci lì la tua chiamata.
Effetto fumo
Sezione intitolata “Effetto fumo”| Opzione | Cosa fa | Predefinito |
|---|---|---|
Config.Particle | Quale particella viene usata: un dict e un name | scr_recartheft / scr_wheel_burnout |
Config.VapeExhale | Dimensione del fumo | 0.5 |
La configurazione indica questi due valori come “non modificare a meno che tu non sappia cosa stai facendo”. Ogni nuvola dura tre secondi ed è mostrata ai giocatori entro 150 metri.
Narghilè, mobili e aromi
Sezione intitolata “Narghilè, mobili e aromi”Le liste complete si trovano in 🎒 Oggetti.
Config.HookahItems — nome oggetto → modello. Per aggiungere un narghilè, il modello deve essere trasmesso in streaming (ad esempio in mic_hookah_prop/stream/ con una voce nel suo .ytyp), poi aggiungi la riga qui e l’oggetto nel tuo inventario.
Config.PlaceableProps — nome oggetto → propModel, type (furniture) e isChair. Qualsiasi prop del gioco base funziona. Imposta isChair = true su qualsiasi oggetto che debba offrire l’opzione Sit Down.
Config.Flavors — nome oggetto → impostazioni:
| Campo | Cosa fa |
|---|---|
Label | Nome mostrato nel menu di configurazione |
SmokeColor | Colore R, G, B del fumo |
ScreenEffect | Nome di un effetto schermo di GTA riprodotto per chi fuma, oppure false per nessuno |
EffectDuration | Durata in secondi dell’effetto schermo |
La configurazione contiene un link a una lista di nomi di effetti schermo accanto a Config.Flavors. Per aggiungere un aroma, copia una voce, dalle un nuovo nome oggetto e aggiungi l’oggetto e la sua icona al tuo inventario.
Notifiche
Sezione intitolata “Notifiche”Config.Notify in config.lua invia ogni messaggio: ShowNotification su ESX, Functions.Notify su QBCore e QBox, altrimenti sulla console. Sostituisci il corpo della funzione per usare la tua risorsa di notifiche.
Undici file sono inclusi in locales/: en, es, fr, de, it, pt, ru, cn, nl, pl, tr. Scegline uno con Config.Locale.
Il commento sopra Config.Locale menziona anche jp, ma non è incluso alcun file giapponese; impostandolo apparirà “Locale [jp] does not exist”.
Ogni file copre il menu di configurazione, le etichette del target e i messaggi. Alcune parole sono scritte direttamente nei file Lua invece che nei file della lingua: i suggerimenti di posizionamento (Rotate Right, Rotate Left, Height Up, Height Down, Place Prop, Cancel), “You are already placing an object” e “None” per un aroma vuoto.
Per aggiungere una lingua: copia locales/en.lua, cambia la chiave in alto con il tuo codice e traduci. Il manifest carica automaticamente tutto ciò che si trova in locales/, quindi non c’è altro da registrare. Imposta Config.Locale, esegui refresh e riavvia.
Adattarlo al tuo server
Sezione intitolata “Adattarlo al tuo server”| Per modificare | Modifica |
|---|---|
| Un framework personalizzato | L’oggetto framework in fondo a config.lua e le funzioni in server_functions.lua e client/client_functions.lua |
| Un inventario diverso | AddItem, RemoveItem e HasItem in server_functions.lua, e la registrazione degli oggetti usabili sotto di essi |
| Un target diverso | target/target.lua — le liste di opzioni sono condivise, cambiano solo le due chiamate addModel / AddTargetModel |
| Etichette, icone o distanza del target | target/target.lua per icone e distanza, locales/ per le etichette |
| Regole sui lavori | CheckJobAccess in client/client_functions.lua |
Su QBCore e QBox con ox_inventory avviato, server_functions.lua registra anche ogni narghilè e mobile tramite l’hook di utilizzo proprio di ox_inventory, come fallback per le configurazioni in cui il bridge oggetti di QBCore non inoltra l’utilizzo.
Tasti e comandi
Sezione intitolata “Tasti e comandi”| Tasto o comando | Quando | Cosa fa |
|---|---|---|
| E | Tenendo in mano un narghilè | Inizia il posizionamento |
| X | Tenendo in mano un narghilè | Lo ripone senza posizionarlo |
| Rotellina del mouse | Durante il posizionamento | Ruota l’anteprima |
| Freccia su / giù | Durante il posizionamento | Alza o abbassa l’anteprima |
| E | Durante il posizionamento | Appoggia l’oggetto |
| X | Durante il posizionamento | Annulla |
| E | Tenendo il tubo di un narghilè acceso | Fa un tiro |
| X (“Hookah - Stand Up X”) | Seduto | Si alza. Riassegnabile nelle impostazioni tasti di FiveM del giocatore |
/hookah:chair:stand_up | Seduto | Lo stesso, come comando |