Skip to content

Commit

Permalink
Few small optimizations to packets_struct.h
Browse files Browse the repository at this point in the history
Moved some packet headers to correct locations and added their structs
Added vending packets with grade
Fixed naming for packetLength in PACKET_ZC_REFINE_ADD_ITEM
  • Loading branch information
Lemongrass3110 committed Jan 27, 2022
1 parent afb19fb commit b77a228
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 36 deletions.
7 changes: 6 additions & 1 deletion src/common/HPMDataCheck.h
Original file line number Diff line number Diff line change
Expand Up @@ -706,11 +706,13 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_ADD_ITEM_TO_STORE", sizeof(struct PACKET_ZC_ADD_ITEM_TO_STORE), SERVER_TYPE_MAP },
{ "PACKET_ZC_ADD_MEMBER_TO_GROUP", sizeof(struct PACKET_ZC_ADD_MEMBER_TO_GROUP), SERVER_TYPE_MAP },
{ "PACKET_ZC_ADD_SKILL", sizeof(struct PACKET_ZC_ADD_SKILL), SERVER_TYPE_MAP },
{ "PACKET_ZC_ATTACK_RANGE", sizeof(struct PACKET_ZC_ATTACK_RANGE), SERVER_TYPE_MAP },
{ "PACKET_ZC_AUTORUN_SKILL", sizeof(struct PACKET_ZC_AUTORUN_SKILL), SERVER_TYPE_MAP },
{ "PACKET_ZC_BAN_LIST", sizeof(struct PACKET_ZC_BAN_LIST), SERVER_TYPE_MAP },
{ "PACKET_ZC_BAN_LIST_sub", sizeof(struct PACKET_ZC_BAN_LIST_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_CASH_ITEM_DELETE", sizeof(struct PACKET_ZC_CASH_ITEM_DELETE), SERVER_TYPE_MAP },
{ "PACKET_ZC_CASH_TIME_COUNTER", sizeof(struct PACKET_ZC_CASH_TIME_COUNTER), SERVER_TYPE_MAP },
{ "PACKET_ZC_COUPLESTATUS", sizeof(struct PACKET_ZC_COUPLESTATUS), SERVER_TYPE_MAP },
{ "PACKET_ZC_DELETE_MEMBER_FROM_GROUP", sizeof(struct PACKET_ZC_DELETE_MEMBER_FROM_GROUP), SERVER_TYPE_MAP },
{ "PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER", sizeof(struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER), SERVER_TYPE_MAP },
{ "PACKET_ZC_FEED_MER", sizeof(struct PACKET_ZC_FEED_MER), SERVER_TYPE_MAP },
Expand All @@ -726,6 +728,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_INVENTORY_MOVE_FAILED", sizeof(struct PACKET_ZC_INVENTORY_MOVE_FAILED), SERVER_TYPE_MAP },
{ "PACKET_ZC_ITEM_ENTRY", sizeof(struct PACKET_ZC_ITEM_ENTRY), SERVER_TYPE_MAP },
{ "PACKET_ZC_ITEM_PICKUP_ACK", sizeof(struct PACKET_ZC_ITEM_PICKUP_ACK), SERVER_TYPE_MAP },
{ "PACKET_ZC_LONGPAR_CHANGE", sizeof(struct PACKET_ZC_LONGPAR_CHANGE), SERVER_TYPE_MAP },
{ "PACKET_ZC_MAIL_LIST", sizeof(struct PACKET_ZC_MAIL_LIST), SERVER_TYPE_MAP },
{ "PACKET_ZC_MAKABLEITEMLIST", sizeof(struct PACKET_ZC_MAKABLEITEMLIST), SERVER_TYPE_MAP },
{ "PACKET_ZC_MAKABLEITEMLIST_sub", sizeof(struct PACKET_ZC_MAKABLEITEMLIST_sub), SERVER_TYPE_MAP },
Expand All @@ -739,6 +742,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_MYGUILD_BASIC_INFO", sizeof(struct PACKET_ZC_MYGUILD_BASIC_INFO), SERVER_TYPE_MAP },
{ "PACKET_ZC_MYITEMLIST_BUYING_STORE", sizeof(struct PACKET_ZC_MYITEMLIST_BUYING_STORE), SERVER_TYPE_MAP },
{ "PACKET_ZC_MYITEMLIST_BUYING_STORE_sub", sizeof(struct PACKET_ZC_MYITEMLIST_BUYING_STORE_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_NOTIFY_CARTITEM_COUNTINFO", sizeof(struct PACKET_ZC_NOTIFY_CARTITEM_COUNTINFO), SERVER_TYPE_MAP },
{ "PACKET_ZC_NOTIFY_CHAT", sizeof(struct PACKET_ZC_NOTIFY_CHAT), SERVER_TYPE_MAP },
{ "PACKET_ZC_NOTIFY_CHAT_PARTY", sizeof(struct PACKET_ZC_NOTIFY_CHAT_PARTY), SERVER_TYPE_MAP },
{ "PACKET_ZC_NOTIFY_CLAN_CHAT", sizeof(struct PACKET_ZC_NOTIFY_CLAN_CHAT), SERVER_TYPE_MAP },
Expand All @@ -755,6 +759,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_NPC_MARKET_PURCHASE_RESULT_sub", sizeof(struct PACKET_ZC_NPC_MARKET_PURCHASE_RESULT_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_OPEN_UI", sizeof(struct PACKET_ZC_OPEN_UI), SERVER_TYPE_MAP },
{ "PACKET_ZC_OVERWEIGHT_PERCENT", sizeof(struct PACKET_ZC_OVERWEIGHT_PERCENT), SERVER_TYPE_MAP },
{ "PACKET_ZC_PAR_CHANGE", sizeof(struct PACKET_ZC_PAR_CHANGE), SERVER_TYPE_MAP },
{ "PACKET_ZC_PARTY_JOIN_REQ", sizeof(struct PACKET_ZC_PARTY_JOIN_REQ), SERVER_TYPE_MAP },
{ "PACKET_ZC_PARTY_JOIN_REQ_ACK", sizeof(struct PACKET_ZC_PARTY_JOIN_REQ_ACK), SERVER_TYPE_MAP },
{ "PACKET_ZC_PC_CASH_POINT_ITEMLIST", sizeof(struct PACKET_ZC_PC_CASH_POINT_ITEMLIST), SERVER_TYPE_MAP },
Expand All @@ -776,6 +781,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_SKILLINFO_UPDATE2", sizeof(struct PACKET_ZC_SKILLINFO_UPDATE2), SERVER_TYPE_MAP },
{ "PACKET_ZC_SPRITE_CHANGE", sizeof(struct PACKET_ZC_SPRITE_CHANGE), SERVER_TYPE_MAP },
{ "PACKET_ZC_STATE_CHANGE", sizeof(struct PACKET_ZC_STATE_CHANGE), SERVER_TYPE_MAP },
{ "PACKET_ZC_STATUS_CHANGE", sizeof(struct PACKET_ZC_STATUS_CHANGE), SERVER_TYPE_MAP },
{ "PACKET_ZC_STATUS_CHANGE_ACK", sizeof(struct PACKET_ZC_STATUS_CHANGE_ACK), SERVER_TYPE_MAP },
{ "PACKET_ZC_STYLE_CHANGE_RES", sizeof(struct PACKET_ZC_STYLE_CHANGE_RES), SERVER_TYPE_MAP },
{ "PACKET_ZC_TALKBOX_CHATCONTENTS", sizeof(struct PACKET_ZC_TALKBOX_CHATCONTENTS), SERVER_TYPE_MAP },
Expand Down Expand Up @@ -830,7 +836,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "packet_mission_info_sub", sizeof(struct packet_mission_info_sub), SERVER_TYPE_MAP },
{ "packet_monster_hp", sizeof(struct packet_monster_hp), SERVER_TYPE_MAP },
{ "packet_notify_bounditem", sizeof(struct packet_notify_bounditem), SERVER_TYPE_MAP },
{ "packet_npc_market_purchase", sizeof(struct packet_npc_market_purchase), SERVER_TYPE_MAP },
{ "packet_package_item_announce", sizeof(struct packet_package_item_announce), SERVER_TYPE_MAP },
{ "packet_party_leader_changed", sizeof(struct packet_party_leader_changed), SERVER_TYPE_MAP },
{ "packet_quest_add_header", sizeof(struct packet_quest_add_header), SERVER_TYPE_MAP },
Expand Down
25 changes: 14 additions & 11 deletions src/map/clif.c
Original file line number Diff line number Diff line change
Expand Up @@ -3526,10 +3526,10 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ
if (!sockt->session_is_active(fd)) // Invalid pointer fix, by sasuke [Kevin]
return;

int packetId = HEADER_ZC_PAR_CHANGE1;
int packetId = HEADER_ZC_PAR_CHANGE;

WFIFOHEAD(fd, 14);
WFIFOW(fd, 0) = HEADER_ZC_PAR_CHANGE1;
WFIFOW(fd, 0) = HEADER_ZC_PAR_CHANGE;
WFIFOW(fd, 2) = type;

PRAGMA_GCC46(GCC diagnostic push)
Expand Down Expand Up @@ -3633,23 +3633,23 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ
break;
#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)
case SP_ZENY:
packetId = HEADER_ZC_LONGPAR_CHANGE;
packetId = HEADER_ZC_LONGLONGPAR_CHANGE;
WFIFOQ(fd, 4) = sd->status.zeny;
break;
case SP_BASEEXP:
packetId = HEADER_ZC_LONGPAR_CHANGE;
packetId = HEADER_ZC_LONGLONGPAR_CHANGE;
WFIFOQ(fd, 4) = sd->status.base_exp;
break;
case SP_JOBEXP:
packetId = HEADER_ZC_LONGPAR_CHANGE;
packetId = HEADER_ZC_LONGLONGPAR_CHANGE;
WFIFOQ(fd, 4) = sd->status.job_exp;
break;
case SP_NEXTBASEEXP:
packetId = HEADER_ZC_LONGPAR_CHANGE;
packetId = HEADER_ZC_LONGLONGPAR_CHANGE;
WFIFOQ(fd, 4) = pc->nextbaseexp(sd);
break;
case SP_NEXTJOBEXP:
packetId = HEADER_ZC_LONGPAR_CHANGE;
packetId = HEADER_ZC_LONGLONGPAR_CHANGE;
WFIFOQ(fd, 4) = pc->nextjobexp(sd);
break;
#else
Expand Down Expand Up @@ -7166,6 +7166,9 @@ static void clif_vendinglist(struct map_session_data *sd, unsigned int id, struc
p->items[i].location = pc->item_equippoint(sd, data);
p->items[i].viewSprite = data->view_sprite;
#endif
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
p->items[i].grade = vsd->status.cart[index].grade;
#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
}
WFIFOSET(fd, len);
}
Expand Down Expand Up @@ -21832,7 +21835,7 @@ static void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd)
if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
return;

const struct packet_npc_market_purchase *p = RP2PTR(fd);
const struct PACKET_CZ_NPC_MARKET_PURCHASE *p = RP2PTR(fd);
int count = (p->PacketLength - 4) / sizeof p->list[0];
struct itemlist item_list;

Expand Down Expand Up @@ -23319,7 +23322,7 @@ static void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, str
sPacket->TextcontentsLength = body_len;
sPacket->zeny = msg->zeny;
sPacket->ItemCnt = msg->items_count;
strncpy(WFIFOP(fd, size), msg->body, body_len);
strncpy(sPacket->Textcontent, msg->body, body_len);
size += body_len;
for (int i = 0; i < RODEX_MAX_ITEM; ++i) {
struct item *it = &msg->items[i].item;
Expand Down Expand Up @@ -24416,7 +24419,7 @@ static void clif_AddItemRefineryUIAck(struct map_session_data *sd, int item_inde
struct PACKET_ZC_REFINE_ADD_ITEM *p = (struct PACKET_ZC_REFINE_ADD_ITEM *)buf;

p->packetType = HEADER_ZC_REFINE_ADD_ITEM;
p->packtLength = sizeof(*p) + sizeof(p->req[0]) * req->req_count;
p->packetLength = sizeof(*p) + sizeof(p->req[0]) * req->req_count;
p->itemIndex = item_index + 2;
p->blacksmithBlessing = req->blacksmith_blessing;

Expand All @@ -24427,7 +24430,7 @@ static void clif_AddItemRefineryUIAck(struct map_session_data *sd, int item_inde
p->req[i].zeny = req->req[i].cost;
}

clif->send(p, p->packtLength, &sd->bl, SELF);
clif->send(p, p->packetLength, &sd->bl, SELF);
#endif
}

Expand Down
102 changes: 78 additions & 24 deletions src/map/packets_struct.h
Original file line number Diff line number Diff line change
Expand Up @@ -236,10 +236,11 @@ enum packet_headers {
#endif
#if PACKETVER < 20100105
vendinglistType = 0x133,
#else
#elif !(PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723)
vendinglistType = 0x800,
#else
vendinglistType = 0xb3d,
#endif
openvendingType = 0x136,
#if PACKETVER >= 20120925
equipitemType = 0x998,
#else
Expand Down Expand Up @@ -380,19 +381,6 @@ enum packet_headers {
#endif
};

// TODO add here packets structs
DEFINE_PACKET_ID(ZC_PAR_CHANGE1, 0x00b0);
DEFINE_PACKET_ID(ZC_STATUS_CHANGE, 0x00be);
DEFINE_PACKET_ID(ZC_NOTIFY_CARTITEM_COUNTINFO, 0x0121);
DEFINE_PACKET_ID(ZC_ATTACK_RANGE, 0x013a);
DEFINE_PACKET_ID(ZC_COUPLESTATUS, 0x0141);

#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)
DEFINE_PACKET_ID(ZC_LONGPAR_CHANGE, 0x0acb);
#else // PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)
DEFINE_PACKET_ID(ZC_LONGPAR_CHANGE, 0x00b1);
#endif // PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)

#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
DEFINE_PACKET_ID(ZC_PAR_4JOB_CHANGE, 0x0b25);
#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
Expand All @@ -401,6 +389,59 @@ DEFINE_PACKET_ID(ZC_PAR_4JOB_CHANGE, 0x0b25);
#pragma pack(push, 1)
#endif // not NetBSD < 6 / Solaris

struct PACKET_ZC_PAR_CHANGE {
int16 PacketType;
uint16 varID;
int32 count;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_PAR_CHANGE, 0x00b0);

struct PACKET_ZC_LONGPAR_CHANGE {
int16 PacketType;
uint16 varID;
int32 amount;
} __attribute__((packed));
DEFINE_PACKET_ID(ZC_LONGPAR_CHANGE, 0x00b1);

struct PACKET_ZC_STATUS_CHANGE {
int16 PacketType;
uint16 statusID;
uint8 value;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_STATUS_CHANGE, 0x00be);

struct PACKET_ZC_NOTIFY_CARTITEM_COUNTINFO {
int16 PacketType;
int16 curCount;
int16 maxCount;
int32 curWeight;
int32 maxWeight;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_NOTIFY_CARTITEM_COUNTINFO, 0x0121);

struct PACKET_ZC_ATTACK_RANGE {
int16 PacketType;
int16 currentAttRange;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ATTACK_RANGE, 0x013a);

struct PACKET_ZC_COUPLESTATUS {
int16 PacketType;
uint32 statusType;
int32 defaultStatus;
int32 plusStatus;
} __attribute__((packed));
DEFINE_PACKET_ID(ZC_COUPLESTATUS, 0x0141);

#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)
struct PACKET_ZC_LONGLONGPAR_CHANGE {
int16 PacketType;
uint16 varID;
int64 amount;
} __attribute__((packed));
DEFINE_PACKET_ID(ZC_LONGLONGPAR_CHANGE, 0x0acb);
#endif // PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO)

/**
* structs for data
*/
Expand Down Expand Up @@ -1453,19 +1494,24 @@ struct packet_gm_monster_item {
#endif
} __attribute__((packed));

struct packet_npc_market_purchase {
int16 PacketType;
int16 PacketLength;
struct {
#if PACKETVER_MAIN_NUM >= 20130911 || PACKETVER_RE_NUM >= 20130911 || defined(PACKETVER_ZERO)
struct PACKET_CZ_NPC_MARKET_PURCHASE_sub {
#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
uint32 ITID;
uint32 ITID;
#else
uint16 ITID;
uint16 ITID;
#endif
int32 qty;
} list[]; // Note: We assume this should be <= MAX_INVENTORY (since you can't hold more than MAX_INVENTORY items thus cant buy that many at once).
int32 qty;
} __attribute__((packed));

struct PACKET_CZ_NPC_MARKET_PURCHASE {
int16 PacketType;
int16 PacketLength;
struct PACKET_CZ_NPC_MARKET_PURCHASE_sub list[];
} __attribute__((packed));
DEFINE_PACKET_HEADER(CZ_NPC_MARKET_PURCHASE, 0x09d6)
#endif

#if PACKETVER_MAIN_NUM >= 20210203 || PACKETVER_RE_NUM >= 20211103
struct PACKET_ZC_NPC_MARKET_OPEN_sub {
#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
Expand Down Expand Up @@ -1894,6 +1940,7 @@ struct PACKET_ZC_ACK_READ_RODEX {
int16 TextcontentsLength;
int64 zeny;
int8 ItemCnt;
char Textcontent[];
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ACK_READ_RODEX, 0x0b63);
// [4144] date unconfirmed
Expand Down Expand Up @@ -1924,6 +1971,7 @@ struct PACKET_ZC_ACK_READ_RODEX {
int16 TextcontentsLength;
int64 zeny;
int8 ItemCnt;
char Textcontent[];
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ACK_READ_RODEX, 0x09eb);
#endif // PACKETVER >= 20140115
Expand Down Expand Up @@ -3075,7 +3123,9 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
#endif
uint8 identified;
uint8 damaged;
#if !(PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723)
uint8 refine;
#endif
struct EQUIPSLOTINFO slot;
#if PACKETVER >= 20150226
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
Expand All @@ -3085,6 +3135,10 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
uint32 location;
uint16 viewSprite;
#endif
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
uint8 refine;
uint8 grade;
#endif
} __attribute__((packed));

struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC {
Expand Down Expand Up @@ -3999,7 +4053,7 @@ struct PACKET_ZC_REFINE_ADD_ITEM_SUB {

struct PACKET_ZC_REFINE_ADD_ITEM {
int16 packetType;
int16 packtLength;
int16 packetLength;
int16 itemIndex;
int8 blacksmithBlessing;
struct PACKET_ZC_REFINE_ADD_ITEM_SUB req[];
Expand Down

0 comments on commit b77a228

Please sign in to comment.