Functies
- Stashes (persoonlijk en/of gedeeld)
- Kofferbak en dashboardkastje
- Wapenbevestigingen
- Winkels
- Item-drops
Downloaden
Documentatie
Inleiding
- Beheert alle opslag van de speler, zoals persoonlijke spullen, voertuigen, stash en drops
- qb-winkels integratie voor het weergeven van alle artikelen die te koop zijn
- Ingebouwde ondersteuning voor bruikbare verkoopautomaten
Alle vermelde exporten zijn alleen SERVER, tenzij anders aangegeven
Inventarisstatus
De inventarisstatus wordt beheerd via staatszakken met behulp van een staatszaknaam van inv_bezet
. U kunt deze status gebruiken om te bepalen of de inventaris geopend mag worden of niet
Voorbeeld (server):
Kopiëren
RegisterCommand('checkState', function(source) lokale speler = Player(source) lokale status = player.state.inv_busy print('Huidige status van inventaris is', state) end, true) RegisterCommand('lockInventory', function(source) lokale speler = Player(source) player.state.inv_busy = true print('Huidige status van inventaris is', state) end, true) RegisterCommand('unlockInventory', function(source) lokale speler = Player(source) player.state.inv_busy = false print('Huidige status van inventaris is', state) end, true)
Voorbeeld (klant):
Kopiëren
RegisterCommand('lockInventory', functie() LocalPlayer.state:set('inv_busy', true, true) einde, false) RegisterCommand('unlockInventory', functie() LocalPlayer.state:set('inv_busy', false, true) einde, false)
Artikelinformatie
U kunt SetItemData gebruiken om dit te bereiken
Items ondersteunen aanvullende informatie die eraan kan worden toegevoegd via een informatie
attribuut. Deze informatie wordt weergegeven op het item wanneer de speler eroverheen beweegt in een sleutel-waardepaarformaat
Voorbeeld:
Kopiëren
RegisterCommand('addItemWithInfo', function(source, args) local itemName = args[1] if not itemName then return end local info = { uniqueData1 = 'uniqueData1', uniqueData2 = 'uniqueData2', uniqueData3 = 'uniqueData3', uniqueData4 = 'uniqueData4', } exports['qb-inventory']:AddItem(source, itemName, 1, false, info, 'qb-inventory:testAdd') end, true) RegisterCommand('editItemWithInfo', function(source) local Player = QBCore.Functions.GetPlayer(source) if not Player then return end local items = Player.PlayerData.items local itemInfo = items[1] print(json.encode(itemInfo, { indent = true })) itemInfo.info = { newInfo = 'Nieuwe info' } print(json.encode(itemInfo, { indent = true })) items[1] = itemInfo Speler.Functions.SetPlayerData('items', items) einde, true)
Laadvoorraad
Deze functie haalt de inventaris van de spelers op uit de database via hun unieke identificatie, ook wel bekend als burger
Kopiëren
exports['qb-inventory']: LoadInventory(bron, burger-id)
- bron:
nummer
- burger-id:
snaar
- retourneert:
tafel
Kopiëren
RegisterCommand('getInv', function(bron) lokale speler = QBCore.Functions.GetPlayer(bron) lokale citizenId = speler.PlayerData.citizenid lokale items = exports['qb-inventory']:LoadInventory(bron, citizenid) print(json.encode(items, { indent = true })) end)
OpslaanInventaris
Deze functie slaat de huidige items van de speler op in de database. Kopiëren
exports['qb-inventory']:SaveInventory(bron, offline)
- bron:
nummer
- offline:
Booleaans
Voorbeeld:
Kopiëren
RegisterCommand('saveInv', functie(bron) exports['qb-inventory']:SaveInventory(bron, false) end)
Voorraad wissen
Kopiëren
exports['qb-inventory']:ClearInventory(bron, filterItems)
- bron:
nummer
- Filteritems:
snaar | tabel
Voorbeeld:Kopiëren
RegisterCommand('clearInventoryExcludeItem', function(source, args) local filterItem = args[1] if not filterItem then return end exports['qb-inventory']:ClearInventory(source, filterItem) print('Inventaris gewist voor speler '..source..', exclusief item: '..filterItem) end, true) RegisterCommand('clearInventoryExcludeItems', function(source) local filterItems = {'item1', 'item2'} exports['qb-inventory']:ClearInventory(source, filterItems) print('Inventaris gewist voor speler '..source..', exclusief items: '..table.concat(filterItems, ', ')) end, true)
SluitenInventaris
Kopiëren
exports['qb-inventory']:CloseInventory(bron, identifier)
- bron:
nummer
- identificatie:
snaar
Voorbeeld:Kopiëren
RegisterCommand('closeInventory', function(source) exports['qb-inventory']:CloseInventory(source) print('Inventaris gesloten voor speler '..source) end, true) RegisterCommand('closeInventoryByName', function(source, identifier) exports['qb-inventory']:CloseInventory(source, identifier) print('Inventaris gesloten voor speler '..source..' en inventaris '..identifier..' ingesteld op gesloten') end, true)
OpenInventaris
Kopiëren
exports['qb-inventory']:OpenInventory(bron, identifier, data)
- bron:
nummer
- identificatie:
string | optioneel
- gegevens:
tafel | optioneel
Voorbeeld:
Kopiëren
RegisterCommand('openinv', functie(bron) exports['qb-inventory']:OpenInventory(bron) einde, waar) RegisterCommand('openinvbyname', functie(bron, args) lokale inventarisnaam = args[1] exports['qb-inventory']:OpenInventory(bron, inventarisnaam) einde, waar) RegisterCommand('openinvbynamewithdata', functie(bron, args) lokale inventarisnaam = args[1] lokale data = { label = 'Aangepaste voorraad', maxgewicht = 400000, slots = 500 } exports['qb-inventory']:OpenInventory(bron, inventarisnaam, data) einde, waar)
OpenInventarisOpId
Kopiëren
exports['qb-inventory']:OpenInventoryById(bron, speler-ID)
- bron:
nummer
- speler-ID:
nummer
Voorbeeld:
Kopiëren
RegisterCommand('openplayerinv', functie(bron, args) lokale spelerId = tonumber(args[1]) exports['qb-inventory']:OpenInventoryById(bron, spelerId) einde, true)
OpenInventarisOpId
zal de inventaris van de doelspeler sluiten (indien open) en vergrendelen via de status. Het zal dan ontgrendelen wanneer de openende speler het sluit
MaakWinkel
Kopiëren
exports['qb-inventory']:CreateShop(shopData)
- winkelgegevens:
tafel
Kopiëren
lokale items = { { naam = 'sandwich', bedrag = 10, prijs = 5 } } RegisterCommand('createShop', functie(bron) lokale playerPed = GetPlayerPed(bron) lokale playerCoords = GetEntityCoords(playerPed) exports['qb-inventory']:CreateShop({ naam = 'testShop', label = 'Test Shop', coords = playerCoords, -- optionele slots = #items, items = items }) end, true)
Coördinaten worden doorgegeven aan creërenWinkel
wordt gecontroleerd aan de hand van de huidige coördinaten van de speler wanneer OpenWinkel
wordt aangeroepen als er coördinaten zijn verstrekt tijdens creërenWinkel
OpenWinkel
Kopiëren
exports['qb-inventory']:OpenShop(bron, naam)
- bron:
nummer
- naam:
snaar
Kopiëren
RegisterCommand('openShop', functie(bron) exports['qb-inventory']:OpenShop(bron, 'testShop') einde)
KanItemToevoegen
Kopiëren
exports['qb-inventory']:CanAddItem(bron, item, bedrag)
- bron:
nummer
- item:
snaar
- hoeveelheid:
nummer
- retourneert:
Booleaans
Voorbeeld:Kopiëren
RegisterCommand('canAddItem', function(source, args) lokale itemName = args[1] lokale amount = tonumber(args[2]) indien niet itemName of niet amount dan return end lokale canAdd, reden = exports['qb-inventory']:CanAddItem(source, itemName, amount) indien canAdd dan print('Kan '..amount..' toevoegen van item '..itemName..') anders print('Kan '..amount..' niet toevoegen van item '..itemName..'. Reden: '..reason) end end, true)
Item toevoegen
Kopiëren
exports['qb-inventory']:AddItem(identifier, item, amount, slot, info, reason)
- identificatie:
nummer
- item:
snaar
- hoeveelheid:
nummer
- sleuf:
nummer | booleaans
- informatie:
tabel | booleaans
- reden:
snaar
- retourneert:
Booleaans
Voorbeeld:
Kopiëren
RegisterCommand('addItem', function(source, args) lokale itemName = args[1] indien niet itemName dan return einde exports['qb-inventory']:AddItem(source, itemName, 1, false, false, 'qb-inventory:testAdd') einde, true)
VerwijderItem
Kopiëren
exports['qb-inventory']:RemoveItem(identifier, item, bedrag, slot, reden)
- identificatie:
nummer
- item:
snaar
- hoeveelheid:
nummer
- sleuf:
nummer | booleaans
- reden:
snaar
- retourneert:
Booleaans
Kopiëren
RegisterCommand('removeItem', function(source, args) lokale itemName = args[1] indien niet itemName dan return end exports['qb-inventory']:RemoveItem(source, itemName, 1, false, 'qb-inventory:testRemove') end, true)
Inventaris instellen
Kopiëren
exports['qb-inventory']:SetInventory(bron, items)
- bron:
nummer
- artikelen:
tafel
Voorbeeld:Kopiëren
RegisterCommand('setInventory', function(bron) lokale items = { { naam = 'sandwich', bedrag = 10, type = 'item', info = {}, slot = 1 }, { naam = 'water_bottle', bedrag = 10, type = 'item', info = {}, slot = 2 } } exports['qb-inventory']:SetInventory(bron, items) end, true)
SetItemData
Deze functie gebruikt GetItemByName om de itemName te vinden die wordt doorgegeven. Kopiëren
exports['qb-inventory']:SetItemData(bron, itemnaam, sleutel, waarde)
- bron:
nummer
- itemnaam:
snaar
- sleutel:
snaar
- waarde:
snaar | tabel
- retourneert:
Booleaans
Voorbeeld:Kopiëren
RegisterCommand('setItemData', function(source, args) local itemName = args[1] local key = args[2] local val = args[3] if not itemName or not key or not val then return end local success = exports['qb-inventory']:SetItemData(source, itemName, key, val) if successful then print('Gegevens instellen voor item '..itemName..': '..key..' = '..val) else print('Gegevens instellen voor item '..itemName' is mislukt) end end, true)
Voorbeeld van artikelinfo:
Kopiëren
RegisterCommand('setItemData', function(source) local itemName = 'markedbills' local key = 'info' local val = { worth = 1000 } if not itemName or not key or not val then return end local success = exports['qb-inventory']:SetItemData(source, itemName, key, val) if success then print('Gegevens instellen voor item '..itemName..': '..key..' = '..json.encode(val, { indent = true })) else print('Gegevens instellen voor item '..itemName' is mislukt) end end, true)
GebruikItem
Kopiëren
exports['qb-inventory']:UseItem(itemName, ...)
- itemnaam:
snaar
- . . . :
functie
Voorbeeld:Kopiëren
RegisterCommand('useItem', function(source, args) local itemName = args[1] if not itemName then return end exports['qb-inventory']:Useitem(itemName, function() print('Gebruikt item met de naam '..itemName) end) end, true)
HeeftItem
Deze export is ook beschikbaar voor gebruik op de clientKopie
exports['qb-inventory']:HasItem(bron, items, bedrag)
- bron:
nummer
- artikelen:
snaar | tabel
- hoeveelheid:
nummer
- retourneert:
Booleaans
Voorbeeld:Kopiëren
RegisterCommand('hasSingleItem', function(bron) lokaal item = 'item1' lokaal bedrag = 5 lokaal hasItem = exports['qb-inventory']:HasItem(bron, item, bedrag) if hasItem then print('Speler '..source..' heeft '..bedrag..' van '..item) else print('Speler '..source..' heeft geen '..bedrag..' van '..item) end end, true) RegisterCommand('hasMultipleItems', function(bron) lokale items = {'item1', 'item2'} lokaal bedrag = 5 lokaal hasItems = exports['qb-inventory']:HasItem(bron, items, bedrag) if hasItems then print('Speler '..source..' heeft '..bedrag..' van elk item: '..table.concat(items, ', ')) else print('Speler '..source..' heeft niet '..amount..' van elk item: '..table.concat(items, ', ')) end end, true) RegisterCommand('hasMultipleItemsWithAmounts', function(source) local itemsWithAmounts = {item1 = 5, item2 = 10} local hasItemsWithAmounts = exports['qb-inventory']:HasItem(source, itemsWithAmounts) if hasItemsWithAmounts then print('Speler '..source..' heeft de opgegeven items met hun bedragen') else print('Speler '..source..' heeft niet de opgegeven items met hun bedragen') end end, true)
SlotsOpItemVerkrijgen
Kopiëren
exports['qb-inventaris']:GetSlotsByItem(items, itemnaam)
- artikelen:
tafel
- itemnaam:
snaar
- retourneert:
tafel
Voorbeeld:Kopiëren
RegisterCommand('getSlots', function(source, args) lokale itemName = args[1] indien niet itemName dan return end lokale Player = QBCore.Functions.GetPlayer(source) lokale items = Player.PlayerData.Items lokale slots = exports['qb-inventory']:GetSlotsByItem(items, itemName) voor _, slot in ipairs(slots) doe print(slot) end end, true)
EersteSlotOpItemGet
Kopiëren
exports['qb-inventaris']:GetFirstSlotByItem(items, itemName)
- artikelen:
tafel
- itemnaam:
snaar
- retourneert:
nummer
Voorbeeld:Kopiëren
RegisterCommand('getFirstSlot', function(source, args) local itemName = args[1] if not itemName then return end local Player = QBCore.Functions.GetPlayer(source) local items = Player.PlayerData.Items local slot = exports['qb-inventory']:GetFirstSlotByItem(items, itemName) if slot then print('Eerste slot met item '..itemName..' is: '..slot) else print('Geen slot gevonden met item '..itemName) end end, true)
ItemOpSlotOphalen
Kopiëren
exports['qb-inventory']:GetItemBySlot(bron, slot)
- bron:
nummer
- sleuf:
nummer
- retourneert:
tafel
Voorbeeld:Kopiëren
RegisterCommand('getItem', function(source, args) lokale slot = tonumber(args[1]) indien niet slot dan return end lokale item = exports['qb-inventory']:GetItemBySlot(source, slot) indien item dan print('Item in slot '..slot..' is: '..item.name) anders print('Geen item gevonden in slot '..slot) end end, true)
ItemOpNaamOphalen
exports['qb-inventory']:GetItemByName(bron, item)
- bron:
nummer
- item:
snaar
- retourneert:
tafel
RegisterCommand('getItemByName', function(source, args) local itemName = args[1] if not itemName then return end local item = exports['qb-inventory']:GetItemByName(source, itemName) if item then print('Eerste voorkomen van item '..itemName..' is in slot: '..item.slot) else print('Geen item gevonden met naam '..itemName) end end, true)
ItemsOpNaamOphalen
exports['qb-inventory']:GetItemsByName(bron, item)
- bron:
nummer
- item:
snaar
- retourneert:
tafel
Voorbeeld:Kopiëren
RegisterCommand('getItemsByName', function(source, args) local itemName = args[1] if not itemName then return end local items = exports['qb-inventory']:GetItemsByName(source, itemName) if #items > 0 then print('Items met de naam '..itemName..' gevonden in slots:') for _, item in ipairs(items) do print(item.slot) end else print('Geen items gevonden met de naam '..itemName) end end, true)
ItemAantal ophalen
exports['qb-inventory']:GetItemCount(bron, artikelen)
- bron:
nummer
- artikelen:
snaar | tabel
- retourneert:
nummer
Voorbeeld:Kopiëren
RegisterCommand('getItemCount', function(source, args) lokale itemName = args[1] indien niet itemName dan return end lokale itemCount = exports['qb-inventory']:GetItemCount(source, itemName) indien itemCount en itemCount > 0 dan print('U hebt '..itemCount..' van item: '..itemName) anders print('Geen items gevonden met de naam '..itemName) end end, true) RegisterCommand('getItemCounts', function(source) lokale itemNames = {“apple”, “banana”, “orange”} lokale itemCount = exports['qb-inventory']:GetItemCount(source, itemNames) indien itemCount en itemCount > 0 dan print('U hebt '..itemCount..' van de items: '..table.concat(itemNames, “, “)) anders print('Geen items gevonden met de namen: '..table.concat(itemNames, “, “)) einde einde, true)
Installatie
Handmatig
- Download het script en plaats het in de
[qb]
map. - Importeren
qb-inventaris.sql
in uw database - Voeg de volgende code toe aan uw server.cfg/resouces.cfg
Migreren van oude qb-inventaris
Databank
Upload de nieuwe inventaris.sql
bestand om de nieuwe te maken inventarissen
tafel
Gebruik de meegeleverde migreren.sql
bestand om al uw opgeslagen inventarisgegevens te migreren van voorraden, koffers, enz.
Zodra u klaar bent, kunt u het verwijderen handschoenenkastjeitems
voorraadartikelen
en kofferbakartikelen
tabellen uit uw database
MAAK TABEL ALS NIET BESTAAT `inventarissen` ( `id` INT(11) NIET NULL AUTO_INCREMENT, `identifier` VARCHAR(50) NIET NULL, `items` LONGTEXT STANDAARD ('[]'), PRIMAIRE SLEUTEL (`identifier`), SLEUTEL `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 STANDAARD CHARSET=utf8mb4;