Eşya ve envanter API'si
Bunların hepsi bs_inventory üzerinde sunucu tarafındadır. Dosya ve satırlı tam liste bs_inventory API sayfasında.
Eşya tanımlama
Section titled “Eşya tanımlama”bs_inventory/config/config_items.lua içindeki Items.Definitions’a ekleyin:
radio_part = { label = 'Radio part', category = 'material', weight = 0.3, w = 1, h = 1, stack = 10, usable = false, value = 20 },| Alan | |
|---|---|
label | gösterilen ad |
category | medical, food, drink, weapon, ammo, material, tool, booster, gadget, drug, gear… F10 sekmelerini ve bazı davranışları belirler |
weight, w, h | kg ve ızgara boyutu |
stack | yuva başına en fazla |
usable | envanterden kullanılabilir |
value | satıcılar için temel fiyat |
data | davranış: heal, hunger, thirst, armour, weapon, ammo, drug, handled, defaultMeta, craftingStation… |
Tanımlar başlangıçta bs_item_definitions ile eşitlenir.
Ver, al, say
Section titled “Ver, al, say”local inv = exports.bs_inventory
inv:GiveItem(src, 'bandage', 2) -- metadata optionalinv:GiveItem(src, 'booster_drone', 1, { battery = 50, capacity = 'medium' })inv:RemoveItem(src, 'bandage', 1)local n = inv:CountItem(src, 'bandage')
local def = inv:GetItem('bandage') -- runtime definitionlocal list = inv:ItemMetaList(src, 'booster_drone') -- metadata of every stackinv:SetItemMeta(src, slot, 'booster_drone', meta, true)inv:Refresh(src) -- push state to the clientGiveItem’in dönüş değerini kontrol edin. Dolu bir çanta gerçek bir durumdur.
Bir eşyanın kullanıldığında bir şey yapmasını sağlama
Section titled “Bir eşyanın kullanıldığında bir şey yapmasını sağlama”İki yol:
- Yerleşik
dataalanlarını (heal, hunger…) kullanın, envanter yapar. - Kendiniz işleyin. Envanter tüketmesin diye
data.handled = trueayarlayın, sonra kullanım kancasını dinleyin ve işe yaradığında eşyayı kendiniz kaldırın:
-- server, in your resourceAddEventHandler('bsesx:useItem:radio_part', function(src) if not doTheThing(src) then return end exports.bs_inventory:RemoveItem(src, 'radio_part', 1)end)bsesx:useItem:<item> olayı, yerleşik etkilerden sonra kullanılan her eşya için tetiklenir. Adını ESX köprüsünden alır ama düz bir sunucu olayıdır, herhangi bir kaynak dinleyebilir.
Büyük eşya kazançlarını hile karşıtına da bildiriyorsanız: exports.bs_guard:ReportItem(src, item, amount).
Kaplar
Section titled “Kaplar”Oyuncu çantası olmayan yuvalı her şey: sandıklar, araç bagajları, saklama yerleri, olay düşürmeleri.
inv:RegisterContainer('myres:crate:1', { width = 6, height = 4, maxWeight = 150.0, label = 'Crate' })-- optional 3rd arg: a src that is allowed to open it right awayinv:ContainerGive('myres:crate:1', 'scrap_metal', 5)inv:OpenContainerFor(src, 'myres:crate:1')local has = inv:ContainerHasItems('myres:crate:1')local items = inv:ContainerContents('myres:crate:1')Sunucuda kendi kontrollerinizden (mesafe, kilit, sahiplik) sonra kaydedin. Envanter bu tabloya yalnızca boyut için güvenir, bir istemcinin söylediğine asla. Kimlikler en fazla 64 karakter, kaynağınızın önekini ekleyin. bs_events/server/sv_main.lua temiz bir örnektir.
Ekipmanlar (hızlı çubuk, güçlendirmeler, aletler)
Section titled “Ekipmanlar (hızlı çubuk, güçlendirmeler, aletler)”inv:LoadoutGet(src, 'gadget') -- includes metadatalocal ok, meta = inv:LoadoutTake(src, 'gadget', 1, 1, 'booster_drone')inv:LoadoutPut(src, 'gadget', 1, 'booster_drone', meta)Silahlar ve cephane
Section titled “Silahlar ve cephane”ItemForWeapon(model) bir WEAPON_X için eşyayı, AmmoItemFor(weaponName) cephane eşyasını verir.
WipeInventory(src) bir oyuncuyu boşaltır. F10 menüsünden yalnızca superadmin, koddan dikkatli kullanın.
bs19.org · Privacy · Terms · Cookie settings
Cookies and outside content
The site only needs two essential cookies to keep you logged in and protect forms. Videos and streams from YouTube and Twitch load from their servers, which can set their own cookies, so they stay off until you say yes. Nothing is pre-ticked and you can change your mind any time with "Cookie settings" at the bottom of every page. Details.
Questions about the server, the framework or the site? A real person reads this, usually within a day.