mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-19 16:58:20 +00:00
Implement bazaar item identity and offline trading rework
This commit is contained in:
+95
-18
@@ -327,6 +327,7 @@ union
|
||||
bool buyer;
|
||||
bool untargetable;
|
||||
uint32 npc_tint_id;
|
||||
bool offline;
|
||||
};
|
||||
|
||||
struct PlayerState_Struct {
|
||||
@@ -3094,7 +3095,7 @@ struct BazaarSearchCriteria_Struct {
|
||||
struct BazaarInspect_Struct {
|
||||
uint32 action;
|
||||
char player_name[64];
|
||||
uint32 serial_number;
|
||||
char item_unique_id[17];
|
||||
uint32 item_id;
|
||||
uint32 trader_id;
|
||||
};
|
||||
@@ -3730,6 +3731,36 @@ struct Trader_Struct {
|
||||
/*648*/ uint32 item_cost[EQ::invtype::BAZAAR_SIZE];
|
||||
};
|
||||
|
||||
struct TraderItems_Struct {
|
||||
std::string item_unique_id;
|
||||
uint32 item_id;
|
||||
uint64 item_cost;
|
||||
|
||||
template<class Archive>
|
||||
void serialize(Archive &archive)
|
||||
{
|
||||
archive(
|
||||
CEREAL_NVP(item_unique_id),
|
||||
CEREAL_NVP(item_id),
|
||||
CEREAL_NVP(item_cost)
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
struct TraderClientMessaging_Struct {
|
||||
/*000*/ uint32 action;
|
||||
/*008*/ std::vector<TraderItems_Struct> items;
|
||||
|
||||
template<class Archive>
|
||||
void serialize(Archive &archive)
|
||||
{
|
||||
archive(
|
||||
CEREAL_NVP(action),
|
||||
CEREAL_NVP(items)
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
struct ClickTrader_Struct {
|
||||
/*000*/ uint32 action;
|
||||
/*004*/ uint32 unknown_004;
|
||||
@@ -3743,6 +3774,52 @@ struct GetItems_Struct{
|
||||
int32 charges[EQ::invtype::BAZAAR_SIZE];
|
||||
};
|
||||
|
||||
struct Trader2_Struct {
|
||||
uint32 action;
|
||||
uint32 unknown_004;
|
||||
uint64 items[EQ::invtype::BAZAAR_SIZE];
|
||||
uint32 item_cost[EQ::invtype::BAZAAR_SIZE];
|
||||
std::string serial_number[EQ::invtype::BAZAAR_SIZE];
|
||||
};
|
||||
|
||||
struct BazaarTraderDetails {
|
||||
uint64 item_id;
|
||||
std::string unique_id;
|
||||
uint64 cost;
|
||||
uint64 serial_number; // backwards compatibility. Not used for RoF2 as of March 2025
|
||||
|
||||
template<class Archive>
|
||||
void serialize(Archive &archive)
|
||||
{
|
||||
archive(
|
||||
CEREAL_NVP(item_id),
|
||||
CEREAL_NVP(unique_id),
|
||||
CEREAL_NVP(cost),
|
||||
CEREAL_NVP(serial_number)
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
struct ClickTraderNew_Struct {
|
||||
uint32 action;
|
||||
std::vector<BazaarTraderDetails> items;
|
||||
|
||||
template<class Archive>
|
||||
void serialize(Archive &archive)
|
||||
{
|
||||
archive(
|
||||
CEREAL_NVP(action),
|
||||
CEREAL_NVP(items)
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
struct GetBazaarItems_Struct {
|
||||
uint64 items[EQ::invtype::BAZAAR_SIZE];
|
||||
std::string serial_number[EQ::invtype::BAZAAR_SIZE];
|
||||
uint32 charges[EQ::invtype::BAZAAR_SIZE];
|
||||
};
|
||||
|
||||
struct BecomeTrader_Struct {
|
||||
uint32 action;
|
||||
uint16 zone_id;
|
||||
@@ -3775,7 +3852,7 @@ struct TraderBuy_Struct {
|
||||
/*084*/ char seller_name[64];
|
||||
/*148*/ char unknown_148[32];
|
||||
/*180*/ char item_name[64];
|
||||
/*244*/ char serial_number[17];
|
||||
/*244*/ char item_unique_id[17];
|
||||
/*261*/ char unknown_261[3];
|
||||
/*264*/ uint32 item_id;
|
||||
/*268*/ uint32 price;
|
||||
@@ -3794,12 +3871,12 @@ struct TraderItemUpdate_Struct{
|
||||
};
|
||||
|
||||
struct TraderPriceUpdate_Struct {
|
||||
/*000*/ uint32 Action;
|
||||
/*004*/ uint32 SubAction;
|
||||
/*008*/ int32 SerialNumber;
|
||||
/*012*/ uint32 Unknown012;
|
||||
/*016*/ uint32 NewPrice;
|
||||
/*020*/ uint32 Unknown016;
|
||||
/*000*/ uint32 action;
|
||||
/*002*/ uint32 sub_action;
|
||||
/*004*/ char item_unique_id[17];
|
||||
/*021*/ char unknown_021[3];
|
||||
/*024*/ uint32 unknown_024;
|
||||
/*028*/ uint32 new_price;
|
||||
};
|
||||
|
||||
struct MoneyUpdate_Struct{
|
||||
@@ -3814,6 +3891,7 @@ struct TraderDelItem_Struct{
|
||||
uint32 trader_id;
|
||||
uint32 item_id;
|
||||
uint32 unknown_012;
|
||||
char item_unique_id[17];
|
||||
};
|
||||
|
||||
struct TraderClick_Struct{
|
||||
@@ -3837,12 +3915,12 @@ struct SimpleMessage_Struct{
|
||||
};
|
||||
|
||||
struct GuildMemberUpdate_Struct {
|
||||
/*00*/ uint32 GuildID;
|
||||
/*04*/ char MemberName[64];
|
||||
/*68*/ uint16 ZoneID;
|
||||
/*70*/ uint16 InstanceID; //speculated
|
||||
/*72*/ uint32 LastSeen; //unix timestamp
|
||||
/*76*/
|
||||
/*00*/ uint32 GuildID;
|
||||
/*04*/ char MemberName[64];
|
||||
/*68*/ uint16 ZoneID;
|
||||
/*72*/ uint16 InstanceID; //speculated
|
||||
/*76*/ uint32 LastSeen; //unix timestamp
|
||||
/*80*/ uint32 offline_mode;
|
||||
};
|
||||
|
||||
struct GuildMemberLevelUpdate_Struct {
|
||||
@@ -3865,6 +3943,7 @@ struct Internal_GuildMemberEntry_Struct {
|
||||
uint16 zoneinstance; //network byte order
|
||||
uint16 zone_id; //network byte order
|
||||
uint32 online;
|
||||
uint32 offline_mode;
|
||||
};
|
||||
|
||||
struct Internal_GuildMembers_Struct { //just for display purposes, this is not actually used in the message encoding.
|
||||
@@ -6419,7 +6498,7 @@ struct BazaarSearchResultsFromDB_Struct {
|
||||
uint32 count;
|
||||
uint32 trader_id;
|
||||
uint32 item_id;
|
||||
uint32 serial_number;
|
||||
std::string item_unique_id;
|
||||
uint32 charges;
|
||||
uint32 cost;
|
||||
uint32 slot_id;
|
||||
@@ -6431,7 +6510,6 @@ struct BazaarSearchResultsFromDB_Struct {
|
||||
uint32 item_stat;
|
||||
bool stackable;
|
||||
std::string item_name;
|
||||
std::string serial_number_RoF;
|
||||
std::string trader_name;
|
||||
|
||||
template<class Archive>
|
||||
@@ -6441,7 +6519,7 @@ struct BazaarSearchResultsFromDB_Struct {
|
||||
CEREAL_NVP(count),
|
||||
CEREAL_NVP(trader_id),
|
||||
CEREAL_NVP(item_id),
|
||||
CEREAL_NVP(serial_number),
|
||||
CEREAL_NVP(item_unique_id),
|
||||
CEREAL_NVP(charges),
|
||||
CEREAL_NVP(cost),
|
||||
CEREAL_NVP(slot_id),
|
||||
@@ -6453,7 +6531,6 @@ struct BazaarSearchResultsFromDB_Struct {
|
||||
CEREAL_NVP(item_stat),
|
||||
CEREAL_NVP(stackable),
|
||||
CEREAL_NVP(item_name),
|
||||
CEREAL_NVP(serial_number_RoF),
|
||||
CEREAL_NVP(trader_name)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user