Updated Hercules packets (#8368)

This commit is contained in:
Lemongrass3110 2024-05-26 17:31:23 +02:00 committed by GitHub
parent 9e2b0b4a4d
commit 79935a75c9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 43 additions and 31 deletions

View File

@ -4972,9 +4972,9 @@ void clif_storageclose( map_session_data& sd ){
/// Notifies clients in an area of a player's souls.
/// 01d0 <id>.L <amount>.W (ZC_SPIRITS)
/// 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 ){
#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 = {};
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->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;
for( size_t i = 0; i < MAX_SKILL; i++ ){
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))
{
p->skills[count].skill_id = sd.status.skill[i].id;
p->packetLength += sizeof( p->skills[0] );
p->skillIds[count] = sd.status.skill[i].id;
p->packetLength += sizeof( p->skillIds[0] );
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)
* 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) {
#if PACKETVER >= 20081210
if( sd == nullptr ){
return;
}
struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
//int type = RFIFOL(fd,info->pos[0]); //WHY_LOWERVER_COMPATIBILITY = 0x0, WHY_SC_AUTOSHADOWSPELL = 0x1,
PACKET_CZ_SKILL_SELECT_RESPONSE* p = reinterpret_cast<PACKET_CZ_SKILL_SELECT_RESPONSE*>( RFIFOP( fd, 0 ) );
if (sd->menuskill_id == SA_AUTOSPELL) {
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) {
if (pc_istrading(sd)) {
clif_skill_fail( *sd, sd->ud.skill_id );
@ -19671,11 +19670,12 @@ void clif_parse_SkillSelectMenu(int fd, map_session_data *sd) {
return;
}
skill_select_menu(*sd, RFIFOW(fd, info->pos[1]));
skill_select_menu(*sd, p->selectedSkillId);
} else
return;
clif_menuskill_clear(sd);
#endif
}

View File

@ -1260,7 +1260,7 @@
// 2008-12-10aSakexe
#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
// 2009-01-14aSakexe

View File

@ -209,13 +209,6 @@ struct PACKET_ZC_BROADCAST2{
} __attribute__((packed));
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 {
int16 packetType;
} __attribute__((packed));
@ -474,17 +467,6 @@ struct PACKET_ZC_INVENTORY_TAB{
} __attribute__((packed));
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{
int16 packetType;
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_CASH_TIME_COUNTER, 0x298)
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(CZ_SSILIST_ITEM_CLICK, 0x83c)
DEFINE_PACKET_HEADER(ZC_ACK_SCHEDULER_CASHITEM, 0x8ca)

View File

@ -3297,6 +3297,20 @@ struct PACKET_ZC_MAKINGARROW_LIST {
} __attribute__((packed));
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
#define REPAIRITEM_INFO REPAIRITEM_INFO2
struct PACKET_ZC_REPAIRITEMLIST {
@ -5548,6 +5562,22 @@ struct PACKET_ZC_SPIRITS {
} __attribute__((packed));
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 {
int16 PacketType;
int16 PacketLength;