ConsumablesYeniÜcretsiz

Consumables: 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.

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

Başlamadan önce

OneSync'in açık olduğundan ve sunucu artifact'inin güncel olduğundan emin ol. Script framework, envanter, target ve bildirim kaynağını kendisi tespit eder; tek veritabanı tablosunu da ilk açılışta kendisi oluşturur.

Gereksinimler

KaynakGerekliNot
ox_libEvetCallback'ler, tuş atamaları ve diller
oxmysqlEvetYere bırakılan yiyecekleri saklar
ox_inventory / ps-inventory / jpr-inventory / qb-inventoryEvetBiri yeterli, bu sırayla tespit edilir
qbx_core / qb-core / es_extendedİsteğe bağlıBu sırayla tespit edilir, hiçbiri yoksa standalone çalışır
ox_target / qb-targetİsteğe bağlıYerdeki yiyeceği incelemek ve almak için gerekli
okokNotify / ps-ui / ox_libİsteğe bağlıBildirimler, config'teki Notifications ayarına bak

Envanter ve framework eşleşmeleri

qb tarzı envanterler (qb-inventory, ps-inventory, jpr-inventory) sadece qb-core ile çalışır. ESX ve standalone sunucular ox_inventory kullanmalı. Desteklenen bir envanter yoksa kaynak No supported inventory found hatasıyla durur.

İndirme bağlantıları ve başlatma sırası için Bağımlılıklar sayfasına bak.

Kurulum adımları

Kaynağı indir

Script ücretsiz ve açık kaynaktır (MIT). GitHub üzerinden indirebilirsin. Bkz. Ücretsiz scriptler.

Klasör adını değiştirme

Klasörün adı mutlaka hype-consumables olmalı. ox_inventory eşya tanımları hype-consumables.useFood çağırır; arayüz ve export'lar da bu isim üzerinden çalışır.

config.lua
foods.lua
install.sql
ox_inventory.md
qb_inventory.md
fxmanifest.lua

Arayüz web/build içinde derlenmiş olarak gelir. Node.js'e sadece arayüzü değiştirmek istersen ihtiyaç duyarsın (bkz. SSS).

Eşyaları ekle

Kullandığın envantere göre sadece birini uygula. Eşya adları config/foods.lua içindeki anahtarlarla aynı olmalı. Hazır gelen 13 eşya: burger, sandwich, hotdog, taco, fries, donut, chips, egobar, water, sprunk, ecola, coffee ve grapejuice.

INSTALL/ox_inventory.md içindeki Lua eşya tanımlarını ox_inventory/data/items.lua dosyasındaki return { ... } tablosuna ekle. burger, sprunk, water, sandwich, coffee ve grapejuice orada zaten var: mevcut tanımlarını sil ve dosyadakilerle değiştir. Tüm eşyalar aynı yapıdadır:

ox_inventory/data/items.lua
['burger'] = {
    label = 'Burger',
    weight = 20,
    stack = true,
    close = true,
    consume = 0,
    description = 'Freshly made burger. Eaten bite by bite.',
    client = {
        export = 'hype-consumables.useFood',
    },
    buttons = {
        { label = 'Give to someone', action = function(slot) exports['hype-consumables']:giveFood(slot) end },
        { label = 'Put on the ground', action = function(slot) exports['hype-consumables']:dropFood(slot) end },
    },
},
AlanNeden
weightSadece ambalaj. Kalan gram / ml metadata üzerinden eklenir, yani yarısı yenmiş burger daha hafiftir
consume = 0Eşyayı ox_inventory silmez, her lokmayı script yönetir
client.exportEşya kullanımı scripte devredilir, framework'ün tüketim kayıtlarına hiç ulaşılmaz
buttonsEnvanterdeki sağ tık menüsü: bir oyuncuya ver veya yere bırak

INSTALL/item-images/*.png dosyalarını ox_inventory/web/images/ klasörüne kopyala. Buton yazılarını istersen Türkçeye çevirebilirsin.

İki dosyada da isteğe bağlı bir spoiled_food eşyası var. Bunu sadece Spoilage.spoiledItem değerini 'spoiled_food' yaparsan ekle (bkz. Bozulma).

Veritabanı

Çoğu durumda yapman gereken bir şey yok. Script ilk açılışta tek tablosu olan hype_consumables_drops tablosunu oluşturur; bu tablo yere bırakılan yiyecekleri restart sonrasına taşır. Veritabanı kullanıcının CREATE yetkisi yoksa INSTALL/install.sql dosyasını bir kez elle çalıştır:

INSTALL/install.sql
CREATE TABLE IF NOT EXISTS `hype_consumables_drops` (
    `id` VARCHAR(32) NOT NULL,
    `item` VARCHAR(64) NOT NULL,
    `metadata` LONGTEXT NOT NULL,
    `x` FLOAT NOT NULL,
    `y` FLOAT NOT NULL,
    `z` FLOAT NOT NULL,
    `heading` FLOAT NOT NULL DEFAULT 0,
    `owner` VARCHAR(64) NULL DEFAULT NULL,
    `created_at` INT NOT NULL,
    PRIMARY KEY (`id`)
);

Açlık, susuzluk, kalan miktar ve son kullanma tarihleri bu tabloda değil, eşya metadata'sında ve framework'ünde tutulur.

Kaynağı başlat

server.cfg dosyasına bağımlılıklarından sonra ekle ve dili ayarla.

server.cfg
ensure ox_lib
ensure oxmysql
ensure qbx_core          # veya qb-core / es_extended (isteğe bağlı)
ensure ox_inventory      # veya qb-inventory / ps-inventory / jpr-inventory
ensure ox_target         # veya qb-target

# HypeScripts
ensure hype-consumables

setr ox:locale "tr"      # "en" ve "tr" hazır gelir

Temel ayarları yap

Varsayılanlar kurulumdan hemen sonra çalışır. Tuşlara, bozulma sürelerine ve yerdeki yiyecek sınırlarına bakmak için config/config.lua, yiyecekleri ayarlamak için config/foods.lua dosyasını aç. Tüm seçenekler için Ayarlar sayfasına bak.

Başlatma sırası önemli

hype-consumables envanterden önce başlarsa No supported inventory found yazar ve durur. Framework'ten önce başlarsa standalone moda geçer, açlık ve susuzluk uygulanmaz.

Kontrol et

Config'te Debug = true yap ve sunucuyu başlat. Konsolda şu satırları ara:

[DEBUG:SERVER] [INFO] Framework detected: qbx_core
[DEBUG:SERVER] [INFO] Inventory detected: ox_inventory
[hype-consumables] Loaded 0 food drops
[DEBUG:SERVER] [INFO] 13 foods loaded (framework: qbx_core)

Envanterinde eksik bir eşya varsa konsol onu listeler: These foods are not registered in ox_inventory (see INSTALL): ...

Kendine bir burger ver ve kullan. İlk lokma hemen alınır ve sağ alt köşede küçük bir panel açılır. Yeni lokmalar için E tuşuna bas; kalan gramın hem panelde hem envanterde azaldığını gör.

Kalanını saklamak için X tuşuna bas, sonra burgeri tekrar kullan: kaldığın yerden devam eder. Yere bırakmak için Q tuşuna bas, sonra target ile İncele ve Yerden al seçeneklerini dene.

Yanında ikinci bir oyuncu varken yemek yerken H tuşuna, ardından teklifi göndermek için Y tuşuna bas. Diğer oyuncu Y ile kabul eder. Her şey çalışıyorsa Debug = false yap.

Nasıl çalışır

  • Lokma lokma: 200 g'lık bir burger 20 g'lık 10 lokmada yenir. 4 lokmadan sonra envanter ve panel 120 g gösterir. Lokmalar asla otomatik alınmaz; her lokma bir tuş basışıdır.
  • Sakla ve devam et: istediğin an bırakabilirsin. Kalanı envanterde durur, eşyayı tekrar kullanınca kaldığın yerden devam edersin.
  • Kapalı ve açılmış: yeni yiyecek kapalı bir pakettir. Birlikte oluşan kapalı paketler yığılır. İlk lokma paketi açar, ona benzersiz bir id verir ve kendi slotuna taşır; bu yüzden bir yığından yemeye başlamak için bir boş slot gerekir.
  • Oyunculara ver: yiyeceği yakındaki bir oyuncuya teklif et. Teklif cevaplanana kadar eşya kilitlenir, kabul edilince sunucuda karşı tarafa taşınır.
  • Yerdeki yiyecek: yere bırakılan yiyecek dünyada obje olarak kalır, incelenip yerden alınabilir ve restart sonrasında da yerinde durur.
  • Gerçek zamanlı bozulma: yiyecekler kategorilerine göre gerçek zamanlı bozulur, sunucu kapalıyken bile. Bozulan yiyecek envanterde işaretlenir ve varsayılan olarak yenemez.
  • Açlık ve susuzluk: her lokma, payına düşen açlık ve susuzluğu framework üzerinden ekler. Daha küçük olan son lokma orantılı sayılır.
  • Sunucu tarafı: tüm miktarlar, son kullanma tarihleri ve besin değerleri sunucuda hesaplanır. Arayüz sadece gösterir.

Tuşlar

Panel fare veya imleç kullanmaz; her işlem bir tuştur ve ipucu olarak gösterilir.

Tuşİşlem
Eşyayı kullanYemeye başla (ilk lokma hemen alınır)
ELokma al / yudum al (aynı eşyayı tekrar kullanmak da aynı işi yapar)
QYere bırak
XBırak ve kalanını sakla
HBirine ver: yakındaki oyuncu listesini açar, tekrar basınca sıradakini seçer
Y / NTeklifi gönder / vazgeç, gelen teklifi kabul et / reddet
Envanterde sağ tıkVer / yere bırak (sadece ox_inventory)
TargetYerdeki yiyeceği İncele / Yerden al

Yeme tuşları GTA kontrolleridir. Yemek yerken veya oyuncu seçerken her karede engellenirler, böylece aynı tuştaki oyun eylemleri (siper, korna, farlar) karışmaz; geri kalan zamanda oyuna aittirler. Y ve N, oyuncuların Ayarlar → Tuş Atamaları → FiveM altından değiştirebileceği tuş atamalarıdır.

Envanterler

ox_inventoryqb-inventory / ps-inventory / jpr-inventory
Eşya kullanımıEşya tanımındaki client.exportQBCore.Functions.CreateUseableItem
MetadataEşyanın metadata alanıEşyanın info alanı
YığılmaKapalı paketler yığılır, açılan yiyecek kendi slotunu alırHer yiyecek unique
Yeni eşyalarMetadata createItem hook'u ile hemen yazılırMetadata ilk kullanımda veya oyuncu girişinde yazılır
KilitlerTeklif edilen eşya taşınamaz; yenen yiyeceği envanterden çıkarmak yemeyi bitirirHook yok; değişiklikler teklif kabul edilirken veya sonraki lokmada yakalanır
EkstralarKalan ağırlık, yüzde çubuğu, sağ tık ile ver / bırak butonlarıYemek yerken tuşlarla ver / bırak

Framework'ler

FrameworkAçlık / susuzlukKimlik
qbx_coreOyuncu state bag'i ve metadatacitizenid
qb-coreMetadata ve hud:client:UpdateNeedscitizenid
es_extendedesx_status:add / esx_status:removeidentifier
Standalonehype-consumables:server:addStatus sunucu event'ilicense2 / license

Standalone sunucularda hazır bir açlık ve susuzluk sistemi yoktur. Değerleri kendi status veya HUD kaynağında hype-consumables:server:addStatus event'i ile uygula.

Sonraki adımlar

Bu sayfada