[Inventory] Add GetInventorySlots() Method (#4566)

* [Inventory] Add GetInventorySlots() Method

* Update client.cpp

* Push
This commit is contained in:
Alex King 2025-01-06 00:48:39 -05:00 committed by GitHub
parent a3a498634f
commit 1ed282f6ff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
27 changed files with 204 additions and 197 deletions

View File

@ -612,9 +612,9 @@ bool EQ::InventoryProfile::HasAugmentEquippedByID(uint32 item_id)
return has_equipped; return has_equipped;
} }
int EQ::InventoryProfile::CountAugmentEquippedByID(uint32 item_id) uint32 EQ::InventoryProfile::CountAugmentEquippedByID(uint32 item_id)
{ {
int quantity = 0; uint32 quantity = 0;
ItemInstance* item = nullptr; ItemInstance* item = nullptr;
for (int slot_id = EQ::invslot::EQUIPMENT_BEGIN; slot_id <= EQ::invslot::EQUIPMENT_END; ++slot_id) { for (int slot_id = EQ::invslot::EQUIPMENT_BEGIN; slot_id <= EQ::invslot::EQUIPMENT_END; ++slot_id) {
@ -643,9 +643,9 @@ bool EQ::InventoryProfile::HasItemEquippedByID(uint32 item_id)
return has_equipped; return has_equipped;
} }
int EQ::InventoryProfile::CountItemEquippedByID(uint32 item_id) uint32 EQ::InventoryProfile::CountItemEquippedByID(uint32 item_id)
{ {
int quantity = 0; uint32 quantity = 0;
ItemInstance* item = nullptr; ItemInstance* item = nullptr;
for (int slot_id = EQ::invslot::EQUIPMENT_BEGIN; slot_id <= EQ::invslot::EQUIPMENT_END; ++slot_id) { for (int slot_id = EQ::invslot::EQUIPMENT_BEGIN; slot_id <= EQ::invslot::EQUIPMENT_END; ++slot_id) {

View File

@ -147,13 +147,13 @@ namespace EQ
bool HasItemEquippedByID(uint32 item_id); bool HasItemEquippedByID(uint32 item_id);
// Check how many of a specific item the player has equipped by Item ID // Check how many of a specific item the player has equipped by Item ID
int CountItemEquippedByID(uint32 item_id); uint32 CountItemEquippedByID(uint32 item_id);
// Check if player has a specific augment equipped by Item ID // Check if player has a specific augment equipped by Item ID
bool HasAugmentEquippedByID(uint32 item_id); bool HasAugmentEquippedByID(uint32 item_id);
// Check how many of a specific augment the player has equipped by Item ID // Check how many of a specific augment the player has equipped by Item ID
int CountAugmentEquippedByID(uint32 item_id); uint32 CountAugmentEquippedByID(uint32 item_id);
// Get a list of augments from a specific slot ID // Get a list of augments from a specific slot ID
std::vector<uint32> GetAugmentIDsBySlotID(int16 slot_id); std::vector<uint32> GetAugmentIDsBySlotID(int16 slot_id);

View File

@ -10461,27 +10461,15 @@ void Client::SendToInstance(std::string instance_type, std::string zone_short_na
MovePC(zone_id, instance_id, x, y, z, heading); MovePC(zone_id, instance_id, x, y, z, heading);
} }
int Client::CountItem(uint32 item_id) uint32 Client::CountItem(uint32 item_id)
{ {
int quantity = 0; uint32 quantity = 0;
EQ::ItemInstance *item = nullptr; EQ::ItemInstance *item = nullptr;
static const int16 slots[][2] = {
{ EQ::invslot::POSSESSIONS_BEGIN, EQ::invslot::POSSESSIONS_END }, for (const int16& slot_id : GetInventorySlots()) {
{ EQ::invbag::GENERAL_BAGS_BEGIN, EQ::invbag::GENERAL_BAGS_END }, item = GetInv().GetItem(slot_id);
{ EQ::invbag::CURSOR_BAG_BEGIN, EQ::invbag::CURSOR_BAG_END}, if (item && item->GetID() == item_id) {
{ EQ::invslot::BANK_BEGIN, EQ::invslot::BANK_END }, quantity += (item->IsStackable() ? item->GetCharges() : 1);
{ EQ::invslot::GUILD_TRIBUTE_BEGIN, EQ::invslot::GUILD_TRIBUTE_END },
{ EQ::invbag::BANK_BAGS_BEGIN, EQ::invbag::BANK_BAGS_END },
{ EQ::invslot::SHARED_BANK_BEGIN, EQ::invslot::SHARED_BANK_END },
{ EQ::invbag::SHARED_BANK_BAGS_BEGIN, EQ::invbag::SHARED_BANK_BAGS_END },
};
const size_t slot_index_count = sizeof(slots) / sizeof(slots[0]);
for (int slot_index = 0; slot_index < slot_index_count; ++slot_index) {
for (int slot_id = slots[slot_index][0]; slot_id <= slots[slot_index][1]; ++slot_id) {
item = GetInv().GetItem(slot_id);
if (item && item->GetID() == item_id) {
quantity += (item->IsStackable() ? item->GetCharges() : 1);
}
} }
} }
@ -10498,30 +10486,26 @@ void Client::ResetItemCooldown(uint32 item_id)
int recast_type = item_d->RecastType; int recast_type = item_d->RecastType;
bool found_item = false; bool found_item = false;
static const int16 slots[][2] = { for (const int16& slot_id : GetInventorySlots()) {
{ EQ::invslot::POSSESSIONS_BEGIN, EQ::invslot::POSSESSIONS_END }, item = GetInv().GetItem(slot_id);
{ EQ::invbag::GENERAL_BAGS_BEGIN, EQ::invbag::GENERAL_BAGS_END }, if (item) {
{ EQ::invbag::CURSOR_BAG_BEGIN, EQ::invbag::CURSOR_BAG_END}, item_d = item->GetItem();
{ EQ::invslot::BANK_BEGIN, EQ::invslot::BANK_END }, if (
{ EQ::invbag::BANK_BAGS_BEGIN, EQ::invbag::BANK_BAGS_END }, item_d &&
{ EQ::invslot::SHARED_BANK_BEGIN, EQ::invslot::SHARED_BANK_END }, item->GetID() == item_id ||
{ EQ::invbag::SHARED_BANK_BAGS_BEGIN, EQ::invbag::SHARED_BANK_BAGS_END }, (
}; item_d->RecastType != RECAST_TYPE_UNLINKED_ITEM &&
const size_t slot_index_count = sizeof(slots) / sizeof(slots[0]); item_d->RecastType == recast_type
for (int slot_index = 0; slot_index < slot_index_count; ++slot_index) { )
for (int slot_id = slots[slot_index][0]; slot_id <= slots[slot_index][1]; ++slot_id) { ) {
item = GetInv().GetItem(slot_id); item->SetRecastTimestamp(0);
if (item) { DeleteItemRecastTimer(item_d->ID);
item_d = item->GetItem(); SendItemPacket(slot_id, item, ItemPacketCharmUpdate);
if (item_d && item->GetID() == item_id || (item_d->RecastType != RECAST_TYPE_UNLINKED_ITEM && item_d->RecastType == recast_type)) { found_item = true;
item->SetRecastTimestamp(0);
DeleteItemRecastTimer(item_d->ID);
SendItemPacket(slot_id, item, ItemPacketCharmUpdate);
found_item = true;
}
} }
} }
} }
if (!found_item) { if (!found_item) {
DeleteItemRecastTimer(item_id); //We didn't find the item but we still want to remove the timer DeleteItemRecastTimer(item_id); //We didn't find the item but we still want to remove the timer
} }
@ -10556,25 +10540,20 @@ void Client::SetItemCooldown(uint32 item_id, bool use_saved_timer, uint32 in_sec
final_time = total_time - current_time; final_time = total_time - current_time;
} }
static const int16 slots[][2] = { for (const int16& slot_id : GetInventorySlots()) {
{ EQ::invslot::POSSESSIONS_BEGIN, EQ::invslot::POSSESSIONS_END }, item = GetInv().GetItem(slot_id);
{ EQ::invbag::GENERAL_BAGS_BEGIN, EQ::invbag::GENERAL_BAGS_END }, if (item) {
{ EQ::invbag::CURSOR_BAG_BEGIN, EQ::invbag::CURSOR_BAG_END}, item_d = item->GetItem();
{ EQ::invslot::BANK_BEGIN, EQ::invslot::BANK_END }, if (
{ EQ::invbag::BANK_BAGS_BEGIN, EQ::invbag::BANK_BAGS_END }, item_d &&
{ EQ::invslot::SHARED_BANK_BEGIN, EQ::invslot::SHARED_BANK_END }, item->GetID() == item_id ||
{ EQ::invbag::SHARED_BANK_BAGS_BEGIN, EQ::invbag::SHARED_BANK_BAGS_END }, (
}; item_d->RecastType != RECAST_TYPE_UNLINKED_ITEM &&
const size_t slot_index_count = sizeof(slots) / sizeof(slots[0]); item_d->RecastType == recast_type
for (int slot_index = 0; slot_index < slot_index_count; ++slot_index) { )
for (int slot_id = slots[slot_index][0]; slot_id <= slots[slot_index][1]; ++slot_id) { ) {
item = GetInv().GetItem(slot_id); item->SetRecastTimestamp(total_time);
if (item) { SendItemPacket(slot_id, item, ItemPacketCharmUpdate);
item_d = item->GetItem();
if (item_d && item->GetID() == item_id || (item_d->RecastType != RECAST_TYPE_UNLINKED_ITEM && item_d->RecastType == recast_type)) {
item->SetRecastTimestamp(total_time);
SendItemPacket(slot_id, item, ItemPacketCharmUpdate);
}
} }
} }
} }
@ -10617,38 +10596,26 @@ uint32 Client::GetItemCooldown(uint32 item_id)
void Client::RemoveItem(uint32 item_id, uint32 quantity) void Client::RemoveItem(uint32 item_id, uint32 quantity)
{ {
uint32 removed_count = 0;
EQ::ItemInstance *item = nullptr; EQ::ItemInstance *item = nullptr;
static const int16 slots[][2] = {
{ EQ::invslot::POSSESSIONS_BEGIN, EQ::invslot::POSSESSIONS_END },
{ EQ::invbag::GENERAL_BAGS_BEGIN, EQ::invbag::GENERAL_BAGS_END },
{ EQ::invbag::CURSOR_BAG_BEGIN, EQ::invbag::CURSOR_BAG_END},
{ EQ::invslot::BANK_BEGIN, EQ::invslot::BANK_END },
{ EQ::invslot::GUILD_TRIBUTE_BEGIN, EQ::invslot::GUILD_TRIBUTE_END },
{ EQ::invbag::BANK_BAGS_BEGIN, EQ::invbag::BANK_BAGS_END },
{ EQ::invslot::SHARED_BANK_BEGIN, EQ::invslot::SHARED_BANK_END },
{ EQ::invbag::SHARED_BANK_BAGS_BEGIN, EQ::invbag::SHARED_BANK_BAGS_END },
};
int16 removed_count = 0;
const size_t slot_index_count = sizeof(slots) / sizeof(slots[0]);
for (int slot_index = 0; slot_index < slot_index_count; ++slot_index) {
for (int slot_id = slots[slot_index][0]; slot_id <= slots[slot_index][1]; ++slot_id) {
if (removed_count == quantity) {
break;
}
item = GetInv().GetItem(slot_id); for (const int16& slot_id : GetInventorySlots()) {
if (item && item->GetID() == item_id) { if (removed_count == quantity) {
int16 charges = item->IsStackable() ? item->GetCharges() : 0; break;
int16 stack_size = std::max(charges, static_cast<int16>(1)); }
if ((removed_count + stack_size) <= quantity) {
removed_count += stack_size; item = GetInv().GetItem(slot_id);
DeleteItemInInventory(slot_id, charges, true); if (item && item->GetID() == item_id) {
} else { uint32 charges = item->IsStackable() ? item->GetCharges() : 0;
int16 amount_left = (quantity - removed_count); uint32 stack_size = std::max(charges, static_cast<uint32>(1));
if (amount_left > 0 && stack_size >= amount_left) { if ((removed_count + stack_size) <= quantity) {
removed_count += amount_left; removed_count += stack_size;
DeleteItemInInventory(slot_id, amount_left, true); DeleteItemInInventory(slot_id, charges, true);
} } else {
uint32 amount_left = (quantity - removed_count);
if (amount_left > 0 && stack_size >= amount_left) {
removed_count += amount_left;
DeleteItemInInventory(slot_id, amount_left, true);
} }
} }
} }
@ -12820,37 +12787,28 @@ uint16 Client::GetSkill(EQ::skills::SkillType skill_id) const
void Client::RemoveItemBySerialNumber(uint32 serial_number, uint32 quantity) void Client::RemoveItemBySerialNumber(uint32 serial_number, uint32 quantity)
{ {
EQ::ItemInstance *item = nullptr; EQ::ItemInstance *item = nullptr;
static const int16 slots[][2] = {
{ EQ::invslot::POSSESSIONS_BEGIN, EQ::invslot::POSSESSIONS_END },
{ EQ::invbag::GENERAL_BAGS_BEGIN, EQ::invbag::GENERAL_BAGS_END },
{ EQ::invbag::CURSOR_BAG_BEGIN, EQ::invbag::CURSOR_BAG_END},
{ EQ::invslot::BANK_BEGIN, EQ::invslot::BANK_END },
{ EQ::invslot::GUILD_TRIBUTE_BEGIN, EQ::invslot::GUILD_TRIBUTE_END },
{ EQ::invbag::BANK_BAGS_BEGIN, EQ::invbag::BANK_BAGS_END },
{ EQ::invslot::SHARED_BANK_BEGIN, EQ::invslot::SHARED_BANK_END },
{ EQ::invbag::SHARED_BANK_BAGS_BEGIN, EQ::invbag::SHARED_BANK_BAGS_END },
};
int16 removed_count = 0;
const size_t slot_index_count = sizeof(slots) / sizeof(slots[0]);
for (int slot_index = 0; slot_index < slot_index_count; ++slot_index) {
for (int slot_id = slots[slot_index][0]; slot_id <= slots[slot_index][1]; ++slot_id) {
if (removed_count == quantity) {
break;
}
item = GetInv().GetItem(slot_id); uint32 removed_count = 0;
if (item && item->GetSerialNumber() == serial_number) {
int16 charges = item->IsStackable() ? item->GetCharges() : 0; const auto& slot_ids = GetInventorySlots();
int16 stack_size = std::max(charges, static_cast<int16>(1));
if ((removed_count + stack_size) <= quantity) { for (const int16& slot_id : slot_ids) {
removed_count += stack_size; if (removed_count == quantity) {
DeleteItemInInventory(slot_id, charges, true); break;
} else { }
int16 amount_left = (quantity - removed_count);
if (amount_left > 0 && stack_size >= amount_left) { item = GetInv().GetItem(slot_id);
removed_count += amount_left; if (item && item->GetSerialNumber() == serial_number) {
DeleteItemInInventory(slot_id, amount_left, true); uint32 charges = item->IsStackable() ? item->GetCharges() : 0;
} uint32 stack_size = std::max(charges, static_cast<uint32>(1));
if ((removed_count + stack_size) <= quantity) {
removed_count += stack_size;
DeleteItemInInventory(slot_id, charges, true);
} else {
uint32 amount_left = (quantity - removed_count);
if (amount_left > 0 && stack_size >= amount_left) {
removed_count += amount_left;
DeleteItemInInventory(slot_id, amount_left, true);
} }
} }
} }
@ -13075,3 +13033,28 @@ void Client::ClientToNpcAggroProcess()
LogAggro("Checking Reverse Aggro (client->npc) scanned_npcs ([{}])", npc_scan_count); LogAggro("Checking Reverse Aggro (client->npc) scanned_npcs ([{}])", npc_scan_count);
} }
} }
const std::vector<int16>& Client::GetInventorySlots()
{
static const std::vector<std::pair<int16, int16>> slots = {
{ EQ::invslot::POSSESSIONS_BEGIN, EQ::invslot::POSSESSIONS_END },
{ EQ::invbag::GENERAL_BAGS_BEGIN, EQ::invbag::GENERAL_BAGS_END },
{ EQ::invbag::CURSOR_BAG_BEGIN, EQ::invbag::CURSOR_BAG_END },
{ EQ::invslot::BANK_BEGIN, EQ::invslot::BANK_END },
{ EQ::invbag::BANK_BAGS_BEGIN, EQ::invbag::BANK_BAGS_END },
{ EQ::invslot::SHARED_BANK_BEGIN, EQ::invslot::SHARED_BANK_END },
{ EQ::invbag::SHARED_BANK_BAGS_BEGIN, EQ::invbag::SHARED_BANK_BAGS_END },
};
static std::vector<int16> slot_ids;
if (slot_ids.empty()) {
for (const auto& [begin, end] : slots) {
for (int16 slot_id = begin; slot_id <= end; ++slot_id) {
slot_ids.emplace_back(slot_id);
}
}
}
return slot_ids;
}

View File

@ -467,6 +467,7 @@ public:
inline ExtendedProfile_Struct& GetEPP() { return m_epp; } inline ExtendedProfile_Struct& GetEPP() { return m_epp; }
inline EQ::InventoryProfile& GetInv() { return m_inv; } inline EQ::InventoryProfile& GetInv() { return m_inv; }
inline const EQ::InventoryProfile& GetInv() const { return m_inv; } inline const EQ::InventoryProfile& GetInv() const { return m_inv; }
const std::vector<int16>& GetInventorySlots();
inline PetInfo* GetPetInfo(int pet_info_type) { return pet_info_type == PetInfoType::Suspended ? &m_suspendedminion : &m_petinfo; } inline PetInfo* GetPetInfo(int pet_info_type) { return pet_info_type == PetInfoType::Suspended ? &m_suspendedminion : &m_petinfo; }
inline InspectMessage_Struct& GetInspectMessage() { return m_inspect_message; } inline InspectMessage_Struct& GetInspectMessage() { return m_inspect_message; }
inline const InspectMessage_Struct& GetInspectMessage() const { return m_inspect_message; } inline const InspectMessage_Struct& GetInspectMessage() const { return m_inspect_message; }
@ -1093,7 +1094,7 @@ public:
bool PushItemOnCursor(const EQ::ItemInstance& inst, bool client_update = false); bool PushItemOnCursor(const EQ::ItemInstance& inst, bool client_update = false);
void SendCursorBuffer(); void SendCursorBuffer();
void DeleteItemInInventory(int16 slot_id, int16 quantity = 0, bool client_update = false, bool update_db = true); void DeleteItemInInventory(int16 slot_id, int16 quantity = 0, bool client_update = false, bool update_db = true);
int CountItem(uint32 item_id); uint32 CountItem(uint32 item_id);
void ResetItemCooldown(uint32 item_id); void ResetItemCooldown(uint32 item_id);
void SetItemCooldown(uint32 item_id, bool use_saved_timer = false, uint32 in_seconds = 1); void SetItemCooldown(uint32 item_id, bool use_saved_timer = false, uint32 in_seconds = 1);
uint32 GetItemCooldown(uint32 item_id); uint32 GetItemCooldown(uint32 item_id);

View File

@ -1871,9 +1871,10 @@ bool Corpse::HasItem(uint32 item_id)
return false; return false;
} }
uint16 Corpse::CountItem(uint32 item_id) uint32 Corpse::CountItem(uint32 item_id)
{ {
uint16 item_count = 0; uint32 item_count = 0;
if (!database.GetItem(item_id)) { if (!database.GetItem(item_id)) {
return item_count; return item_count;
} }
@ -1893,6 +1894,7 @@ uint16 Corpse::CountItem(uint32 item_id)
item_count += i->charges > 0 ? i->charges : 1; item_count += i->charges > 0 ? i->charges : 1;
} }
} }
return item_count; return item_count;
} }

View File

@ -196,7 +196,7 @@ public:
/* Corpse: Loot */ /* Corpse: Loot */
void QueryLoot(Client *to); void QueryLoot(Client *to);
bool HasItem(uint32 item_id); bool HasItem(uint32 item_id);
uint16 CountItem(uint32 item_id); uint32 CountItem(uint32 item_id);
uint32 GetItemIDBySlot(uint16 loot_slot); uint32 GetItemIDBySlot(uint16 loot_slot);
uint16 GetFirstLootSlotByItemID(uint32 item_id); uint16 GetFirstLootSlotByItemID(uint32 item_id);
std::vector<int> GetLootList(); std::vector<int> GetLootList();

View File

@ -1446,7 +1446,7 @@ int Perl__collectitems(uint32_t item_id, bool remove_item)
return quest_manager.collectitems(item_id, remove_item); return quest_manager.collectitems(item_id, remove_item);
} }
int Perl__countitem(uint32_t item_id) uint32 Perl__countitem(uint32_t item_id)
{ {
return quest_manager.countitem(item_id); return quest_manager.countitem(item_id);
} }

View File

@ -2,31 +2,21 @@
void command_emptyinventory(Client *c, const Seperator *sep) void command_emptyinventory(Client *c, const Seperator *sep)
{ {
auto target = c; Client* t = c;
if (c->GetGM() && c->GetTarget() && c->GetTarget()->IsClient()) { if (c->GetGM() && c->GetTarget() && c->GetTarget()->IsClient()) {
target = c->GetTarget()->CastToClient(); t = c->GetTarget()->CastToClient();
} }
EQ::ItemInstance *item = nullptr; EQ::ItemInstance *item = nullptr;
static const int16 slots[][2] = { uint32 removed_count = 0;
{ EQ::invslot::POSSESSIONS_BEGIN, EQ::invslot::POSSESSIONS_END },
{ EQ::invbag::GENERAL_BAGS_BEGIN, EQ::invbag::GENERAL_BAGS_END }, for (const int16& slot_id : t->GetInventorySlots()) {
{ EQ::invbag::CURSOR_BAG_BEGIN, EQ::invbag::CURSOR_BAG_END}, item = t->GetInv().GetItem(slot_id);
{ EQ::invslot::BANK_BEGIN, EQ::invslot::BANK_END },
{ EQ::invbag::BANK_BAGS_BEGIN, EQ::invbag::BANK_BAGS_END }, if (item) {
{ EQ::invslot::SHARED_BANK_BEGIN, EQ::invslot::SHARED_BANK_END }, uint32 stack_size = std::max(static_cast<uint32>(item->GetCharges()), static_cast<uint32>(1));
{ EQ::invbag::SHARED_BANK_BAGS_BEGIN, EQ::invbag::SHARED_BANK_BAGS_END }, removed_count += stack_size;
}; t->DeleteItemInInventory(slot_id, 0, true);
int removed_count = 0;
const size_t size = sizeof(slots) / sizeof(slots[0]);
for (int slot_index = 0; slot_index < size; ++slot_index) {
for (int slot_id = slots[slot_index][0]; slot_id <= slots[slot_index][1]; ++slot_id) {
item = target->GetInv().GetItem(slot_id);
if (item) {
int stack_size = std::max(static_cast<int>(item->GetCharges()), 1);
removed_count += stack_size;
target->DeleteItemInInventory(slot_id, 0, true);
}
} }
} }
@ -35,8 +25,8 @@ void command_emptyinventory(Client *c, const Seperator *sep)
Chat::White, Chat::White,
fmt::format( fmt::format(
"{} {} no items to delete.", "{} {} no items to delete.",
c->GetTargetDescription(target, TargetDescriptionType::UCYou), c->GetTargetDescription(t, TargetDescriptionType::UCYou),
c == target ? "have" : "has" c == t ? "have" : "has"
).c_str() ).c_str()
); );
return; return;
@ -46,7 +36,7 @@ void command_emptyinventory(Client *c, const Seperator *sep)
Chat::White, Chat::White,
fmt::format( fmt::format(
"Inventory cleared for {}, {} item{} deleted.", "Inventory cleared for {}, {} item{} deleted.",
c->GetTargetDescription(target), c->GetTargetDescription(t),
removed_count, removed_count,
removed_count != 1 ? "s" : "" removed_count != 1 ? "s" : ""
).c_str() ).c_str()

View File

@ -859,9 +859,9 @@ bool NPC::HasItem(uint32 item_id)
return false; return false;
} }
uint16 NPC::CountItem(uint32 item_id) uint32 NPC::CountItem(uint32 item_id)
{ {
uint16 item_count = 0; uint32 item_count = 0;
if (!database.GetItem(item_id)) { if (!database.GetItem(item_id)) {
return item_count; return item_count;
} }

View File

@ -274,7 +274,7 @@ void Lua_Bot::SetSpellDurationRaid(int spell_id, int duration, int level, bool a
self->SetSpellDuration(spell_id, duration, level, ApplySpellType::Raid, allow_pets, is_raid_group_only); self->SetSpellDuration(spell_id, duration, level, ApplySpellType::Raid, allow_pets, is_raid_group_only);
} }
int Lua_Bot::CountAugmentEquippedByID(uint32 item_id) { uint32 Lua_Bot::CountAugmentEquippedByID(uint32 item_id) {
Lua_Safe_Call_Int(); Lua_Safe_Call_Int();
return self->GetInv().CountAugmentEquippedByID(item_id); return self->GetInv().CountAugmentEquippedByID(item_id);
} }
@ -284,7 +284,7 @@ bool Lua_Bot::HasAugmentEquippedByID(uint32 item_id) {
return self->GetInv().HasAugmentEquippedByID(item_id); return self->GetInv().HasAugmentEquippedByID(item_id);
} }
int Lua_Bot::CountItemEquippedByID(uint32 item_id) { uint32 Lua_Bot::CountItemEquippedByID(uint32 item_id) {
Lua_Safe_Call_Int(); Lua_Safe_Call_Int();
return self->GetInv().CountItemEquippedByID(item_id); return self->GetInv().CountItemEquippedByID(item_id);
} }
@ -701,8 +701,9 @@ luabind::scope lua_register_bot() {
.def("ClearItemReuseTimer", (void(Lua_Bot::*)(uint32))&Lua_Bot::ClearItemReuseTimer) .def("ClearItemReuseTimer", (void(Lua_Bot::*)(uint32))&Lua_Bot::ClearItemReuseTimer)
.def("ClearSpellRecastTimer", (void(Lua_Bot::*)())&Lua_Bot::ClearSpellRecastTimer) .def("ClearSpellRecastTimer", (void(Lua_Bot::*)())&Lua_Bot::ClearSpellRecastTimer)
.def("ClearSpellRecastTimer", (void(Lua_Bot::*)(uint16))&Lua_Bot::ClearSpellRecastTimer) .def("ClearSpellRecastTimer", (void(Lua_Bot::*)(uint16))&Lua_Bot::ClearSpellRecastTimer)
.def("CountAugmentEquippedByID", (uint32(Lua_Bot::*)(uint32))&Lua_Bot::CountAugmentEquippedByID)
.def("CountBotItem", (uint32(Lua_Bot::*)(uint32))&Lua_Bot::CountBotItem) .def("CountBotItem", (uint32(Lua_Bot::*)(uint32))&Lua_Bot::CountBotItem)
.def("CountItemEquippedByID", (int(Lua_Bot::*)(uint32))&Lua_Bot::CountItemEquippedByID) .def("CountItemEquippedByID", (uint32(Lua_Bot::*)(uint32))&Lua_Bot::CountItemEquippedByID)
.def("DeleteBot", (void(Lua_Bot::*)(void))&Lua_Bot::DeleteBot) .def("DeleteBot", (void(Lua_Bot::*)(void))&Lua_Bot::DeleteBot)
.def("DeleteBucket", (void(Lua_Bot::*)(std::string))&Lua_Bot::DeleteBucket) .def("DeleteBucket", (void(Lua_Bot::*)(std::string))&Lua_Bot::DeleteBucket)
.def("Escape", (void(Lua_Bot::*)(void))&Lua_Bot::Escape) .def("Escape", (void(Lua_Bot::*)(void))&Lua_Bot::Escape)

View File

@ -127,8 +127,8 @@ public:
void SetSpellRecastTimer(uint16 spell_id); void SetSpellRecastTimer(uint16 spell_id);
void SetSpellRecastTimer(uint16 spell_id, uint32 reuse_timer); void SetSpellRecastTimer(uint16 spell_id, uint32 reuse_timer);
int CountAugmentEquippedByID(uint32 item_id); uint32 CountAugmentEquippedByID(uint32 item_id);
int CountItemEquippedByID(uint32 item_id); uint32 CountItemEquippedByID(uint32 item_id);
bool HasAugmentEquippedByID(uint32 item_id); bool HasAugmentEquippedByID(uint32 item_id);
bool HasItemEquippedByID(uint32 item_id); bool HasItemEquippedByID(uint32 item_id);
int GetHealAmount(); int GetHealAmount();

View File

@ -2287,7 +2287,7 @@ void Lua_Client::SendToInstance(std::string instance_type, std::string zone_shor
self->SendToInstance(instance_type, zone_short_name, instance_version, x, y, z, heading, instance_identifier, duration); self->SendToInstance(instance_type, zone_short_name, instance_version, x, y, z, heading, instance_identifier, duration);
} }
int Lua_Client::CountItem(uint32 item_id) { uint32 Lua_Client::CountItem(uint32 item_id) {
Lua_Safe_Call_Int(); Lua_Safe_Call_Int();
return self->CountItem(item_id); return self->CountItem(item_id);
} }
@ -2480,7 +2480,7 @@ void Lua_Client::AddItem(luabind::object item_table) {
); );
} }
int Lua_Client::CountAugmentEquippedByID(uint32 item_id) { uint32 Lua_Client::CountAugmentEquippedByID(uint32 item_id) {
Lua_Safe_Call_Int(); Lua_Safe_Call_Int();
return self->GetInv().CountAugmentEquippedByID(item_id); return self->GetInv().CountAugmentEquippedByID(item_id);
} }
@ -2490,7 +2490,7 @@ bool Lua_Client::HasAugmentEquippedByID(uint32 item_id) {
return self->GetInv().HasAugmentEquippedByID(item_id); return self->GetInv().HasAugmentEquippedByID(item_id);
} }
int Lua_Client::CountItemEquippedByID(uint32 item_id) { uint32 Lua_Client::CountItemEquippedByID(uint32 item_id) {
Lua_Safe_Call_Int(); Lua_Safe_Call_Int();
return self->GetInv().CountItemEquippedByID(item_id); return self->GetInv().CountItemEquippedByID(item_id);
} }
@ -3436,6 +3436,21 @@ void Lua_Client::AreaTaunt(float range, int bonus_hate)
entity_list.AETaunt(self, range, bonus_hate); entity_list.AETaunt(self, range, bonus_hate);
} }
luabind::object Lua_Client::GetInventorySlots(lua_State* L) {
auto lua_table = luabind::newtable(L);
if (d_) {
auto self = reinterpret_cast<NativeType*>(d_);
int index = 1;
for (const int16& slot_id : self->GetInventorySlots()) {
lua_table[index] = slot_id;
index++;
}
}
return lua_table;
}
luabind::scope lua_register_client() { luabind::scope lua_register_client() {
return luabind::class_<Lua_Client, Lua_Mob>("Client") return luabind::class_<Lua_Client, Lua_Mob>("Client")
.def(luabind::constructor<>()) .def(luabind::constructor<>())
@ -3514,9 +3529,9 @@ luabind::scope lua_register_client() {
.def("ClearXTargets", (void(Lua_Client::*)(void))&Lua_Client::ClearXTargets) .def("ClearXTargets", (void(Lua_Client::*)(void))&Lua_Client::ClearXTargets)
.def("ClearZoneFlag", (void(Lua_Client::*)(uint32))&Lua_Client::ClearZoneFlag) .def("ClearZoneFlag", (void(Lua_Client::*)(uint32))&Lua_Client::ClearZoneFlag)
.def("Connected", (bool(Lua_Client::*)(void))&Lua_Client::Connected) .def("Connected", (bool(Lua_Client::*)(void))&Lua_Client::Connected)
.def("CountAugmentEquippedByID", (int(Lua_Client::*)(uint32))&Lua_Client::CountAugmentEquippedByID) .def("CountAugmentEquippedByID", (uint32(Lua_Client::*)(uint32))&Lua_Client::CountAugmentEquippedByID)
.def("CountItem", (int(Lua_Client::*)(uint32))&Lua_Client::CountItem) .def("CountItem", (uint32(Lua_Client::*)(uint32))&Lua_Client::CountItem)
.def("CountItemEquippedByID", (int(Lua_Client::*)(uint32))&Lua_Client::CountItemEquippedByID) .def("CountItemEquippedByID", (uint32(Lua_Client::*)(uint32))&Lua_Client::CountItemEquippedByID)
.def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(luabind::object))&Lua_Client::CreateExpedition) .def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(luabind::object))&Lua_Client::CreateExpedition)
.def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(std::string, uint32, uint32, std::string, uint32, uint32))&Lua_Client::CreateExpedition) .def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(std::string, uint32, uint32, std::string, uint32, uint32))&Lua_Client::CreateExpedition)
.def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(std::string, uint32, uint32, std::string, uint32, uint32, bool))&Lua_Client::CreateExpedition) .def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(std::string, uint32, uint32, std::string, uint32, uint32, bool))&Lua_Client::CreateExpedition)
@ -3650,6 +3665,7 @@ luabind::scope lua_register_client() {
.def("GetInstrumentMod", (int(Lua_Client::*)(int))&Lua_Client::GetInstrumentMod) .def("GetInstrumentMod", (int(Lua_Client::*)(int))&Lua_Client::GetInstrumentMod)
.def("GetIntoxication", (int(Lua_Client::*)(void))&Lua_Client::GetIntoxication) .def("GetIntoxication", (int(Lua_Client::*)(void))&Lua_Client::GetIntoxication)
.def("GetInventory", (Lua_Inventory(Lua_Client::*)(void))&Lua_Client::GetInventory) .def("GetInventory", (Lua_Inventory(Lua_Client::*)(void))&Lua_Client::GetInventory)
.def("GetInventorySlots", (luabind::object(Lua_Client::*)(lua_State* L))&Lua_Client::GetInventorySlots)
.def("GetInvulnerableEnvironmentDamage", (bool(Lua_Client::*)(void))&Lua_Client::GetInvulnerableEnvironmentDamage) .def("GetInvulnerableEnvironmentDamage", (bool(Lua_Client::*)(void))&Lua_Client::GetInvulnerableEnvironmentDamage)
.def("GetItemIDAt", (int(Lua_Client::*)(int))&Lua_Client::GetItemIDAt) .def("GetItemIDAt", (int(Lua_Client::*)(int))&Lua_Client::GetItemIDAt)
.def("GetItemCooldown", (uint32(Lua_Client::*)(uint32))&Lua_Client::GetItemCooldown) .def("GetItemCooldown", (uint32(Lua_Client::*)(uint32))&Lua_Client::GetItemCooldown)

View File

@ -441,14 +441,14 @@ public:
void Popup(const char* title, const char* text, uint32 popup_id, uint32 negative_id, uint32 button_type, uint32 duration); void Popup(const char* title, const char* text, uint32 popup_id, uint32 negative_id, uint32 button_type, uint32 duration);
void Popup(const char* title, const char* text, uint32 popup_id, uint32 negative_id, uint32 button_type, uint32 duration, const char* button_name_one, const char* button_name_two); void Popup(const char* title, const char* text, uint32 popup_id, uint32 negative_id, uint32 button_type, uint32 duration, const char* button_name_one, const char* button_name_two);
void Popup(const char* title, const char* text, uint32 popup_id, uint32 negative_id, uint32 button_type, uint32 duration, const char* button_name_one, const char* button_name_two, uint32 sound_controls); void Popup(const char* title, const char* text, uint32 popup_id, uint32 negative_id, uint32 button_type, uint32 duration, const char* button_name_one, const char* button_name_two, uint32 sound_controls);
int CountItem(uint32 item_id); uint32 CountItem(uint32 item_id);
void RemoveItem(uint32 item_id); void RemoveItem(uint32 item_id);
void RemoveItem(uint32 item_id, uint32 quantity); void RemoveItem(uint32 item_id, uint32 quantity);
void SetGMStatus(int new_status); void SetGMStatus(int new_status);
int16 GetGMStatus(); int16 GetGMStatus();
void AddItem(luabind::object item_table); void AddItem(luabind::object item_table);
int CountAugmentEquippedByID(uint32 item_id); uint32 CountAugmentEquippedByID(uint32 item_id);
int CountItemEquippedByID(uint32 item_id); uint32 CountItemEquippedByID(uint32 item_id);
bool HasAugmentEquippedByID(uint32 item_id); bool HasAugmentEquippedByID(uint32 item_id);
bool HasItemEquippedByID(uint32 item_id); bool HasItemEquippedByID(uint32 item_id);
int GetHealAmount(); int GetHealAmount();
@ -509,6 +509,7 @@ public:
void AreaTaunt(); void AreaTaunt();
void AreaTaunt(float range); void AreaTaunt(float range);
void AreaTaunt(float range, int bonus_hate); void AreaTaunt(float range, int bonus_hate);
luabind::object GetInventorySlots(lua_State* L);
void ApplySpell(int spell_id); void ApplySpell(int spell_id);
void ApplySpell(int spell_id, int duration); void ApplySpell(int spell_id, int duration);

View File

@ -177,7 +177,7 @@ bool Lua_Corpse::HasItem(uint32 item_id) {
return self->HasItem(item_id); return self->HasItem(item_id);
} }
uint16 Lua_Corpse::CountItem(uint32 item_id) { uint32 Lua_Corpse::CountItem(uint32 item_id) {
Lua_Safe_Call_Int(); Lua_Safe_Call_Int();
return self->CountItem(item_id); return self->CountItem(item_id);
} }
@ -226,7 +226,7 @@ luabind::scope lua_register_corpse() {
.def("AllowMobLoot", (void(Lua_Corpse::*)(Lua_Mob, uint8))&Lua_Corpse::AllowMobLoot) .def("AllowMobLoot", (void(Lua_Corpse::*)(Lua_Mob, uint8))&Lua_Corpse::AllowMobLoot)
.def("Bury", (void(Lua_Corpse::*)(void))&Lua_Corpse::Bury) .def("Bury", (void(Lua_Corpse::*)(void))&Lua_Corpse::Bury)
.def("CanMobLoot", (bool(Lua_Corpse::*)(int))&Lua_Corpse::CanMobLoot) .def("CanMobLoot", (bool(Lua_Corpse::*)(int))&Lua_Corpse::CanMobLoot)
.def("CountItem", (uint16(Lua_Corpse::*)(uint32))&Lua_Corpse::CountItem) .def("CountItem", (uint32(Lua_Corpse::*)(uint32))&Lua_Corpse::CountItem)
.def("CountItems", (uint32(Lua_Corpse::*)(void))&Lua_Corpse::CountItems) .def("CountItems", (uint32(Lua_Corpse::*)(void))&Lua_Corpse::CountItems)
.def("Delete", (void(Lua_Corpse::*)(void))&Lua_Corpse::Delete) .def("Delete", (void(Lua_Corpse::*)(void))&Lua_Corpse::Delete)
.def("Depop", (void(Lua_Corpse::*)(void))&Lua_Corpse::Depop) .def("Depop", (void(Lua_Corpse::*)(void))&Lua_Corpse::Depop)

View File

@ -62,7 +62,7 @@ public:
uint32 GetPlatinum(); uint32 GetPlatinum();
void AddLooter(Lua_Mob who); void AddLooter(Lua_Mob who);
bool HasItem(uint32 item_id); bool HasItem(uint32 item_id);
uint16 CountItem(uint32 item_id); uint32 CountItem(uint32 item_id);
uint32 GetItemIDBySlot(uint16 loot_slot); uint32 GetItemIDBySlot(uint16 loot_slot);
uint16 GetFirstLootSlotByItemID(uint32 item_id); uint16 GetFirstLootSlotByItemID(uint32 item_id);
Lua_Corpse_Loot_List GetLootList(lua_State* L); Lua_Corpse_Loot_List GetLootList(lua_State* L);

View File

@ -164,7 +164,7 @@ int Lua_Inventory::GetSlotByItemInst(Lua_ItemInst inst) {
return self->GetSlotByItemInst(inst); return self->GetSlotByItemInst(inst);
} }
int Lua_Inventory::CountAugmentEquippedByID(uint32 item_id) { uint32 Lua_Inventory::CountAugmentEquippedByID(uint32 item_id) {
Lua_Safe_Call_Int(); Lua_Safe_Call_Int();
return self->CountAugmentEquippedByID(item_id); return self->CountAugmentEquippedByID(item_id);
} }
@ -174,7 +174,7 @@ bool Lua_Inventory::HasAugmentEquippedByID(uint32 item_id) {
return self->HasAugmentEquippedByID(item_id); return self->HasAugmentEquippedByID(item_id);
} }
int Lua_Inventory::CountItemEquippedByID(uint32 item_id) { uint32 Lua_Inventory::CountItemEquippedByID(uint32 item_id) {
Lua_Safe_Call_Int(); Lua_Safe_Call_Int();
return self->CountItemEquippedByID(item_id); return self->CountItemEquippedByID(item_id);
} }
@ -208,8 +208,8 @@ luabind::scope lua_register_inventory() {
.def("CalcSlotId", (int(Lua_Inventory::*)(int,int))&Lua_Inventory::CalcSlotId) .def("CalcSlotId", (int(Lua_Inventory::*)(int,int))&Lua_Inventory::CalcSlotId)
.def("CanItemFitInContainer", (bool(Lua_Inventory::*)(Lua_Item,Lua_Item))&Lua_Inventory::CanItemFitInContainer) .def("CanItemFitInContainer", (bool(Lua_Inventory::*)(Lua_Item,Lua_Item))&Lua_Inventory::CanItemFitInContainer)
.def("CheckNoDrop", (bool(Lua_Inventory::*)(int))&Lua_Inventory::CheckNoDrop) .def("CheckNoDrop", (bool(Lua_Inventory::*)(int))&Lua_Inventory::CheckNoDrop)
.def("CountAugmentEquippedByID", (int(Lua_Inventory::*)(uint32))&Lua_Inventory::CountAugmentEquippedByID) .def("CountAugmentEquippedByID", (uint32(Lua_Inventory::*)(uint32))&Lua_Inventory::CountAugmentEquippedByID)
.def("CountItemEquippedByID", (int(Lua_Inventory::*)(uint32))&Lua_Inventory::CountItemEquippedByID) .def("CountItemEquippedByID", (uint32(Lua_Inventory::*)(uint32))&Lua_Inventory::CountItemEquippedByID)
.def("DeleteItem", (bool(Lua_Inventory::*)(int))&Lua_Inventory::DeleteItem) .def("DeleteItem", (bool(Lua_Inventory::*)(int))&Lua_Inventory::DeleteItem)
.def("DeleteItem", (bool(Lua_Inventory::*)(int,int))&Lua_Inventory::DeleteItem) .def("DeleteItem", (bool(Lua_Inventory::*)(int,int))&Lua_Inventory::DeleteItem)
.def("FindFreeSlot", (int(Lua_Inventory::*)(bool,bool))&Lua_Inventory::FindFreeSlot) .def("FindFreeSlot", (int(Lua_Inventory::*)(bool,bool))&Lua_Inventory::FindFreeSlot)

View File

@ -43,8 +43,8 @@ public:
bool DeleteItem(int slot_id); bool DeleteItem(int slot_id);
bool DeleteItem(int slot_id, int quantity); bool DeleteItem(int slot_id, int quantity);
bool CheckNoDrop(int slot_id); bool CheckNoDrop(int slot_id);
int CountAugmentEquippedByID(uint32 item_id); uint32 CountAugmentEquippedByID(uint32 item_id);
int CountItemEquippedByID(uint32 item_id); uint32 CountItemEquippedByID(uint32 item_id);
Lua_ItemInst PopItem(int slot_id); Lua_ItemInst PopItem(int slot_id);
bool HasAugmentEquippedByID(uint32 item_id); bool HasAugmentEquippedByID(uint32 item_id);
bool HasItemEquippedByID(uint32 item_id); bool HasItemEquippedByID(uint32 item_id);

View File

@ -597,7 +597,7 @@ bool Lua_NPC::HasItem(uint32 item_id)
return self->HasItem(item_id); return self->HasItem(item_id);
} }
uint16 Lua_NPC::CountItem(uint32 item_id) uint32 Lua_NPC::CountItem(uint32 item_id)
{ {
Lua_Safe_Call_Int(); Lua_Safe_Call_Int();
return self->CountItem(item_id); return self->CountItem(item_id);
@ -862,7 +862,7 @@ luabind::scope lua_register_npc() {
.def("CheckNPCFactionAlly", (int(Lua_NPC::*)(int))&Lua_NPC::CheckNPCFactionAlly) .def("CheckNPCFactionAlly", (int(Lua_NPC::*)(int))&Lua_NPC::CheckNPCFactionAlly)
.def("ClearItemList", (void(Lua_NPC::*)(void))&Lua_NPC::ClearLootItems) .def("ClearItemList", (void(Lua_NPC::*)(void))&Lua_NPC::ClearLootItems)
.def("ClearLastName", (void(Lua_NPC::*)(void))&Lua_NPC::ClearLastName) .def("ClearLastName", (void(Lua_NPC::*)(void))&Lua_NPC::ClearLastName)
.def("CountItem", (uint16(Lua_NPC::*)(uint32))&Lua_NPC::CountItem) .def("CountItem", (uint32(Lua_NPC::*)(uint32))&Lua_NPC::CountItem)
.def("CountLoot", (int(Lua_NPC::*)(void))&Lua_NPC::CountLoot) .def("CountLoot", (int(Lua_NPC::*)(void))&Lua_NPC::CountLoot)
.def("DeleteBucket", (void(Lua_NPC::*)(std::string))&Lua_NPC::DeleteBucket) .def("DeleteBucket", (void(Lua_NPC::*)(std::string))&Lua_NPC::DeleteBucket)
.def("DescribeSpecialAbilities", (void(Lua_NPC::*)(Lua_Client))&Lua_NPC::DescribeSpecialAbilities) .def("DescribeSpecialAbilities", (void(Lua_NPC::*)(Lua_Client))&Lua_NPC::DescribeSpecialAbilities)

View File

@ -146,7 +146,7 @@ public:
void ChangeLastName(std::string last_name); void ChangeLastName(std::string last_name);
void ClearLastName(); void ClearLastName();
bool HasItem(uint32 item_id); bool HasItem(uint32 item_id);
uint16 CountItem(uint32 item_id); uint32 CountItem(uint32 item_id);
uint32 GetLootItemIDBySlot(uint16 loot_slot); uint32 GetLootItemIDBySlot(uint16 loot_slot);
uint16 GetFirstLootSlotByItemID(uint32 item_id); uint16 GetFirstLootSlotByItemID(uint32 item_id);
float GetHealScale(); float GetHealScale();

View File

@ -222,7 +222,7 @@ public:
void RemoveLootCash(); void RemoveLootCash();
void QueryLoot(Client *to, bool is_pet_query = false); void QueryLoot(Client *to, bool is_pet_query = false);
bool HasItem(uint32 item_id); bool HasItem(uint32 item_id);
uint16 CountItem(uint32 item_id); uint32 CountItem(uint32 item_id);
uint32 GetLootItemIDBySlot(uint16 loot_slot); uint32 GetLootItemIDBySlot(uint16 loot_slot);
uint16 GetFirstLootSlotByItemID(uint32 item_id); uint16 GetFirstLootSlotByItemID(uint32 item_id);
std::vector<int> GetLootList(); std::vector<int> GetLootList();

View File

@ -145,7 +145,7 @@ EQ::ItemInstance* Perl_Bot_GetAugmentAt(Bot* self, int16 slot_id, uint8 augment_
return nullptr; return nullptr;
} }
int Perl_Bot_CountAugmentEquippedByID(Bot* self, uint32 item_id) uint32 Perl_Bot_CountAugmentEquippedByID(Bot* self, uint32 item_id)
{ {
return self->GetInv().CountAugmentEquippedByID(item_id); return self->GetInv().CountAugmentEquippedByID(item_id);
} }
@ -155,7 +155,7 @@ bool Perl_Bot_HasAugmentEquippedByID(Bot* self, uint32 item_id)
return self->GetInv().HasAugmentEquippedByID(item_id); return self->GetInv().HasAugmentEquippedByID(item_id);
} }
int Perl_Bot_CountItemEquippedByID(Bot* self, uint32 item_id) uint32 Perl_Bot_CountItemEquippedByID(Bot* self, uint32 item_id)
{ {
return self->GetInv().CountItemEquippedByID(item_id); return self->GetInv().CountItemEquippedByID(item_id);
} }

View File

@ -2209,7 +2209,7 @@ void Perl_Client_SendToInstance(Client* self, std::string instance_type, std::st
self->SendToInstance(instance_type, zone_short_name, instance_version, x, y, z, heading, instance_identifier, duration); self->SendToInstance(instance_type, zone_short_name, instance_version, x, y, z, heading, instance_identifier, duration);
} }
int Perl_Client_CountItem(Client* self, uint32 item_id) uint32 Perl_Client_CountItem(Client* self, uint32 item_id)
{ {
return self->CountItem(item_id); return self->CountItem(item_id);
} }
@ -2388,7 +2388,7 @@ void Perl_Client_AddItem(Client* self, perl::reference table_ref)
augment_four, augment_five, augment_six, attuned, slot_id); augment_four, augment_five, augment_six, attuned, slot_id);
} }
int Perl_Client_CountAugmentEquippedByID(Client* self, uint32 item_id) uint32 Perl_Client_CountAugmentEquippedByID(Client* self, uint32 item_id)
{ {
return self->GetInv().CountAugmentEquippedByID(item_id); return self->GetInv().CountAugmentEquippedByID(item_id);
} }
@ -2398,7 +2398,7 @@ bool Perl_Client_HasAugmentEquippedByID(Client* self, uint32 item_id)
return self->GetInv().HasAugmentEquippedByID(item_id); return self->GetInv().HasAugmentEquippedByID(item_id);
} }
int Perl_Client_CountItemEquippedByID(Client* self, uint32 item_id) uint32 Perl_Client_CountItemEquippedByID(Client* self, uint32 item_id)
{ {
return self->GetInv().CountItemEquippedByID(item_id); return self->GetInv().CountItemEquippedByID(item_id);
} }
@ -3212,6 +3212,18 @@ Merc* Perl_Client_GetMerc(Client* self)
return self->GetMerc(); return self->GetMerc();
} }
perl::array Perl_Client_GetInventorySlots(Client* self)
{
perl::array result;
const auto& v = self->GetInventorySlots();
for (int i = 0; i < v.size(); ++i) {
result.push_back(v[i]);
}
return result;
}
void perl_register_client() void perl_register_client()
{ {
perl::interpreter perl(PERL_GET_THX); perl::interpreter perl(PERL_GET_THX);
@ -3426,6 +3438,7 @@ void perl_register_client()
package.add("GetInstanceID", &Perl_Client_GetInstanceID); package.add("GetInstanceID", &Perl_Client_GetInstanceID);
package.add("GetInstrumentMod", &Perl_Client_GetInstrumentMod); package.add("GetInstrumentMod", &Perl_Client_GetInstrumentMod);
package.add("GetInventory", &Perl_Client_GetInventory); package.add("GetInventory", &Perl_Client_GetInventory);
package.add("GetInventorySlots", &Perl_Client_GetInventorySlots);
package.add("GetInvulnerableEnvironmentDamage", &Perl_Client_GetInvulnerableEnvironmentDamage); package.add("GetInvulnerableEnvironmentDamage", &Perl_Client_GetInvulnerableEnvironmentDamage);
package.add("GetItemAt", &Perl_Client_GetItemAt); package.add("GetItemAt", &Perl_Client_GetItemAt);
package.add("GetItemCooldown", &Perl_Client_GetItemCooldown); package.add("GetItemCooldown", &Perl_Client_GetItemCooldown);

View File

@ -150,7 +150,7 @@ bool Perl_Inventory_HasAugmentEquippedByID(EQ::InventoryProfile* self, uint32_t
return self->HasAugmentEquippedByID(item_id); return self->HasAugmentEquippedByID(item_id);
} }
int Perl_Inventory_CountAugmentEquippedByID(EQ::InventoryProfile* self, uint32_t item_id) uint32 Perl_Inventory_CountAugmentEquippedByID(EQ::InventoryProfile* self, uint32_t item_id)
{ {
return self->CountAugmentEquippedByID(item_id); return self->CountAugmentEquippedByID(item_id);
} }
@ -160,7 +160,7 @@ bool Perl_Inventory_HasItemEquippedByID(EQ::InventoryProfile* self, uint32_t ite
return self->HasItemEquippedByID(item_id); return self->HasItemEquippedByID(item_id);
} }
int Perl_Inventory_CountItemEquippedByID(EQ::InventoryProfile* self, uint32_t item_id) uint32 Perl_Inventory_CountItemEquippedByID(EQ::InventoryProfile* self, uint32_t item_id)
{ {
return self->CountItemEquippedByID(item_id); return self->CountItemEquippedByID(item_id);
} }

View File

@ -615,7 +615,7 @@ bool Perl_NPC_HasItem(NPC* self, uint32 item_id) // @categories Script Utility
return self->HasItem(item_id); return self->HasItem(item_id);
} }
int Perl_NPC_CountItem(NPC* self, uint32 item_id) uint32 Perl_NPC_CountItem(NPC* self, uint32 item_id)
{ {
return self->CountItem(item_id); return self->CountItem(item_id);
} }

View File

@ -161,7 +161,7 @@ bool Perl_Corpse_HasItem(Corpse* self, uint32_t item_id) // @categories Script U
return self->HasItem(item_id); return self->HasItem(item_id);
} }
int Perl_Corpse_CountItem(Corpse* self, uint32_t item_id) // @categories Script Utility uint32 Perl_Corpse_CountItem(Corpse* self, uint32_t item_id) // @categories Script Utility
{ {
return self->CountItem(item_id); return self->CountItem(item_id);
} }

View File

@ -3304,7 +3304,7 @@ int QuestManager::collectitems(uint32 item_id, bool remove)
return quantity; return quantity;
} }
int QuestManager::countitem(uint32 item_id) { uint32 QuestManager::countitem(uint32 item_id) {
QuestManagerCurrentQuestVars(); QuestManagerCurrentQuestVars();
if (!initiator) { if (!initiator) {

View File

@ -249,7 +249,7 @@ public:
int getlevel(uint8 type); int getlevel(uint8 type);
int collectitems(uint32 item_id, bool remove); int collectitems(uint32 item_id, bool remove);
int collectitems_processSlot(int16 slot_id, uint32 item_id, bool remove); int collectitems_processSlot(int16 slot_id, uint32 item_id, bool remove);
int countitem(uint32 item_id); uint32 countitem(uint32 item_id);
void removeitem(uint32 item_id, uint32 quantity = 1); void removeitem(uint32 item_id, uint32 quantity = 1);
std::string getitemcomment(uint32 item_id); std::string getitemcomment(uint32 item_id);
std::string getitemlore(uint32 item_id); std::string getitemlore(uint32 item_id);