Salta ai contenuti

Personalizzazione

Ogni negozio viene configurato nel pannello e salvato nel tuo database — vedi 🏪 Creare un negozio. I file servono per ciò che tutti i negozi hanno in comune.


FileCosa decideAperto?
config.luaFramework, lingua, interazione, ped predefinito, comando, immagini, categorie, regole delle rapine, identificatoriSì
bridge/server.luaDenaro, conti, oggetti, inventario, lavori, notifiche, callback e l’allerta della polizia personalizzataSì
bridge/client.luaNotifiche, suggerimenti di aiuto, dati del giocatore e callback lato clientSì
bridge/target.luaCome i negozianti e i punti negozio vengono aggiunti a ox_target o qb-targetSì
bridge/utils.luaLegge gli identificatori di un giocatore (Steam, licenza, Discord, FiveM, Xbox)Sì
locales/*.luaTesto in gioco: notifiche, suggerimenti, messaggi delle rapineSì
html/locales.jsTesto all’interno dei pannelli e della finestra del negozio, per tutte le dodici lingueLeggibile
html/index.html, style.css, script.jsI pannelli e la finestra del negozioLeggibile
list/peds.luaI modelli di ped proposti nel pannelloProtetto
mic_shopcreator.sqlLe nove tabelle, importate una sola voltaSì
client.lua, server.luaLogica dei negoziProtetto

OpzioneCosa faPredefinito
Config.LocaleLa lingua, in gioco e nei pannelli. Vedi Lingue'en'
Config.Framework'esx' o 'qbcore'. Non rilevato automaticamente. Su QBox, usa 'qbcore' — QBox esegue le risorse QBCore tramite il suo livello di compatibilità'esx'
Config.CommandIl comando che apre il pannello dello Shop Creator'shopcreator'
Config.IdentifierTypeCome vengono riconosciuti proprietari e dipendenti: 'discord', 'license', 'esx' o 'citizenid'. Vedi Installazione'discord'
OpzioneCosa faPredefinito
Config.Interaction'ox_target', 'qb-target' o 'default' (suggerimento di aiuto e tasto E)'ox_target'
Config.RadiusInteractCon 'default', quanto vicino in metri deve trovarsi un giocatore2.0
Config.SpawnNPCfalse non posiziona alcun negoziante: al suo posto un marker (con 'default') o una sfera target segna il punto. Nessun negoziante significa anche nessuno da rapinaretrue
Config.DefaultPedModello utilizzato quando una posizione non ne ha uno, o ne ha uno non valido'a_f_m_bevhills_01'
Config.PedSpawnDistanceI negozianti esistono solo mentre un giocatore si trova entro questo numero di metri20.0
OpzioneCosa faPredefinito
Config.CategoriesLe categorie proposte quando aggiungi un prodotto; la finestra del negozio raggruppa i prodotti in base ad esseitems, weapons, misc
Config.InventoryImagePathUn elenco di cartelle di immagini. Per ogni prodotto la finestra prova <item name>.png in ciascuna cartella in ordine, e usa la prima che si caricanui://ox_inventory/web/images/
Config.AllowEmployeesAddProductsNei negozi di proprietà, stabilisce se i dipendenti possono aggiungere nuovi prodotti. I proprietari possono sempre; i dipendenti possono sempre gestire quelli esistentifalse

Non usi ox_inventory? Fai puntare Config.InventoryImagePath alla cartella delle immagini del tuo inventario, ad esempio nui://qb-inventory/html/images/. Aggiungi una seconda voce se le tue immagini sono divise in più cartelle.

OpzioneCosa faPredefinito
Config.BlacklistWeaponsPensato per le armi che non possono avviare una rapina. Questa versione non lo legge: qualsiasi arma ne avvia una, e solo le mani nude non lo fanno maiweapon_unarmed, weapon_nightstick, weapon_stungun
Config.RobberyNotifyJobsLavori avvisati quando inizia una rapinapolice
Config.PoliceAlert"default" avvisa i lavori qui sopra con una notifica e un blip per un minuto. "custom" chiama invece TriggerPoliceAlert in bridge/server.lua"default"
Config.RobberyCooldownTempo di attesa di riserva per un negozio che non ne ha uno salvato. Il codice lo calcola in minuti, come il campo per singolo negozio (il commento in config.lua dice secondi)300
Config.TakeRobberyMoneyFromVaultNei negozi di proprietà, le ricompense in denaro vengono prelevate dalla cassaforte del negozio — e si fermano quando è vuotatrue
OpzioneCosa faPredefinito
Config.ScreenshotAllega uno screenshot dello schermo del giocatore ai log di Discord. Richiede screenshot-basic in esecuzionetrue

L’URL del webhook vero e proprio si imposta per singolo negozio nel pannello, non qui.


ComandoChi può usarloCosa fa
/shopcreatorACE mic_shop.openApre il pannello dello Shop Creator. Rinominato con Config.Command e associabile a un tasto nelle impostazioni di FiveM come qualsiasi comando

I proprietari e i dipendenti dei negozi non hanno bisogno di permessi ACE: la finestra del negozio mostra loro un pulsante a forma di ingranaggio per aprire Shop Settings quando aprono un negozio che possiedono o in cui lavorano.


Sono incluse dodici lingue: en, es, fr, de, it, pt, ru, ja, ko, zh-CN, ar e nl. Il testo si trova in due posizioni, ed entrambe seguono Config.Locale:

  • locales/<code>.lua — ciò che mostra il gioco: notifiche, suggerimenti di aiuto, messaggi delle rapine.
  • html/locales.js — ciò che mostrano i pannelli e la finestra del negozio, un blocco per lingua.

Aggiungere una lingua:

  1. Copia locales/en.lua in locales/<code>.lua e traduci il testo a destra di ogni riga. Mantieni le chiavi e qualsiasi %s.
  2. Aggiungi locales/<code>.lua a shared_scripts in fxmanifest.lua, accanto agli altri, in modo che i giocatori lo scarichino.
  3. In html/locales.js, copia il blocco 'en', rinominalo con il tuo codice e traducilo.
  4. Imposta Config.Locale sul tuo codice, esegui refresh e riavvia.

Una chiave mancante nel tuo file Lua appare in gioco come Translation not found: <key>.


Quattro file aperti in bridge/. Mantieni invariati i nomi delle funzioni — il codice del negozio le chiama per nome.

bridge/server.lua — un blocco per ESX, uno per QBCore, scelto da Config.Framework.

FunzioneA cosa serve
GetPlayer, GetPlayerJobL’oggetto giocatore e il suo lavoro
GetMoney, AddMoney, RemoveMoneyContanti
GetAccount, AddAccountMoney, RemoveAccountMoneyConti con nome: bank, black_money
GetInventoryItem, AddInventoryItem, RemoveInventoryItemOggetti. Legge tramite ox_inventory quando è in esecuzione
GetPlayerInventoryL’inventario del proprietario, elencato quando rifornisce il proprio negozio
ShowNotificationNotifiche lato server
RegisterServerCallbackCallback tramite ESX o QBCore
TriggerPoliceAlert(x, y, z, shopLabel)Chiamato a ogni rapina quando Config.PoliceAlert = "custom". Vuoto per impostazione predefinita — inserisci qui la chiamata al tuo dispatch

bridge/client.lua — ShowNotification, ShowHelpNotification, GetPlayerData e TriggerServerCallback. Su QBCore, ShowHelpNotification è vuoto; riempilo con la tua chiamata help-text o draw-text se usi Config.Interaction = 'default' o se vuoi vedere il suggerimento di invito per i dipendenti.

bridge/target.lua — aggiunge l’opzione “apri negozio” a ogni negoziante (o a una piccola sfera quando Config.SpawnNPC è disattivato) per ox_target o qb-target, e li rimuove quando i negozi cambiano.

Dispatch della polizia personalizzato: imposta Config.PoliceAlert = "custom" e scrivi l’allerta della tua risorsa di dispatch all’interno di TriggerPoliceAlert in bridge/server.lua. Riceve le coordinate del negoziante e il nome del negozio.


Export lato client per aprire i negozi da un’altra risorsa:

ExportArgomentiCosa fa
OpenShopID negozio, ID posizioneApre la finestra di quel negozio, rispettando il tempo di attesa e la restrizione di lavoro
OpenShopAsEmployeeID negozio, ID posizioneUguale a OpenShop; l’ingranaggio di Shop Settings appare se il giocatore è proprietario o lavora lì
OpenShopAsOwner—Apre il pannello dello Shop Creator, se il giocatore possiede il permesso mic_shop.open

Le risorse target possono anche chiamare l’evento client mic_shopcreator:client:openShop passando shopId e locationId nei dati, che è esattamente ciò che fanno le opzioni target integrate. Gli ID del negozio e della posizione sono quelli mostrati nel pannello.