Skip to content

Commit

Permalink
Converted some packets to structs (#8353)
Browse files Browse the repository at this point in the history
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
  • Loading branch information
Atemo and Lemongrass3110 committed May 25, 2024
1 parent b4ae40d commit cc60c46
Show file tree
Hide file tree
Showing 11 changed files with 376 additions and 313 deletions.
389 changes: 158 additions & 231 deletions src/map/clif.cpp

Large diffs are not rendered by default.

58 changes: 38 additions & 20 deletions src/map/clif.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -492,10 +492,6 @@ enum useskill_fail_cause : uint8_t

enum clif_messages : uint16_t {
/* Constant values */
// clif_cart_additem_ack flags
ADDITEM_TO_CART_FAIL_WEIGHT = 0x0,
ADDITEM_TO_CART_FAIL_COUNT = 0x1,

// clif_equipitemack flags
#if PACKETVER_MAIN_NUM >= 20121205 || PACKETVER_RE_NUM >= 20121107 || defined(PACKETVER_ZERO)
ITEM_EQUIP_ACK_OK = 0,
Expand Down Expand Up @@ -675,6 +671,28 @@ enum e_notify_effect : uint8 {
NOTIFYEFFECT_TAEKWON_BASE_LEVEL_UP = 9,
};

enum e_pc_purchase_result_frommc : uint8 {
PURCHASEMC_SUCCESS = 0,
PURCHASEMC_NO_ZENY = 1,
PURCHASEMC_OVERWEIGHT = 2,
PURCHASEMC_OUT_OF_STOCK = 4,
PURCHASEMC_TRADING = 5,
PURCHASEMC_STORE_INCORRECT = 6,
PURCHASEMC_NO_SALES_INFO = 7,
};

enum e_ack_whisper : uint8 {
ACKWHISPER_SUCCESS = 0,
ACKWHISPER_TARGET_OFFLINE = 1,
ACKWHISPER_IGNORED = 2,
ACKWHISPER_ALL_IGNORED = 3
};

enum e_ack_additem_to_cart : uint8 {
ADDITEM_TO_CART_FAIL_WEIGHT = 0,
ADDITEM_TO_CART_FAIL_COUNT = 1
};

int clif_setip(const char* ip);
void clif_setbindip(const char* ip);
void clif_setport(uint16 port);
Expand Down Expand Up @@ -813,8 +831,8 @@ void clif_cooking_list(map_session_data *sd, int trigger, uint16 skill_id, int q
void clif_produceeffect(map_session_data* sd,int flag, t_itemid nameid);

void clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *unit, enum send_target target, bool visible);
void clif_skill_delunit(struct skill_unit *unit);
void clif_skillunit_update(struct block_list* bl);
void clif_skill_delunit( skill_unit& unit );
void clif_skillunit_update( block_list& bl);

void clif_skill_unit_test(struct block_list *bl, short x, short y, int unit_id, short range, short skill_lv);

Expand All @@ -834,30 +852,30 @@ void clif_efst_status_change(struct block_list *bl, int tid, enum send_target ta
void clif_efst_status_change_sub(struct block_list *tbl, struct block_list *bl, enum send_target target);

void clif_wis_message(map_session_data* sd, const char* nick, const char* mes, size_t mes_len, int gmlvl);
void clif_wis_end(int fd, int result);
void clif_wis_end( map_session_data& sd, e_ack_whisper result );

void clif_solved_charname(int fd, int charid, const char* name);
void clif_name( struct block_list* src, struct block_list *bl, send_target target );
#define clif_name_self(bl) clif_name( (bl), (bl), SELF )
#define clif_name_area(bl) clif_name( (bl), (bl), AREA )

void clif_use_card(map_session_data *sd,int idx);
void clif_insert_card(map_session_data *sd,int idx_equip,int idx_card,int flag);
void clif_insert_card( map_session_data& sd, int32 idx_equip, int32 idx_card, bool failure );

void clif_inventorylist(map_session_data *sd);
void clif_equiplist(map_session_data *sd);

void clif_cart_additem(map_session_data *sd,int n,int amount);
void clif_cart_additem_ack(map_session_data *sd, uint8 flag);
void clif_cart_delitem(map_session_data *sd,int n,int amount);
void clif_cart_additem_ack( map_session_data& sd, e_ack_additem_to_cart flag );
void clif_cart_delitem( map_session_data& sd, int32 index, int32 amount );
void clif_cartlist(map_session_data *sd);
void clif_clearcart(int fd);

void clif_item_identify_list(map_session_data *sd);
void clif_item_identified(map_session_data *sd,int idx,int flag);
void clif_item_identified( map_session_data& sd, int32 idx, bool failure );
void clif_item_repair_list( map_session_data& sd, map_session_data& dstsd, uint16 lv );
void clif_item_repaireffect(map_session_data *sd, int idx, int flag);
void clif_item_damaged(map_session_data* sd, unsigned short position);
void clif_item_repaireffect( map_session_data& sd, int32 idx, bool failure );
void clif_item_damaged( map_session_data& sd, uint16 position );
void clif_item_refine_list(map_session_data *sd);
void clif_hat_effects( map_session_data* sd, struct block_list* bl, enum send_target target );
void clif_hat_effect_single( map_session_data* sd, uint16 effectId, bool enable );
Expand All @@ -871,15 +889,15 @@ void clif_mvp_noitem(map_session_data* sd);
void clif_changed_dir(struct block_list *bl, enum send_target target);

// vending
void clif_openvendingreq(map_session_data* sd, int num);
void clif_openvendingreq( map_session_data& sd, uint16 num );
void clif_showvendingboard( 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_vendinglist( map_session_data* sd, map_session_data* vsd );
void clif_buyvending(map_session_data* sd, int index, int amount, int fail);
void clif_buyvending( map_session_data& sd, uint16 index, uint16 amount, e_pc_purchase_result_frommc result );
void clif_openvending(map_session_data* sd, int id, struct s_vending* vending);
void clif_vendingreport(map_session_data* sd, int index, int amount, uint32 char_id, int zeny);
void clif_vendingreport( map_session_data& sd, uint16 index, uint16 amount, uint32 char_id, int32 zeny );

void clif_movetoattack(map_session_data *sd,struct block_list *bl);
void clif_movetoattack( map_session_data& sd, block_list& bl );

// party
void clif_party_created( map_session_data& sd, int result );
Expand Down Expand Up @@ -962,7 +980,7 @@ void clif_displaymessage(const int fd, const char* mes);
void clif_disp_message(struct block_list* src, const char* mes, size_t len, enum send_target target);
void clif_broadcast(struct block_list* bl, const char* mes, size_t len, int type, enum send_target target);
void clif_broadcast2(struct block_list* bl, const char* mes, size_t len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target);
void clif_heal(int fd,int type,int val);
void clif_heal( map_session_data& sd, int32 type, uint32 val );
void clif_resurrection( block_list& bl );
void clif_map_property(struct block_list *bl, enum map_property property, enum send_target t);
void clif_pvpset(map_session_data *sd, int pvprank, int pvpnum,int type);
Expand All @@ -971,8 +989,8 @@ void clif_refine( map_session_data& sd, uint16 index, e_ack_itemrefining result
void clif_upgrademessage( map_session_data* sd, int result, t_itemid item_id );

//petsystem
void clif_catch_process(map_session_data *sd);
void clif_pet_roulette(map_session_data *sd,int data);
void clif_catch_process( map_session_data& sd );
void clif_pet_roulette( map_session_data& sd, bool success );
void clif_sendegg(map_session_data *sd);
void clif_send_petstatus(map_session_data *sd);
void clif_send_petdata(map_session_data* sd, struct pet_data* pd, int type, int param);
Expand Down
20 changes: 0 additions & 20 deletions src/map/clif_packetdb.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
packet(0x0093,2);
parseable_packet(0x0094,6,clif_parse_GetCharNameRequest,2);
parseable_packet(0x0096,-1,clif_parse_WisMessage,2,4,28);
packet(0x0098,3);
parseable_packet(0x0099,-1,clif_parse_Broadcast,2,4);
packet(0x009a,-1);
parseable_packet(0x009b,5,clif_parse_ChangeDir,2,4);
Expand Down Expand Up @@ -150,27 +149,19 @@
packet(0x011c,68);
parseable_packet(0x011d,2,clif_parse_RequestMemo,0);
packet(0x011f,16);
packet(0x0120,6);
packet( cartlistequipType, -1 );
packet( cartlistnormalType, -1 );
packet(0x0125,8);
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(0x0128,8,clif_parse_MoveFromKafraToCart,2,4);
parseable_packet(0x0129,8,clif_parse_MoveToKafraFromCart,2,4);
parseable_packet(0x012a,2,clif_parse_RemoveOption,0);
packet(0x012c,3);
packet(0x012d,4);
parseable_packet(0x012e,2,clif_parse_CloseVending,0);
parseable_packet(0x012f,-1,clif_parse_OpenVending,2,4,0,84);
parseable_packet(0x0130,6,clif_parse_VendingListReq,2);
packet(0x0132,6);
parseable_packet( HEADER_CZ_PC_PURCHASE_ITEMLIST_FROMMC, -1, clif_parse_PurchaseReq, 0 );
packet(0x0135,7);
packet(0x0137,6);
packet(0x0138,3);
packet(0x0139,16);
packet(0x013d,6);
packet(0x013e,24);
parseable_packet(0x013f,26,clif_parse_GM_Item_Monster,2);
parseable_packet(0x0140,22,clif_parse_MapMove,2,18,20);
Expand Down Expand Up @@ -226,11 +217,9 @@
packet(0x0176,106);
packet(0x0177,-1);
parseable_packet(0x0178,4,clif_parse_ItemIdentify,2);
packet(0x0179,5);
parseable_packet(0x017a,4,clif_parse_UseCard,2);
packet(0x017b,-1);
parseable_packet(0x017c,6,clif_parse_InsertCard,2,4);
packet(0x017d,7);
parseable_packet(0x017e,-1,clif_parse_GuildMessage,2,4);
packet(0x017f,-1);
parseable_packet(0x0180,6,clif_parse_GuildOpposition,2);
Expand Down Expand Up @@ -260,9 +249,7 @@
packet(0x019a,14);
parseable_packet(0x019c,-1,clif_parse_LocalBroadcast,2,4);
parseable_packet(0x019d,6,clif_parse_GMHide,2);
packet(0x019e,2);
parseable_packet(0x019f,6,clif_parse_CatchPet,2);
packet(0x01a0,3);
parseable_packet(0x01a1,3,clif_parse_PetMenu,2);
packet(0x01a2,35);
packet(0x01a3,5);
Expand Down Expand Up @@ -342,7 +329,6 @@
packet(0x01fb,56);
packet(0x01fc,-1);
parseable_packet( HEADER_CZ_REQ_ITEMREPAIR1, sizeof( struct PACKET_CZ_REQ_ITEMREPAIR1 ), clif_parse_RepairItem, 0 );
packet(0x01fe,5);
packet(0x01ff,10);
packet(0x0200,26);
packet(0x0201,-1);
Expand Down Expand Up @@ -1005,7 +991,6 @@
packet( HEADER_ZC_ITEM_PICKUP_PARTY, sizeof( struct PACKET_ZC_ITEM_PICKUP_PARTY ) );
packet(0x02b9,191);
parseable_packet(0x02ba,11,clif_parse_Hotkey,2,4,5,9);
packet(0x02bb,8);
packet(0x02bc,6);
packet(0x02bf,10);
packet(0x02c0,2);
Expand Down Expand Up @@ -2028,7 +2013,6 @@
packet(0x09DB,-1); // ZC_NOTIFY_MOVEENTRY10
packet(0x09DC,-1); // ZC_NOTIFY_NEWENTRY10
packet(0x09DD,-1); // ZC_NOTIFY_STANDENTRY10
packet(0x09DF,7); // ZC_ACK_WHISPER02
#endif

// 2014-02-05bRagexeRE
Expand All @@ -2044,14 +2028,12 @@

// 2014-10-16Ragexe
#if PACKETVER >= 20141016
packet(0x09DF,7);
// New packet
packet(0x0A00,269); // ZC_SHORTCUT_KEY_LIST_V3
parseable_packet(0x0A01,3,clif_parse_HotkeyRowShift,2); // CZ_SHORTCUTKEYBAR_ROTATE
packet(0x0A02,4); // ZC_DRESSROOM_OPEN
packet(0x0A0E,14); // ZC_BATTLEFIELD_NOTIFY_HP2
packet(0x09F7,75); // ZC_PROPERTY_HOMUN_2
packet(0x09E5,18); // ZC_DELETEITEM_FROM_MCSTORE2
packet(0x09E6,22); // ZC_UPDATE_ITEM_FROM_BUYING_STORE2
// Roulette System [Yommy]
parseable_packet(0x0A19,2,clif_parse_roulette_open,0); // CZ_REQ_OPEN_ROULETTE
Expand All @@ -2071,8 +2053,6 @@
packet(0x006d,149);
packet(0x08e3,149);
// New Packet
packet(0x0A27,8);
packet(0x0A28,3); // ZC_ACK_OPENSTORE2
packet(0x09FD,-1); // ZC_NOTIFY_MOVEENTRY11
packet(0x09FE,-1); // ZC_NOTIFY_NEWENTRY11
packet(0x09FF,-1); // ZC_NOTIFY_STANDENTRY11
Expand Down
18 changes: 11 additions & 7 deletions src/map/intif.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ int intif_wis_message(map_session_data *sd, char *nick, char *mes, size_t mes_le

if (other_mapserver_count < 1)
{ //Character not found.
clif_wis_end(sd->fd, 1);
clif_wis_end( *sd, ACKWHISPER_TARGET_OFFLINE );
return 0;
}

Expand Down Expand Up @@ -1323,13 +1323,17 @@ int intif_parse_WisMessage(int fd)
*/
int intif_parse_WisEnd(int fd)
{
map_session_data* sd;

if (battle_config.etc_log)
ShowInfo("intif_parse_wisend: player: %s, flag: %d\n", RFIFOP(fd,2), RFIFOB(fd,26)); // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
sd = (map_session_data *)map_nick2sd(RFIFOCP(fd,2),false);
if (sd != nullptr)
clif_wis_end(sd->fd, RFIFOB(fd,26));

map_session_data* sd = map_nick2sd( RFIFOCP( fd, 2 ), false );

if (sd != nullptr) {
uint8 result = RFIFOB( fd, 26 );

if ( result >= ACKWHISPER_SUCCESS && result <= ACKWHISPER_ALL_IGNORED )
clif_wis_end( *sd, static_cast<e_ack_whisper>(result) );
}

return 1;
}
Expand Down Expand Up @@ -3518,7 +3522,7 @@ static bool intif_parse_StorageReceived(int fd)
clif_cartlist(sd);
// Only open the vending UI, if it has not been opened already
if (sd->state.pending_vending_ui) {
clif_openvendingreq(sd, sd->vend_skill_lv + 2);
clif_openvendingreq( *sd, sd->vend_skill_lv + 2 );
sd->state.pending_vending_ui = false;
}
}
Expand Down
Loading

0 comments on commit cc60c46

Please sign in to comment.