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:
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:
namekod adıdır: küçük harf, boşluk yok ve her yerde aynı.labeloyuncuların gördüğü şeydir.job_gradesiçindekijob_nameişinnameile eşit olmalıdır.- Derece
0var olmalıdır, çünkü işin yeni oyuncuları buna başlarlar. Dereceleri boşluk olmadan numaralandırın. salaryher ödeme aralığında ödenecektir, eğer maaşlar çalışıyorsa.job_gradesiçinde eksik bir iş/setjobbozar 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:
restart es_extendedCanlı 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:
/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:
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:
xPlayer.setJob('mechanic2', 1)Betiğinizde ESX nil ise, bunu önce ESX nil: esx:getSharedObject düzeltme ile düzeltin.
İstemci tarafında
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
bossolarak adlandırılır. Patron menüsü bu adı arar. - Bir dernek hesabı. Dernek parası
addon_accounttablosunda,society_artı iş adından oluşan bir hesapta yaşar, örneğinsociety_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.


