Aller au contenu

Personnalisation

Chaque boutique est configurĂ©e dans le panneau et stockĂ©e dans votre base de donnĂ©es — voir đŸȘ CrĂ©er une boutique. Les fichiers rĂ©gissent ce que toutes les boutiques ont en commun.


FichierCe qu’il dĂ©cideOuvert ?
config.luaFramework, langue, interaction, ped par défaut, commande, images, catégories, rÚgles de braquage, identifiantsOui
bridge/server.luaArgent, comptes, items, inventaire, jobs, notifications, callbacks, et alerte de police personnaliséeOui
bridge/client.luaNotifications, invites d’aide, donnĂ©es du joueur et callbacks cĂŽtĂ© clientOui
bridge/target.luaComment les vendeurs et points de vente sont injectés dans ox_target ou qb-targetOui
bridge/utils.luaLit les identifiants d’un joueur (Steam, licence, Discord, FiveM, Xbox)Oui
locales/*.luaTextes en jeu : notifications, invites d’interaction, messages de braquageOui
html/locales.jsTextes au sein des panneaux et de la fenĂȘtre de boutique, pour les douze languesLisible
html/index.html, style.css, script.jsLes panneaux et la fenĂȘtre de boutiqueLisible
list/peds.luaModÚles de peds proposés dans le panneauSous escrow
mic_shopcreator.sqlLes neuf tables, importées une seule foisOui
client.lua, server.luaLogique des boutiquesSous escrow

OptionCe qu’elle faitPar dĂ©faut
Config.LocaleLa langue, en jeu et dans les panneaux. Voir Langues'en'
Config.Framework'esx' ou 'qbcore'. Non dĂ©tectĂ© automatiquement. Sur QBox, utilisez 'qbcore' — QBox gĂšre les ressources QBCore via sa couche de compatibilitĂ©'esx'
Config.CommandLa commande ouvrant le panneau du Shop Creator'shopcreator'
Config.IdentifierTypeComment les propriétaires et employés sont identifiés : 'discord', 'license', 'esx' ou 'citizenid'. Voir Installation'discord'
OptionCe qu’elle faitPar dĂ©faut
Config.Interaction'ox_target', 'qb-target' ou 'default' (invite d’aide et E)'ox_target'
Config.RadiusInteractAvec 'default', distance en mĂštres pour pouvoir interagir2.0
Config.SpawnNPCfalse ne fait apparaütre aucun vendeur : un marqueur (avec 'default') ou une sphùre target marque l’endroit. Pas de vendeur = personne à braquertrue
Config.DefaultPedModĂšle utilisĂ© si un emplacement n’en a pas, ou en a un invalide'a_f_m_bevhills_01'
Config.PedSpawnDistanceLes vendeurs n’existent que lorsqu’un joueur se trouve à moins de cette distance en mùtres20.0
OptionCe qu’elle faitPar dĂ©faut
Config.CategoriesCatĂ©gories proposĂ©es lors de l’ajout d’un produit ; la fenĂȘtre de boutique regroupe les produits selon celles-ciitems, weapons, misc
Config.InventoryImagePathListe de dossiers d’images. Pour chaque produit, la fenĂȘtre tente <nom_item>.png dans chaque dossier successivement et affiche le premier validenui://ox_inventory/web/images/
Config.AllowEmployeesAddProductsDans les boutiques possédées, autorise ou non les employés à ajouter de nouveaux produits. Les propriétaires le peuvent toujoursfalse

Vous n’utilisez pas ox_inventory ? Faites pointer Config.InventoryImagePath vers le dossier d’images de votre inventaire, par exemple nui://qb-inventory/html/images/. Ajoutez une seconde entrĂ©e si vos images sont rĂ©parties dans plusieurs dossiers.

OptionCe qu’elle faitPar dĂ©faut
Config.BlacklistWeaponsConçu pour interdire certaines armes. Cette version ne le lit pas : n’importe quelle arme dĂ©clenche un braquage, seules les mains nues n’en lancent pasweapon_unarmed, weapon_nightstick, weapon_stungun
Config.RobberyNotifyJobsMĂ©tiers alertĂ©s lorsqu’un braquage dĂ©butepolice
Config.PoliceAlert"default" alerte les métiers ci-dessus avec notification et blip pendant 1 minute. "custom" appelle TriggerPoliceAlert dans bridge/server.lua à la place"default"
Config.RobberyCooldownTemps de recharge par dĂ©faut si aucun n’est configurĂ© sur la boutique. ComptĂ© en minutes (le commentaire de config.lua mentionne des secondes)300
Config.TakeRobberyMoneyFromVaultDans les boutiques possĂ©dĂ©es, l’argent dĂ©robĂ© est prĂ©levĂ© du coffre-fort — et s’arrĂȘte lorsqu’il est videtrue
OptionCe qu’elle faitPar dĂ©faut
Config.ScreenshotJoint une capture d’écran du joueur aux logs Discord. NĂ©cessite screenshot-basic en fonctionnementtrue

L’URL du webhook se dĂ©finit par boutique dans le panneau, pas ici.


CommandeQui peut l’utiliserCe qu’elle fait
/shopcreatorACE mic_shop.openOuvre le panneau du Shop Creator. Renommable via Config.Command, et assignable Ă  une touche FiveM comme toute commande

Les propriĂ©taires et employĂ©s n’ont besoin d’aucune permission : la fenĂȘtre de boutique leur affiche une icĂŽne d’engrenage vers les ParamĂštres de la boutique lorsqu’ils ouvrent une boutique qu’ils possĂšdent ou oĂč ils travaillent.


Douze langues sont fournies : en, es, fr, de, it, pt, ru, ja, ko, zh-CN, ar et nl. Les textes sont répartis en deux endroits régis par Config.Locale :

  • locales/<code>.lua — ce que le jeu affiche : notifications, textes d’aide, messages de braquage.
  • html/locales.js — ce que les panneaux et la fenĂȘtre de boutique affichent, un bloc par langue.

Ajouter une langue :

  1. Copiez locales/en.lua vers locales/<code>.lua et traduisez le texte sur la droite de chaque ligne. Conservez les clés et les éventuels %s.
  2. Ajoutez locales/<code>.lua à shared_scripts dans fxmanifest.lua, aux cÎtés des autres, afin que les clients le téléchargent.
  3. Dans html/locales.js, copiez le bloc 'en', renommez-le avec votre code, puis traduisez-le.
  4. Réglez Config.Locale sur votre code, faites refresh, puis redémarrez.

Une clĂ© manquante dans votre fichier Lua s’affichera en jeu sous la forme Translation not found: <key>.


Quatre fichiers ouverts se trouvent dans bridge/. Ne modifiez pas les noms de fonctions — le code du script les appelle directement par leur nom.

bridge/server.lua — un bloc pour ESX, un pour QBCore, sĂ©lectionnĂ© selon Config.Framework.

FonctionÀ quoi elle sert
GetPlayer, GetPlayerJobL’objet joueur et son job
GetMoney, AddMoney, RemoveMoneyArgent liquide
GetAccount, AddAccountMoney, RemoveAccountMoneyComptes nommés : bank, black_money
GetInventoryItem, AddInventoryItem, RemoveInventoryItemItems. Lit à travers ox_inventory lorsqu’il est actif
GetPlayerInventoryInventaire du propriĂ©taire, listĂ© lorsqu’il approvisionne sa boutique
ShowNotificationNotifications cÎté serveur
RegisterServerCallbackCallbacks via ESX ou QBCore
TriggerPoliceAlert(x, y, z, shopLabel)AppelĂ© lors de chaque braquage quand Config.PoliceAlert = "custom". Vide par dĂ©faut — insĂ©rez votre dispatch

bridge/client.lua — ShowNotification, ShowHelpNotification, GetPlayerData et TriggerServerCallback. Sur QBCore, ShowHelpNotification est vide ; remplissez-le avec votre propre systĂšme d’aide ou de texte Ă  l’écran si vous utilisez Config.Interaction = 'default' ou souhaitez voir l’invite d’embauche d’employĂ©.

bridge/target.lua — ajoute l’option « ouvrir la boutique » Ă  chaque vendeur (ou Ă  une sphĂšre quand Config.SpawnNPC est dĂ©sactivĂ©) pour ox_target ou qb-target, et la retire lors des modifications.

Dispatch de police sur mesure : dĂ©finissez Config.PoliceAlert = "custom" et Ă©crivez l’alerte de votre ressource de dispatch dans TriggerPoliceAlert au sein de bridge/server.lua. Elle reçoit les coordonnĂ©es du vendeur et le nom de la boutique.


Exports client pour ouvrir des boutiques depuis une autre ressource :

ExportArgumentsCe qu’il fait
OpenShopshop ID, location IDOuvre la fenĂȘtre de cette boutique, en respectant son cooldown et ses restrictions de job
OpenShopAsEmployeeshop ID, location IDIdentique Ă  OpenShop ; l’engrenage des rĂ©glages apparaĂźt si le joueur y travaille
OpenShopAsOwner—Ouvre le panneau du Shop Creator si le joueur a la permission mic_shop.open

Les ressources de target peuvent aussi dĂ©clencher l’évĂ©nement client mic_shopcreator:client:openShop avec shopId et locationId dans les donnĂ©es, ce qui correspond au comportement interne des options de target. Les identifiants de boutique et de lieu sont ceux visibles dans le panneau.