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:
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:
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:
if xPlayer.getAccount('money').money >= price then
xPlayer.removeAccountMoney('money', price, 'shop')
endOyuncu 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:
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:
if Player.Functions.RemoveMoney('cash', price, 'shop-purchase') then
Player.Functions.AddItem('burger', 1)
else
TriggerClientEvent('QBCore:Notify', source, 'Not enough cash', 'error')
endQBCore'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.
-- 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.
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 →