From baa3bd75508f10edce150af04ac22043536be2d8 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Sun, 1 Nov 2026 06:16:41 +0000 Subject: [PATCH] Decompile 2 functions in Source/Contents/Items/SelectPackageItemMgr.cpp, Source/Contents/Items/SelectPackageItemMgr.h Batch #9290 by secret: 0 byte-identical, 2 confirmed by peer review. - fn_04448 CSelectPackageItemMgr::OpenItem: logic confirmed by peer review - fn_04445 CSelectPackageItemMgr::AddTab: logic confirmed by peer review Peer-reviewed-by: ntrl, gordaoprogramas, seumadruga Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- .../Contents/Items/SelectPackageItemMgr.cpp | 26 ++++++++++++++++++- Source/Contents/Items/SelectPackageItemMgr.h | 1 + 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Source/Contents/Items/SelectPackageItemMgr.cpp b/Source/Contents/Items/SelectPackageItemMgr.cpp index d9453dbe..1a4ac70f 100644 --- a/Source/Contents/Items/SelectPackageItemMgr.cpp +++ b/Source/Contents/Items/SelectPackageItemMgr.cpp @@ -1,9 +1,13 @@ #include "Contents/Items/SelectPackageItemMgr.h" +#include "Client/Session.h" #include "Network/TextEncoding.h" #include "Script/LuaInstance.h" +#include "UI/SelectPackageItemBox/SelectPackageItemBox.h" +#include "UI/Window/UIWindowMgr.h" extern "C" { #include } +#include #include #include @@ -23,7 +27,7 @@ void CSelectPackageItemMgr::AddTab(int packageId, int tabIndex, const std::strin this->m_packages[packageId] = std::map(); } - if (this->m_packages[packageId].find(tabIndex) == this->m_packages[packageId].end()) { + if (this->m_packages[packageId].end() == this->m_packages[packageId].find(tabIndex)) { this->m_packages[packageId][tabIndex] = SelectPackageTab(); } @@ -206,3 +210,23 @@ int CSelectPackageItemMgr::LuaAddTab(lua_State* L) { lua_pushstring(L, "good"); return 2; } + +// OFFSET: 0x0061F2F0 +// FUNCTION: fn_04448 +bool CSelectPackageItemMgr::OpenItem(unsigned int itemIndex) { + const ITEM_INFO item = LookupClientItemByIdentity(g_session.m_inventoryItems, itemIndex); + if (item.unknown_0000[1] > 0) { + const int packageId = std::atoi(item.itemId.c_str()); + if (this->m_packages.find(packageId) != this->m_packages.end()) { + if (g_windowMgr.LookupWindow(0x2731) == nullptr || g_windowMgr.CloseWindow(0x2731)) { + CUISelectPackageItemBox* box = static_cast(g_windowMgr.EnsureWindow(0x2731)); + if (box != nullptr) { + box->Open(itemIndex); + } + } + return true; + } + } + + return false; +} diff --git a/Source/Contents/Items/SelectPackageItemMgr.h b/Source/Contents/Items/SelectPackageItemMgr.h index 1becb6bf..5eb74930 100644 --- a/Source/Contents/Items/SelectPackageItemMgr.h +++ b/Source/Contents/Items/SelectPackageItemMgr.h @@ -31,6 +31,7 @@ public: void AddTab(int packageId, int tabIndex, const std::string& name, int itemCount); std::optional*> FindItems(int packageId, int tabIndex); + bool OpenItem(unsigned int itemIndex); }; #if defined(_WIN32) && !defined(_WIN64)