From cc60c46e5fd59a0070d0e7184c303e7de7a801d7 Mon Sep 17 00:00:00 2001 From: Atemo Date: Sat, 25 May 2024 22:17:12 +0200 Subject: [PATCH] Converted some packets to structs (#8353) Co-authored-by: Lemongrass3110 --- src/map/clif.cpp | 389 ++++++++++++++++---------------------- src/map/clif.hpp | 58 ++++-- src/map/clif_packetdb.hpp | 20 -- src/map/intif.cpp | 18 +- src/map/packets.hpp | 125 ++++++++++++ src/map/pc.cpp | 21 +- src/map/pet.cpp | 16 +- src/map/skill.cpp | 18 +- src/map/storage.cpp | 10 +- src/map/unit.cpp | 2 +- src/map/vending.cpp | 12 +- 11 files changed, 376 insertions(+), 313 deletions(-) diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 54b7f5b426..0ffc113cf0 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -5562,32 +5562,28 @@ static void clif_clearchar_skillunit(struct skill_unit *unit, int fd) } -/// Removes a skill unit (ZC_SKILL_DISAPPEAR). -/// 0120 .L -void clif_skill_delunit(struct skill_unit *unit) -{ - unsigned char buf[16]; +/// Removes a skill unit. +/// 0120 .L (ZC_SKILL_DISAPPEAR) +void clif_skill_delunit( skill_unit& unit ){ + PACKET_ZC_SKILL_DISAPPEAR packet{}; - nullpo_retv(unit); + packet.packetType = HEADER_ZC_SKILL_DISAPPEAR; + packet.GID = unit.bl.id; - WBUFW(buf, 0)=0x120; - WBUFL(buf, 2)=unit->bl.id; - clif_send(buf,packet_len(0x120),&unit->bl,AREA); + clif_send( &packet, sizeof( packet ), &unit.bl, AREA ); } -/// Sent when an object gets ankle-snared (ZC_SKILL_UPDATE). -/// 01ac .L +/// Sent when an object gets ankle-snared. +/// 01ac .L (ZC_SKILL_UPDATE) /// Only affects units with class [139,153] client-side. -void clif_skillunit_update(struct block_list* bl) -{ - unsigned char buf[6]; - nullpo_retv(bl); +void clif_skillunit_update( block_list& bl ){ + PACKET_ZC_SKILL_UPDATE packet{}; - WBUFW(buf,0) = 0x1ac; - WBUFL(buf,2) = bl->id; + packet.packetType = HEADER_ZC_SKILL_UPDATE; + packet.GID = bl.id; - clif_send(buf,packet_len(0x1ac),bl,AREA); + clif_send( &packet, sizeof( packet ), &bl, AREA ); } @@ -6856,22 +6852,14 @@ void clif_channel_msg(struct Channel *channel, const char *msg, unsigned long co /// 5 = HP (SP_HP) /// 7 = SP (SP_SP) /// ? = ignored -void clif_heal(int fd,int type,int val) { -#if PACKETVER < 20141022 - const int cmd = 0x13d; -#else - const int cmd = 0xa27; -#endif +void clif_heal( map_session_data& sd, int32 type, uint32 val ) { + PACKET_ZC_RECOVERY packet{}; - WFIFOHEAD(fd, packet_len(cmd)); - WFIFOW(fd,0) = cmd; - WFIFOW(fd,2) = type; -#if PACKETVER < 20141022 - WFIFOW(fd,4) = min(val, INT16_MAX); -#else - WFIFOL(fd,4) = min(val, INT32_MAX); -#endif - WFIFOSET(fd, packet_len(cmd)); + packet.packetType = HEADER_ZC_RECOVERY; + packet.type = static_cast(type); + packet.amount = std::min( static_cast( val ), std::numeric_limits::max() ); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7061,31 +7049,22 @@ void clif_wis_message(map_session_data* sd, const char* nick, const char* mes, s /// Inform the player about the result of his whisper action /// 0098 .B (ZC_ACK_WHISPER). -/// 09df .B .L (ZC_ACK_WHISPER02). +/// 09df .B .L (ZC_ACK_WHISPER02). /// result: -/// 0 = success to send wisper +/// 0 = success to send whisper /// 1 = target character is not loged in /// 2 = ignored by target /// 3 = everyone ignored by target -void clif_wis_end(int fd, int result) -{ - map_session_data *sd = (session_isActive(fd) ? (map_session_data *)session[fd]->session_data : nullptr); -#if PACKETVER < 20131223 - const int cmd = 0x98; -#else - const int cmd = 0x9df; -#endif +void clif_wis_end( map_session_data& sd, e_ack_whisper result ){ + PACKET_ZC_ACK_WHISPER packet{}; - if (!sd) - return; - - WFIFOHEAD(fd,packet_len(cmd)); - WFIFOW(fd,0) = cmd; - WFIFOB(fd,2) = (char)result; + packet.packetType = HEADER_ZC_ACK_WHISPER; + packet.result = static_cast(result); #if PACKETVER >= 20131223 - WFIFOL(fd,3) = sd->status.char_id; // GID/CCODE + packet.CID = sd.status.char_id; #endif - WFIFOSET(fd,packet_len(cmd)); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7169,24 +7148,20 @@ void clif_use_card(map_session_data *sd,int idx) } -/// Notifies the client about the result of item carding/composition (ZC_ACK_ITEMCOMPOSITION). -/// 017d .W .W .B +/// Notifies the client about the result of item carding/composition. +/// 017d .W .W .B (ZC_ACK_ITEMCOMPOSITION) /// result: /// 0 = success /// 1 = failure -void clif_insert_card(map_session_data *sd,int idx_equip,int idx_card,int flag) -{ - int fd; +void clif_insert_card( map_session_data& sd, int32 idx_equip, int32 idx_card, bool failure ){ + PACKET_ZC_ACK_ITEMCOMPOSITION packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_ACK_ITEMCOMPOSITION; + packet.equipIndex = client_index( idx_equip ); + packet.cardIndex = client_index( idx_card ); + packet.result = failure; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x17d)); - WFIFOW(fd,0)=0x17d; - WFIFOW(fd,2)=idx_equip+2; - WFIFOW(fd,4)=idx_card+2; - WFIFOB(fd,6)=flag; - WFIFOSET(fd,packet_len(0x17d)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7219,20 +7194,19 @@ void clif_item_identify_list(map_session_data *sd) } -/// Notifies the client about the result of a item identify request (ZC_ACK_ITEMIDENTIFY). -/// 0179 .W .B -void clif_item_identified(map_session_data *sd,int idx,int flag) -{ - int fd; +/// Notifies the client about the result of a item identify request. +/// 0179 .W .B (ZC_ACK_ITEMIDENTIFY) +/// result: +/// 0 = success +/// 1 = failure +void clif_item_identified( map_session_data& sd, int32 idx, bool failure ){ + PACKET_ZC_ACK_ITEMIDENTIFY packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_ACK_ITEMIDENTIFY; + packet.index = client_index( idx ); + packet.result = failure; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x179)); - WFIFOW(fd, 0)=0x179; - WFIFOW(fd, 2)=idx+2; - WFIFOB(fd, 4)=flag; - WFIFOSET(fd,packet_len(0x179)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7269,41 +7243,35 @@ void clif_item_repair_list( map_session_data& sd, map_session_data& dstsd, uint1 } -/// Notifies the client about the result of a item repair request (ZC_ACK_ITEMREPAIR). -/// 01fe .W .B +/// Notifies the client about the result of a item repair request. +/// 01fe .W .B (ZC_ACK_ITEMREPAIR) /// index: /// ignored (inventory index) /// result: /// 0 = Item repair success. /// 1 = Item repair failure. -void clif_item_repaireffect(map_session_data *sd,int idx,int flag) -{ - int fd; +void clif_item_repaireffect( map_session_data& sd, int32 idx, bool failure ){ + PACKET_ZC_ACK_ITEMREPAIR packet{}; - nullpo_retv(sd); - - fd = sd->fd; - - WFIFOHEAD(fd,packet_len(0x1fe)); - WFIFOW(fd, 0)=0x1fe; - WFIFOW(fd, 2)=idx+2; - WFIFOB(fd, 4)=flag; - WFIFOSET(fd,packet_len(0x1fe)); + packet.packetType = HEADER_ZC_ACK_ITEMREPAIR; + packet.index = client_index( idx ); + packet.result = failure; + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Displays a message, that an equipment got damaged (ZC_EQUIPITEM_DAMAGED). -/// 02bb .W .L -void clif_item_damaged(map_session_data* sd, unsigned short position) -{ - int fd = sd->fd; +/// Displays a message, that an equipment got damaged. +/// 02bb .W .L (ZC_EQUIPITEM_DAMAGED) +void clif_item_damaged( map_session_data& sd, uint16 position ){ + PACKET_ZC_EQUIPITEM_DAMAGED packet{}; - WFIFOHEAD(fd,packet_len(0x2bb)); - WFIFOW(fd,0) = 0x2bb; - WFIFOW(fd,2) = position; - WFIFOL(fd,4) = sd->bl.id; // TODO: the packet seems to be sent to other people as well, probably party and/or guild. - WFIFOSET(fd,packet_len(0x2bb)); + packet.packetType = HEADER_ZC_EQUIPITEM_DAMAGED; + packet.equipLocation = position; + packet.GID = sd.bl.id; + + // TODO: the packet seems to be sent to other people as well, probably party and/or guild. + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7413,24 +7381,18 @@ void clif_cart_additem( map_session_data *sd, int n, int amount ){ clif_send( &p, sizeof( p ), &sd->bl, SELF ); } -// [Ind/Hercules] - Data Thanks to Yommy (ZC_ACK_ADDITEM_TO_CART) -/* Acknowledge an item have been added to cart - * 012c B - * result : - * 0 = ADDITEM_TO_CART_FAIL_WEIGHT - * 1 = ADDITEM_TO_CART_FAIL_COUNT - */ -void clif_cart_additem_ack(map_session_data *sd, uint8 flag) -{ - int fd; - unsigned char *buf; - nullpo_retv(sd); +/// Acknowledge an item have been added to cart +/// 012c .B (ZC_ACK_ADDITEM_TO_CART) +/// result: +/// 0 = ADDITEM_TO_CART_FAIL_WEIGHT +/// 1 = ADDITEM_TO_CART_FAIL_COUNT +void clif_cart_additem_ack( map_session_data& sd, e_ack_additem_to_cart flag ){ + PACKET_ZC_ACK_ADDITEM_TO_CART packet{}; - fd = sd->fd; - buf = WFIFOP(fd,0); - WBUFW(buf,0) = 0x12c; - WBUFB(buf,2) = flag; - clif_send(buf,packet_len(0x12c),&sd->bl,SELF); + packet.packetType = HEADER_ZC_ACK_ADDITEM_TO_CART; + packet.result = static_cast(flag); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } // 09B7 (ZC_ACK_OPEN_BANKING) @@ -7636,39 +7598,30 @@ void clif_parse_BankWithdraw(int fd, map_session_data* sd) { #endif } -/// Deletes an item from character's cart (ZC_DELETE_ITEM_FROM_CART). -/// 0125 .W .L -void clif_cart_delitem(map_session_data *sd,int n,int amount) -{ - int fd; +/// Deletes an item from character's cart. +/// 0125 .W .L (ZC_DELETE_ITEM_FROM_CART) +void clif_cart_delitem( map_session_data& sd, int32 index, int32 amount ){ + PACKET_ZC_DELETE_ITEM_FROM_CART packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_DELETE_ITEM_FROM_CART; + packet.index = client_index( index ); + packet.amount = amount; - fd=sd->fd; - - WFIFOHEAD(fd,packet_len(0x125)); - WFIFOW(fd,0)=0x125; - WFIFOW(fd,2)=n+2; - WFIFOL(fd,4)=amount; - WFIFOSET(fd,packet_len(0x125)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Opens the shop creation menu (ZC_OPENSTORE). -/// 012d .W +/// Opens the shop creation menu. +/// 012d .W (ZC_OPENSTORE) /// num: /// number of allowed item slots -void clif_openvendingreq(map_session_data* sd, int num) -{ - int fd; +void clif_openvendingreq( map_session_data& sd, uint16 num ){ + PACKET_ZC_OPENSTORE packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_OPENSTORE; + packet.num = num; - fd = sd->fd; - WFIFOHEAD(fd,packet_len(0x12d)); - WFIFOW(fd,0) = 0x12d; - WFIFOW(fd,2) = num; - WFIFOSET(fd,packet_len(0x12d)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -7766,8 +7719,8 @@ void clif_vendinglist( map_session_data* sd, map_session_data* vsd ){ } -/// Shop purchase failure (ZC_PC_PURCHASE_RESULT_FROMMC). -/// 0135 .W .W .B +/// Shop purchase failure. +/// 0135 .W .W .B (ZC_PC_PURCHASE_RESULT_FROMMC) /// result: /// 0 = success /// 1 = not enough zeny @@ -7776,37 +7729,32 @@ void clif_vendinglist( map_session_data* sd, map_session_data* vsd ){ /// 5 = "cannot use an npc shop while in a trade" /// 6 = Because the store information was incorrect the item was not purchased. /// 7 = No sales information. -void clif_buyvending(map_session_data* sd, int index, int amount, int fail) -{ - int fd; +void clif_buyvending( map_session_data& sd, uint16 index, uint16 amount, e_pc_purchase_result_frommc result ){ + PACKET_ZC_PC_PURCHASE_RESULT_FROMMC packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_PC_PURCHASE_RESULT_FROMMC; + packet.index = client_index( index ); + packet.amount = amount; + packet.result = static_cast(result); - fd = sd->fd; - WFIFOHEAD(fd,packet_len(0x135)); - WFIFOW(fd,0) = 0x135; - WFIFOW(fd,2) = index+2; - WFIFOW(fd,4) = amount; - WFIFOB(fd,6) = fail; - WFIFOSET(fd,packet_len(0x135)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Show's vending player its list of items for sale (ZC_ACK_OPENSTORE2). -/// 0a28 .B + +/// Show's vending player its list of items for sale. +/// 0a28 .B (ZC_ACK_OPENSTORE2) /// result: -/// 0 = Successed +/// 0 = Success /// 1 = Failed -void clif_openvending_ack(map_session_data* sd, int result) -{ - int fd; +void clif_openvending_ack( map_session_data& sd, bool failure ){ +#if PACKETVER >= 20141022 + PACKET_ZC_ACK_OPENSTORE2 packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_ACK_OPENSTORE2; + packet.result = failure; - fd = sd->fd; - WFIFOHEAD(fd, 3); - WFIFOW(fd,0) = 0xa28; - WFIFOB(fd,2) = result; - WFIFOSET(fd, 3); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); +#endif } /// Shop creation success. @@ -7853,37 +7801,28 @@ void clif_openvending( map_session_data* sd, int id, struct s_vending* vending ) WFIFOSET( fd, len ); -#if PACKETVER >= 20141022 - /// 0 = Successed - /// 1 = Failed - clif_openvending_ack( sd, 0 ); -#endif + clif_openvending_ack( *sd, false ); } /// Inform merchant that someone has bought an item. -/// 0137 .W .W (ZC_DELETEITEM_FROM_MCSTORE). -/// 09e5 .W .W .L .L .L (ZC_DELETEITEM_FROM_MCSTORE2). -void clif_vendingreport(map_session_data* sd, int index, int amount, uint32 char_id, int zeny) { -#if PACKETVER < 20141016 // TODO : not sure for client date [Napster] - const int cmd = 0x137; -#else - const int cmd = 0x9e5; -#endif - int fd = sd->fd; +/// 0137 .W .W (ZC_DELETEITEM_FROM_MCSTORE) +/// 09e5 .W .W .L .L .L (ZC_DELETEITEM_FROM_MCSTORE2) +void clif_vendingreport( map_session_data& sd, uint16 index, uint16 amount, uint32 char_id, int32 zeny ){ + PACKET_ZC_DELETEITEM_FROM_MCSTORE packet{}; - nullpo_retv(sd); + packet.packetType = HEADER_ZC_DELETEITEM_FROM_MCSTORE; + packet.index = client_index( index ); + packet.amount = amount; - WFIFOHEAD(fd,packet_len(cmd)); - WFIFOW(fd,0) = cmd; - WFIFOW(fd,2) = index+2; - WFIFOW(fd,4) = amount; +// TODO : not sure for client date [Napster] #if PACKETVER >= 20141016 - WFIFOL(fd,6) = char_id; // GID - WFIFOL(fd,10) = (int)time(nullptr); // Date - WFIFOL(fd,14) = zeny; // zeny + packet.buyerCID = char_id; + packet.date = client_tick( time(nullptr) ); + packet.zeny = zeny; #endif - WFIFOSET(fd,packet_len(cmd)); + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -8271,25 +8210,21 @@ void clif_hpmeter_single( map_session_data& sd, uint32 id, uint32 hp, uint32 max clif_send( &p, sizeof( p ), &sd.bl, SELF ); } -/// Notifies the client, that it's attack target is too far (ZC_ATTACK_FAILURE_FOR_DISTANCE). -/// 0139 .L .W .W .W .W .W -void clif_movetoattack(map_session_data *sd,struct block_list *bl) -{ - int fd; - nullpo_retv(sd); - nullpo_retv(bl); +/// Notifies the client, that it's attack target is too far. +/// 0139 .L .W .W .W .W .W (ZC_ATTACK_FAILURE_FOR_DISTANCE) +void clif_movetoattack( map_session_data& sd, block_list& bl ){ + PACKET_ZC_ATTACK_FAILURE_FOR_DISTANCE packet{}; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x139)); - WFIFOW(fd, 0)=0x139; - WFIFOL(fd, 2)=bl->id; - WFIFOW(fd, 6)=bl->x; - WFIFOW(fd, 8)=bl->y; - WFIFOW(fd,10)=sd->bl.x; - WFIFOW(fd,12)=sd->bl.y; - WFIFOW(fd,14)=sd->battle_status.rhw.range; - WFIFOSET(fd,packet_len(0x139)); + packet.PacketType = HEADER_ZC_ATTACK_FAILURE_FOR_DISTANCE; + packet.targetAID = bl.id; + packet.targetXPos = bl.x; + packet.targetYPos = bl.y; + packet.xPos = sd.bl.x; + packet.yPos = sd.bl.y; + packet.currentAttRange = sd.battle_status.rhw.range; + + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -8315,36 +8250,28 @@ void clif_produceeffect(map_session_data* sd,int flag, t_itemid nameid){ } -/// Initiates the pet taming process (ZC_START_CAPTURE). -/// 019e -void clif_catch_process(map_session_data *sd) -{ - int fd; +/// Initiates the pet taming process. +/// 019e (ZC_START_CAPTURE) +void clif_catch_process( map_session_data& sd ){ + PACKET_ZC_START_CAPTURE packet{}; - nullpo_retv(sd); + packet.PacketType = HEADER_ZC_START_CAPTURE; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x19e)); - WFIFOW(fd,0)=0x19e; - WFIFOSET(fd,packet_len(0x19e)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } -/// Displays the result of a pet taming attempt (ZC_TRYCAPTURE_MONSTER). -/// 01a0 .B +/// Displays the result of a pet taming attempt. +/// 01a0 .B (ZC_TRYCAPTURE_MONSTER) /// 0 = failure /// 1 = success -void clif_pet_roulette(map_session_data *sd,int data) -{ - int fd; +void clif_pet_roulette( map_session_data& sd, bool success ){ + PACKET_ZC_TRYCAPTURE_MONSTER packet{}; - nullpo_retv(sd); + packet.PacketType = HEADER_ZC_TRYCAPTURE_MONSTER; + packet.result = success; - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x1a0)); - WFIFOW(fd,0)=0x1a0; - WFIFOB(fd,2)=data; - WFIFOSET(fd,packet_len(0x1a0)); + clif_send( &packet, sizeof( packet ), &sd.bl, SELF ); } @@ -11979,9 +11906,9 @@ void clif_parse_WisMessage(int fd, map_session_data* sd) // if player ignores everyone if (dstsd->state.ignoreAll && pc_get_group_level(sd) <= pc_get_group_level(dstsd)) { if (pc_isinvisible(dstsd) && pc_get_group_level(sd) < pc_get_group_level(dstsd)) - clif_wis_end(fd, 1); // 1: target character is not logged in + clif_wis_end( *sd, ACKWHISPER_TARGET_OFFLINE ); else - clif_wis_end(fd, 3); // 3: everyone ignored by target + clif_wis_end( *sd, ACKWHISPER_ALL_IGNORED ); return; } @@ -11996,13 +11923,13 @@ void clif_parse_WisMessage(int fd, map_session_data* sd) // if player ignores the source character ARR_FIND(0, MAX_IGNORE_LIST, i, dstsd->ignore[i].name[0] == '\0' || strcmp(dstsd->ignore[i].name, sd->status.name) == 0); if(i < MAX_IGNORE_LIST && dstsd->ignore[i].name[0] != '\0') { // source char present in ignore list - clif_wis_end(fd, 2); // 2: ignored by target + clif_wis_end( *sd, ACKWHISPER_IGNORED ); return; } } // notify sender of success - clif_wis_end(fd, 0); // 0: success to send wisper + clif_wis_end( *sd, ACKWHISPER_SUCCESS ); // Normal message clif_wis_message(dstsd, sd->status.name, message, strlen(message)+1, 0); diff --git a/src/map/clif.hpp b/src/map/clif.hpp index 8361b278c0..e90ab38900 100644 --- a/src/map/clif.hpp +++ b/src/map/clif.hpp @@ -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, @@ -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); @@ -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); @@ -834,7 +852,7 @@ 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 ); @@ -842,22 +860,22 @@ void clif_name( struct block_list* src, struct block_list *bl, send_target targe #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 ); @@ -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 ); @@ -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); @@ -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); diff --git a/src/map/clif_packetdb.hpp b/src/map/clif_packetdb.hpp index 96939d397b..479578f4a0 100644 --- a/src/map/clif_packetdb.hpp +++ b/src/map/clif_packetdb.hpp @@ -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); @@ -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); @@ -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); @@ -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); @@ -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); @@ -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); @@ -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 @@ -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 @@ -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 diff --git a/src/map/intif.cpp b/src/map/intif.cpp index 5acede764c..2b50150e08 100644 --- a/src/map/intif.cpp +++ b/src/map/intif.cpp @@ -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; } @@ -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(result) ); + } return 1; } @@ -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; } } diff --git a/src/map/packets.hpp b/src/map/packets.hpp index d483022032..36fc8bf530 100644 --- a/src/map/packets.hpp +++ b/src/map/packets.hpp @@ -929,6 +929,131 @@ struct PACKET_ZC_NOTIFY_EFFECT { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_NOTIFY_EFFECT, 0x19b); +struct PACKET_ZC_ACK_ITEMCOMPOSITION { + int16 packetType; + uint16 equipIndex; + uint16 cardIndex; + uint8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_ITEMCOMPOSITION, 0x17d); + +struct PACKET_ZC_ACK_ITEMIDENTIFY { + int16 packetType; + uint16 index; + uint8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_ITEMIDENTIFY, 0x179); + +struct PACKET_ZC_ACK_ITEMREPAIR { + int16 packetType; + uint16 index; + uint8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_ITEMREPAIR, 0x1fe); + +struct PACKET_ZC_EQUIPITEM_DAMAGED { + int16 packetType; + uint16 equipLocation; + uint32 GID; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_EQUIPITEM_DAMAGED, 0x2bb); + +struct PACKET_ZC_DELETE_ITEM_FROM_CART { + int16 packetType; + uint16 index; + int32 amount; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_DELETE_ITEM_FROM_CART, 0x125); + +struct PACKET_ZC_OPENSTORE { + int16 packetType; + uint16 num; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_OPENSTORE, 0x12d); + +struct PACKET_ZC_PC_PURCHASE_RESULT_FROMMC { + int16 packetType; + uint16 index; + uint16 amount; + uint8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_RESULT_FROMMC, 0x135); + +struct PACKET_ZC_ACK_OPENSTORE2 { + int16 packetType; + uint8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_OPENSTORE2, 0xa28 ); + +struct PACKET_ZC_SKILL_DISAPPEAR { + int16 packetType; + uint32 GID; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_SKILL_DISAPPEAR, 0x120); + +struct PACKET_ZC_SKILL_UPDATE { + int16 packetType; + uint32 GID; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_SKILL_UPDATE, 0x1ac); + +#if PACKETVER >= 20141022 +struct PACKET_ZC_RECOVERY { + int16 packetType; + uint16 type; + int32 amount; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_RECOVERY, 0xa27); +#else +struct PACKET_ZC_RECOVERY { + int16 packetType; + uint16 type; + int16 amount; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_RECOVERY, 0x13d); +#endif + +#if PACKETVER >= 20131223 +struct PACKET_ZC_ACK_WHISPER { + int16 packetType; + uint8 result; + uint32 CID; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_WHISPER, 0x9df); +#else +struct PACKET_ZC_ACK_WHISPER { + int16 packetType; + uint8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_WHISPER, 0x98); +#endif + +struct PACKET_ZC_ACK_ADDITEM_TO_CART { + int16 packetType; + uint8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_ADDITEM_TO_CART, 0x12c); + +// TODO : not sure for client date [Napster] +#if PACKETVER >= 20141016 +struct PACKET_ZC_DELETEITEM_FROM_MCSTORE { + int16 packetType; + uint16 index; + uint16 amount; + uint32 buyerCID; + uint32 date; + int32 zeny; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_DELETEITEM_FROM_MCSTORE, 0x9e5); +#else +struct PACKET_ZC_DELETEITEM_FROM_MCSTORE { + int16 packetType; + uint16 index; + uint16 amount; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_DELETEITEM_FROM_MCSTORE, 0x137); +#endif + // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 ) #pragma pack( pop ) diff --git a/src/map/pc.cpp b/src/map/pc.cpp index 49deed502f..4c4be68bca 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -5527,14 +5527,14 @@ int pc_insert_card(map_session_data* sd, int idx_card, int idx_equip) if( pc_delitem(sd,idx_card,1,1,0,LOG_TYPE_OTHER) == 1 ) {// failed - clif_insert_card(sd,idx_equip,idx_card,1); + clif_insert_card( *sd, idx_equip, idx_card, true ); } else {// success log_pick_pc(sd, LOG_TYPE_OTHER, -1, &sd->inventory.u.items_inventory[idx_equip]); sd->inventory.u.items_inventory[idx_equip].card[i] = nameid; log_pick_pc(sd, LOG_TYPE_OTHER, 1, &sd->inventory.u.items_inventory[idx_equip]); - clif_insert_card(sd,idx_equip,idx_card,0); + clif_insert_card( *sd, idx_equip, idx_card, false ); } return 0; @@ -5554,7 +5554,7 @@ int pc_identifyall(map_session_data *sd, bool identify_item) if (sd->inventory.u.items_inventory[i].nameid > 0 && sd->inventory.u.items_inventory[i].identify != 1) { if (identify_item == true) { sd->inventory.u.items_inventory[i].identify = 1; - clif_item_identified(sd,i,0); + clif_item_identified( *sd, i, false ); } unidentified_count++; } @@ -6510,7 +6510,7 @@ void pc_cart_delitem(map_session_data *sd,int n,int amount,int type,e_log_pick_t sd->cart_num--; } if(!type) { - clif_cart_delitem(sd,n,amount); + clif_cart_delitem( *sd, n, amount ); clif_updatestatus(*sd,SP_CARTINFO); } } @@ -6540,7 +6540,10 @@ void pc_putitemtocart(map_session_data *sd,int idx,int amount) if (flag == ADDITEM_SUCCESS) pc_delitem(sd,idx,amount,0,5,LOG_TYPE_NONE); else { - clif_cart_additem_ack(sd, (flag == ADDITEM_OVERAMOUNT) ? ADDITEM_TO_CART_FAIL_COUNT : ADDITEM_TO_CART_FAIL_WEIGHT); + if (flag == ADDITEM_OVERAMOUNT) + clif_cart_additem_ack( *sd, ADDITEM_TO_CART_FAIL_COUNT ); + else + clif_cart_additem_ack( *sd, ADDITEM_TO_CART_FAIL_WEIGHT ); clif_additem(sd, idx, amount, 0); clif_delitem( *sd, idx, amount, 0 ); } @@ -6585,7 +6588,7 @@ bool pc_getitemfromcart(map_session_data *sd,int idx,int amount) if (flag == ADDITEM_SUCCESS) pc_cart_delitem(sd, idx, amount, 0, LOG_TYPE_NONE); else { - clif_cart_delitem(sd, idx, amount); + clif_cart_delitem( *sd, idx, amount ); clif_additem(sd, idx, amount, flag); clif_cart_additem(sd, idx, amount); } @@ -10472,13 +10475,13 @@ void pc_heal(map_session_data *sd,unsigned int hp,unsigned int sp, unsigned int if (type&2) { if (hp || type&4) { - clif_heal(sd->fd,SP_HP,hp); + clif_heal( *sd, SP_HP, hp ); clif_update_hp(*sd); } if (sp) - clif_heal(sd->fd,SP_SP,sp); + clif_heal( *sd, SP_SP, sp ); if (ap) - clif_heal(sd->fd,SP_AP,ap); + clif_heal( *sd, SP_AP, ap ); } else { if(hp) clif_updatestatus(*sd,SP_HP); diff --git a/src/map/pet.cpp b/src/map/pet.cpp index 15b1598659..3a4c14a9fb 100644 --- a/src/map/pet.cpp +++ b/src/map/pet.cpp @@ -1226,7 +1226,7 @@ int pet_catch_process1(map_session_data *sd,int target_class) } sd->catch_target_class = target_class; - clif_catch_process(sd); + clif_catch_process( *sd ); return 0; } @@ -1247,7 +1247,7 @@ int pet_catch_process2(map_session_data* sd, int target_id) md = (struct mob_data*)map_id2bl(target_id); if(!md || md->bl.type != BL_MOB || md->bl.prev == nullptr) { // Invalid inputs/state, abort capture. - clif_pet_roulette(sd,0); + clif_pet_roulette( *sd, false ); sd->catch_target_class = PET_CATCH_FAIL; sd->itemid = 0; sd->itemindex = -1; @@ -1255,7 +1255,7 @@ int pet_catch_process2(map_session_data* sd, int target_id) } if (map_getmapflag(sd->bl.m, MF_NOPETCAPTURE)) { - clif_pet_roulette(sd, 0); + clif_pet_roulette( *sd, false ); sd->catch_target_class = PET_CATCH_FAIL; sd->itemid = 0; sd->itemindex = -1; @@ -1280,14 +1280,14 @@ int pet_catch_process2(map_session_data* sd, int target_id) if(sd->catch_target_class != md->mob_id || !pet) { clif_emotion(&md->bl, ET_ANGER); //mob will do /ag if wrong lure is used on them. - clif_pet_roulette(sd,0); + clif_pet_roulette( *sd, false ); sd->catch_target_class = PET_CATCH_FAIL; return 1; } if( battle_config.pet_distance_check && distance_bl( &sd->bl, &md->bl ) > battle_config.pet_distance_check ){ - clif_pet_roulette( sd, 0 ); + clif_pet_roulette( *sd, false ); sd->catch_target_class = PET_CATCH_FAIL; return 1; @@ -1296,7 +1296,7 @@ int pet_catch_process2(map_session_data* sd, int target_id) status_change* tsc = status_get_sc( &md->bl ); if( battle_config.pet_hide_check && tsc && ( tsc->getSCE(SC_HIDING) || tsc->getSCE(SC_CLOAKING) || tsc->getSCE(SC_CAMOUFLAGE) || tsc->getSCE(SC_NEWMOON) || tsc->getSCE(SC_CLOAKINGEXCEED) ) ){ - clif_pet_roulette( sd, 0 ); + clif_pet_roulette( *sd, false ); sd->catch_target_class = PET_CATCH_FAIL; return 1; @@ -1318,13 +1318,13 @@ int pet_catch_process2(map_session_data* sd, int target_id) achievement_update_objective(sd, AG_TAMING, 1, md->mob_id); unit_remove_map(&md->bl,CLR_OUTSIGHT); status_kill(&md->bl); - clif_pet_roulette(sd,1); + clif_pet_roulette( *sd, true ); std::shared_ptr mdb = mob_db.find(pet->class_); intif_create_pet(sd->status.account_id, sd->status.char_id, pet->class_, mdb->lv, pet->EggID, 0, pet->intimate, 100, 0, 1, mdb->jname.c_str()); } else { - clif_pet_roulette(sd,0); + clif_pet_roulette( *sd, false ); sd->catch_target_class = PET_CATCH_FAIL; } diff --git a/src/map/skill.cpp b/src/map/skill.cpp index dde98bba2a..93c6f22d40 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -9305,7 +9305,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui else{ // Instantly open the vending UI sd->state.pending_vending_ui = false; - clif_openvendingreq(sd,2+skill_lv); + clif_openvendingreq( *sd, 2+skill_lv ); } } } @@ -16228,7 +16228,7 @@ int skill_unit_onplace_timer(struct skill_unit *unit, struct block_list *bl, t_t } else sec = 3000; //Couldn't trap it? if (sg->unit_id == UNT_ANKLESNARE) { - clif_skillunit_update(&unit->bl); + clif_skillunit_update( unit->bl ); /** * If you're snared from a trap that was invisible this makes the trap be * visible again -- being you stepped on it (w/o this the trap remains invisible and you go "WTF WHY I CANT MOVE") @@ -19593,7 +19593,7 @@ void skill_repairweapon( map_session_data& sd, int idx ){ return; if (sd.status.char_id != target_sd->status.char_id && !battle_check_range(&sd.bl, &target_sd->bl, skill_get_range2(&sd.bl, sd.menuskill_id, sd.menuskill_val2, true))) { - clif_item_repaireffect(&sd, idx, 1); + clif_item_repaireffect( sd, idx, true ); return; } @@ -19616,10 +19616,10 @@ void skill_repairweapon( map_session_data& sd, int idx ){ pc_delitem(&sd,pc_search_inventory(&sd,material),1,0,0,LOG_TYPE_CONSUME); - clif_item_repaireffect(&sd,idx,0); + clif_item_repaireffect( sd, idx, false ); if( sd.status.char_id != target_sd->status.char_id ) - clif_item_repaireffect(target_sd,idx,0); + clif_item_repaireffect( *target_sd, idx, false ); } /*========================================== @@ -19627,7 +19627,7 @@ void skill_repairweapon( map_session_data& sd, int idx ){ *------------------------------------------*/ void skill_identify(map_session_data *sd, int idx) { - int flag=1; + bool failure = true; nullpo_retv(sd); @@ -19635,11 +19635,11 @@ void skill_identify(map_session_data *sd, int idx) if(idx >= 0 && idx < MAX_INVENTORY) { if(sd->inventory.u.items_inventory[idx].nameid > 0 && sd->inventory.u.items_inventory[idx].identify == 0 ){ - flag=0; + failure = false; sd->inventory.u.items_inventory[idx].identify = 1; } } - clif_item_identified(sd,idx,flag); + clif_item_identified( *sd, idx, failure ); } /*========================================== @@ -20873,7 +20873,7 @@ int skill_delunit(struct skill_unit* unit) break; } - clif_skill_delunit(unit); + clif_skill_delunit( *unit ); unit->group=nullptr; map_delblock(&unit->bl); // don't free yet diff --git a/src/map/storage.cpp b/src/map/storage.cpp index 0d6320cd8d..957437754b 100644 --- a/src/map/storage.cpp +++ b/src/map/storage.cpp @@ -447,7 +447,10 @@ void storage_storagegettocart(map_session_data* sd, struct s_storage *stor, int storage_delitem(sd,stor,index,amount); else { clif_storageitemremoved( *sd, index, 0 ); - clif_cart_additem_ack(sd,(flag==1)?ADDITEM_TO_CART_FAIL_WEIGHT:ADDITEM_TO_CART_FAIL_COUNT); + if (flag == ADDITEM_INVALID) + clif_cart_additem_ack( *sd, ADDITEM_TO_CART_FAIL_WEIGHT ); + else + clif_cart_additem_ack( *sd, ADDITEM_TO_CART_FAIL_COUNT ); } } @@ -1008,7 +1011,10 @@ void storage_guild_storagegettocart(map_session_data* sd, int index, int amount) storage_guild_delitem(sd,stor,index,amount); else { clif_storageitemremoved( *sd, index, 0 ); - clif_cart_additem_ack(sd,(flag == 1) ? ADDITEM_TO_CART_FAIL_WEIGHT:ADDITEM_TO_CART_FAIL_COUNT); + if (flag == ADDITEM_INVALID) + clif_cart_additem_ack( *sd, ADDITEM_TO_CART_FAIL_WEIGHT ); + else + clif_cart_additem_ack( *sd, ADDITEM_TO_CART_FAIL_COUNT ); } } diff --git a/src/map/unit.cpp b/src/map/unit.cpp index 6f40cec57c..8fcb48c835 100644 --- a/src/map/unit.cpp +++ b/src/map/unit.cpp @@ -2784,7 +2784,7 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, t_tick tick) if(sd && !check_distance_client_bl(src,target,range)) { // Player tries to attack but target is too far, notify client - clif_movetoattack(sd,target); + clif_movetoattack( *sd, *target ); return 1; } else if(md && !check_distance_bl(src,target,range)) { // Monster: Chase if required diff --git a/src/map/vending.cpp b/src/map/vending.cpp index d8ac6cd0d1..15569872a8 100755 --- a/src/map/vending.cpp +++ b/src/map/vending.cpp @@ -132,7 +132,7 @@ void vending_purchasereq(map_session_data* sd, int aid, int uid, const uint8* da return; // invalid shop if( vsd->vender_id != uid ) { // shop has changed - clif_buyvending(sd, 0, 0, 6); // store information was incorrect + clif_buyvending( *sd, 0, 0, PURCHASEMC_STORE_INCORRECT ); // store information was incorrect return; } @@ -172,17 +172,17 @@ void vending_purchasereq(map_session_data* sd, int aid, int uid, const uint8* da z += ((double)vsd->vending[j].value * (double)amount); if( z > (double)sd->status.zeny || z < 0. || z > (double)MAX_ZENY ) { - clif_buyvending(sd, idx, amount, 1); // you don't have enough zeny + clif_buyvending( *sd, idx, amount, PURCHASEMC_NO_ZENY ); // you don't have enough zeny return; } if( z + (double)vsd->status.zeny > (double)MAX_ZENY && !battle_config.vending_over_max ) { - clif_buyvending(sd, idx, vsd->vending[j].amount, 4); // too much zeny = overflow + clif_buyvending( *sd, idx, vsd->vending[j].amount, PURCHASEMC_OUT_OF_STOCK ); // too much zeny = overflow return; } w += itemdb_weight(vsd->cart.u.items_cart[idx].nameid) * amount; if( w + sd->weight > sd->max_weight ) { - clif_buyvending(sd, idx, amount, 2); // you can not buy, because overweight + clif_buyvending( *sd, idx, amount, PURCHASEMC_OVERWEIGHT ); return; } @@ -194,7 +194,7 @@ void vending_purchasereq(map_session_data* sd, int aid, int uid, const uint8* da // here, we check cumulative amounts if( vending[j].amount < amount ) { // send more quantity is not a hack (an other player can have buy items just before) - clif_buyvending(sd, idx, vsd->vending[j].amount, 4); // not enough quantity + clif_buyvending( *sd, idx, vsd->vending[j].amount, PURCHASEMC_OUT_OF_STOCK ); return; } @@ -241,7 +241,7 @@ void vending_purchasereq(map_session_data* sd, int aid, int uid, const uint8* da pc_cart_delitem(vsd, idx, amount, 0, LOG_TYPE_VENDING); z = vending_calc_tax(sd, z); - clif_vendingreport(vsd, idx, amount, sd->status.char_id, (int)z); + clif_vendingreport( *vsd, idx, amount, sd->status.char_id, (int)z ); //print buyer's name if( battle_config.buyer_name ) {