Inventory Docs

kairo-inventory v4.5.0 dépendance : kairo-core Voir le produit

Présentation

Kairo Inventory gère tous les objets du serveur : ceux que portent les joueurs, ceux des coffres et ceux des véhicules. Chaque objet a un poids, peut s'empiler ou non, et peut porter des métadonnées (durabilité, numéro de série, qualité…).

C'est la référence des objets pour tout l'écosystème : Kairo Jobs donne ses récompenses avec, Kairo Garage l'utilise pour les coffres des véhicules, et Kairo Logs enregistre ses mouvements.

Les actions sensibles (ajout, retrait, transfert) se font toujours côté serveur. L'interface ne fait qu'afficher et demander : un client modifié ne peut pas se donner d'objet.

Installation

  1. Télécharge l'archive depuis « Mes achats » et décompresse-la.
  2. Place le dossier kairo-inventory dans resources/[kairo]/ de ton serveur.
  3. Vérifie que kairo-core est démarré avant kairo-inventory dans ton server.cfg.
  4. Ajoute la ligne ensure kairo-inventory, puis redémarre le serveur. Les tables sont créées automatiquement au premier lancement.
server.cfg
# server.cfgensure kairo-coreensure kairo-inventory

Configuration

Les limites générales (poids maximum, nombre de cases) se règlent dans config.lua. Le poids est exprimé en grammes.

Chaque objet est déclaré dans items.lua. Un objet usable déclenche l'événement kairo-inventory:itemUsed quand le joueur l'utilise, ce qui te permet d'écrire son effet dans ta propre ressource.

config.lua
-- config.luaConfig.MaxWeight = 30000 -- 30 kgConfig.Slots     = 40Config.Hotbar    = 5-- items.luaItems.water = { label = 'Eau',   weight = 500,  stack = true, usable = true }Items.bread = { label = 'Pain',  weight = 250,  stack = true, usable = true }Items.phone = { label = 'Téléphone', weight = 180, stack = false }

API

Les exports s'appellent avec exports['kairo-inventory']:Nom(...). Les fonctions serveur ne sont jamais accessibles depuis le client.

AddItem

serveur
exports['kairo-inventory']:AddItem(source, item, count, metadata)

Ajoute un objet à l'inventaire d'un joueur. Échoue si le joueur ne peut pas porter le poids ou n'a plus de case libre.

ParamètreTypeDescription
sourcenumberID serveur du joueur
itemstringNom de l'objet déclaré dans items.lua
countnumberQuantité
metadatatable?Métadonnées facultatives

Retour boolean

exemple.lua
exports['kairo-inventory']:AddItem(source, 'water', 3, { quality = 100 })

RemoveItem

serveur
exports['kairo-inventory']:RemoveItem(source, item, count)

Retire une quantité d'objets. Ne retire rien si le joueur n'en a pas assez.

ParamètreTypeDescription
sourcenumberID serveur du joueur
itemstringNom de l'objet
countnumberQuantité à retirer

Retour boolean

exemple.lua
if exports['kairo-inventory']:RemoveItem(source, 'bread', 1) then    -- mangerend

CanCarry

serveur
exports['kairo-inventory']:CanCarry(source, item, count)

Vérifie à l'avance qu'un joueur peut recevoir un objet (poids et cases).

ParamètreTypeDescription
sourcenumberID serveur
itemstringNom de l'objet
countnumberQuantité

Retour boolean

exemple.lua
if not exports['kairo-inventory']:CanCarry(source, 'water', 10) then    return player:notify('Inventaire plein', 'error')end

GetItemCount

serveur
exports['kairo-inventory']:GetItemCount(source, item)

Compte le nombre total d'un objet, toutes cases confondues.

ParamètreTypeDescription
sourcenumberID serveur
itemstringNom de l'objet

Retour number

exemple.lua
local n = exports['kairo-inventory']:GetItemCount(source, 'lockpick')

RegisterStash

serveur
exports['kairo-inventory']:RegisterStash(id, label, slots, maxWeight)

Déclare un coffre persistant (entrepôt, casier, coffre de gang). Son contenu est sauvegardé en base.

ParamètreTypeDescription
idstringIdentifiant unique
labelstringNom affiché
slotsnumberNombre de cases
maxWeightnumberPoids maximum en grammes

Retour rien

exemple.lua
exports['kairo-inventory']:RegisterStash('police_locker', 'Casier police', 50, 100000)

OpenStash

serveur
exports['kairo-inventory']:OpenStash(source, id)

Ouvre un coffre pour un joueur. Pense à vérifier sa distance et ses droits avant.

ParamètreTypeDescription
sourcenumberID serveur
idstringIdentifiant du coffre

Retour boolean

exemple.lua
exports['kairo-inventory']:OpenStash(source, 'police_locker')

Événements

kairo-inventory:itemUsed

serveur

Un joueur utilise un objet déclaré usable.

exemple.lua
AddEventHandler('kairo-inventory:itemUsed', function(source, item, slot)    if item == 'water' then        exports['kairo-inventory']:RemoveItem(source, 'water', 1)    endend)

kairo-inventory:itemAdded

serveur

Un objet a été ajouté à un inventaire.

exemple.lua
AddEventHandler('kairo-inventory:itemAdded', function(source, item, count)end)

kairo-inventory:itemRemoved

serveur

Un objet a été retiré d'un inventaire.

exemple.lua
AddEventHandler('kairo-inventory:itemRemoved', function(source, item, count)end)

FAQ

Comment créer un objet qui a un effet ?

Déclare-le avec usable = true dans items.lua, puis écoute kairo-inventory:itemUsed dans ta ressource et applique l'effet. L'inventaire ne retire pas l'objet automatiquement : tu décides si l'utilisation le consomme.

Les métadonnées sont-elles sauvegardées ?

Oui, avec l'objet. Deux objets aux métadonnées différentes ne s'empilent pas dans la même case.