/** * Ashita SDK - Copyright (c) 2023 Ashita Development Team * Contact: https://www.ashitaxi.com/ * Contact: https://discord.gg/Ashita * * This file is part of Ashita. * * Ashita is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Ashita is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Ashita. If not, see . */ #ifndef ASHITA_SDK_FFXI_INVENTORY_H_INCLUDED #define ASHITA_SDK_FFXI_INVENTORY_H_INCLUDED #if defined(_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif // clang-format off #include #include "enums.h" namespace Ashita::FFXI { struct item_t { uint16_t Id; // The item id. uint16_t Index; // The item index. uint32_t Count; // The item count. uint32_t Flags; // The item flags. uint32_t Price; // The item price, if being sold in bazaar. uint8_t Extra[28]; // The item extra data. (Augments, charges, timers, etc.) }; struct items_t { item_t Items[81]; // The items within a storage container. }; struct treasureitem_t { uint32_t Use; // The treasure item use flags. uint32_t ItemId; // The treasure item id. uint32_t Count; // The treasure item count. uint32_t Flags; // The treasure item flags. uint32_t Price; // The treasure item price. uint8_t Extra[28]; // The treasure item extra data. uint32_t Status; // The treasure item status. uint16_t Lot; // The local players lot on the treasure item. uint16_t WinningLot; // The treasure item current winning lot. uint32_t WinningEntityServerId; // The treasure item current winning lot entity server id. uint32_t WinningEntityTargetIndex; // The treasure item current winning lot entity target index. int8_t WinningEntityName[16]; // The treasure item current winning lot entity name. uint32_t TimeToLive; // The treasure item's time left in the pool. uint32_t DropTime; // The treasure item's time it entered the pool. }; struct equipmententry_t { uint32_t Slot; // The equipped item slot id. uint32_t Index; // The equipped item container and container index. }; struct itemcheck_t { uint32_t Slot; // The items equipment slot id. [Defaults to 0x10 when unused.] uint16_t ItemId; // The items id. uint16_t Unknown0000; // Unknown (Padding?) uint8_t Extra[28]; // The item extra data. (Augments, charges, timers, etc.) }; struct inventory_t { items_t Containers[(uint32_t)Enums::Container::Max]; // Containers holding the players various items. uint32_t iLookItem; // uintptr_t pItem; // uint8_t Unknown0000[0x0214]; // Unknown [GC_ITEM_TRADE structure.] treasureitem_t TreasurePool[0x000A]; // The treasure pool container items. uint32_t TreasurePoolStatus; // Flag that is set stating the status of the treasure pool. (0 = Loading, 1 = Loaded, 2 = Emptied) uint8_t TreasurePoolItemCount; // The number of items currently in the treasure pool. uint8_t ContainerMaxCapacity[(uint32_t)Enums::Container::Max + 1]; // Inventory container maximum counts. uint16_t ContainerMaxCapacity2[(uint32_t)Enums::Container::Max]; // Inventory container maximum counts. (Duplicate.) uint32_t ContainerUpdateCounter; // Counter that is incremented when item changes happen. (Used to update/refresh various item related data.) uint32_t ContainerUpdateFlags; // Flags that state which containers have finished loading. uint8_t ContainerUpdateBuffer[0x0180]; // Buffer that holds container item updates. (Each entry is 24 bytes long, 16 entries total. Mainly used for mannequins.) uint32_t ContainerUpdateIndex; // The current entry index in the ContainerUpdateBuffer being used. equipmententry_t Equipment[(uint32_t)Enums::EquipmentSlot::Max]; // The players current equipment information. uint32_t DisplayItemSlot; // The display slot id. uint32_t DisplayItemPointer; // The display slot pointer. [Pointer to the display item information. Uses equipmententry_t type.] itemcheck_t CheckEquipment[(uint32_t)Enums::EquipmentSlot::Max]; // The equipment being displayed from checking another player or similar style menus. uint32_t CheckTargetIndex; // The target index of the entity being checked. uint32_t CheckServerId; // The server id of the entity being checked. uint32_t CheckFlags; // Flag that tells the client which buffer of equipment data to display. [Defaults to Equipment, otherwise uses EquipmentCheck.] uint8_t CheckMainJob; // The main job id of the entity being checked. uint8_t CheckSubJob; // The main sub id of the entity being checked. uint8_t CheckMainJobLevel; // The main job level of the entity being checked. uint8_t CheckSubJobLevel; // The sub job level of the entity being checked. uint8_t CheckMainJob2; // The main job id of the entity being checked. (Duplicate.) uint8_t CheckMasteryLevel; // The mastery level of the entity being checked. uint8_t CheckMasteryFlags; // The mastery flags of the entity being checked. uint8_t Unknown0001; // Unknown (Padding.) uint8_t CheckLinkshellName[0x10]; // The linkshell name of the entity being checked.. (Encoded.) uint16_t CheckLinkshellColor; // The linkshell color of the entity being checked.. (Raw bitpacked color.) uint8_t CheckLinkshellIconSetId; // The linkshell icon set id of the entity being checked. uint8_t CheckLinkshellIconSetIndex; // The linkshell icon set index of the entity being checked. uint32_t CheckBallistaChevronCount; // The current chevron count of the entity being checked. (Only visible if in Ballista.) uint16_t CheckBallistaChevronFlags; // The current chevron flags of the entity being checked. [0x01 shows star next to Chevron count.] (Only visible if in Ballista.) uint16_t CheckBallistaFlags; // The ballista flags of the entity being checked. uint32_t UserMessageCount; // The incremented value returned from gcMainGetActivityCount. char SearchComment[0x0084]; // Loaded from ffxiusr.msg or updated when setting your search comment. uint32_t CraftStatus; // The players crafting status. (Handles if the player is attempting to craft and when they are able to craft again.) uintptr_t CraftCallback; // Function set when attempting to craft that is invoked for the result. uint32_t CraftTimestampResponse; // The timestamp when the previous craft attempt received a response. (If any.) uint32_t CraftTimestampAttempt; // The timestamp when an attempt was made to craft something. }; } // namespace Ashita::FFXI #endif // ASHITA_SDK_FFXI_INVENTORY_H_INCLUDED