Inventory #

Read more about the Inventory system in Hiro here.

List items #

List all inventory items defined in the codex, optionally filtered by category.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
void onInventoryList(const Hiro::InventoryList& inventoryList)
{
    for (auto it = inventoryList.items.begin(); it != inventoryList.items.end(); it++)
    {
        std::cout << "Found codex item: " << it->second.name << '\n';
    }
}

void onError(const Nakama::NError& error)
{
    std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}

Hiro::InventoryListRequest request;
request.itemCategory = "weapons";

hiroClient->inventoryList(session, request, onInventoryList, onError);

List user inventory items #

List all inventory items owned by the player, optionally filtered by category.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
void onInventoryListInventory(const Hiro::InventoryList& inventoryList)
{
    for (auto it = inventoryList.items.begin(); it != inventoryList.items.end(); it++)
    {
        std::cout << "Found inventory item: " << it->second.name << '\n';
    }
}

void onError(const Nakama::NError& error)
{
    std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}

Hiro::InventoryListRequest request;
request.itemCategory = "weapons";

hiroClient->inventoryListInventory(session, request, onInventoryListInventory, onError);

Consume inventory items #

Consume one or more inventory items owned by the player.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
void onInventoryConsume(const Hiro::InventoryConsumeRewards& inventoryConsumeRewards)
{
    std::cout << "Successfully consumed inventory items!\n";
}

void onError(const Nakama::NError& error)
{
    std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}

Hiro::InventoryConsumeRequest request;
request.items.insert(std::make_pair<std::string, std::string>("health_potion", "1"));

hiroClient->inventoryConsume(session, request, onInventoryConsume, onError);

Grant inventory items #

Grant one or more inventory items to the player.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
void onInventoryGrant(const Hiro::InventoryUpdateAck& inventoryUpdateAck)
{
    for (auto it = inventoryUpdateAck.inventory.items.begin(); it != inventoryUpdateAck.inventory.items.end(); it++)
    {
        std::cout << "Found inventory item: " << it->second.name << '\n';
    }
}

void onError(const Nakama::NError& error)
{
    std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}

Hiro::InventoryGrantRequest request;
request.items.insert(std::make_pair<std::string, std::string>("bronze_sword", "1"));

hiroClient->inventoryGrant(session, request, onInventoryGrant, onError);

Update inventory items #

Update the properties on one or more inventory items owned by the player.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
void onInventoryUpdate(const Hiro::InventoryUpdateAck& inventoryUpdateAck)
{
    for (auto it = inventoryUpdateAck.inventory.items.begin(); it != inventoryUpdateAck.inventory.items.end(); it++)
    {
        std::cout << "Found inventory item: " << it->second.name << '\n';
    }
}

void onError(const Nakama::NError& error)
{
    std::cout << Nakama::toString(error.code) << ": " << error.message << '\n';
}

Hiro::InventoryUpdateItemsRequest request;

Hiro::InventoryUpdateItemProperties itemProperties;
itemProperties.stringProperties.insert(std::make_pair<std::string, std::string>("example_property", "example_value"));
itemProperties.numericProperties.insert(std::make_pair<std::string, double>("numeric_property", 10));

request.itemUpdates.insert(std::make_pair("bronze_sword", itemProperties));

hiroClient->inventoryUpdate(session, request, onInventoryUpdate, onError);