ScriptlerliveBase
Envanter ve Item Verme
Item tanımı vs envanter verme, AddItem akışı, güvenlik kuralları ve yeni script şablonu.
🌐 English · Inventory & Item Giving
Bu bölüm, liveBase'de item tanımı ile oyuncuya item verme arasındaki farkı ve tüm verme yollarını açıklar.
İki katman: tanım vs envanter
| Katman | Ne yapar? | API | Veri kaynağı |
|---|---|---|---|
| Item tanımı | Metadata kaydı | liveBase.Functions.AddItem(name, item) | liveShared.Items |
| Envantere verme | Fiziksel item ekler | exports['liveInventory']:AddItem(...) | PlayerData.items |
exports['liveBase']:AddItem('water', {...}) item tanımı ekler; oyuncuya su vermez.
Oyuncuya vermek için liveInventory API'si kullanılır.
Item tanımları: liveBase/data/items.lua · Starter: liveBase/shared/utils.lua → StarterItems
Merkez fonksiyon: AddItem
Dosya: liveInventory/server/functions.lua
Kontrol sırası: tanım var mı → envanter bul → ağırlık → slot → stack/unique → kaydet
AddItem(identifier, item, amount, slot, info, reason)
exports['liveInventory']:AddItem(source, 'water', 2, false, {}, 'myScript:reward')Player method enjeksiyonu
Login sonrası (liveBase:Server:PlayerLoaded):
Player.Functions.AddItem(item, amount, slot, info, reason)
Player.Functions.RemoveItem(item, amount, slot, reason)
Player.Functions.GetItemByName(item)
Player.Functions.ClearInventory(filterItems)Item verme yolları
| Yol | Açıklama |
|---|---|
/giveitem [id] [item] [amount] | Admin — yetki: admin.giveitem |
| Envanter UI GiveItem | Oyuncudan oyuncuya (< 3m) |
GiveStarterItems | Karakter oluşturma — phone, id_card, driver_license |
| Kendi scriptin | Player.Functions.AddItem(...) (önerilen) |
| Mağaza / admin menu | Callback ve stash akışları |
Önerilen script kullanımı
local Player = liveBase.Functions.GetPlayer(source)
if not Player then return end
local ok = Player.Functions.AddItem('water', 2, nil, {}, 'myJob:questReward')
if ok then
TriggerClientEvent('liveInventory:client:ItemBox', source, liveShared.Items['water'], 'add', 2)
endItem tanımı ekleme
liveShared.Items['my_item'] = {
name = 'my_item',
label = 'Benim Item',
weight = 100,
type = 'item',
unique = false,
useable = true,
}Runtime: exports['liveBase']:AddItem('my_item', { ... }) · Yenile: ReloadItems()
Güvenlik
| Kural | Açıklama |
|---|---|
| Server-only | Item verme/alma yalnızca sunucuda |
| Client event yok | liveBase:Server:AddItem engellenmiş |
| reason parametresi | Her AddItem çağrısında log için reason ver |
Sık hatalar
| Hata | Çözüm |
|---|---|
liveBase:AddItem ile oyuncuya vermek | liveInventory:AddItem veya Player.Functions.AddItem |
| Login öncesi AddItem | PlayerLoaded sonrası bekle |
| Büyük harf item adı | Küçük harf kullan (water) |
Detaylı envanter API → liveInventory