ESX Legacy'ye iş nasıl eklenir: işler ve job_grades SQL, setjob

İşler ve job_grades içine iki SQL eklemesi ile ESX Legacy'ye özel bir iş ekleyin, bunu /setjob ile ayarlayın, betiklerde xPlayer.job ile okuyun ve bunu bir dernek hesabıyla bağlantılı yapın.

ESX'in bir iş dosyası yoktur. Bir iş veritabanınızda satırlar olur: birisi jobs içinde ve her rütbe için birer tane job_grades içinde. Bu rehber bir iş ekler, onu oyuncuya verir, onu kodda okur ve onu bir dernek hesabıyla bağlantılandırır.

1. İşi ekleyin

jobs tablosu işin kendisini tutar ve job_grades rütbelerini tutar. Bunu HeidiSQL, phpMyAdmin veya mysql CLI'da sunucunuzun kullandığı veritabanında çalıştırın:

sql
INSERT INTO `jobs` (`name`, `label`) VALUES
  ('mechanic2', 'Mechanic');

INSERT INTO `job_grades` (`job_name`, `grade`, `name`, `label`, `salary`, `skin_male`, `skin_female`) VALUES
  ('mechanic2', 0, 'recruit',  'Recruit',  200, '{}', '{}'),
  ('mechanic2', 1, 'novice',   'Novice',   300, '{}', '{}'),
  ('mechanic2', 2, 'boss',     'Boss',     500, '{}', '{}');

Önemli kurallar:

  • name kod adıdır: küçük harf, boşluk yok ve her yerde aynı. label oyuncuların gördüğü şeydir.
  • job_grades içindeki job_name işin name ile eşit olmalıdır.
  • Derece 0 var olmalıdır, çünkü işin yeni oyuncuları buna başlarlar. Dereceleri boşluk olmadan numaralandırın.
  • salary her ödeme aralığında ödenecektir, eğer maaşlar çalışıyorsa.
  • job_grades içinde eksik bir iş /setjob bozar ve oyuncu yüklenirken hatalara atabilir.

Sütunlar ESX sürümleri arasında biraz farklı olabilir, bu nedenle job_grades aracınızda açın ve sütun listesini görmüş olduğunuz tabloyla eşleştirin. Ekle başarısız olursa, alma hataları Bilinmeyen sütun ve tablo hataları kısmında ele alınmıştır.

2. ESX işleri yeniden yüklemek için yeniden başlatın

ESX es_extended başladığında veritabanından işleri okur, bu nedenle yeni bir satır o zamana kadar görünmez:

text
restart es_extended

Canlı sunucuda çekirdeği yeniden başlatmak ona bağlıyı betikleri kırabilir, bu nedenle emin değilseniz sakin bir saatte tüm sunucuyu yeniden başlatın.

3. Oyuncuya işi verin

Oyunda veya konsoldan yönetici olarak:

text
/setjob <player id> mechanic2 0

Üç değer oyuncu kimliği, iş name ve derece numarasıdır. Başarısız olursa, jobs tablosuna karşı yazımı kontrol edin ve dereceyi kontrol edin, ardından komut reddedilmişse Yöneticiler için ACE izinleri bölümüne bakın.

4. İşi betiklerinizde okuyun

Sunucuda oyuncuyu alın ve işi okuyun:

lua
local ESX = exports['es_extended']:getSharedObject()

RegisterNetEvent('my_script:doWork', function()
    local xPlayer = ESX.GetPlayerFromId(source)
    if not xPlayer then return end

    local job = xPlayer.getJob()
    if job.name ~= 'mechanic2' then
        return xPlayer.showNotification('You are not a mechanic')
    end

    if job.grade < 1 then
        return xPlayer.showNotification('You need a higher rank')
    end

    -- allowed
end)

xPlayer.getJob() bir tablo döndürür ve xPlayer.job aynı verileri tutar. En çok kullanacağınız alanlar name, label, grade, grade_name ve grade_label dir.

Bir oyuncunun işini koddan değiştirmek için:

lua
xPlayer.setJob('mechanic2', 1)

Betiğinizde ESX nil ise, bunu önce ESX nil: esx:getSharedObject düzeltme ile düzeltin.

İstemci tarafında

lua
local ESX = exports['es_extended']:getSharedObject()

local function isMechanic()
    local data = ESX.GetPlayerData()
    return data.job and data.job.name == 'mechanic2'
end

RegisterNetEvent('esx:setJob', function(job)
    -- job changed while the player is online
    print(job.name, job.grade)
end)

esx:setJob olayı iş değiştiğinde tetiklenir, bu nedenle kendi kopyası güncellenmesini sağlayın her karenin her sorundan ziyade.

5. esx_society ile dernek hesapları

İşin paylaşılan bir banka hesabı, bir patron menüsü veya bir depo odasına ihtiyacı varsa, esx_society'ye bağlı olur. Bir dernek hesabına sahip işin ihtiyacı vardır:

  • Bir patron derecesi. En üst derece, yukarıdaki eklemeyi gibi boss olarak adlandırılır. Patron menüsü bu adı arar.
  • Bir dernek hesabı. Dernek parası addon_account tablosunda, society_ artı iş adından oluşan bir hesapta yaşar, örneğin society_mechanic2. Bununla bir satır ekleyin ve işiniz kullanıyorsa envanteri ve veri deposu için bir satır ekleyin.
  • Kayıt. İşin kendi betiği başladığında aynı iş adını kullanarak esx_society ile derneği sunucuda kaydeder.

Kayıt nerede yaşadığı işi çalıştıran betiğe bağlıdır. Sunucunuzda var olan bir iş, polis veya makinist işi gibi bunu nasıl yapıyor kontrol edin ve sizinki için yansıtın.

İpucu: patron menüsü boş açılırsa veya para hareket etmezse, dernek hesabı adı society_ artı iş adı olarak tam eşleşmiyor.

Kontrol Listesi

Belirtisi Düzeltme
/setjob tarafından iş bulunamadı Ekledikten sonra es_extended yeniden başlatın
Oyuncu yüklenirken hatalar İş job_grades içinde derece 0 yok
Ad uyumsuzluğu job_name iş name ile eşit olmalı, küçük harf
Yanlış rütbe ödendi O grade nin salary kontrol edin
Patron menüsü yok En üst dereceyi boss olarak adlandırın ve derneği kaydedin
Dernek parası eksik society_<job> oluşturun addon_account içinde tam iş adıyla

Kısa yanıtlar

ESX işleri nerede depolanıyor?

Veritabanında: jobs tablosu işi tutar ve job_grades tablosu her biri birer maaşla rütbelerini tutar. ESX Legacy'de düzenleme yapacak iş dosyası yoktur.

/setjob neden işin var olmadığını söylüyor?

ESX es_extended başladığında işleri yükler. Eklemeyi yaptıktan sonra yeniden başlatın ve job_grades içinde iş adı ve derece numarasının var olduğunu kontrol edin.

İşim için patron menüsünü nasıl alabilirim?

En üst dereceyi boss olarak adlandırın. esx_society bu derece adını patron menüsü için kontrol eder ve ayrıca iş için bir dernek hesabı gerekir.

Bu sorunu yaşatmayan scriptler

Advanced BoostingTabletten araç boosting: D’den S+ sınıfına kontratlar, ekipler ve canlı sıra.Scripti gör →Shop CreatorBir dakikadan kısa sürede dükkân kurun — sahipler, çalışanlar, kasalar ve soygunlar dahil.Scripti gör →Pawn Shop Applb-phone içinde oyuncudan oyuncuya rehin pazarı.Scripti gör →

Okumaya devam edin