Özetle;: Bu rehber size üretime hazır ağırlık\/slot ön ayarları, eşya bütçe tabloları, kopyala‑yapıştır
items.luatanımlar (ESX\/QBCore\/ox_inventory) ve popüler envanterler arasında güvenli geçiş planları sunar. Aşırı yüklenme dramını ortadan kaldırmak, eşya şişkinliğini durdurmak ve ekonominizi tutarlı tutmak için kullanın.
Envanter ayarının önemi
İstikrarlı bir RP ekonomisi kıtlık, sürtünme ve anlamlı seçimlere dayanır. Envanter kuralları (slotlar, ağırlık, istif limitleri, dayanıklılık\/seri numarası gibi meta veriler) bu seçimleri gerçek kılan kaldıraçlardır. Herkes her şeyi taşıyabilse, fiyatlar çöker ve döngüler bozulur. Önce envanteri ayarlayın, ardından fiyatlarınızı, ödemelerinizi ve gider havuzlarınızı tekrarlayın. Daha geniş ekonomi için, temel prensibimize bakın: Dengeli bir GTA RP Ekonomisi Tasarlamak: Fiyatlar, Gider Havuzları, İlerleme.
Modeller: Slot vs. Ağırlık vs. Hibrit
Sadece slot
- Basit bilişsel model; her eşya = 1 slot veya boyut sınıflarına göre tanımlanır.
- Ağır ve hafif yığınları ayırt etmede zayıf; çok sayıda küçük yüksek değerli eşya ile istismar edilir.
Sadece ağırlık
- Her eşyanın bir ağırlığı vardır (genellikle gram). Oyuncuların
maxWeighther konteyner için. Güçlü gerçekçilik; düşünülmüş varsayılanlar gerektirir.
Hibrit (önerilen)
- Küresel ağırlık sınırı Ve slot sınırı. Hem mikro eşya hem de mega eşya istismarlarını önler. RP için en iyi çalışır.
İpucu: Sayıları insan tarafından okunabilir tutun. Gram cinsinden modelliyorsanız, tam sayılar kullanın (örneğin,
water = 500g) ve oyuncu limitlerini yuvarlayın (örneğin,maxWeight = 120,000).
Varsayılan Ön Ayarlar (kopyala ve uyarla)
Aşağıda savaşta test edilmiş başlangıç noktaları. Bir haftalık şehir içi telemetriden sonra ±10–20% ayarlayın.
Oyuncu Envanteri (üzerinde taşınan)
| Sunucu Ölçeği | Örnek | Maksimum Ağırlık (g) | Yuvalar | Notlar |
|---|---|---|---|---|
| Yeni/Küçük (≤40 pop) | Hibrit | 80,000 | 30 | Daha hızlı uyum; daha az erken zorluk. |
| Orta (40–150) | Hibrit | 120,000 | 35 | Genel RP için dengeli; farklı işler için uygun. |
| Yüksek Pop (150+) | Hibrit | 150,000 | 32 | İstiflemeyi sınırlamak için slotları daralt; ağırlığı adil tut. |
Araçlar (yaygın varsayılanlar)
| Konteyner | Maksimum Ağırlık (g) | Yuvalar | Gerekçe |
|---|---|---|---|
| Torpidodan | 10,000 | 5 | Küçük saklama alanı, planlamayı teşvik eder. |
| Sedan Bagajı | 80,000 | 20 | Temel seviye. |
| SUV/Van Bagajı | 120,000 | 25 | Ticari araçlar anlamlı hale gelir. |
| Kamyonet (ticari) | 180,000 | 28 | Lojistik oynanışı. |
| Motosiklet Depolama | 8,000 | 3 | Minimal cebe sığdırma. |
Saklama Alanları ve Özel Kaplar
| Tip | Maksimum Ağırlık (g) | Yuvalar | Notlar |
|---|---|---|---|
| Ev Saklama Alanı (Seviye 1/2/3) | 120k / 180k / 240k | 40 / 60 / 80 | Ev yükseltmelerini teşvik eder. |
| İş Kilidi | 80,000 | 20 | Devretme istismarlarını önleyin. |
| Kanıt Dolabı | 240,000 | 120 | Admin/LEO kolaylığı; denetim günlüğü gerekli. |
Öğe Ağırlık Bütçeleri (sınıfa göre)
Tutarlı ağırlıklar atamak için bunu kullanın. Düşünün göreceli sürtünme gerçekçilik değil.
| Sınıf | Örnekler | Önerilen Ağırlık (g) |
|---|---|---|
| Çok Hafif | Kilit açma bıçağı, USB, SIM | 5–50 |
| Işık | Tabanca mermisi (10), bandaj, atıştırmalık | 100–250 |
| Orta | Su şişesi, burger, onarım seti | 400–800 |
| Ağır | Tüfek mermi kutusu (30), oksijen tüpü, malzeme sandığı | 1,500–4,000 |
| Çok Ağır | Silah sandığı, para çantası (işaretli) | 6,000–12,000 |
Mühimmat: Bütçe birim başına birleştirilmiş yığınlar için (örneğin,
9mm = 15gher biri → 30 mermi ≈ 450g) veya kutular olarak temsil edin (örneğin,9mm box (30) = 500g).
Yığın Boyutları ve Yuva Stratejisi
- Emtialar (yiyecek, ilaç): sıkıcılığı azaltmak için 5-20 yığın.
- Mühimmat: tabancalar için 30-60; kutulanmış tüfekler için 60-120.
- Üretim Malzemeleri: 100–250 yığın; ağırlığı anlamlı tutun.
- Silahlar:
stack = 1, benzersiz meta veriler (seri, dayanıklılık).
Meta Veri Kalıpları (dayanıklılık, seri numaraları, ekler, kalite)
Küçük bir şema gibi meta verileri tasarlayın. Alanları minimum, tipli ve doğrulanmış tutun.
Kanonik Meta Veri Şeması (öneri)
{
"serial": "string", // weapon unique id
"owner": "citizenid|identifier",
"durability": 0.0, // 0.0–1.0; decay per use/time
"quality": 100, // 0–100; repairable threshold 25
"ammo": 0, // integer; weapon mags
"tint": 0, // integer (game tint index)
"attachments": ["flashlight", "scope"],
"expiry": 0, // unix timestamp; perishable items
"notes": "" // small text; avoid bloat
}
Dayanıklılık ve Bozulma
- Silahlar: decay 0.5–1.5% per magazine; jam chance <5% below 20% quality.
- Aletler (lockpicks, drill): consume % on use; break at 0.
- Bozulabilirler:
expirykullanımda kontrol; bayat ceza veya engelleme.
Güvenlik ve Performans
- Meta verileri sunucu tarafında doğrulayın; istemci yazımlarına asla güvenmeyin.
- Meta veri boyutunu sınırla (örn. <512 bayt). Büyük veri yığınları kaydetme/yükleme ve ağ yüklerini olumsuz etkiler.
- Ekler ve tonlar için numaralandırmaları kullanın.
ESX (es_extended) örneği
-- esx items.lua (example) — weight in grams; negative weight means not counted in legacy modes
['water'] = { label = 'Water Bottle', weight = 500, stack = true, close = true, description = 'Stay hydrated.' },
['bandage'] = { label = 'Bandage', weight = 150, stack = true, close = true },
['lockpick'] = { label = 'Lockpick', weight = 50, stack = true, close = true },
['pistol_ammo'] = { label = 'Pistol Ammo (30)', weight = 450, stack = true, close = true, description = '9mm, box of 30.' },
['weapon_pistol'] = { label = 'Pistol', weight = 1500, stack = false, close = true, degrade = 0.01, unique = true },
Hala kullanan ESX varyantları için limit yerine ağırlık, ayarla
limit = -1(sınırsız) ve ağırlık yoluyla küresel olarak ekonomi dengesini değiştirin.
QBCore (shared/items.lua) örneği
-- qb-core shared/items.lua
['water'] = { name = 'water', label = 'Water Bottle', weight = 500, type = 'item', image = 'water.png', unique = false, useable = true, shouldClose = true, description = 'Stay hydrated.',
combinable = nil },
['bandage'] = { name = 'bandage', label = 'Bandage', weight = 150, type = 'item', image = 'bandage.png', unique = false, useable = true, shouldClose = true },
['lockpick'] = { name = 'lockpick', label = 'Lockpick', weight = 50, type = 'item', image = 'lockpick.png', unique = false, useable = true, shouldClose = true },
['pistol_ammo'] = { name = 'pistol_ammo', label = 'Pistol Ammo (30)', weight = 450, type = 'item', image = 'pistol_ammo.png', unique = false, useable = true, shouldClose = true },
['weapon_pistol'] = { name = 'weapon_pistol', label = 'Pistol', weight = 1500, type = 'weapon', image = 'weapon_pistol.png', unique = true, useable = false, shouldClose = true,
info = { serial = '', durability = 1.0, ammo = 12, attachments = {} } },
ox_inventory (data/items.lua) örneği
return {
water = {
label = 'Water Bottle',
weight = 500,
stack = true,
client = { status = { thirst = 25000 }, anim = { dict = 'mp_player_intdrink', clip = 'loop_bottle' } },
},
bandage = { label = 'Bandage', weight = 150, stack = true },
lockpick = { label = 'Lockpick', weight = 50, stack = true },
pistol_ammo = { label = 'Pistol Ammo (30)', weight = 450, stack = true },
weapon_pistol = {
label = 'Pistol', weight = 1500, stack = false, allowArmed = true,
consume = 0, -- handled by durability system
ammo = { type = 'AMMO_PISTOL', count = 12 },
metadata = { serial = true, durability = true, attachments = true },
},
}
öküz_envanteri zengin destekler
client/serveröğe tanımlarındaki davranışlar—davranışı standartlaştırmak için özel komut dosyaları yerine yerleşik olanları tercih edin.
QBCore konteyner yapılandırması (örnek)
-- qb-inventory/server/config.lua (illustrative)
Config.PlayerMaxWeight = 120000
Config.PlayerMaxSlots = 35
Config.Vehicle = {
glovebox = { weight = 10000, slots = 5 },
trunk = function(class)
if class == 'sedan' then return 80000, 20 end
if class == 'suv' or class == 'van' then return 120000, 25 end
if class == 'truck' then return 180000, 28 end
return 60000, 18
end
}
ox_inventory depo kurulumu (örnek)
-- ox_inventory/server/custom/stashes.lua
lib.addstash('house_tier1', 40, 120000)
lib.addstash('house_tier2', 60, 180000)
lib.addstash('house_tier3', 80, 240000)
Taşıma Oyun Kitapları (güvenli ve geri döndürülebilir)
İlkeler
- Önce veritabanının anlık görüntüsünü alın. 2) Eşyaları/meta verileri değişmez betiklerle taşıyın. 3) Bir hazırlık sunucusunda yan yana çalıştırın. 4) Geri alma SQL'si sağlayın.
A) qb-inventory → ox_inventory
Harita alanları
QB items.lua→ox data/items.lua(name,label,weight,stack/unique,client/server behaviors).player inventorytablo: dönüştürinfoJSON →metadata(seri, dayanıklılık, mühimmat).
Pseudocode (Lua/SQL karışımı)
-- 1) Export QB items to a Lua table/JSON
-- 2) Generate ox items.lua entries
-- 3) Transform inventories
for item in qb_inventory_rows do
local meta = json.decode(item.info or '{}')
local metadata = {
serial = meta.serial,
durability = meta.durability or 1.0,
ammo = meta.ammo or 0,
attachments = meta.attachments or {},
}
insert_into_ox_inventory(item.name, item.amount, metadata)
end
SQL örnek (PostgreSQL/MySQL stili)
-- Backup
CREATE TABLE backup_playeritems AS SELECT * FROM playeritems;
-- Transform example for a single item family
UPDATE playeritems
SET metadata = JSON_OBJECT(
'serial', JSON_EXTRACT(info, '$.serial'),
'durability', COALESCE(JSON_EXTRACT(info, '$.durability'), 1.0),
'ammo', COALESCE(JSON_EXTRACT(info, '$.ammo'), 0),
'attachments', COALESCE(JSON_EXTRACT(info, '$.attachments'), JSON_ARRAY())
)
WHERE name IN ('weapon_pistol','weapon_pistol_mk2');
Dikkat Edilmesi Gerekenler
- Benzersiz öğeler: zorunlu kıl
stack = false; tekrarların birleşmemesini sağlayın. - Mühimmat sistemleri: kutulu ve gevşek mühimmat kurallarını uzlaştırın.
- Resimler/ikonlar: eşya resimlerini ox'un adlandırmasına uyacak şekilde yeniden adlandırın.
B) ESX (sınır tabanlı) → ağırlık modeli
- Genel ayarla
useWeight = trueyapılandırmada (fork'a göre değişir). - Öğe başına değiştir
limitileweight(g). Eskiden eşyalar içinlimit = -1, gerçekçi ağırlıklar atayın. - Stok/araç sınırlarını buna göre taşıyın.
Betiklenmiş geçiş
for name, item in pairs(Items) do if item.limit and not item.weight then item.weight = estimateWeightFromClass(name) item.limit = nil end end
C) qs-inventory / lj-inventory → QBCore/ox
- Alan eşlemesi QB'ye benzer:
info→metadata. - Özel anahtarlar için izleyin (
quality,image,createdAt. Kanonik şemaya normalleştirin.
Dengeleme İş Akışı (1 haftalık sprint)
- Gün 0: Ön ayarları uygula; öğeleri bütçe tablosuna taşı.
- 1-2. Gün: Telemetri yakalayın: ortalama taşıma ağırlığı, kullanılan yuvalar, işe göre öğe dağılımı.
- 3. Gün: Tighten outliers (+5–10% weight on top 5 hoarded items).
- 4-5. Gün: Araç rolleri: yardımcı bagajları güçlendir; torpido gözü istismarını zayıflat.
- Gün 6: Bozulabilirler: ekle
expiryyüksek marjlı tüketim ürünleri için. - 7. Gün: Yama notlarını yayınlayın; iki haftalık bir inceleme belirleyin.
Minimum Telemetri
% time encumbered,avg slots used, en iyi 20 öğe (adet ve toplam ağırlığa göre) ve kasa kullanım yüzdeleri.
QA Kontrol Listesi (gönderime hazır)
- Tüm öğelerin
weight,stack, ve net etiketler. - Silahlar
unique/non-stack ve dahil etserial,durability. - Kapsayıcılar zorlar ikisi birden ağırlığı ve yuvaları vardır (desteklendiği yerlerde).
- Araç sınıfları mantıklı kapasitelere karşılık gelir.
- İlerleme ile kademelendirilmiş gizli yerler.
- Taşınmalar yedeklendi; geri alma işlemi test edildi.
- Meta veri boyutu sınırlı; sunucu tarafında doğrulandı.
Ağırlık Bütçesi CSV (Google E-Tablolar'a kopyala)
name,label,class,weight_g,stack,stack_size water,Water Bottle,consumable,500,true,10 bandage,Bandage,medical,150,true,5 lockpick,Lockpick,tool,50,true,10 pistol_ammo,Pistol Ammo (30),ammo,450,true,5 weapon_pistol,Pistol,weapon,1500,false,1
Araç Kapasitesi Tablosu (CSV)
container,weight_g,slots Glovebox,10000,5 Sedan Trunk,80000,20 SUV/Van Trunk,120000,25 Truck Trunk,180000,28 Motorcycle,8000,3
Yaygın Hatalar ve Düzeltmeler
- Oyuncular her zaman yük altında → Reduce top‑3 ubiquitous item weights by 15%; increase player cap by 10%.
- Mikro öğelerin sonsuz biriktirilmesi → Slot sınırı ekleyin; minimum öğe ağırlığı ayarlayın (örn. 25g).
- Ekonomi enflasyonu stoklama yoluyla → Bozulabilir ürünler ekleyin
expiry, üretim girdisi ağırlık sürtünmesi veya saklama ücretleri. - Veritabanı şişmesi → Meta veri anahtarlarını budayın; büyük olanlardan kaçının
notesalanlar.
Sonraki adımlar
- Yukarıdaki hibrit ön ayarları yayınlayın, ardından telemetri ile yineleyin.
- Envanter sürtünmesini ödemeler ve fiyatlarla uyumlu hale getirin—bakınız ekonomimiz sonrası bu ayarlarla iyi eşleşen lavabolar ve ilerleme modelleri için.
Belirli bir çerçeve çatallanması veya özel bir envanter hakkında sorularınız mı var? Ayrıntıları bırakın, tam yapılandırmaları uyarlayayım.
