Updated Hercules packets (#8368)
This commit is contained in:
parent
9e2b0b4a4d
commit
79935a75c9
@ -4972,9 +4972,9 @@ void clif_storageclose( map_session_data& sd ){
|
|||||||
/// Notifies clients in an area of a player's souls.
|
/// Notifies clients in an area of a player's souls.
|
||||||
/// 01d0 <id>.L <amount>.W (ZC_SPIRITS)
|
/// 01d0 <id>.L <amount>.W (ZC_SPIRITS)
|
||||||
/// 01e1 <id>.L <amount>.W (ZC_SPIRITS2)
|
/// 01e1 <id>.L <amount>.W (ZC_SPIRITS2)
|
||||||
/// 0b73 <id>.L <amount>.W
|
/// 0b73 <id>.L <amount>.W (ZC_SOULENERGY)
|
||||||
void clif_soulball( map_session_data *sd, struct block_list* target, enum send_target send_target ){
|
void clif_soulball( map_session_data *sd, struct block_list* target, enum send_target send_target ){
|
||||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
#if PACKETVER_MAIN_NUM >= 20200414 || PACKETVER_RE_NUM >= 20200723 || PACKETVER_ZERO_NUM >= 20200506
|
||||||
struct PACKET_ZC_SOULENERGY p = {};
|
struct PACKET_ZC_SOULENERGY p = {};
|
||||||
|
|
||||||
p.PacketType = HEADER_ZC_SOULENERGY;
|
p.PacketType = HEADER_ZC_SOULENERGY;
|
||||||
@ -19597,15 +19597,15 @@ void clif_autoshadowspell_list( map_session_data& sd ){
|
|||||||
|
|
||||||
p->packetType = HEADER_ZC_SKILL_SELECT_REQUEST;
|
p->packetType = HEADER_ZC_SKILL_SELECT_REQUEST;
|
||||||
p->packetLength = sizeof( *p );
|
p->packetLength = sizeof( *p );
|
||||||
p->why = 1; // enum PACKET_ZC_SKILL_SELECT_REQUEST::enumWHY::WHY_SC_AUTOSHADOWSPELL = 0x1
|
p->flag = 1; // enum PACKET_ZC_SKILL_SELECT_REQUEST::enumWHY::WHY_SC_AUTOSHADOWSPELL = 0x1
|
||||||
|
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
for( size_t i = 0; i < MAX_SKILL; i++ ){
|
for( size_t i = 0; i < MAX_SKILL; i++ ){
|
||||||
if( sd.status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd.status.skill[i].id > 0 &&
|
if( sd.status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd.status.skill[i].id > 0 &&
|
||||||
skill_get_inf2(sd.status.skill[i].id, INF2_ISAUTOSHADOWSPELL))
|
skill_get_inf2(sd.status.skill[i].id, INF2_ISAUTOSHADOWSPELL))
|
||||||
{
|
{
|
||||||
p->skills[count].skill_id = sd.status.skill[i].id;
|
p->skillIds[count] = sd.status.skill[i].id;
|
||||||
p->packetLength += sizeof( p->skills[0] );
|
p->packetLength += sizeof( p->skillIds[0] );
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -19651,19 +19651,18 @@ int clif_skill_itemlistwindow( map_session_data *sd, uint16 skill_id, uint16 ski
|
|||||||
/*==========================================
|
/*==========================================
|
||||||
* Select a skill into a given list (used by SA_AUTOSPELL/SC_AUTOSHADOWSPELL)
|
* Select a skill into a given list (used by SA_AUTOSPELL/SC_AUTOSHADOWSPELL)
|
||||||
* 0443 <type>.L <skill_id>.W (CZ_SKILL_SELECT_RESPONSE)
|
* 0443 <type>.L <skill_id>.W (CZ_SKILL_SELECT_RESPONSE)
|
||||||
* RFIFOL(fd,2) - type (currently not used)
|
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
void clif_parse_SkillSelectMenu(int fd, map_session_data *sd) {
|
void clif_parse_SkillSelectMenu(int fd, map_session_data *sd) {
|
||||||
|
#if PACKETVER >= 20081210
|
||||||
if( sd == nullptr ){
|
if( sd == nullptr ){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
|
PACKET_CZ_SKILL_SELECT_RESPONSE* p = reinterpret_cast<PACKET_CZ_SKILL_SELECT_RESPONSE*>( RFIFOP( fd, 0 ) );
|
||||||
//int type = RFIFOL(fd,info->pos[0]); //WHY_LOWERVER_COMPATIBILITY = 0x0, WHY_SC_AUTOSHADOWSPELL = 0x1,
|
|
||||||
|
|
||||||
if (sd->menuskill_id == SA_AUTOSPELL) {
|
if (sd->menuskill_id == SA_AUTOSPELL) {
|
||||||
sd->state.workinprogress = WIP_DISABLE_NONE;
|
sd->state.workinprogress = WIP_DISABLE_NONE;
|
||||||
skill_autospell(sd, RFIFOW(fd, info->pos[1]));
|
skill_autospell(sd, p->selectedSkillId);
|
||||||
} else if (sd->menuskill_id == SC_AUTOSHADOWSPELL) {
|
} else if (sd->menuskill_id == SC_AUTOSHADOWSPELL) {
|
||||||
if (pc_istrading(sd)) {
|
if (pc_istrading(sd)) {
|
||||||
clif_skill_fail( *sd, sd->ud.skill_id );
|
clif_skill_fail( *sd, sd->ud.skill_id );
|
||||||
@ -19671,11 +19670,12 @@ void clif_parse_SkillSelectMenu(int fd, map_session_data *sd) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
skill_select_menu(*sd, RFIFOW(fd, info->pos[1]));
|
skill_select_menu(*sd, p->selectedSkillId);
|
||||||
} else
|
} else
|
||||||
return;
|
return;
|
||||||
|
|
||||||
clif_menuskill_clear(sd);
|
clif_menuskill_clear(sd);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1260,7 +1260,7 @@
|
|||||||
|
|
||||||
// 2008-12-10aSakexe
|
// 2008-12-10aSakexe
|
||||||
#if PACKETVER >= 20081210
|
#if PACKETVER >= 20081210
|
||||||
parseable_packet(0x0443,8,clif_parse_SkillSelectMenu,2,6);
|
parseable_packet( HEADER_CZ_SKILL_SELECT_RESPONSE, sizeof( PACKET_CZ_SKILL_SELECT_RESPONSE ), clif_parse_SkillSelectMenu, 0 );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 2009-01-14aSakexe
|
// 2009-01-14aSakexe
|
||||||
|
|||||||
@ -209,13 +209,6 @@ struct PACKET_ZC_BROADCAST2{
|
|||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
DEFINE_PACKET_HEADER(ZC_BROADCAST2, 0x1c3)
|
DEFINE_PACKET_HEADER(ZC_BROADCAST2, 0x1c3)
|
||||||
|
|
||||||
struct PACKET_ZC_SOULENERGY{
|
|
||||||
int16 PacketType;
|
|
||||||
uint32 AID;
|
|
||||||
uint16 num;
|
|
||||||
} __attribute__((packed));
|
|
||||||
DEFINE_PACKET_HEADER(ZC_SOULENERGY, 0xb73)
|
|
||||||
|
|
||||||
struct PACKET_ZC_ENTRY_QUEUE_INIT {
|
struct PACKET_ZC_ENTRY_QUEUE_INIT {
|
||||||
int16 packetType;
|
int16 packetType;
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
@ -474,17 +467,6 @@ struct PACKET_ZC_INVENTORY_TAB{
|
|||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
DEFINE_PACKET_HEADER(ZC_INVENTORY_TAB, 0x908)
|
DEFINE_PACKET_HEADER(ZC_INVENTORY_TAB, 0x908)
|
||||||
|
|
||||||
struct PACKET_ZC_SKILL_SELECT_REQUEST_sub{
|
|
||||||
int16 skill_id;
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
struct PACKET_ZC_SKILL_SELECT_REQUEST{
|
|
||||||
int16 packetType;
|
|
||||||
int16 packetLength;
|
|
||||||
int32 why;
|
|
||||||
struct PACKET_ZC_SKILL_SELECT_REQUEST_sub skills[];
|
|
||||||
} __attribute__((packed));
|
|
||||||
|
|
||||||
struct PACKET_CZ_REQ_OPEN_BANKING{
|
struct PACKET_CZ_REQ_OPEN_BANKING{
|
||||||
int16 packetType;
|
int16 packetType;
|
||||||
uint32 AID;
|
uint32 AID;
|
||||||
@ -1076,7 +1058,7 @@ DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b)
|
|||||||
DEFINE_PACKET_HEADER(ZC_PC_CASH_POINT_ITEMLIST, 0x287)
|
DEFINE_PACKET_HEADER(ZC_PC_CASH_POINT_ITEMLIST, 0x287)
|
||||||
DEFINE_PACKET_HEADER(ZC_CASH_TIME_COUNTER, 0x298)
|
DEFINE_PACKET_HEADER(ZC_CASH_TIME_COUNTER, 0x298)
|
||||||
DEFINE_PACKET_HEADER(ZC_CASH_ITEM_DELETE, 0x299)
|
DEFINE_PACKET_HEADER(ZC_CASH_ITEM_DELETE, 0x299)
|
||||||
DEFINE_PACKET_HEADER(ZC_SKILL_SELECT_REQUEST, 0x442)
|
DEFINE_PACKET_HEADER(CZ_SKILL_SELECT_RESPONSE, 0x443)
|
||||||
DEFINE_PACKET_HEADER(ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER, 0x824)
|
DEFINE_PACKET_HEADER(ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER, 0x824)
|
||||||
DEFINE_PACKET_HEADER(CZ_SSILIST_ITEM_CLICK, 0x83c)
|
DEFINE_PACKET_HEADER(CZ_SSILIST_ITEM_CLICK, 0x83c)
|
||||||
DEFINE_PACKET_HEADER(ZC_ACK_SCHEDULER_CASHITEM, 0x8ca)
|
DEFINE_PACKET_HEADER(ZC_ACK_SCHEDULER_CASHITEM, 0x8ca)
|
||||||
|
|||||||
@ -3297,6 +3297,20 @@ struct PACKET_ZC_MAKINGARROW_LIST {
|
|||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
DEFINE_PACKET_HEADER(ZC_MAKINGARROW_LIST, 0x01ad);
|
DEFINE_PACKET_HEADER(ZC_MAKINGARROW_LIST, 0x01ad);
|
||||||
|
|
||||||
|
struct PACKET_ZC_SKILL_SELECT_REQUEST {
|
||||||
|
int16 packetType;
|
||||||
|
int16 packetLength;
|
||||||
|
int32 flag; //< 0 = old code compatibility; 1 = Auto Shadow Spell; same value is received in CZ_SKILL_SELECT_RESPONSE
|
||||||
|
int16 skillIds[];
|
||||||
|
} __attribute__((packed));
|
||||||
|
DEFINE_PACKET_HEADER(ZC_SKILL_SELECT_REQUEST, 0x0442);
|
||||||
|
|
||||||
|
struct PACKET_CZ_SKILL_SELECT_RESPONSE {
|
||||||
|
int16 packetType;
|
||||||
|
int32 flag; //< currently unused, matches ZC_SKILL_SELECT_REQUEST.flag
|
||||||
|
int16 selectedSkillId;
|
||||||
|
} __attribute__((packed));
|
||||||
|
|
||||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 || PACKETVER_ZERO_NUM >= 20221024
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 || PACKETVER_ZERO_NUM >= 20221024
|
||||||
#define REPAIRITEM_INFO REPAIRITEM_INFO2
|
#define REPAIRITEM_INFO REPAIRITEM_INFO2
|
||||||
struct PACKET_ZC_REPAIRITEMLIST {
|
struct PACKET_ZC_REPAIRITEMLIST {
|
||||||
@ -4752,7 +4766,7 @@ struct PACKET_ZC_NOTIFY_SKILL {
|
|||||||
int8 action;
|
int8 action;
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
DEFINE_PACKET_HEADER(ZC_NOTIFY_SKILL, 0x01de);
|
DEFINE_PACKET_HEADER(ZC_NOTIFY_SKILL, 0x01de);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if PACKETVER_MAIN_NUM >= 20130731 || PACKETVER_RE_NUM >= 20130724 || defined(PACKETVER_ZERO)
|
#if PACKETVER_MAIN_NUM >= 20130731 || PACKETVER_RE_NUM >= 20130724 || defined(PACKETVER_ZERO)
|
||||||
struct PACKET_ZC_USE_SKILL {
|
struct PACKET_ZC_USE_SKILL {
|
||||||
@ -5548,6 +5562,22 @@ struct PACKET_ZC_SPIRITS {
|
|||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
DEFINE_PACKET_HEADER(ZC_SPIRITS, 0x01d0)
|
DEFINE_PACKET_HEADER(ZC_SPIRITS, 0x01d0)
|
||||||
|
|
||||||
|
struct PACKET_ZC_SPIRITS2 {
|
||||||
|
int16 PacketType;
|
||||||
|
uint32 AID;
|
||||||
|
int16 num;
|
||||||
|
} __attribute__((packed));
|
||||||
|
DEFINE_PACKET_HEADER(ZC_SPIRITS2, 0x01e1)
|
||||||
|
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200414 || PACKETVER_RE_NUM >= 20200723 || PACKETVER_ZERO_NUM >= 20200506
|
||||||
|
struct PACKET_ZC_SOULENERGY {
|
||||||
|
int16 PacketType;
|
||||||
|
uint32 AID;
|
||||||
|
uint16 num;
|
||||||
|
} __attribute__((packed));
|
||||||
|
DEFINE_PACKET_HEADER(ZC_SOULENERGY, 0x0b73)
|
||||||
|
#endif
|
||||||
|
|
||||||
struct PACKET_ZC_SAY_DIALOG {
|
struct PACKET_ZC_SAY_DIALOG {
|
||||||
int16 PacketType;
|
int16 PacketType;
|
||||||
int16 PacketLength;
|
int16 PacketLength;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user