QBCore'da iş nasıl eklenir: shared/jobs.lua, dereceler ve /setjob
QBCore veya QBox'a özel iş ekleyin: defaultDuty, offDutyPay ve dereceler ile shared/jobs.lua yapısı, /setjob komutu ve Player.PlayerData.job okuma.
QBCore'da iş bir Lua dosyasındaki bir blok, veritabanı satırı değil. Bloğu ekleyin, çekirdeği yeniden başlatın ve işi bir oyuncuya ayarlayın. Bu kılavuz, QBCore ve QBox için yapıyı, komutu ve kodda işi nasıl okuyacağınızı gösterir.
Yapı
qb-core/shared/jobs.lua açın. İşler QBShared.Jobs tablosundaki iş adına göre tuşlandırılmış girişlerdir. Sizinkinizi ekleyin:
['mechanic'] = {
label = 'Mechanic',
defaultDuty = true,
offDutyPay = false,
grades = {
['0'] = { name = 'Recruit', payment = 50 },
['1'] = { name = 'Mechanic', payment = 75 },
['2'] = { name = 'Boss', payment = 120, isboss = true },
},
},Her bölüm ne anlamına gelir:
| Alan | Anlam |
|---|---|
Anahtar (mechanic) |
Kod ve /setjob'da kullanılan iş adı: küçük harf, boşluk yok |
label |
Oyuncuların gördüğü ad |
defaultDuty |
Oyuncular işi aldığında görevde başlasalar true |
offDutyPay |
Oyuncu görevden uzak olsa bile iş ödülü yaparsın ise true |
grades |
Sıralar, seviyelerine göre tuşlandırılmış |
name |
Sıralamanın ekran adı |
payment |
Bu sıralamanın her maaş çeki ödemesi |
isboss |
Sıralamayı boss sırası olarak işaretlersen true |
İki kural:
- Derece tuşları QBCore'da dizelerdir:
['0'],['1'].'0'ile başlayın boşluk yok. - Dosyada zaten bulunan işlere bakın, örneğin
policeve şekillerini kopyalayın. Bazı işler diğer betiklerin bunları gruplandırmak için kullandığı ekstratypealanı taşır ve dosya sürümünüzün ne desteklediğini gösterir.
Dikkat:
jobs.lua'da eksik virgül veya ayraç qb-core yüklenmesini durdurur ve bununla birlikte ona bağlı tüm betikler.
Yeniden başlatın ve işi ayarlayın
Çekirdek dosyayı başlangıçta okur:
restart qb-coreArdından, yönetici olarak, oyunda veya konsolda:
/setjob <player id> mechanic 1Değerler oyuncu kimliği, iş anahtarı ve derece numarasıdır. Komut reddedilirse, yönetici izniniz yoktur: ACE permissions for admins bölümüne bakın.
Betiklerde işi okuyun
Sunucuda:
local QBCore = exports['qb-core']:GetCoreObject()
RegisterNetEvent('my_script:doWork', function()
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return end
local job = Player.PlayerData.job
if job.name ~= 'mechanic' then
return TriggerClientEvent('QBCore:Notify', src, 'You are not a mechanic', 'error')
end
if not job.onduty then
return TriggerClientEvent('QBCore:Notify', src, 'Go on duty first', 'error')
end
-- allowed
end)Player.PlayerData.job name, label, onduty, isboss, payment ve sıralamanın name ve level'i ile bir grade tablosu tutar. Sıralamanın numarası için job.grade.level kullanın.
Koddan işi değiştirmek için:
Player.Functions.SetJob('mechanic', 1)Burada QBCore nil ise, attempt to index a nil value (global 'QBCore') bölümüne bakın.
İstemcide
local QBCore = exports['qb-core']:GetCoreObject()
local PlayerData = {}
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
PlayerData = QBCore.Functions.GetPlayerData()
end)
RegisterNetEvent('QBCore:Client:OnJobUpdate', function(job)
PlayerData.job = job
end)Oyuncu yüklenmeden önce GetPlayerData().job okumak nil verir, bu nedenle OnPlayerLoaded bekleyin ve işi OnJobUpdate ile taze tutun.
QBox'ta
QBox'un çekirdeği qbx_core'dur ve işler dosyası qbx_core/shared/jobs.lua'dır. Yapı aynıdır: etiket, defaultDuty, offDutyPay ve grades. Dosyayı açın ve zaten içinde bulunan girişleri izleyin, çünkü QBox'un dosyası derece tuşlarının nasıl yazıldığı gibi detaylarda farklılık gösterebilir ve yeni sürümler alanlar ekleyebilir.
Düzenlendikten sonra qbx_core yeniden başlatın. Kod için, uyumluluk katmanı hala exports['qb-core']:GetCoreObject()'ı cevaplar ve QBox'un kendi dışa aktarımı:
local player = exports.qbx_core:GetPlayer(source)
if player then
print(player.PlayerData.job.name)
endBoss menüsü ve fonlar
isboss = true ile bir derece sadece bayraktır. Bosun insanları işe almalarına ve şirket hesabını kullanmasına izin veren menü, genellikle yapılandırılacak kendi işler listesi olan yönetim kaynağınızdan gelir. Boss menüsü yeni işiniz için açılmazsa, bu kaynağın yeni işler listesinin işinin adını kontrol edin.
Yaygın sorunlar
/setjobtarafından iş bulunamadı. Çekirdek yeniden başlatılmadı veya anahtar yanlış yazılmış.- Çekirdeği düzenlendikten sonra başarısız.
jobs.lua'da söz dizimi hatası. Konsolda ilk kırmızı satırı okunyun ve how to read a script error dosya ve satırda yardımcı olur. - Maaş alınmıyor.
offDutyPay = falseoyuncunun görevde olması gerektiği ve maaş aralığı çekirdeğin yapılandırmasından gelir.
Kontrol listesi
| Belirtisi | Çözüm |
|---|---|
| İş bulunamadı | shared/jobs.lua'ya ekleyin ve qb-core veya qbx_core yeniden başlatın |
| Çekirdek başlamaz | jobs.lua'da söz dizimi hatası; virgül ve ayraçları kontrol edin |
| Yanlış sıralaması | Derece tuşları QBCore'da '0''da başlayan dizelerdir |
| Görevden uzakta ödeme yok | offDutyPay = true ayarlayın veya görevde gidin |
| İş istemcide nil | QBCore:Client:OnPlayerLoaded bekleyin |
| Boss menüsü yok | isboss = true ayarlayın ve işi yönetim kaynağına ekleyin |
Kısa yanıtlar
QBCore işleri nerede tanımlanır?
qb-core/shared/jobs.lua'da QBShared.Jobs girişleri olarak. QBox'ta dosya qbx_core/shared/jobs.lua'dır.
/setjob işin var olmadığını söylüyor, neden?
Çekirdek başlatıldığında dosyayı okur. Düzenlendikten sonra qb-core (veya qbx_core) yeniden başlatın ve iş adı ve derece numarasının dosyada var olduğunu kontrol edin.
isboss ne yapar?
Bir dereceyi bir boss dereceolarak işaretler. Boss menüleri ve yönetim betikleri, kimin işe alıp, kimin kovulabileceğine ve işin fonlarını kimin kullanabileceğine karar vermek için o bayrağı kontrol eder.


