ConsumablesYeniÜcretsiz

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.

v1.0.0Açık kaynakÜcretsizQBox · QBCore · ESX · Standalone

İ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

config/config.lua
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.

config/config.lua
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.

config/config.lua
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

config/config.lua
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.

config/config.lua
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' },
},
KategoriBozulma süresiBirimKullananlar
basic_drinkBozulmazmlwater
fresh_food48 saatgburger, sandwich, hotdog, taco, fries
packaged_food72 saatgdonut, chips, egobar, sprunk ve ecola (ml)
fresh_drink24 saatmlcoffee, grapejuice
special_food36 saatgHazı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

config/config.lua
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.

config/config.lua
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.

config/config.lua
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ı.

config/foods.lua
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şyaAdKategoriMiktarLokmaLokma sayısıLokma başına değer
burgerBurgerfresh_food200 g20 g105 açlık
sandwichSandwichfresh_food180 g30 g66 açlık
hotdogHot Dogfresh_food150 g25 g66 açlık
tacoTacofresh_food120 g20 g65 açlık
friesFriesfresh_food150 g15 g103 açlık
donutDonutpackaged_food80 g20 g44 açlık
chipsChipspackaged_food90 g10 g92 açlık
egobarEgo Barpackaged_food50 g10 g53 açlık
waterWaterbasic_drink500 ml100 ml55 susuzluk (toplam 25)
sprunkSprunkpackaged_food330 ml55 ml66 susuzluk
ecolaeColapackaged_food330 ml55 ml66 susuzluk
coffeeCoffeefresh_drink250 ml50 ml55 susuzluk
grapejuiceGrape Juicefresh_drink300 ml60 ml56 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:

config/foods.lua
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:

server.cfg
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.

config.lua
foods.lua
en.json
tr.json
fxmanifest.lua

Bu sayfada