Fixed some packets for 2022 clients (#7276)

Migrates a few packets from FIFO to structs.
Migrates friendlist to struct and fixed invalid version check.
Added a new guild related packet that does nothing for the time being.
Synced to latest Hercules' packet definitions.
Fixed name of ZC_SOULENERGY.

Thanks to @Dia and @Pokye.
This commit is contained in:
Lemongrass3110 2022-09-22 01:50:24 +02:00 committed by GitHub
parent 5ea44e7c0e
commit fa4666d7af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 826 additions and 740 deletions

View File

@ -7026,7 +7026,7 @@ ACMD_FUNC(sound)
if(strstr(sound_file, ".wav") == NULL) if(strstr(sound_file, ".wav") == NULL)
strcat(sound_file, ".wav"); strcat(sound_file, ".wav");
clif_soundeffectall(&sd->bl, sound_file, 0, AREA); clif_soundeffect( sd->bl, sound_file, 0, AREA );
return 0; return 0;
} }

View File

@ -507,7 +507,7 @@ bool bg_team_join(int bg_id, struct map_session_data *sd, bool is_queue)
for (const auto &pl_sd : bgteam->members) { for (const auto &pl_sd : bgteam->members) {
if (pl_sd.sd != sd) if (pl_sd.sd != sd)
clif_hpmeter_single(sd->fd, pl_sd.sd->bl.id, pl_sd.sd->battle_status.hp, pl_sd.sd->battle_status.max_hp); clif_hpmeter_single( *sd, pl_sd.sd->bl.id, pl_sd.sd->battle_status.hp, pl_sd.sd->battle_status.max_hp );
} }
clif_bg_hp(sd); clif_bg_hp(sd);

View File

@ -249,7 +249,7 @@ int8 buyingstore_create( struct map_session_data* sd, int zenylimit, unsigned ch
StringBuf_Destroy(&buf); StringBuf_Destroy(&buf);
clif_buyingstore_myitemlist(sd); clif_buyingstore_myitemlist(sd);
clif_buyingstore_entry(sd); clif_buyingstore_entry( *sd );
idb_put(buyingstore_db, sd->status.char_id, sd); idb_put(buyingstore_db, sd->status.char_id, sd);
return 0; return 0;
@ -276,7 +276,7 @@ void buyingstore_close(struct map_session_data* sd) {
idb_remove(buyingstore_db, sd->status.char_id); idb_remove(buyingstore_db, sd->status.char_id);
// notify other players // notify other players
clif_buyingstore_disappear_entry(sd); clif_buyingstore_disappear_entry( *sd );
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -638,8 +638,8 @@ void clif_selllist(struct map_session_data *sd); //self
void clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd); void clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd);
void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd); void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd);
void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd); void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd);
void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes); //self void clif_scriptmes( struct map_session_data& sd, uint32 npcid, const char *mes );
void clif_scriptnext(struct map_session_data *sd,int npcid); //self void clif_scriptnext( struct map_session_data& sd, uint32 npcid );
void clif_scriptclose(struct map_session_data *sd, int npcid); //self void clif_scriptclose(struct map_session_data *sd, int npcid); //self
void clif_scriptclear(struct map_session_data *sd, int npcid); //self void clif_scriptclear(struct map_session_data *sd, int npcid); //self
void clif_scriptmenu(struct map_session_data* sd, int npcid, const char* mes); //self void clif_scriptmenu(struct map_session_data* sd, int npcid, const char* mes); //self
@ -690,9 +690,8 @@ void clif_talkiebox(struct block_list* bl, const char* talkie);
void clif_wedding_effect(struct block_list *bl); void clif_wedding_effect(struct block_list *bl);
void clif_divorced(struct map_session_data* sd, const char* name); void clif_divorced(struct map_session_data* sd, const char* name);
void clif_callpartner(struct map_session_data *sd); void clif_callpartner(struct map_session_data *sd);
void clif_playBGM(struct map_session_data* sd, const char* name); void clif_playBGM( struct map_session_data& sd, const char* name );
void clif_soundeffect(struct map_session_data* sd, struct block_list* bl, const char* name, int type); void clif_soundeffect( struct block_list& bl, const char* name, int type, enum send_target target );
void clif_soundeffectall(struct block_list* bl, const char* name, int type, enum send_target coverage);
void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, t_tick tick); void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, t_tick tick);
void clif_parse_LoadEndAck(int fd,struct map_session_data *sd); void clif_parse_LoadEndAck(int fd,struct map_session_data *sd);
void clif_hotkeys_send(struct map_session_data *sd, int tab); void clif_hotkeys_send(struct map_session_data *sd, int tab);
@ -804,7 +803,7 @@ void clif_changed_dir(struct block_list *bl, enum send_target target);
// vending // vending
void clif_openvendingreq(struct map_session_data* sd, int num); void clif_openvendingreq(struct map_session_data* sd, int num);
void clif_showvendingboard(struct block_list* bl, const char* message, int fd); void clif_showvendingboard( struct map_session_data& sd, enum send_target target = AREA_WOS, struct block_list* tbl = nullptr );
void clif_closevendingboard(struct block_list* bl, int fd); void clif_closevendingboard(struct block_list* bl, int fd);
void clif_vendinglist( struct map_session_data* sd, struct map_session_data* vsd ); void clif_vendinglist( struct map_session_data* sd, struct map_session_data* vsd );
void clif_buyvending(struct map_session_data* sd, int index, int amount, int fail); void clif_buyvending(struct map_session_data* sd, int index, int amount, int fail);
@ -814,28 +813,28 @@ void clif_vendingreport(struct map_session_data* sd, int index, int amount, uint
void clif_movetoattack(struct map_session_data *sd,struct block_list *bl); void clif_movetoattack(struct map_session_data *sd,struct block_list *bl);
// party // party
void clif_party_created(struct map_session_data *sd,int result); void clif_party_created( struct map_session_data& sd, int result );
void clif_party_member_info(struct party_data *p, struct map_session_data *sd); void clif_party_member_info( struct party_data& party, struct map_session_data& sd );
void clif_party_info(struct party_data* p, struct map_session_data *sd); void clif_party_info( struct party_data& party, struct map_session_data *sd = nullptr );
void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd); void clif_party_invite( struct map_session_data& sd, struct map_session_data& tsd );
void clif_party_invite_reply(struct map_session_data* sd, const char* nick, enum e_party_invite_reply reply); void clif_party_invite_reply( struct map_session_data& sd, const char* nick, enum e_party_invite_reply reply );
void clif_party_option(struct party_data *p,struct map_session_data *sd,int flag); void clif_party_option(struct party_data *p,struct map_session_data *sd,int flag);
void clif_party_withdraw(struct map_session_data *sd, uint32 account_id, const char* name, enum e_party_member_withdraw result, enum send_target target); void clif_party_withdraw( struct map_session_data& sd, uint32 account_id, const char* name, enum e_party_member_withdraw result, enum send_target target );
void clif_party_message(struct party_data* p, uint32 account_id, const char* mes, int len); void clif_party_message( struct party_data& party, uint32 account_id, const char* mes, int len );
void clif_party_xy(struct map_session_data *sd); void clif_party_xy( struct map_session_data& sd );
void clif_party_xy_single(int fd, struct map_session_data *sd); void clif_party_xy_single( struct map_session_data& sd, struct map_session_data& tsd );
void clif_party_hp(struct map_session_data *sd); void clif_party_hp( struct map_session_data& sd );
void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp); void clif_hpmeter_single( struct map_session_data& sd, uint32 id, uint32 hp, uint32 maxhp );
void clif_party_job_and_level(struct map_session_data *sd); void clif_party_job_and_level( struct map_session_data& sd );
void clif_party_dead( struct map_session_data *sd ); void clif_party_dead( struct map_session_data& sd );
// guild // guild
void clif_guild_created(struct map_session_data *sd,int flag); void clif_guild_created(struct map_session_data *sd,int flag);
void clif_guild_belonginfo(struct map_session_data *sd); void clif_guild_belonginfo( struct map_session_data& sd );
void clif_guild_masterormember(struct map_session_data *sd); void clif_guild_masterormember(struct map_session_data *sd);
void clif_guild_basicinfo(struct map_session_data *sd); void clif_guild_basicinfo( struct map_session_data& sd );
void clif_guild_allianceinfo(struct map_session_data *sd); void clif_guild_allianceinfo(struct map_session_data *sd);
void clif_guild_memberlist(struct map_session_data *sd); void clif_guild_memberlist( struct map_session_data& sd );
void clif_guild_skillinfo(struct map_session_data* sd); void clif_guild_skillinfo(struct map_session_data* sd);
void clif_guild_send_onlineinfo(struct map_session_data *sd); //[LuzZza] void clif_guild_send_onlineinfo(struct map_session_data *sd); //[LuzZza]
void clif_guild_memberlogin_notice(struct guild *g,int idx,int flag); void clif_guild_memberlogin_notice(struct guild *g,int idx,int flag);
@ -914,7 +913,7 @@ void clif_pet_autofeed_status(struct map_session_data* sd, bool force);
//friends list //friends list
int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap); int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap);
void clif_friendslist_send(struct map_session_data *sd); void clif_friendslist_send( struct map_session_data& sd );
void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_data *f_sd, int type); void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_data *f_sd, int type);
void clif_weather(int16 m); // [Valaris] void clif_weather(int16 m); // [Valaris]
@ -1052,10 +1051,8 @@ void clif_showdigit(struct map_session_data* sd, unsigned char type, int value);
void clif_buyingstore_open(struct map_session_data* sd); void clif_buyingstore_open(struct map_session_data* sd);
void clif_buyingstore_open_failed(struct map_session_data* sd, unsigned short result, unsigned int weight); void clif_buyingstore_open_failed(struct map_session_data* sd, unsigned short result, unsigned int weight);
void clif_buyingstore_myitemlist(struct map_session_data* sd); void clif_buyingstore_myitemlist(struct map_session_data* sd);
void clif_buyingstore_entry(struct map_session_data* sd); void clif_buyingstore_entry( struct map_session_data& sd, struct block_list* tbl = nullptr );
void clif_buyingstore_entry_single(struct map_session_data* sd, struct map_session_data* pl_sd); void clif_buyingstore_disappear_entry( struct map_session_data& sd, struct block_list* tbl = nullptr );
void clif_buyingstore_disappear_entry(struct map_session_data* sd);
void clif_buyingstore_disappear_entry_single(struct map_session_data* sd, struct map_session_data* pl_sd);
void clif_buyingstore_itemlist(struct map_session_data* sd, struct map_session_data* pl_sd); void clif_buyingstore_itemlist(struct map_session_data* sd, struct map_session_data* pl_sd);
void clif_buyingstore_trade_failed_buyer(struct map_session_data* sd, short result); void clif_buyingstore_trade_failed_buyer(struct map_session_data* sd, short result);
void clif_buyingstore_update_item(struct map_session_data* sd, t_itemid nameid, unsigned short amount, uint32 char_id, int zeny); void clif_buyingstore_update_item(struct map_session_data* sd, t_itemid nameid, unsigned short amount, uint32 char_id, int zeny);

View File

@ -88,8 +88,6 @@
packet(0x00b1,8); packet(0x00b1,8);
parseable_packet(0x00b2,3,clif_parse_Restart,2); parseable_packet(0x00b2,3,clif_parse_Restart,2);
packet(0x00b3,3); packet(0x00b3,3);
packet(0x00b4,-1);
packet(0x00b5,6);
packet(0x00b6,6); packet(0x00b6,6);
packet(0x00b7,-1); packet(0x00b7,-1);
parseable_packet(0x00b8,7,clif_parse_NpcSelectMenu,2,6); parseable_packet(0x00b8,7,clif_parse_NpcSelectMenu,2,6);
@ -156,20 +154,15 @@
parseable_packet(0x00f7,2,clif_parse_CloseKafra,0); parseable_packet(0x00f7,2,clif_parse_CloseKafra,0);
packet(0x00f8,2); packet(0x00f8,2);
parseable_packet(0x00f9,26,clif_parse_CreateParty,2); parseable_packet(0x00f9,26,clif_parse_CreateParty,2);
packet(0x00fa,3);
packet(0x00fb,-1); packet(0x00fb,-1);
parseable_packet(0x00fc,6,clif_parse_PartyInvite,2); parseable_packet(0x00fc,6,clif_parse_PartyInvite,2);
packet(0x00fd,27); packet(0x00fd,27);
packet(0x00fe,30);
parseable_packet(0x00ff,10,clif_parse_ReplyPartyInvite,2,6); parseable_packet(0x00ff,10,clif_parse_ReplyPartyInvite,2,6);
parseable_packet(0x0100,2,clif_parse_LeaveParty,0); parseable_packet(0x0100,2,clif_parse_LeaveParty,0);
packet(0x0101,6); packet(0x0101,6);
parseable_packet(0x0102,6,clif_parse_PartyChangeOption,2); parseable_packet(0x0102,6,clif_parse_PartyChangeOption,2);
parseable_packet(0x0103,30,clif_parse_RemovePartyMember,2,6); parseable_packet(0x0103,30,clif_parse_RemovePartyMember,2,6);
packet(0x0104,79); packet(0x0104,79);
packet(0x0105,31);
packet(0x0106,10);
packet(0x0107,10);
parseable_packet(0x0108,-1,clif_parse_PartyMessage,2,4); parseable_packet(0x0108,-1,clif_parse_PartyMessage,2,4);
packet(0x0109,-1); packet(0x0109,-1);
packet( HEADER_ZC_MVP_GETTING_ITEM, sizeof( struct PACKET_ZC_MVP_GETTING_ITEM ) ); packet( HEADER_ZC_MVP_GETTING_ITEM, sizeof( struct PACKET_ZC_MVP_GETTING_ITEM ) );
@ -199,7 +192,7 @@
packet( cartlistequipType, -1 ); packet( cartlistequipType, -1 );
packet( cartlistnormalType, -1 ); packet( cartlistnormalType, -1 );
packet(0x0125,8); packet(0x0125,8);
parseable_packet(0x0126,8,clif_parse_PutItemToCart,2,4); parseable_packet( HEADER_CZ_MOVE_ITEM_FROM_BODY_TO_CART, sizeof( PACKET_CZ_MOVE_ITEM_FROM_BODY_TO_CART ), clif_parse_PutItemToCart, 0 );
parseable_packet(0x0127,8,clif_parse_GetItemFromCart,2,4); parseable_packet(0x0127,8,clif_parse_GetItemFromCart,2,4);
parseable_packet(0x0128,8,clif_parse_MoveFromKafraToCart,2,4); parseable_packet(0x0128,8,clif_parse_MoveFromKafraToCart,2,4);
parseable_packet(0x0129,8,clif_parse_MoveToKafraFromCart,2,4); parseable_packet(0x0129,8,clif_parse_MoveToKafraFromCart,2,4);
@ -210,9 +203,8 @@
parseable_packet(0x012e,2,clif_parse_CloseVending,0); parseable_packet(0x012e,2,clif_parse_CloseVending,0);
parseable_packet(0x012f,-1,clif_parse_OpenVending,2,4,0,84); parseable_packet(0x012f,-1,clif_parse_OpenVending,2,4,0,84);
parseable_packet(0x0130,6,clif_parse_VendingListReq,2); parseable_packet(0x0130,6,clif_parse_VendingListReq,2);
packet(0x0131,86);
packet(0x0132,6); packet(0x0132,6);
parseable_packet(0x0134,-1,clif_parse_PurchaseReq,2,4,8); parseable_packet( HEADER_CZ_PC_PURCHASE_ITEMLIST_FROMMC, -1, clif_parse_PurchaseReq, 0 );
packet(0x0135,7); packet(0x0135,7);
packet(0x0137,6); packet(0x0137,6);
packet(0x0138,3); packet(0x0138,3);
@ -367,7 +359,6 @@
packet(0x01d0,8); packet(0x01d0,8);
packet(0x01d1,14); packet(0x01d1,14);
packet(0x01d2,10); packet(0x01d2,10);
packet(0x01d3,35);
packet(0x01d4,6); packet(0x01d4,6);
parseable_packet(0x01d5,-1,clif_parse_NpcStringInput,2,4,8); parseable_packet(0x01d5,-1,clif_parse_NpcStringInput,2,4,8);
packet(0x01d6,4); packet(0x01d6,4);
@ -389,7 +380,6 @@
packet(0x01e6,26); packet(0x01e6,26);
parseable_packet(0x01e7,2,clif_parse_NoviceDoriDori,0); parseable_packet(0x01e7,2,clif_parse_NoviceDoriDori,0);
parseable_packet(0x01e8,28,clif_parse_CreateParty2,2,26,27); parseable_packet(0x01e8,28,clif_parse_CreateParty2,2,26,27);
packet(0x01e9,81);
packet(0x01ea,6); packet(0x01ea,6);
packet(0x01eb,10); packet(0x01eb,10);
packet(0x01ec,26); packet(0x01ec,26);
@ -1084,10 +1074,8 @@
packet(0x02c2,-1); packet(0x02c2,-1);
parseable_packet(0x02c4,26,clif_parse_PartyInvite2,2); parseable_packet(0x02c4,26,clif_parse_PartyInvite2,2);
packet(0x02c5,30); packet(0x02c5,30);
packet(0x02c6,30);
parseable_packet(0x02c7,7,clif_parse_ReplyPartyInvite2,2,6); parseable_packet(0x02c7,7,clif_parse_ReplyPartyInvite2,2,6);
parseable_packet(0x02c8,3,clif_parse_PartyTick,2); parseable_packet(0x02c8,3,clif_parse_PartyTick,2);
packet(0x02c9,3);
packet(0x02ca,3); packet(0x02ca,3);
packet(0x02cb,20); packet(0x02cb,20);
packet(0x02cc,4); packet(0x02cc,4);
@ -1595,15 +1583,9 @@
#if PACKETVER >= 20091201 #if PACKETVER >= 20091201
packet(0x07fc,10); packet(0x07fc,10);
ack_packet(ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN,0x07fd,-1,0); ack_packet(ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN,0x07fd,-1,0);
packet(0x07fe,26);
//packet(0x07ff,-1); //packet(0x07ff,-1);
#endif #endif
// 2009-12-15aRagexeRE
#if PACKETVER >= 20091215
//packet(0x0801,-1);
#endif
// 2009-12-22aRagexeRE // 2009-12-22aRagexeRE
#if PACKETVER >= 2009122 #if PACKETVER >= 2009122
parseable_packet(0x0802,18,clif_parse_PartyBookingRegisterReq,2,4,6); // Booking System parseable_packet(0x0802,18,clif_parse_PartyBookingRegisterReq,2,4,6); // Booking System
@ -1632,14 +1614,13 @@
// 2010-01-05aRagexeRE // 2010-01-05aRagexeRE
#if PACKETVER >= 20100105 #if PACKETVER >= 20100105
parseable_packet(0x0801,-1,clif_parse_PurchaseReq2,2,4,8,12); parseable_packet( HEADER_CZ_PC_PURCHASE_ITEMLIST_FROMMC2, -1, clif_parse_PurchaseReq2, 0 );
#endif #endif
// 2010-01-26aRagexeRE // 2010-01-26aRagexeRE
#if PACKETVER >= 20100126 #if PACKETVER >= 20100126
//packet(0x080C,2); //packet(0x080C,2);
//packet(0x080D,3); //packet(0x080D,3);
packet(0x080E,14);
#endif #endif
// 2010-02-09aRagexeRE // 2010-02-09aRagexeRE
@ -1653,7 +1634,6 @@
parseable_packet(0x0811,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); parseable_packet(0x0811,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
//packet(0x0812,86); //packet(0x0812,86);
//packet(0x0813,6); //packet(0x0813,6);
//packet(0x0814,6);
//packet(0x0815,-1); //packet(0x0815,-1);
//packet(0x0817,-1); //packet(0x0817,-1);
//packet(0x0818,6); //packet(0x0818,6);
@ -1663,9 +1643,7 @@
// 2010-03-09aRagexeRE // 2010-03-09aRagexeRE
#if PACKETVER >= 20100309 #if PACKETVER >= 20100309
packet(0x0813,-1); packet(0x0813,-1);
//packet(0x0814,2);
//packet(0x0815,6); //packet(0x0815,6);
packet(0x0816,6);
packet(0x0818,-1); packet(0x0818,-1);
//packet(0x0819,10); //packet(0x0819,10);
//packet(0x081A,4); //packet(0x081A,4);
@ -1702,7 +1680,6 @@
// 2010-04-20aRagexeRE // 2010-04-20aRagexeRE
#if PACKETVER >= 20100420 #if PACKETVER >= 20100420
packet(0x0812,8); packet(0x0812,8);
packet(0x0814,86);
parseable_packet(0x0815,2,clif_parse_ReqCloseBuyingStore,0); parseable_packet(0x0815,2,clif_parse_ReqCloseBuyingStore,0);
parseable_packet(0x0817,6,clif_parse_ReqClickBuyingStore,2); parseable_packet(0x0817,6,clif_parse_ReqClickBuyingStore,2);
parseable_packet(0x0819,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); parseable_packet(0x0819,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
@ -2331,10 +2308,7 @@
// 2017-05-02dRagexeRE // 2017-05-02dRagexeRE
#if PACKETVER >= 20170502 #if PACKETVER >= 20170502
packet(0x0A43,85);
packet(0x0A44,-1); packet(0x0A44,-1);
packet(0x0AB2,7);
packet(0x0ABD,10);
packet(0x0A98,10); packet(0x0A98,10);
parseable_packet(0x0A99,4,clif_parse_equipswitch_remove,2,4); parseable_packet(0x0A99,4,clif_parse_equipswitch_remove,2,4);
parseable_packet(0x0ACE,4,clif_parse_equipswitch_request_single,0); parseable_packet(0x0ACE,4,clif_parse_equipswitch_request_single,0);
@ -2465,6 +2439,10 @@
parseable_packet( HEADER_CZ_CLOSE_UI_ENCHANT, sizeof( struct PACKET_CZ_CLOSE_UI_ENCHANT ), clif_parse_enchantwindow_close, 0 ); parseable_packet( HEADER_CZ_CLOSE_UI_ENCHANT, sizeof( struct PACKET_CZ_CLOSE_UI_ENCHANT ), clif_parse_enchantwindow_close, 0 );
#endif #endif
#if PACKETVER_MAIN_NUM >= 20220216
parseable_packet( HEADER_CZ_APPROXIMATE_ACTOR, sizeof( struct PACKET_CZ_APPROXIMATE_ACTOR ), clif_parse_dull, 0 );
#endif
#if PACKETVER_MAIN_NUM >= 20220216 || PACKETVER_ZERO_NUM >= 20220316 #if PACKETVER_MAIN_NUM >= 20220216 || PACKETVER_ZERO_NUM >= 20220316
parseable_packet( HEADER_CZ_USE_PACKAGEITEM, sizeof( struct PACKET_CZ_USE_PACKAGEITEM ), clif_parse_itempackage_select, 0 ); parseable_packet( HEADER_CZ_USE_PACKAGEITEM, sizeof( struct PACKET_CZ_USE_PACKAGEITEM ), clif_parse_itempackage_select, 0 );
#endif #endif

View File

@ -284,7 +284,7 @@ int elemental_data_received(s_elemental *ele, bool flag) {
clif_spawn(&ed->bl); clif_spawn(&ed->bl);
clif_elemental_info(sd); clif_elemental_info(sd);
clif_elemental_updatestatus(sd,SP_HP); clif_elemental_updatestatus(sd,SP_HP);
clif_hpmeter_single(sd->fd,ed->bl.id,ed->battle_status.hp,ed->battle_status.max_hp); clif_hpmeter_single( *sd, ed->bl.id, ed->battle_status.hp, ed->battle_status.max_hp );
clif_elemental_updatestatus(sd,SP_SP); clif_elemental_updatestatus(sd,SP_SP);
} }

View File

@ -692,19 +692,19 @@ int guild_recv_info(struct guild *sg) {
if (before.guild_lv != g->guild_lv || bm != m || if (before.guild_lv != g->guild_lv || bm != m ||
before.max_member != g->max_member) { before.max_member != g->max_member) {
clif_guild_basicinfo(sd); //Submit basic information clif_guild_basicinfo( *sd ); //Submit basic information
clif_guild_emblem(sd, g); //Submit emblem clif_guild_emblem(sd, g); //Submit emblem
} }
if (bm != m) { //Send members information if (bm != m) { //Send members information
clif_guild_memberlist(g->member[i].sd); clif_guild_memberlist( *sd );
} }
if (before.skill_point != g->skill_point) if (before.skill_point != g->skill_point)
clif_guild_skillinfo(sd); //Submit information skills clif_guild_skillinfo(sd); //Submit information skills
if (guild_new) { // Send information and affiliation if unsent if (guild_new) { // Send information and affiliation if unsent
clif_guild_belonginfo(sd); clif_guild_belonginfo( *sd );
clif_guild_notice(sd); clif_guild_notice(sd);
sd->guild_emblem_id = g->emblem_id; sd->guild_emblem_id = g->emblem_id;
} }
@ -894,7 +894,7 @@ int guild_member_added(int guild_id,uint32 account_id,uint32 char_id,int flag) {
sd->guild_emblem_id = g->emblem_id; sd->guild_emblem_id = g->emblem_id;
sd->guild = g; sd->guild = g;
//Packets which were sent in the previous 'guild_sent' implementation. //Packets which were sent in the previous 'guild_sent' implementation.
clif_guild_belonginfo(sd); clif_guild_belonginfo( *sd );
clif_guild_notice(sd); clif_guild_notice(sd);
//TODO: send new emblem info to others //TODO: send new emblem info to others
@ -1011,7 +1011,7 @@ int guild_member_withdraw(int guild_id, uint32 account_id, uint32 char_id, int f
// remove member from guild // remove member from guild
memset(&g->member[i],0,sizeof(struct guild_member)); memset(&g->member[i],0,sizeof(struct guild_member));
clif_guild_memberlist(online_member_sd); clif_guild_memberlist( *online_member_sd );
// update char, if online // update char, if online
if(sd != NULL && sd->status.guild_id == guild_id) { if(sd != NULL && sd->status.guild_id == guild_id) {
@ -1118,7 +1118,7 @@ int guild_send_memberinfoshort(struct map_session_data *sd,int online) { // clea
} }
if(sd->state.connect_new) { //Note that this works because it is invoked in parse_LoadEndAck before connect_new is cleared. if(sd->state.connect_new) { //Note that this works because it is invoked in parse_LoadEndAck before connect_new is cleared.
clif_guild_belonginfo(sd); clif_guild_belonginfo( *sd );
sd->guild_emblem_id = g->emblem_id; sd->guild_emblem_id = g->emblem_id;
} }
return 0; return 0;
@ -1359,7 +1359,7 @@ int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data) {
for(i=0;i<g->max_member;i++){ for(i=0;i<g->max_member;i++){
if((sd=g->member[i].sd)!=NULL){ if((sd=g->member[i].sd)!=NULL){
sd->guild_emblem_id=emblem_id; sd->guild_emblem_id=emblem_id;
clif_guild_belonginfo(sd); clif_guild_belonginfo( *sd );
clif_guild_emblem(sd,g); clif_guild_emblem(sd,g);
clif_guild_emblem_area(&sd->bl); clif_guild_emblem_area(&sd->bl);
} }
@ -2009,10 +2009,10 @@ int guild_gm_changed(int guild_id, uint32 account_id, uint32 char_id, time_t tim
// announce the change to all guild members // announce the change to all guild members
for( i = 0; i < g->max_member; i++ ) { for( i = 0; i < g->max_member; i++ ) {
if( g->member[i].sd && g->member[i].sd->fd ) { if( g->member[i].sd ){
clif_guild_basicinfo(g->member[i].sd); clif_guild_basicinfo( *g->member[i].sd );
clif_guild_memberlist(g->member[i].sd); clif_guild_memberlist( *g->member[i].sd );
clif_guild_belonginfo(g->member[i].sd); // Update clientside guildmaster flag clif_guild_belonginfo( *g->member[i].sd ); // Update clientside guildmaster flag
} }
} }

View File

@ -2113,18 +2113,18 @@ void run_tomb(struct map_session_data* sd, struct npc_data* nd)
strftime(time, sizeof(time), "%H:%M", localtime(&nd->u.tomb.kill_time)); strftime(time, sizeof(time), "%H:%M", localtime(&nd->u.tomb.kill_time));
// TODO: Find exact color? // TODO: Find exact color?
snprintf(buffer, sizeof(buffer), msg_txt(sd,657), nd->u.tomb.md->db->name.c_str()); snprintf( buffer, sizeof( buffer ), msg_txt( sd, 657 ), nd->u.tomb.md->db->name.c_str() ); // [ ^EE0000%s^000000 ]
clif_scriptmes(sd, nd->bl.id, buffer); clif_scriptmes( *sd, nd->bl.id, buffer );
clif_scriptmes(sd, nd->bl.id, msg_txt(sd,658)); clif_scriptmes( *sd, nd->bl.id, msg_txt( sd, 658 ) ); // Has met its demise
snprintf(buffer, sizeof(buffer), msg_txt(sd,659), time); snprintf( buffer, sizeof( buffer ), msg_txt( sd, 659 ), time ); // Time of death : ^EE0000%s^000000
clif_scriptmes(sd, nd->bl.id, buffer); clif_scriptmes( *sd, nd->bl.id, buffer );
clif_scriptmes(sd, nd->bl.id, msg_txt(sd,660)); clif_scriptmes( *sd, nd->bl.id, msg_txt( sd, 660 ) ); // Defeated by
snprintf(buffer, sizeof(buffer), msg_txt(sd,661), nd->u.tomb.killer_name[0] ? nd->u.tomb.killer_name : "Unknown"); snprintf( buffer, sizeof( buffer ), msg_txt( sd, 661 ), nd->u.tomb.killer_name[0] ? nd->u.tomb.killer_name : "Unknown" ); // [^EE0000%s^000000]
clif_scriptmes(sd, nd->bl.id, buffer); clif_scriptmes( *sd, nd->bl.id, buffer );
clif_scriptclose(sd, nd->bl.id); clif_scriptclose(sd, nd->bl.id);
} }

View File

@ -207,16 +207,10 @@ struct PACKET_ZC_BROADCAST2{
char message[]; char message[];
} __attribute__((packed)); } __attribute__((packed));
struct PACKET_ZC_SPIRITS{ struct PACKET_ZC_SOULENERGY{
int16 packetType; int16 PacketType;
uint32 GID; uint32 AID;
uint16 amount; uint16 num;
} __attribute__((packed));
struct PACKET_ZC_UNCONFIRMED_SPIRITS3{
int16 packetType;
uint32 GID;
uint16 amount;
} __attribute__((packed)); } __attribute__((packed));
struct PACKET_ZC_ENTRY_QUEUE_INIT { struct PACKET_ZC_ENTRY_QUEUE_INIT {
@ -336,6 +330,20 @@ struct PACKET_CZ_USE_PACKAGEITEM{
uint32 BoxIndex; uint32 BoxIndex;
} __attribute__((packed)); } __attribute__((packed));
struct PACKET_ZC_FRIENDS_LIST_sub{
uint32 AID;
uint32 CID;
#if !( PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328 ) || PACKETVER >= 20200902
char name[NAME_LENGTH];
#endif
} __attribute__((packed));
struct PACKET_ZC_FRIENDS_LIST{
int16 packetType;
int16 PacketLength;
struct PACKET_ZC_FRIENDS_LIST_sub friends[];
} __attribute__((packed));
// NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 ) #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
#pragma pack( pop ) #pragma pack( pop )
@ -346,12 +354,10 @@ DEFINE_PACKET_HEADER(ZC_BROADCAST, 0x9a)
DEFINE_PACKET_HEADER(ZC_ITEM_ENTRY, 0x9d) DEFINE_PACKET_HEADER(ZC_ITEM_ENTRY, 0x9d)
DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_RESULT, 0xca) DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_RESULT, 0xca)
DEFINE_PACKET_HEADER(ZC_MVP_GETTING_ITEM, 0x10a) DEFINE_PACKET_HEADER(ZC_MVP_GETTING_ITEM, 0x10a)
DEFINE_PACKET_HEADER(ZC_ACK_TOUSESKILL, 0x110)
DEFINE_PACKET_HEADER(CZ_REQMAKINGITEM, 0x18e) DEFINE_PACKET_HEADER(CZ_REQMAKINGITEM, 0x18e)
DEFINE_PACKET_HEADER(ZC_ACK_REQMAKINGITEM, 0x18f) DEFINE_PACKET_HEADER(ZC_ACK_REQMAKINGITEM, 0x18f)
DEFINE_PACKET_HEADER(CZ_REQ_MAKINGARROW, 0x1ae) DEFINE_PACKET_HEADER(CZ_REQ_MAKINGARROW, 0x1ae)
DEFINE_PACKET_HEADER(ZC_BROADCAST2, 0x1c3) DEFINE_PACKET_HEADER(ZC_BROADCAST2, 0x1c3)
DEFINE_PACKET_HEADER(ZC_SPIRITS, 0x1d0)
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0xb66) DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0xb66)
#else #else
@ -362,6 +368,7 @@ DEFINE_PACKET_HEADER(ZC_SPIRITS, 0x1d0)
#else #else
DEFINE_PACKET_HEADER(ZC_CHANGE_GUILD, 0x1b4) DEFINE_PACKET_HEADER(ZC_CHANGE_GUILD, 0x1b4)
#endif #endif
DEFINE_PACKET_HEADER(ZC_FRIENDS_LIST, 0x201)
DEFINE_PACKET_HEADER(ZC_NOTIFY_WEAPONITEMLIST, 0x221) DEFINE_PACKET_HEADER(ZC_NOTIFY_WEAPONITEMLIST, 0x221)
DEFINE_PACKET_HEADER(ZC_ACK_WEAPONREFINE, 0x223) DEFINE_PACKET_HEADER(ZC_ACK_WEAPONREFINE, 0x223)
DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b) DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b)
@ -382,12 +389,13 @@ DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM2, 0xa3d)
DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE, 0xa46) DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE, 0xa46)
DEFINE_PACKET_HEADER(ZC_STYLE_CHANGE_RES, 0xa47) DEFINE_PACKET_HEADER(ZC_STYLE_CHANGE_RES, 0xa47)
DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CLOSE, 0xa48) DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CLOSE, 0xa48)
DEFINE_PACKET_HEADER(ZC_GROUP_ISALIVE, 0xab2)
DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE2, 0xafc) DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE2, 0xafc)
DEFINE_PACKET_HEADER(ZC_REMOVE_EFFECT, 0x0b0d) DEFINE_PACKET_HEADER(ZC_REMOVE_EFFECT, 0x0b0d)
DEFINE_PACKET_HEADER(CZ_UNCONFIRMED_TSTATUS_UP, 0x0b24) DEFINE_PACKET_HEADER(CZ_UNCONFIRMED_TSTATUS_UP, 0x0b24)
DEFINE_PACKET_HEADER(CZ_GUILD_EMBLEM_CHANGE2, 0x0b46) DEFINE_PACKET_HEADER(CZ_GUILD_EMBLEM_CHANGE2, 0x0b46)
DEFINE_PACKET_HEADER(ZC_TARGET_SPIRITS, 0xb68) DEFINE_PACKET_HEADER(ZC_TARGET_SPIRITS, 0xb68)
DEFINE_PACKET_HEADER(ZC_UNCONFIRMED_SPIRITS3, 0xb73) DEFINE_PACKET_HEADER(ZC_SOULENERGY, 0xb73)
DEFINE_PACKET_HEADER(CZ_UNCONFIRMED_RODEX_RETURN, 0xb98) DEFINE_PACKET_HEADER(CZ_UNCONFIRMED_RODEX_RETURN, 0xb98)
DEFINE_PACKET_HEADER(ZC_SUMMON_HP_INIT, 0xb6b) DEFINE_PACKET_HEADER(ZC_SUMMON_HP_INIT, 0xb6b)
DEFINE_PACKET_HEADER(ZC_SUMMON_HP_UPDATE, 0xb6c) DEFINE_PACKET_HEADER(ZC_SUMMON_HP_UPDATE, 0xb6c)

View File

@ -212,6 +212,14 @@ enum packet_headers {
#else #else
cartlistequipType = 0x122, cartlistequipType = 0x122,
#endif #endif
#if PACKETVER < 20100105
vendinglistType = 0x133,
#elif !(PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723)
vendinglistType = 0x800,
#else
vendinglistType = 0xb3d,
#endif
openvendingType = 0x136,
#if PACKETVER >= 20120925 #if PACKETVER >= 20120925
equipitemType = 0x998, equipitemType = 0x998,
#else #else
@ -573,7 +581,7 @@ struct PACKET_ZC_ITEM_PICKUP_ACK {
#endif #endif
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
uint8 refiningLevel; uint8 refiningLevel;
uint8 enchantgrade; uint8 grade;
#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 #endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
} __attribute__((packed)); } __attribute__((packed));
@ -1011,8 +1019,8 @@ struct packet_script_clear {
uint32 NpcID; uint32 NpcID;
} __attribute__((packed)); } __attribute__((packed));
/* made possible thanks to Yommy!! */ #if PACKETVER_MAIN_NUM >= 20220518 || PACKETVER_ZERO_NUM >= 20220518
struct packet_package_item_announce { struct PACKET_ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN_item {
int16 PacketType; int16 PacketType;
int16 PacketLength; int16 PacketLength;
uint8 type; uint8 type;
@ -1023,13 +1031,42 @@ struct packet_package_item_announce {
#endif #endif
int8 len; int8 len;
char Name[NAME_LENGTH]; char Name[NAME_LENGTH];
int8 unknown; // probably unused int8 boxItemID_len;
#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
uint32 BoxItemID;
#else
uint16 BoxItemID;
#endif
int8 refineLevel_len;
#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
uint32 refineLevel;
#else
uint16 refineLevel;
#endif
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN_item, 0x0bba)
#elif PACKETVER >= 20091201
/* made possible thanks to Yommy!! */
struct PACKET_ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN_item {
int16 PacketType;
int16 PacketLength;
uint8 type;
#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
uint32 ItemID;
#else
uint16 ItemID;
#endif
int8 len;
char Name[NAME_LENGTH];
int8 boxItemID_len;
#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114
uint32 BoxItemID; uint32 BoxItemID;
#else #else
uint16 BoxItemID; uint16 BoxItemID;
#endif #endif
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN_item, 0x07fd)
#endif
/* made possible thanks to Yommy!! */ /* made possible thanks to Yommy!! */
struct packet_item_drop_announce { struct packet_item_drop_announce {
@ -1724,7 +1761,7 @@ struct PACKET_ZC_ACK_ADD_ITEM_RODEX {
uint8 favorite; uint8 favorite;
uint32 location; uint32 location;
int8 refiningLevel; int8 refiningLevel;
uint8 enchantgrade; int8 grade;
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ACK_ADD_ITEM_RODEX, 0x0b3f); DEFINE_PACKET_HEADER(ZC_ACK_ADD_ITEM_RODEX, 0x0b3f);
#elif PACKETVER >= 20141119 #elif PACKETVER >= 20141119
@ -1904,7 +1941,7 @@ struct PACKET_ZC_ACK_READ_RODEX_SUB {
uint16 bindOnEquip; uint16 bindOnEquip;
struct ItemOptions option_data[MAX_ITEM_OPTIONS]; struct ItemOptions option_data[MAX_ITEM_OPTIONS];
int8 refiningLevel; int8 refiningLevel;
int8 enchantgrade; int8 grade;
} __attribute__((packed)); } __attribute__((packed));
struct PACKET_ZC_ACK_READ_RODEX { struct PACKET_ZC_ACK_READ_RODEX {
@ -2428,6 +2465,7 @@ struct PACKET_ZC_ACK_TOUSESKILL {
uint8 flag; uint8 flag;
uint8 cause; uint8 cause;
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ACK_TOUSESKILL, 0x0110)
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
struct PACKET_ZC_ADD_ITEM_TO_CART { struct PACKET_ZC_ADD_ITEM_TO_CART {
@ -2445,7 +2483,7 @@ struct PACKET_ZC_ADD_ITEM_TO_CART {
struct EQUIPSLOTINFO slot; struct EQUIPSLOTINFO slot;
struct ItemOptions option_data[MAX_ITEM_OPTIONS]; struct ItemOptions option_data[MAX_ITEM_OPTIONS];
uint8 refine; uint8 refine;
uint8 enchantgrade; uint8 grade;
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ADD_ITEM_TO_CART, 0x0b45); DEFINE_PACKET_HEADER(ZC_ADD_ITEM_TO_CART, 0x0b45);
#elif PACKETVER_MAIN_NUM >= 20140813 || PACKETVER_RE_NUM >= 20140402 || defined(PACKETVER_ZERO) #elif PACKETVER_MAIN_NUM >= 20140813 || PACKETVER_RE_NUM >= 20140402 || defined(PACKETVER_ZERO)
@ -2603,7 +2641,7 @@ struct PACKET_ZC_ADD_EXCHANGE_ITEM {
#endif // PACKETVER_MAIN_NUM >= 20161102 || PACKETVER_RE_NUM >= 20161026 || defined(PACKETVER_ZERO) #endif // PACKETVER_MAIN_NUM >= 20161102 || PACKETVER_RE_NUM >= 20161026 || defined(PACKETVER_ZERO)
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
uint8 refine; uint8 refine;
uint8 enchantgrade; uint8 grade;
#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 #endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
} __attribute__((packed)); } __attribute__((packed));
@ -2654,7 +2692,7 @@ struct PACKET_ZC_ITEM_PICKUP_PARTY {
uint16 location; uint16 location;
uint8 itemType; uint8 itemType;
uint8 refine; uint8 refine;
uint8 enchantgrade; uint8 grade;
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0x0b67); DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0x0b67);
#elif PACKETVER >= 20070731 #elif PACKETVER >= 20070731
@ -2876,7 +2914,7 @@ struct REPAIRITEM_INFO2 {
#endif #endif
struct EQUIPSLOTINFO slot; // unused? struct EQUIPSLOTINFO slot; // unused?
uint8 refine; // unused? uint8 refine; // unused?
uint8 enchantgrade; // unused? uint8 grade; // unused?
} __attribute__((packed)); } __attribute__((packed));
#elif PACKETVER >= 20191106 #elif PACKETVER >= 20191106
struct REPAIRITEM_INFO2 { struct REPAIRITEM_INFO2 {
@ -2974,7 +3012,7 @@ struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub {
struct EQUIPSLOTINFO slot; struct EQUIPSLOTINFO slot;
struct ItemOptions option_data[MAX_ITEM_OPTIONS]; struct ItemOptions option_data[MAX_ITEM_OPTIONS];
uint8 refine; uint8 refine;
uint8 enchantgrade; uint8 grade;
} __attribute__((packed)); } __attribute__((packed));
struct PACKET_ZC_PC_PURCHASE_MYITEMLIST { struct PACKET_ZC_PC_PURCHASE_MYITEMLIST {
int16 packetType; int16 packetType;
@ -3120,7 +3158,7 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
uint32 location; uint32 location;
uint16 viewSprite; uint16 viewSprite;
uint8 refine; uint8 refine;
uint8 enchantgrade; uint8 grade;
} __attribute__((packed)); } __attribute__((packed));
struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC { struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC {
@ -3158,7 +3196,7 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
#endif #endif
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723
uint8 refine; uint8 refine;
uint8 enchantgrade; uint8 grade;
#endif #endif
} __attribute__((packed)); } __attribute__((packed));
@ -3406,7 +3444,7 @@ struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub {
struct EQUIPSLOTINFO slot; struct EQUIPSLOTINFO slot;
struct ItemOptions option_data[MAX_ITEM_OPTIONS]; struct ItemOptions option_data[MAX_ITEM_OPTIONS];
uint8 refine; uint8 refine;
uint8 enchantgrade; uint8 grade;
} __attribute__((packed)); } __attribute__((packed));
struct PACKET_ZC_SEARCH_STORE_INFO_ACK { struct PACKET_ZC_SEARCH_STORE_INFO_ACK {
@ -3568,11 +3606,14 @@ struct PACKET_ZC_GUILD_POSITION {
char position[]; char position[];
} __attribute__((packed)); } __attribute__((packed));
struct PACKET_ZC_INVENTORY_MOVE_FAILED { #if PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO)
struct PACKET_ZC_MOVE_ITEM_FAILED {
int16 packetType; int16 packetType;
int16 index; int16 itemIndex;
int16 unknown; int16 itemCount;
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_MOVE_ITEM_FAILED, 0x0aa7);
#endif // PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO)
#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) #if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO)
#define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD3 #define PACKET_ZC_ACK_BAN_GUILD PACKET_ZC_ACK_BAN_GUILD3
@ -3677,7 +3718,7 @@ struct PACKET_ZC_CHANGE_ITEM_OPTION {
struct EQUIPSLOTINFO slot; struct EQUIPSLOTINFO slot;
struct ItemOptions option_data[MAX_ITEM_OPTIONS]; struct ItemOptions option_data[MAX_ITEM_OPTIONS];
uint8 refiningLevel; uint8 refiningLevel;
uint8 enchantgrade; uint8 grade;
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_CHANGE_ITEM_OPTION, 0x0b43); DEFINE_PACKET_HEADER(ZC_CHANGE_ITEM_OPTION, 0x0b43);
#elif PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 #elif PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024
@ -5345,7 +5386,7 @@ DEFINE_PACKET_HEADER(CZ_GRADE_ENCHANT_CLOSE_UI, 0x0b5c);
struct PACKET_ZC_GRADE_ENCHANT_ACK { struct PACKET_ZC_GRADE_ENCHANT_ACK {
int16 PacketType; int16 PacketType;
int16 index; int16 index;
int16 enchantgrade; int16 grade;
int result; int result;
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_GRADE_ENCHANT_ACK, 0x0b5d); DEFINE_PACKET_HEADER(ZC_GRADE_ENCHANT_ACK, 0x0b5d);
@ -5356,7 +5397,7 @@ struct PACKET_ZC_GRADE_ENCHANT_BROADCAST_RESULT {
int16 packetType; int16 packetType;
char name[NAME_LENGTH]; char name[NAME_LENGTH];
uint32 itemId; uint32 itemId;
int16 enchantgrade; int16 grade;
int8 status; int8 status;
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_GRADE_ENCHANT_BROADCAST_RESULT, 0x0b5e); DEFINE_PACKET_HEADER(ZC_GRADE_ENCHANT_BROADCAST_RESULT, 0x0b5e);
@ -5425,16 +5466,15 @@ DEFINE_PACKET_HEADER(ZC_UPDATE_GDID, 0x016c)
#endif // PACKETVER_MAIN_NUM >= 20220216 #endif // PACKETVER_MAIN_NUM >= 20220216
#if PACKETVER_MAIN_NUM >= 20220216 #if PACKETVER_MAIN_NUM >= 20220216
struct PACKET_CZ_SEE_GUILD_MEMBERS { struct PACKET_CZ_APPROXIMATE_ACTOR {
int16 PacketType; int16 PacketType;
uint32 masterGID; uint32 masterGID;
uint16 unused1; uint16 unused1;
uint8 unused2; uint8 unused2;
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(CZ_SEE_GUILD_MEMBERS, 0x0bb0) DEFINE_PACKET_HEADER(CZ_APPROXIMATE_ACTOR, 0x0bb0)
#endif // PACKETVER_MAIN_NUM >= 20220216 #endif // PACKETVER_MAIN_NUM >= 20220216
struct PACKET_CZ_CONTACTNPC { struct PACKET_CZ_CONTACTNPC {
int16 PacketType; int16 PacketType;
uint32 AID; uint32 AID;
@ -5486,6 +5526,166 @@ struct PACKET_ZC_CHANGESTATE_PET {
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_CHANGESTATE_PET, 0x01a4) DEFINE_PACKET_HEADER(ZC_CHANGESTATE_PET, 0x01a4)
struct PACKET_ZC_SPIRITS {
int16 PacketType;
uint32 AID;
int16 num;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_SPIRITS, 0x01d0)
struct PACKET_ZC_SAY_DIALOG {
int16 PacketType;
int16 PacketLength;
uint32 NpcID;
char message[];
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_SAY_DIALOG, 0x00b4)
#if PACKETVER_MAIN_NUM >= 20220504
struct PACKET_ZC_SAY_DIALOG2 {
int16 PacketType;
int16 PacketLength;
uint32 NpcID;
uint8 type;
char message[];
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_SAY_DIALOG2, 0x0972)
#else // PACKETVER_MAIN_NUM >= 20220504
struct PACKET_ZC_SAY_DIALOG2 {
int16 PacketType;
int16 PacketLength;
uint32 NpcID;
char message[];
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_SAY_DIALOG2, 0x00b4)
#endif // PACKETVER_MAIN_NUM >= 20220504
struct PACKET_ZC_WAIT_DIALOG {
int16 PacketType;
uint32 NpcID;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_WAIT_DIALOG, 0x00b5)
#if PACKETVER_MAIN_NUM >= 20220504
struct PACKET_ZC_WAIT_DIALOG2 {
int16 PacketType;
uint32 NpcID;
uint8 type;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_WAIT_DIALOG2, 0x0973)
#else // PACKETVER_MAIN_NUM >= 20220504
struct PACKET_ZC_WAIT_DIALOG2 {
int16 PacketType;
uint32 NpcID;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_WAIT_DIALOG2, 0x00b5)
#endif // PACKETVER_MAIN_NUM >= 20220504
#if PACKETVER_MAIN_NUM >= 20220504
struct PACKET_ZC_DIALOG_WINDOW_SIZE {
int16 PacketType;
int height;
int width;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_DIALOG_WINDOW_SIZE, 0x0ba2)
#endif // PACKETVER_MAIN_NUM >= 20220504
#if PACKETVER_MAIN_NUM >= 20220504
struct PACKET_ZC_DIALOG_WINDOW_POS {
int16 PacketType;
int x;
int y;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_DIALOG_WINDOW_POS, 0x0ba3)
#endif // PACKETVER_MAIN_NUM >= 20220504
#if PACKETVER_MAIN_NUM >= 20220504
struct PACKET_ZC_DIALOG_WINDOW_POS2 {
int16 PacketType;
int x;
int y;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_DIALOG_WINDOW_POS2, 0x0bb5)
#endif // PACKETVER_MAIN_NUM >= 20220504
#if PACKETVER_MAIN_NUM >= 20220504
struct PACKET_ZC_PLAY_NPC_BGM {
int16 PacketType;
int16 PacketLength;
uint8 playType;
char bgm[];
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_PLAY_NPC_BGM, 0x0b8c)
#elif PACKETVER >= 20091201
struct PACKET_ZC_PLAY_NPC_BGM {
int16 PacketType;
char bgm[NAME_LENGTH];
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_PLAY_NPC_BGM, 0x07fe)
#endif // PACKETVER >= 20091201
struct PACKET_CZ_MOVE_ITEM_FROM_BODY_TO_CART {
int16 PacketType;
int16 index;
int count;
} __attribute__((packed));
DEFINE_PACKET_HEADER(CZ_MOVE_ITEM_FROM_BODY_TO_CART, 0x0126)
struct PACKET_ZC_SOUND {
int16 PacketType;
char name[NAME_LENGTH];
uint8 act;
uint32 term;
uint32 AID;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_SOUND, 0x01d3)
#if PACKETVER >= 20100420
struct PACKET_ZC_BUYING_STORE_ENTRY {
int16 packetType;
uint32 makerAID;
char storeName[MESSAGE_SIZE];
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_BUYING_STORE_ENTRY, 0x0814);
#endif
struct PACKET_ZC_STORE_ENTRY {
int16 packetType;
uint32 makerAID;
char storeName[MESSAGE_SIZE];
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_STORE_ENTRY, 0x0131);
struct CZ_PURCHASE_ITEM_FROMMC {
int16 count;
int16 index;
} __attribute__((packed));
struct PACKET_CZ_PC_PURCHASE_ITEMLIST_FROMMC {
int16 packetType;
int16 packetLength;
uint32 AID;
struct CZ_PURCHASE_ITEM_FROMMC list[];
} __attribute__((packed));
DEFINE_PACKET_HEADER(CZ_PC_PURCHASE_ITEMLIST_FROMMC, 0x0134);
struct PACKET_CZ_PC_PURCHASE_ITEMLIST_FROMMC2 {
int16 packetType;
int16 packetLength;
uint32 AID;
uint32 UniqueID;
struct CZ_PURCHASE_ITEM_FROMMC list[];
} __attribute__((packed));
DEFINE_PACKET_HEADER(CZ_PC_PURCHASE_ITEMLIST_FROMMC2, 0x0801);
#if PACKETVER >= 20100309
struct PACKET_ZC_DISAPPEAR_BUYING_STORE_ENTRY {
int16 packetType;
uint32 makerAID;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_DISAPPEAR_BUYING_STORE_ENTRY, 0x0816);
#endif
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop) #pragma pack(pop)
#endif // not NetBSD < 6 / Solaris #endif // not NetBSD < 6 / Solaris

View File

@ -153,7 +153,7 @@ int party_create(struct map_session_data *sd,char *name,int item,int item2)
return 0; return 0;
if( sd->status.party_id > 0 || sd->party_joining || sd->party_creating ) { // already associated with a party if( sd->status.party_id > 0 || sd->party_joining || sd->party_creating ) { // already associated with a party
clif_party_created(sd,2); clif_party_created( *sd, 2 );
return -2; return -2;
} }
@ -179,7 +179,7 @@ void party_created(uint32 account_id,uint32 char_id,int fail,int party_id,char *
if( !fail ) { if( !fail ) {
sd->status.party_id = party_id; sd->status.party_id = party_id;
clif_party_created(sd,0); // Success message clif_party_created( *sd, 0 ); // Success message
achievement_update_objective(sd, AG_PARTY, 1, 1); achievement_update_objective(sd, AG_PARTY, 1, 1);
@ -189,7 +189,7 @@ void party_created(uint32 account_id,uint32 char_id,int fail,int party_id,char *
party_create_byscript = 0; party_create_byscript = 0;
} }
} else } else
clif_party_created(sd,1); // "party name already exists" clif_party_created( *sd, 1 ); // "party name already exists"
} }
int party_request_info(int party_id, uint32 char_id) int party_request_info(int party_id, uint32 char_id)
@ -355,12 +355,13 @@ int party_recv_info(struct party* sp, uint32 char_id)
continue;// not online continue;// not online
clif_name_area(&sd->bl); //Update other people's display. [Skotlex] clif_name_area(&sd->bl); //Update other people's display. [Skotlex]
clif_party_member_info(p,sd); clif_party_member_info( *p, *sd );
// Only send this on party creation, otherwise it will be sent by party_send_movemap [Lemongrass] // Only send this on party creation, otherwise it will be sent by party_send_movemap [Lemongrass]
if( sd->party_creating ){ if( sd->party_creating ){
clif_party_option(p,sd,0x100); clif_party_option(p,sd,0x100);
} }
clif_party_info(p,NULL);
clif_party_info( *p );
if (p->instance_id > 0) if (p->instance_id > 0)
instance_reqinfo(sd, p->instance_id); instance_reqinfo(sd, p->instance_id);
@ -368,7 +369,7 @@ int party_recv_info(struct party* sp, uint32 char_id)
// If a player was renamed, make sure to resend the party information // If a player was renamed, make sure to resend the party information
if( rename ){ if( rename ){
clif_party_info(p,NULL); clif_party_info( *p );
} }
if( char_id != 0 ) { // requester if( char_id != 0 ) { // requester
@ -402,7 +403,7 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
if (tsd && battle_config.block_account_in_same_party) { if (tsd && battle_config.block_account_in_same_party) {
ARR_FIND(0, MAX_PARTY, i, p->party.member[i].account_id == tsd->status.account_id); ARR_FIND(0, MAX_PARTY, i, p->party.member[i].account_id == tsd->status.account_id);
if (i < MAX_PARTY) { if (i < MAX_PARTY) {
clif_party_invite_reply(sd, tsd->status.name, PARTY_REPLY_DUAL); clif_party_invite_reply( *sd, tsd->status.name, PARTY_REPLY_DUAL );
return 0; return 0;
} }
} }
@ -411,7 +412,7 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
ARR_FIND(0, MAX_PARTY, i, p->party.member[i].account_id == 0); ARR_FIND(0, MAX_PARTY, i, p->party.member[i].account_id == 0);
if( i == MAX_PARTY ) { if( i == MAX_PARTY ) {
clif_party_invite_reply(sd, (tsd?tsd->status.name:""), PARTY_REPLY_FULL); clif_party_invite_reply( *sd, ( tsd ? tsd->status.name : "" ), PARTY_REPLY_FULL );
return 0; return 0;
} }
@ -422,32 +423,32 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
} }
if( tsd == NULL) { if( tsd == NULL) {
clif_party_invite_reply(sd, "", PARTY_REPLY_OFFLINE); clif_party_invite_reply( *sd, "", PARTY_REPLY_OFFLINE );
return 0; return 0;
} }
if(!battle_config.invite_request_check) { if(!battle_config.invite_request_check) {
if (tsd->guild_invite>0 || tsd->trade_partner || tsd->adopt_invite) { if (tsd->guild_invite>0 || tsd->trade_partner || tsd->adopt_invite) {
clif_party_invite_reply(sd,tsd->status.name,PARTY_REPLY_JOIN_OTHER_PARTY); clif_party_invite_reply( *sd, tsd->status.name, PARTY_REPLY_JOIN_OTHER_PARTY );
return 0; return 0;
} }
} }
if (!tsd->fd) { //You can't invite someone who has already disconnected. if (!tsd->fd) { //You can't invite someone who has already disconnected.
clif_party_invite_reply(sd,tsd->status.name,PARTY_REPLY_REJECTED); clif_party_invite_reply( *sd, tsd->status.name, PARTY_REPLY_REJECTED );
return 0; return 0;
} }
if( tsd->status.party_id > 0 || tsd->party_invite > 0 ) if( tsd->status.party_id > 0 || tsd->party_invite > 0 )
{// already associated with a party {// already associated with a party
clif_party_invite_reply(sd,tsd->status.name,PARTY_REPLY_JOIN_OTHER_PARTY); clif_party_invite_reply( *sd, tsd->status.name, PARTY_REPLY_JOIN_OTHER_PARTY );
return 0; return 0;
} }
tsd->party_invite=sd->status.party_id; tsd->party_invite=sd->status.party_id;
tsd->party_invite_account=sd->status.account_id; tsd->party_invite_account=sd->status.account_id;
clif_party_invite(sd,tsd); clif_party_invite( *sd, *tsd );
return 1; return 1;
} }
@ -482,7 +483,7 @@ int party_reply_invite(struct map_session_data *sd,int party_id,int flag)
sd->party_invite_account = 0; sd->party_invite_account = 0;
if( tsd != NULL ) if( tsd != NULL )
clif_party_invite_reply(tsd,sd->status.name,PARTY_REPLY_REJECTED); clif_party_invite_reply( *tsd, sd->status.name, PARTY_REPLY_REJECTED );
} }
return 0; return 0;
@ -538,28 +539,28 @@ int party_member_added(int party_id,uint32 account_id,uint32 char_id, int flag)
if( flag ) { // failed if( flag ) { // failed
if( sd2 != NULL ) if( sd2 != NULL )
clif_party_invite_reply(sd2,sd->status.name,PARTY_REPLY_FULL); clif_party_invite_reply( *sd2, sd->status.name, PARTY_REPLY_FULL );
return 0; return 0;
} }
sd->status.party_id = party_id; sd->status.party_id = party_id;
clif_party_member_info(p,sd); clif_party_member_info( *p, *sd );
clif_party_option(p,sd,0x100); clif_party_option(p,sd,0x100);
clif_party_info(p,sd); clif_party_info( *p, sd );
if( sd2 != NULL ) if( sd2 != NULL )
clif_party_invite_reply(sd2,sd->status.name,PARTY_REPLY_ACCEPTED); clif_party_invite_reply( *sd2, sd->status.name, PARTY_REPLY_ACCEPTED );
for( i = 0; i < ARRAYLENGTH(p->data); ++i ) { // hp of the other party members for( i = 0; i < ARRAYLENGTH(p->data); ++i ) { // hp of the other party members
sd2 = p->data[i].sd; sd2 = p->data[i].sd;
if( sd2 && sd2->status.account_id != account_id && sd2->status.char_id != char_id ) if( sd2 && sd2->status.account_id != account_id && sd2->status.char_id != char_id )
clif_hpmeter_single(sd->fd, sd2->bl.id, sd2->battle_status.hp, sd2->battle_status.max_hp); clif_hpmeter_single( *sd, sd2->bl.id, sd2->battle_status.hp, sd2->battle_status.max_hp );
} }
clif_party_hp(sd); clif_party_hp( *sd );
clif_party_xy(sd); clif_party_xy( *sd );
clif_name_area(&sd->bl); //Update char name's display [Skotlex] clif_name_area(&sd->bl); //Update char name's display [Skotlex]
if (p->instance_id > 0) if (p->instance_id > 0)
@ -647,8 +648,13 @@ int party_member_withdraw(int party_id, uint32 account_id, uint32 char_id, char
struct party_data* p = party_search(party_id); struct party_data* p = party_search(party_id);
if( p ) { if( p ) {
struct map_session_data* party_sd = party_getavailablesd( p );
if( party_sd != nullptr ){
clif_party_withdraw( *party_sd, account_id, name, type, PARTY );
}
int i; int i;
clif_party_withdraw(party_getavailablesd(p), account_id, name, type, PARTY);
ARR_FIND( 0, MAX_PARTY, i, p->party.member[i].account_id == account_id && p->party.member[i].char_id == char_id ); ARR_FIND( 0, MAX_PARTY, i, p->party.member[i].account_id == account_id && p->party.member[i].char_id == char_id );
if( i < MAX_PARTY ) { if( i < MAX_PARTY ) {
memset(&p->party.member[i], 0, sizeof(p->party.member[0])); memset(&p->party.member[i], 0, sizeof(p->party.member[0]));
@ -704,8 +710,8 @@ int party_broken(int party_id)
instance_destroy( p->instance_id ); instance_destroy( p->instance_id );
for( i = 0; i < MAX_PARTY; i++ ) { for( i = 0; i < MAX_PARTY; i++ ) {
if( p->data[i].sd != NULL ) { if( p->data[i].sd != nullptr ) {
clif_party_withdraw(p->data[i].sd,p->party.member[i].account_id,p->party.member[i].name,PARTY_MEMBER_WITHDRAW_EXPEL,SELF); clif_party_withdraw( *p->data[i].sd, p->party.member[i].account_id, p->party.member[i].name, PARTY_MEMBER_WITHDRAW_EXPEL, SELF );
p->data[i].sd->status.party_id=0; p->data[i].sd->status.party_id=0;
} }
} }
@ -838,7 +844,7 @@ int party_changeleader(struct map_session_data *sd, struct map_session_data *tsd
// Update info. // Update info.
intif_party_leaderchange(p->party.party_id,p->party.member[tmi].account_id,p->party.member[tmi].char_id); intif_party_leaderchange(p->party.party_id,p->party.member[tmi].account_id,p->party.member[tmi].char_id);
clif_party_info(p,NULL); clif_party_info( *p );
return 1; return 1;
} }
@ -871,7 +877,7 @@ int party_recv_movemap(int party_id,uint32 account_id,uint32 char_id, unsigned s
//Check if they still exist on this map server //Check if they still exist on this map server
p->data[i].sd = party_sd_check(party_id, account_id, char_id); p->data[i].sd = party_sd_check(party_id, account_id, char_id);
clif_party_info(p,NULL); clif_party_info( *p );
return 0; return 0;
} }
@ -891,8 +897,8 @@ void party_send_movemap(struct map_session_data *sd)
if(sd->state.connect_new) { if(sd->state.connect_new) {
//Note that this works because this function is invoked before connect_new is cleared. //Note that this works because this function is invoked before connect_new is cleared.
clif_party_option(p,sd,0x100); clif_party_option(p,sd,0x100);
clif_party_info(p,sd); clif_party_info( *p, sd );
clif_party_member_info(p,sd); clif_party_member_info( *p, *sd );
} }
if (sd->fd) { // synchronize minimap positions with the rest of the party if (sd->fd) { // synchronize minimap positions with the rest of the party
@ -902,8 +908,8 @@ void party_send_movemap(struct map_session_data *sd)
p->data[i].sd != sd && p->data[i].sd != sd &&
p->data[i].sd->bl.m == sd->bl.m) p->data[i].sd->bl.m == sd->bl.m)
{ {
clif_party_xy_single(sd->fd, p->data[i].sd); clif_party_xy_single( *sd, *p->data[i].sd );
clif_party_xy_single(p->data[i].sd->fd, sd); clif_party_xy_single( *p->data[i].sd, *sd );
} }
} }
} }
@ -954,7 +960,7 @@ int party_recv_message(int party_id,uint32 account_id,const char *mes,int len)
struct party_data *p; struct party_data *p;
if( (p=party_search(party_id))==NULL) if( (p=party_search(party_id))==NULL)
return 0; return 0;
clif_party_message(p,account_id,mes,len); clif_party_message( *p, account_id, mes, len );
return 0; return 0;
} }
@ -1033,13 +1039,13 @@ TIMER_FUNC(party_send_xy_timer){
continue; continue;
if( p->data[i].x != sd->bl.x || p->data[i].y != sd->bl.y ) { // perform position update if( p->data[i].x != sd->bl.x || p->data[i].y != sd->bl.y ) { // perform position update
clif_party_xy(sd); clif_party_xy( *sd );
p->data[i].x = sd->bl.x; p->data[i].x = sd->bl.x;
p->data[i].y = sd->bl.y; p->data[i].y = sd->bl.y;
} }
if (battle_config.party_hp_mode && p->data[i].hp != sd->battle_status.hp) { // perform hp update if (battle_config.party_hp_mode && p->data[i].hp != sd->battle_status.hp) { // perform hp update
clif_party_hp(sd); clif_party_hp( *sd );
p->data[i].hp = sd->battle_status.hp; p->data[i].hp = sd->battle_status.hp;
} }
} }

View File

@ -1863,7 +1863,7 @@ bool pc_authok(struct map_session_data *sd, uint32 login_id2, time_t expiration_
sd->status.name, sd->status.account_id, sd->status.char_id, sd->status.name, sd->status.account_id, sd->status.char_id,
CONVIP(ip), sd->group_id); CONVIP(ip), sd->group_id);
// Send friends list // Send friends list
clif_friendslist_send(sd); clif_friendslist_send( *sd );
if( !changing_mapservers ) { if( !changing_mapservers ) {
@ -9292,7 +9292,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
pc_setdead(sd); pc_setdead(sd);
clif_party_dead( sd ); clif_party_dead( *sd );
pc_setparam(sd, SP_PCDIECOUNTER, sd->die_counter+1); pc_setparam(sd, SP_PCDIECOUNTER, sd->die_counter+1);
pc_setparam(sd, SP_KILLERRID, src?src->id:0); pc_setparam(sd, SP_KILLERRID, src?src->id:0);
@ -10483,7 +10483,7 @@ bool pc_jobchange(struct map_session_data *sd,int job, char upper)
if( i < MAX_PARTY ){ if( i < MAX_PARTY ){
p->party.member[i].class_ = sd->status.class_; p->party.member[i].class_ = sd->status.class_;
clif_party_job_and_level(sd); clif_party_job_and_level( *sd );
} }
} }
} }
@ -12517,7 +12517,7 @@ bool pc_setstand(struct map_session_data *sd, bool force){
sd->ssregen.tick.hp = sd->ssregen.tick.sp = 0; sd->ssregen.tick.hp = sd->ssregen.tick.sp = 0;
if( pc_isdead( sd ) ){ if( pc_isdead( sd ) ){
sd->state.dead_sit = sd->vd.dead_sit = 0; sd->state.dead_sit = sd->vd.dead_sit = 0;
clif_party_dead( sd ); clif_party_dead( *sd );
}else{ }else{
sd->state.dead_sit = sd->vd.dead_sit = 0; sd->state.dead_sit = sd->vd.dead_sit = 0;
} }

View File

@ -4906,13 +4906,13 @@ void script_reload(void) {
/// mes "<message>"; /// mes "<message>";
BUILDIN_FUNC(mes) BUILDIN_FUNC(mes)
{ {
TBL_PC* sd; struct map_session_data* sd;
if( !script_rid2sd(sd) ) if( !script_rid2sd(sd) )
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
if( !script_hasdata(st, 3) ) if( !script_hasdata(st, 3) )
{// only a single line detected in the script {// only a single line detected in the script
clif_scriptmes(sd, st->oid, script_getstr(st, 2)); clif_scriptmes( *sd, st->oid, script_getstr( st, 2 ) );
} }
else else
{// parse multiple lines as they exist {// parse multiple lines as they exist
@ -4921,7 +4921,7 @@ BUILDIN_FUNC(mes)
for( i = 2; script_hasdata(st, i); i++ ) for( i = 2; script_hasdata(st, i); i++ )
{ {
// send the message to the client // send the message to the client
clif_scriptmes(sd, st->oid, script_getstr(st, i)); clif_scriptmes( *sd, st->oid, script_getstr( st, i ) );
} }
} }
@ -4935,7 +4935,7 @@ BUILDIN_FUNC(mes)
/// next; /// next;
BUILDIN_FUNC(next) BUILDIN_FUNC(next)
{ {
TBL_PC* sd; struct map_session_data* sd;
if (!st->mes_active) { if (!st->mes_active) {
ShowWarning("buildin_next: There is no mes active.\n"); ShowWarning("buildin_next: There is no mes active.\n");
@ -4948,7 +4948,7 @@ BUILDIN_FUNC(next)
sd->npc_idle_type = NPCT_WAIT; sd->npc_idle_type = NPCT_WAIT;
#endif #endif
st->state = STOP; st->state = STOP;
clif_scriptnext(sd, st->oid); clif_scriptnext( *sd, st->oid );
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }
@ -14951,7 +14951,7 @@ BUILDIN_FUNC(playBGM)
struct map_session_data* sd; struct map_session_data* sd;
if( script_rid2sd(sd) ) { if( script_rid2sd(sd) ) {
clif_playBGM(sd, script_getstr(st,2)); clif_playBGM( *sd, script_getstr( st, 2 ) );
} }
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }
@ -14959,14 +14959,14 @@ BUILDIN_FUNC(playBGM)
static int playBGM_sub(struct block_list* bl,va_list ap) static int playBGM_sub(struct block_list* bl,va_list ap)
{ {
const char* name = va_arg(ap,const char*); const char* name = va_arg(ap,const char*);
clif_playBGM(BL_CAST(BL_PC, bl), name); clif_playBGM( *BL_CAST( BL_PC, bl ), name );
return 0; return 0;
} }
static int playBGM_foreachpc_sub(struct map_session_data* sd, va_list args) static int playBGM_foreachpc_sub(struct map_session_data* sd, va_list args)
{ {
const char* name = va_arg(args, const char*); const char* name = va_arg(args, const char*);
clif_playBGM(sd, name); clif_playBGM( *sd, name );
return 0; return 0;
} }
@ -15003,13 +15003,13 @@ BUILDIN_FUNC(playBGMall)
*------------------------------------------*/ *------------------------------------------*/
BUILDIN_FUNC(soundeffect) BUILDIN_FUNC(soundeffect)
{ {
TBL_PC* sd; struct map_session_data* sd;
if(script_rid2sd(sd)){ if(script_rid2sd(sd)){
const char* name = script_getstr(st,2); const char* name = script_getstr(st,2);
int type = script_getnum(st,3); int type = script_getnum(st,3);
clif_soundeffect(sd,&sd->bl,name,type); clif_soundeffect( sd->bl, name, type, SELF );
} }
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }
@ -15019,7 +15019,7 @@ int soundeffect_sub(struct block_list* bl,va_list ap)
char* name = va_arg(ap,char*); char* name = va_arg(ap,char*);
int type = va_arg(ap,int); int type = va_arg(ap,int);
clif_soundeffect((TBL_PC *)bl, bl, name, type); clif_soundeffect( *bl, name, type, SELF );
return 0; return 0;
} }
@ -15050,7 +15050,7 @@ BUILDIN_FUNC(soundeffectall)
if(!script_hasdata(st,4)) if(!script_hasdata(st,4))
{ // area around { // area around
clif_soundeffectall(bl, name, type, AREA); clif_soundeffect( *bl, name, type, AREA );
} }
else else
if(!script_hasdata(st,5)) if(!script_hasdata(st,5))

View File

@ -388,7 +388,7 @@ int8 vending_openvending(struct map_session_data* sd, const char* message, const
StringBuf_Destroy(&buf); StringBuf_Destroy(&buf);
clif_openvending(sd,sd->bl.id,sd->vending); clif_openvending(sd,sd->bl.id,sd->vending);
clif_showvendingboard(&sd->bl,message,0); clif_showvendingboard( *sd );
idb_put(vending_db, sd->status.char_id, sd); idb_put(vending_db, sd->status.char_id, sd);