FiveM para türleri: ESX, QBCore ve QBox'ta nakit, banka ve kara para

Para FiveM'de nasıl çalışır: ESX hesapları (para, banka, kara_para), QBCore nakit, banka ve kripto, ox_inventory nakit bir öğe olarak, ve günlükleri için nedenler dizeleri.

Oyuncuların birden fazla para türü vardır: cebindeki nakit, banka hesabı ve birçok sunucuda kirli bir para bakiyesi. Her çerçeve onları farklı şekilde adlandırır ve yönetir; ox_inventory üçüncü bir yol ekler. Bu makale hesap adlarını, parayı ekleme ve kaldırma işlevlerini, ox_inventory'nin nakidi nasıl ele aldığını ve neden nedeni dize önemli olduğunu gösterir.

ESX hesapları

ESX'in üç standart hesabı vardır:

Hesap Anlamı
money Nakit
bank Banka bakiyesi
black_money Kirli para, yasadışı işler için kullanılır

Sunucu üzerinde, oyuncu nesnesi ile:

lua
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) ve removeAccountMoney önce hesap adını alır. Yalnızca nakit için kısayollar vardır:

lua
xPlayer.addMoney(100, 'sold-item')
xPlayer.removeMoney(100, 'bought-item')
local cash = xPlayer.getMoney()

removeAccountMoney bakiyeyi sizin için kontrol etmez. Önce kontrol edin, aksi halde hesap bazı sürümlerde negatif gidebilir:

lua
if xPlayer.getAccount('money').money >= price then
    xPlayer.removeAccountMoney('money', price, 'shop')
end

Oyuncu nesnesi nil ise, ESX xPlayer nil bölümüne bakın.

QBCore parası

QBCore parasını PlayerData.money öğesinde tutar; cash, bank ve crypto ile:

lua
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) ve Player.Functions.RemoveMoney(type, amount, reason) önce türü alır. RemoveMoney oyuncunun yeterli olmadığında false döndürür, bu nedenle sonucu kullanın:

lua
if Player.Functions.RemoveMoney('cash', price, 'shop-purchase') then
    Player.Functions.AddItem('burger', 1)
else
    TriggerClientEvent('QBCore:Notify', source, 'Not enough cash', 'error')
end

QBCore'da yerleşik bir kara para hesabı yoktur. Buna ihtiyaç duyması gereken sunucular genellikle bir öğeyi (işaretli faturalar) veya Config.Money öğesine eklenen özel bir türü kullanır; sonraki bölüm öğe seçeneğini kapsar. Komut dosyanızda QBCore nil ise, GetCoreObject düzeltmesi bölümüne bakın.

QBox

QBox QBCore'a dayalıdır, bu nedenle aynı Player.Functions.AddMoney ve RemoveMoney çağrıları oyuncu nesnesi üzerinde çalışır ve para türleri aynıdır. QBox'un qbx_core üzerinde ihracatları da vardır, bu nedenle yeni kodda kullanmadan önce qbx_core sürümünün ihracatlarını para işlevlerini kontrol edin. Şekil aynıdır: tür, tutar ve neden.

ox_inventory: öğe olarak nakit

ox_inventory ile nakit sayı yerine öğe olabilir. Standart öğe money olarak adlandırılır ve kirli para black_money. Her ikisi ox_inventory/data/items.lua öğesindedir.

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)

ox_inventory olan bir ESX sunucusunda, money ve black_money hesapları envanterinde öğe olarak gösterilir ve xPlayer.addAccountMoney('money', ...) bu öğelerde biter. Yalnızca bir yolu kullanın. Bir komut dosyası ESX işlevi ile nakidi ve başka bir AddItem ile eklemişse, göndermeden önce ikisinin kurulumunuzda hemfikir olup olmadığını test edin. Banka bir öğe değildir ve sayı olarak kalır.

Dikkat: öğe olarak nakit ağırlığa sahiptir ve bırakılabilir, çalınabilir veya bir depoda depolanabilir. Bu amaçlanmıştır, ancak soygun ve mağaza komut dosyalarının nasıl davrandığını değiştirir. ox_inventory'deki depoları bölümüne bakın.

Neden dizesi

reason, para işlevlerinin son argümanıdır. Tutarı değiştirmez. Çerçevenin veya bir günlüğe yazma komut dosyasının, paranın neden hareket ettiğini kaydedebilmesi için değişiklik ile birlikte geçirilir.

lua
Player.Functions.AddMoney('cash', 250, 'taxi-job-payout')
xPlayer.addAccountMoney('bank', 250, 'taxi-job-payout')

Komut dosyasını ve eylemi adlandıran kısa, tutarlı metni kullanın. Oyuncunun bakiyesi yanlış görünüyorsa, günlüklerde taxi-job-payout araması satırı saniyeler içinde bulur. Ayrıca günlükleri Discord'a göndermişseniz, Discord webhook günlükleri bölümüne bakın. Ekonominin denge tarafı için FiveM ekonomisini dengeleme bölümüne bakın.

Güvenli para kodunun kuralları

  • Parayı sunucu üzerinde değiştirin. Asla istemci tarafından gönderilen bir tutarı kabul etmeyin.
  • Kaldırmadan önce bakiyeyi kontrol edin ve QBCore'da dönüş değerini kullanın.
  • Her zaman bir neden geçin.
  • Hesap başına bir para kaynağı seçin; nakit iki kez depolanmaması için; bir sayı olarak bir kez ve bir öğe olarak bir kez.

Kontrol listesi

Belirti Çözüm
ESX hesapları hangisi vardır money, bank, black_money
QBCore türleri hangisi vardır cash, bank, crypto
Bakiye ESX'de negatif gider removeAccountMoney öncesinde getAccount(name).money kontrol edin
QBCore kaldırması başarısız RemoveMoney false döndürdü; oyuncunun yeterli değeri yok
QBCore'da kara para yok Bir öğe kullanın veya yapılandırmaya özel tür ekleyin
Nakit bir öğedir ox_inventory: AddItem(source, 'money', amount)
Günlüklerin bağlamı yok Her ekleme ve kaldırmada neden dizesi geçin

Kısa yanıtlar

ESX'teki para türleri nelerdir?

ESX money (nakit), bank ve black_money adlı hesaplara sahiptir. Bunları xPlayer.addAccountMoney, removeAccountMoney ile değiştirir ve getAccount ile okursunuz.

QBCore'da para türleri nelerdir?

QBCore PlayerData.money öğesinde cash, bank ve crypto depolar. Bunları Player.Functions.AddMoney ve RemoveMoney ile değiştirirsiniz, türü ilk argüman olarak geçerek.

Neden argümanı nedir?

Para değişikliğine ekli kısa bir metindir; QBCore ve son ESX sürümleri, günlükleriniz neden olduğunu gösterir. Her zaman 'burger-shop' gibi açık bir tanesini geçin.

Bu sorunu yaşatmayan scriptler

Pawn Shop Applb-phone içinde oyuncudan oyuncuya rehin pazarı.Scripti gör →Drug Dealer Applb-phone uygulaması olarak sokak satışı: bölgeler, NPC alıcılar, seviyeler ve polis ihbarları.Scripti gör →Shop CreatorBir dakikadan kısa sürede dükkân kurun — sahipler, çalışanlar, kasalar ve soygunlar dahil.Scripti gör →

Okumaya devam edin