Types d'argent FiveM : argent comptant, banque et argent noir sur ESX, QBCore et QBox
Comment l'argent fonctionne sur FiveM : comptes ESX (money, bank, black_money), cash QBCore, bank et crypto, cash ox_inventory comme article, et les chaînes de raison pour vos journaux.
Les joueurs ont plus d'une sorte d'argent : l'argent comptant dans leur poche, le compte bancaire, et sur de nombreux serveurs un solde d'argent sale. Chaque framework les nomme et les traite différemment, et ox_inventory ajoute une troisième façon. Cet article montre les noms des comptes, les fonctions pour ajouter et retirer de l'argent, comment ox_inventory traite l'argent comptant, et pourquoi la chaîne de raison est importante.
Comptes ESX
ESX a trois comptes standard :
| Compte | Signification |
|---|---|
money |
Argent comptant |
bank |
Solde bancaire |
black_money |
Argent sale, utilisé pour les travaux illégaux |
Sur le serveur, avec l'objet joueur :
ESX = exports['es_extended']:getSharedObject()
local xPlayer = ESX.GetPlayerFromId(source)
-- read
local cash = xPlayer.getAccount('money').money
local bank = xPlayer.getAccount('bank').money
local black = xPlayer.getAccount('black_money').money
-- add / remove
xPlayer.addAccountMoney('bank', 500, 'job-payout')
xPlayer.removeAccountMoney('black_money', 200, 'drug-purchase')xPlayer.addAccountMoney(account, amount, reason) et removeAccountMoney prennent d'abord le nom du compte. Pour l'argent comptant uniquement, il y a des raccourcis :
xPlayer.addMoney(100, 'sold-item')
xPlayer.removeMoney(100, 'bought-item')
local cash = xPlayer.getMoney()removeAccountMoney ne vérifie pas le solde pour vous. Vérifiez d'abord, sinon le compte peut devenir négatif sur certaines versions :
if xPlayer.getAccount('money').money >= price then
xPlayer.removeAccountMoney('money', price, 'shop')
endSi l'objet joueur est nil, consultez ESX xPlayer est nil.
Argent QBCore
QBCore garde son argent dans PlayerData.money, avec cash, bank et crypto :
local QBCore = exports['qb-core']:GetCoreObject()
local Player = QBCore.Functions.GetPlayer(source)
-- read
local cash = Player.PlayerData.money.cash
local bank = Player.PlayerData.money.bank
-- add / remove
Player.Functions.AddMoney('bank', 500, 'job-payout')
Player.Functions.RemoveMoney('cash', 50, 'shop-purchase')Player.Functions.AddMoney(type, amount, reason) et Player.Functions.RemoveMoney(type, amount, reason) prennent d'abord le type. RemoveMoney retourne false quand le joueur n'a pas assez, donc utilisez le résultat :
if Player.Functions.RemoveMoney('cash', price, 'shop-purchase') then
Player.Functions.AddItem('burger', 1)
else
TriggerClientEvent('QBCore:Notify', source, 'Not enough cash', 'error')
endIl n'y a pas de compte d'argent noir intégré dans QBCore. Les serveurs qui en ont besoin utilisent généralement un article (billets marqués) ou un type personnalisé ajouté à Config.Money, et la section suivante couvre l'option article. Si QBCore est nil dans votre script, consultez la correction GetCoreObject.
QBox
QBox est basé sur QBCore, donc les mêmes appels Player.Functions.AddMoney et RemoveMoney fonctionnent sur l'objet joueur, et les types d'argent sont les mêmes. QBox a aussi des exports sur qbx_core, alors vérifiez les exports de votre version qbx_core pour les fonctions d'argent avant de les utiliser dans du nouveau code. La forme est la même : un type, un montant et une raison.
ox_inventory : argent comptant comme article
Avec ox_inventory, l'argent comptant peut être un article au lieu d'un nombre. L'article standard s'appelle money, et l'argent sale est black_money. Les deux sont dans ox_inventory/data/items.lua.
-- give cash as an item
exports.ox_inventory:AddItem(source, 'money', 500)
-- count it
local cash = exports.ox_inventory:Search(source, 'count', 'money')
-- take it
exports.ox_inventory:RemoveItem(source, 'money', 100)
-- dirty money
exports.ox_inventory:AddItem(source, 'black_money', 1000)Sur un serveur ESX avec ox_inventory, les comptes money et black_money sont affichés comme des articles dans l'inventaire, et xPlayer.addAccountMoney('money', ...) finit dans ces articles. N'utilisez qu'une seule façon. Si un script ajoute de l'argent comptant avec la fonction ESX et un autre avec AddItem, testez que les deux s'accordent sur votre configuration avant de le livrer. La banque n'est pas un article et reste un nombre.
Attention : l'argent comptant comme article a du poids et peut être déposé, volé ou stocké dans un stash. C'est intentionnel, mais cela change le comportement des scripts de vol et de magasin. Consultez stashes dans ox_inventory.
La chaîne de raison
reason est le dernier argument des fonctions d'argent. Il ne change pas le montant. Il est transmis avec le changement pour que le framework, ou un script de journalisation, puisse enregistrer pourquoi l'argent s'est déplacé.
Player.Functions.AddMoney('cash', 250, 'taxi-job-payout')
xPlayer.addAccountMoney('bank', 250, 'taxi-job-payout')Utilisez un texte court et cohérent qui nomme le script et l'action. Quand le solde d'un joueur semble faux, une recherche de taxi-job-payout dans les journaux trouve la ligne en secondes. Si vous envoyez également les journaux à Discord, consultez journaux Discord webhook. Pour le côté équilibre de l'économie, consultez équilibrage d'une économie FiveM.
Règles pour du code d'argent sûr
- Modifiez l'argent sur le serveur uniquement. N'acceptez jamais un montant envoyé par le client.
- Vérifiez le solde avant de le retirer, et utilisez la valeur de retour sur QBCore.
- Passez une raison à chaque fois.
- Choisissez une source d'argent par compte, de sorte que l'argent comptant n'est pas stocké deux fois, une fois comme un nombre et une fois comme un article.
Liste de contrôle
| Symptôme | Solution |
|---|---|
| Quels comptes ESX existent | money, bank, black_money |
| Quels types QBCore existent | cash, bank, crypto |
| Le solde devient négatif sur ESX | Vérifiez getAccount(name).money avant removeAccountMoney |
| La suppression QBCore échoue | RemoveMoney a retourné false ; le joueur n'a pas assez |
| Pas d'argent noir sur QBCore | Utilisez un article, ou ajoutez un type personnalisé à la config |
| L'argent comptant est un article | ox_inventory : AddItem(source, 'money', amount) |
| Les journaux n'ont pas de contexte | Passez une chaîne de raison à chaque ajout et suppression |
Réponses rapides
Quels sont les types d'argent dans ESX ?
ESX a des comptes nommés money (argent comptant), bank et black_money. Vous les modifiez avec xPlayer.addAccountMoney, removeAccountMoney et les lisez avec getAccount.
Quels sont les types d'argent dans QBCore ?
QBCore stocke cash, bank et crypto dans PlayerData.money. Vous les modifiez avec Player.Functions.AddMoney et RemoveMoney, en passant le type comme premier argument.
À quoi sert l'argument raison ?
C'est un court texte que QBCore et les récentes versions d'ESX attachent à la modification d'argent, de sorte que vos journaux montrent pourquoi cela s'est produit. Passez-en toujours un clair, comme 'burger-shop'.
Des scripts sans ce problème
Pawn Shop AppUn marché de prêt sur gage entre joueurs, directement dans lb-phone.Voir le script →
Drug Dealer AppLa vente de rue en app lb-phone : zones, acheteurs PNJ, niveaux et alertes police.Voir le script →
Shop CreatorCréez un magasin en moins d’une minute — propriétaires, employés, coffres et braquages inclus.Voir le script →