> For the complete documentation index, see [llms.txt](https://kazescripts.gitbook.io/kazescripts/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kazescripts.gitbook.io/kazescripts/kaze_inventory/client-exports.md).

# Client Exports

Client exports, events and state bags.

## Items

### Items

```lua
exports.kaze_inventory:Items(name?)
```

Item data for one item, or every item.

```lua
local water = exports.kaze_inventory:Items('water')
```

### GetItemCount

```lua
exports.kaze_inventory:GetItemCount(item, metadata?)
```

Count in the local player's pockets.

```lua
if exports.kaze_inventory:GetItemCount('lockpick') > 0 then print('Has lockpick') end
```

### Search

```lua
exports.kaze_inventory:Search(search, item, metadata?)
```

`search` is `'count'` or `'slots'`. Same as the server export, for the local player.

```lua
local counts = exports.kaze_inventory:Search('count', { 'water', 'burger' })
```

### SetItemImages

```lua
exports.kaze_inventory:SetItemImages(map)
```

Overrides item images as `{ [itemName] = url }`.

```lua
exports.kaze_inventory:SetItemImages({ water = 'https://example.com/water.png' })
```

## Player

### GetPlayerItems

```lua
exports.kaze_inventory:GetPlayerItems()
```

The local player's items keyed by slot.

```lua
for slot, item in pairs(exports.kaze_inventory:GetPlayerItems()) do print(slot, item.name) end
```

### GetPlayerWeight

```lua
exports.kaze_inventory:GetPlayerWeight()
```

Current weight in grams.

```lua
local weight = exports.kaze_inventory:GetPlayerWeight()
```

### GetPlayerMaxWeight

```lua
exports.kaze_inventory:GetPlayerMaxWeight()
```

Max weight in grams.

```lua
local max = exports.kaze_inventory:GetPlayerMaxWeight()
```

## Inventory

### openInventory

```lua
exports.kaze_inventory:openInventory(type?, data?)
```

Opens `player`, `stash`, `drop`, `container` or `shop`.

```lua
exports.kaze_inventory:openInventory('stash', 'police_locker')
exports.kaze_inventory:openInventory('shop', { type = 'Liquor', id = 1 })
```

### closeInventory

```lua
exports.kaze_inventory:closeInventory()
```

Closes the inventory.

```lua
exports.kaze_inventory:closeInventory()
```

### setStashTarget

```lua
exports.kaze_inventory:setStashTarget(id)
```

The stash opened by the next inventory open.

```lua
exports.kaze_inventory:setStashTarget('police_locker')
```

### displayMetadata

```lua
exports.kaze_inventory:displayMetadata(key, label)
exports.kaze_inventory:displayMetadata(table)
```

Shows metadata keys in the item tooltip.

```lua
exports.kaze_inventory:displayMetadata({ citizenid = 'Citizen ID', serial = 'Serial' })
```

## Using items

### useSlot

```lua
exports.kaze_inventory:useSlot(slot)
```

Uses the item in a slot.

```lua
exports.kaze_inventory:useSlot(1)
```

### useItem

```lua
exports.kaze_inventory:useItem(data, cb)
```

Runs the item's use animation inside a `client.export` handler, then calls `cb(item)`.

```lua
exports('eatBurger', function(data, slot)
    exports.kaze_inventory:useItem(data, function(item)
        if item then print('Ate ' .. item.label) end
    end)
end)
```

## Weapons

### getCurrentWeapon

```lua
exports.kaze_inventory:getCurrentWeapon()
```

Returns `{ name, slot, metadata, hash }` of the weapon in hand, or `nil`.

```lua
local weapon = exports.kaze_inventory:getCurrentWeapon()
if weapon then print(weapon.name) end
```

### weaponWheel

```lua
exports.kaze_inventory:weaponWheel(state)
```

`true` allows the GTA weapon wheel.

```lua
exports.kaze_inventory:weaponWheel(true)
```

### WeaponParts

```lua
exports.kaze_inventory:WeaponParts(weaponName)
```

Every attachment the weapon takes, as `{ hash, type, bones }`.

```lua
for _, part in ipairs(exports.kaze_inventory:WeaponParts('WEAPON_CARBINERIFLE')) do print(part.type) end
```

## Events and state

| Name                            | Side                     | Data                                      |
| ------------------------------- | ------------------------ | ----------------------------------------- |
| `kaze_inventory:playerLoaded`   | server event             | `source, inventoryId`                     |
| `kaze_inventory:itemCount`      | client event             | `itemName, count` when a count changes    |
| `kaze_inventory:currentWeapon`  | client event             | `{ name, slot, metadata, hash }` or `nil` |
| `kaze_inventory:disarm`         | client event you trigger | Holsters the current weapon               |
| `LocalPlayer.state.invOpen`     | client state             | `true` while the inventory is open        |
| `LocalPlayer.state.invBusy`     | client state             | Set to `true` to block opening            |
| `Player(src).state.kzinvLoaded` | state bag                | `true` when the inventory is loaded       |

```lua
AddEventHandler('kaze_inventory:itemCount', function(name, count)
    if name == 'radio' and count == 0 then print('Radio gone') end
end)

LocalPlayer.state:set('invBusy', true, false)
TriggerEvent('kaze_inventory:disarm')
```
