[Feature] Add Support for Item Previews (#4599)

* [Feature] Add Support for Item Previews

* Update client_packet.cpp
This commit is contained in:
Alex King
2025-01-19 20:18:17 -05:00
committed by GitHub
parent 37a7b7fc41
commit 75698a809f
9 changed files with 1269 additions and 1204 deletions
+25
View File
@@ -283,6 +283,7 @@ void MapOpcodes()
ConnectedOpcodes[OP_ItemLinkResponse] = &Client::Handle_OP_ItemLinkResponse;
ConnectedOpcodes[OP_ItemName] = &Client::Handle_OP_ItemName;
ConnectedOpcodes[OP_ItemPreview] = &Client::Handle_OP_ItemPreview;
ConnectedOpcodes[OP_ItemPreviewRequest] = &Client::Handle_OP_ItemPreviewRequest;
ConnectedOpcodes[OP_ItemVerifyRequest] = &Client::Handle_OP_ItemVerifyRequest;
ConnectedOpcodes[OP_ItemViewUnknown] = &Client::Handle_OP_Ignore;
ConnectedOpcodes[OP_Jump] = &Client::Handle_OP_Jump;
@@ -9300,6 +9301,30 @@ void Client::Handle_OP_ItemPreview(const EQApplicationPacket *app)
return;
}
void Client::Handle_OP_ItemPreviewRequest(const EQApplicationPacket* app)
{
VERIFY_PACKET_LENGTH(OP_ItemPreviewRequest, app, ItemPreview_Struct);
auto ips = (ItemPreview_Struct*) app->pBuffer;
const EQ::ItemData* item = database.GetItem(ips->itemid);
if (item) {
EQ::ItemInstance* inst = database.CreateItem(item);
if (inst) {
std::string packet = inst->Serialize(-1);
auto outapp = new EQApplicationPacket(OP_ItemPreviewRequest, packet.length());
memcpy(outapp->pBuffer, packet.c_str(), packet.length());
#if EQDEBUG >= 9
DumpPacket(outapp);
#endif
QueuePacket(outapp);
safe_delete(outapp);
safe_delete(inst);
}
}
}
void Client::Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app)
{
using EQ::spells::CastingSlot;
+1
View File
@@ -189,6 +189,7 @@
void Handle_OP_ItemLinkResponse(const EQApplicationPacket *app);
void Handle_OP_ItemName(const EQApplicationPacket *app);
void Handle_OP_ItemPreview(const EQApplicationPacket *app);
void Handle_OP_ItemPreviewRequest(const EQApplicationPacket *app);
void Handle_OP_ItemVerifyRequest(const EQApplicationPacket *app);
void Handle_OP_Jump(const EQApplicationPacket *app);
void Handle_OP_KeyRing(const EQApplicationPacket *app);
+1
View File
@@ -896,6 +896,7 @@ luabind::scope lua_register_packet_opcodes() {
luabind::value("Weblink", static_cast<int>(OP_Weblink)),
luabind::value("InspectMessageUpdate", static_cast<int>(OP_InspectMessageUpdate)),
luabind::value("ItemPreview", static_cast<int>(OP_ItemPreview)),
luabind::value("ItemPreviewRequest", static_cast<int>(OP_ItemPreviewRequest)),
luabind::value("MercenaryDataRequest", static_cast<int>(OP_MercenaryDataRequest)),
luabind::value("MercenaryDataResponse", static_cast<int>(OP_MercenaryDataResponse)),
luabind::value("MercenaryHire", static_cast<int>(OP_MercenaryHire)),