Consumables: Ayarlar
config/config.lua ve config/foods.lua içindeki tüm seçenekler; tuşlardan lokma süresine, bozulma sürelerinden yiyecek vermeye, yere bırakmaya ve kendi yiyeceğini eklemeye kadar.
İpucu
Değişiklikten sonra sadece kaynağı ensure hype-consumables ile yeniden başlat; sunucuyu tamamen yeniden başlatmana
gerek yok.
Genel seçenekler config/config.lua, yiyecek tanımları ise config/foods.lua içinde. İki dosya da tek bir tablo
döndürür; aşağıdaki bölümler dosyalardaki sırayı izler.
Genel
Debug = false,
Framework = 'auto',
Inventory = 'auto',
Notifications = 'auto',Seçenek
Tür
Kontroller
Yemek yerken ve oyuncu seçerken kullanılan tuşlar. Bunlar GTA kontrolleridir: bu sürede her karede devre dışı
bırakılır ve IsDisabledControlJustPressed ile okunur, böylece aynı tuştaki oyun eylemleri (siper, korna, farlar) ve
diğer scriptler karışmaz. Yemek yemiyorken tuşlar oyuna aittir.
Controls = {
bite = { label = 'E', controls = { 38, 51, 86 } },
give = { label = 'H', controls = { 74, 104 } },
drop = { label = 'Q', controls = { 44, 85 } },
stop = { label = 'X', controls = { 73, 105 } },
},Seçenek
Tür
Kontrol id'lerinin tam listesi FiveM dokümantasyonunda.
Tuşlar
Teklif tuşları. Yemek yemiyorken de (gelen teklifler için) gerektikleri için, oyuncuların Ayarlar → Tuş Atamaları → FiveM altından değiştirebileceği tuş atamaları olarak kaydedilirler. Sadece oyuncu seçerken veya gelen bir teklif varken aktiftirler.
Keys = {
accept = 'Y',
decline = 'N',
},Seçenek
Tür
Varsayılan tuşlar bir kez uygulanır
FiveM, oyuncunun tuş atamalarını sunucuya ilk girişinde kaydeder. Keys ayarını sonradan değiştirmek sadece bu atamayı
hiç almamış oyuncuları etkiler; diğerleri ayarlardan değiştirene kadar mevcut tuşlarını kullanır.
Tüketim
Consume = {
biteTime = 2600,
biteOnStart = true,
minBiteRatio = 0.7,
allowInVehicle = true,
allowSprint = false,
cancelOnRagdoll = true,
},Seçenek
Tür
Kategoriler
Kategori başına varsayılan birim, bozulabilirlik ve bozulma süresi. Yiyeceğin kendisinde verilen alan kategori
değerini ezer. spoilTime gerçek zamanda saniyedir, yani sunucu kapalıyken de yiyecekler bozulmaya devam eder.
Categories = {
basic_drink = { perishable = false, unit = 'ml' },
fresh_food = { perishable = true, spoilTime = 48 * 60 * 60, unit = 'g' },
packaged_food = { perishable = true, spoilTime = 72 * 60 * 60, unit = 'g' },
fresh_drink = { perishable = true, spoilTime = 24 * 60 * 60, unit = 'ml' },
special_food = { perishable = true, spoilTime = 36 * 60 * 60, unit = 'g' },
},| Kategori | Bozulma süresi | Birim | Kullananlar |
|---|---|---|---|
basic_drink | Bozulmaz | ml | water |
fresh_food | 48 saat | g | burger, sandwich, hotdog, taco, fries |
packaged_food | 72 saat | g | donut, chips, egobar, sprunk ve ecola (ml) |
fresh_drink | 24 saat | ml | coffee, grapejuice |
special_food | 36 saat | g | Hazır yiyeceklerde kullanılmıyor |
Seçenek
Tür
Panel, tek porsiyonluk yiyeceklerde (defaultWeight olmayanlarda) kategori adını gösterir; bu ad dil dosyalarındaki
ui.category altından çevrilir. Yeni bir kategori eklersen adını oraya da ekle.
Bozulma
Spoilage = {
checkInterval = 5 * 60,
allowConsume = false,
nutritionMultiplier = 0.25,
healthLossPerBite = 4,
spoiledItem = false,
labelSuffix = true,
},Seçenek
Tür
Çevrimdışı oyuncuların envanterlerindeki ve depolardaki yiyecekler düzenli kontrolde taranmaz. Son kullanma tarihi zaman damgası olarak tutulduğu için bozulma, bir sonraki kullanımda veya oyuncu girişinde uygulanır.
Verme
Yakındaki bir oyuncuya yiyecek vermek.
Transfer = {
distance = 3.0,
timeout = 20,
cooldown = 3,
showNames = false,
},Seçenek
Tür
Bir oyuncunun aynı anda tek bir giden teklifi olabilir; gelen teklifi olan bir oyuncuya da ikinci bir teklif gönderilemez.
Yerdeki yiyecekler
Yere bırakılan yiyecekler. Objeler sadece renderDistance içindeki oyuncular için oluşturulur, süresi dolanlar
dakikada bir temizlenir.
Drops = {
enabled = true,
persist = true,
maxTotal = 150,
maxPerPlayer = 5,
lifetime = 60 * 60,
removeSpoiled = false,
renderDistance = 40.0,
interactDistance = 2.0,
placeDistance = 3.0,
fallbackProp = 'prop_cs_burger_01',
},Seçenek
Tür
İstek sınırı
Seçenek
Tür
Bazı işlemlerin kendi sabit bekleme süreleri vardır: yere bırakma 1 saniye, yerden alma 0,75 saniye; teklifler
Transfer.cooldown değerini kullanır.
Yiyecekler
config/foods.lua her yiyecek için bir kayıt içerir. Anahtar envanterdeki eşya adıdır, yani
kurulumda eklediğin eşyayla aynı olmalı.
local eat = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger', flag = 49 }
return {
burger = {
label = 'Burger',
category = 'fresh_food',
defaultWeight = 200,
biteSize = 20,
hungerPerBite = 5,
animation = eat,
prop = { model = 'prop_cs_burger_01', bone = 18905, pos = vec3(0.13, 0.05, 0.02), rot = vec3(-50.0, 16.0, 60.0) },
},
}Seçenek
Tür
Hazır yiyecekler
| Eşya | Ad | Kategori | Miktar | Lokma | Lokma sayısı | Lokma başına değer |
|---|---|---|---|---|---|---|
burger | Burger | fresh_food | 200 g | 20 g | 10 | 5 açlık |
sandwich | Sandwich | fresh_food | 180 g | 30 g | 6 | 6 açlık |
hotdog | Hot Dog | fresh_food | 150 g | 25 g | 6 | 6 açlık |
taco | Taco | fresh_food | 120 g | 20 g | 6 | 5 açlık |
fries | Fries | fresh_food | 150 g | 15 g | 10 | 3 açlık |
donut | Donut | packaged_food | 80 g | 20 g | 4 | 4 açlık |
chips | Chips | packaged_food | 90 g | 10 g | 9 | 2 açlık |
egobar | Ego Bar | packaged_food | 50 g | 10 g | 5 | 3 açlık |
water | Water | basic_drink | 500 ml | 100 ml | 5 | 5 susuzluk (toplam 25) |
sprunk | Sprunk | packaged_food | 330 ml | 55 ml | 6 | 6 susuzluk |
ecola | eCola | packaged_food | 330 ml | 55 ml | 6 | 6 susuzluk |
coffee | Coffee | fresh_drink | 250 ml | 50 ml | 5 | 5 susuzluk |
grapejuice | Grape Juice | fresh_drink | 300 ml | 60 ml | 5 | 6 susuzluk |
Kahvenin lokma süresi daha uzundur (biteTime = 3200). Su thirstPerUse = 25 kullanır, diğerleri lokma başına değer
verir.
Yiyecek ekleme
config/foods.lua dosyasına bir kayıt ekle:
pizza_slice = {
label = 'Pizza Dilimi',
category = 'fresh_food', -- bozulma süresi ve birim kategoriden gelir
defaultWeight = 140, -- başlangıç miktarı
biteSize = 35, -- lokma başına (veya bites = 4)
hungerPerBite = 6, -- veya hungerPerUse = 24 (eşyanın tamamının değeri)
spoilTime = 24 * 60 * 60, -- isteğe bağlı: kategoriyi ezer
animation = { dict = 'mp_player_inteat@burger', clip = 'mp_player_int_eat_burger' },
prop = { model = 'prop_cs_burger_01', bone = 18905, pos = vec3(0.13, 0.05, 0.02), rot = vec3(-50.0, 16.0, 60.0) },
},Envanterine aynı isimde bir eşya ekle. INSTALL/ox_inventory.md veya INSTALL/qb_inventory.md içinden bir kaydı
kopyala, adını, etiketini ve görselini değiştir.
Kaynağı yeniden başlat. Eşya envanterde yoksa konsol açılışta onu listeler.
Son lokma biteSize değerinden küçükse sadece kalan kısım yenir ve açlık / susuzluk değeri orantılı uygulanır. Oyunda
olmayan obje modelleri IsModelInCdimage ile tespit edilir: elde obje gösterilmez, yerde Drops.fallbackProp
kullanılır.
Diller
Dil ox_lib'den gelir, bu yüzden config'te değil server.cfg içinde ayarlanır:
setr ox:locale "tr"en ve tr hazır gelir. Lua tarafı ve panel aynı dosyaları kullanır. Yeni bir dil eklemek için locales/en.json
dosyasını kopyala, çevir, dil koduyla kaydet (örn. de.json) ve ox:locale değerini o koda ayarla.
Envanterdeki kalan miktar, son kullanma ve (Bozuk) satırları eşya her değiştiğinde sunucuda, sunucunun dilinde
metadata'ya yazılır. Son kullanma tarihi GG.AA.YYYY SS:DD biçimindedir ve sunucunun saatini kullanır. Eşya adları ve
ox_inventory buton yazıları dil dosyalarından değil, eşya tanımlarından gelir.
Kurulum
Porsiyon bazlı yiyecek ve içecek sistemini, ox_inventory ve qb-inventory eşya tanımları ve görselleriyle birlikte sunucunda çalışır hâle getir.
Export ve Event'ler
Kendi kaynaklarından yemeyi başlat, bir yiyeceğin kalan miktarını ve son kullanma tarihini oku, açlık ve susuzluğu standalone HUD'una bağla ve eşya metadata'sıyla çalış.