diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/atcommand.c | 20 | ||||
-rw-r--r-- | src/map/battle.c | 1 | ||||
-rw-r--r-- | src/map/battle.h | 1 | ||||
-rw-r--r-- | src/map/clif.c | 8 | ||||
-rw-r--r-- | src/map/itemdb.c | 3 | ||||
-rw-r--r-- | src/map/itemdb.h | 3 | ||||
-rw-r--r-- | src/map/mob.c | 29 | ||||
-rw-r--r-- | src/map/packets.h | 1324 | ||||
-rw-r--r-- | src/map/pc.c | 129 | ||||
-rw-r--r-- | src/map/script.c | 131 |
10 files changed, 1544 insertions, 105 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c index bf816faa7..13eab74ec 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -1714,7 +1714,21 @@ ACMD(bodystyle) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if (!*message || sscanf(message, "%d", &body_style) < 1) { + if ((sd->job & MAPID_THIRDMASK) != MAPID_GUILLOTINE_CROSS + && (sd->job & MAPID_THIRDMASK) != MAPID_GENETIC + && (sd->job & MAPID_THIRDMASK) != MAPID_MECHANIC + && (sd->job & MAPID_THIRDMASK) != MAPID_ROYAL_GUARD + && (sd->job & MAPID_THIRDMASK) != MAPID_ARCH_BISHOP + && (sd->job & MAPID_THIRDMASK) != MAPID_RANGER + && (sd->job & MAPID_THIRDMASK) != MAPID_WARLOCK + && (sd->job & MAPID_THIRDMASK) != MAPID_SHADOW_CHASER + && (sd->job & MAPID_THIRDMASK) != MAPID_MINSTRELWANDERER + ) { + clif->message(fd, msg_fd(fd, 35)); // This job has no alternate body styles. + return false; + } + + if (*message == '\0' || sscanf(message, "%d", &body_style) < 1) { sprintf(atcmd_output, "Please, enter a body style (usage: @bodystyle <body ID: %d-%d>).", MIN_BODY_STYLE, MAX_BODY_STYLE); clif->message(fd, atcmd_output); return false; @@ -1722,9 +1736,9 @@ ACMD(bodystyle) if (body_style >= MIN_BODY_STYLE && body_style <= MAX_BODY_STYLE) { pc->changelook(sd, LOOK_BODY2, body_style); - clif->message(fd, msg_txt(36)); // Appearence changed. + clif->message(fd, msg_fd(fd, 36)); // Appearence changed. } else { - clif->message(fd, msg_txt(37)); // An invalid number was specified. + clif->message(fd, msg_fd(fd, 37)); // An invalid number was specified. return false; } diff --git a/src/map/battle.c b/src/map/battle.c index a4e6d8dd1..cf08bf96c 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -7210,7 +7210,6 @@ static const struct battle_data { { "mob_npc_event_type", &battle_config.mob_npc_event_type, 1, 0, 1, }, { "character_size", &battle_config.character_size, 1|2, 0, 1|2, }, { "retaliate_to_master", &battle_config.retaliate_to_master, 1, 0, 1, }, - { "rare_drop_announce", &battle_config.rare_drop_announce, 0, 0, 10000, }, { "duel_allow_pvp", &battle_config.duel_allow_pvp, 0, 0, 1, }, { "duel_allow_gvg", &battle_config.duel_allow_gvg, 0, 0, 1, }, { "duel_allow_teleport", &battle_config.duel_allow_teleport, 0, 0, 1, }, diff --git a/src/map/battle.h b/src/map/battle.h index d582f3c92..a5e50407e 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -407,7 +407,6 @@ struct Battle_Config { int mob_npc_event_type; //Determines on who the npc_event is executed. [Skotlex] int character_size; // if riders have size=2, and baby class riders size=1 [Lupus] - int rare_drop_announce; // chance <= to show rare drops global announces int retaliate_to_master; //Whether when a mob is attacked by another mob, it will retaliate versus the mob or the mob's master. [Skotlex] diff --git a/src/map/clif.c b/src/map/clif.c index b5ebc4897..f1400a5d4 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -4174,7 +4174,7 @@ void clif_storageitemadded(struct map_session_data* sd, struct item* i, int inde WFIFOB(fd,12+offset) = i->refine; //refine clif->addcards(WFIFOP(fd,13+offset), i); #if PACKETVER >= 20150226 - clif->add_item_options(WFIFOP(fd,21+offset), i); + clif->add_item_options(WFIFOP(fd, 21 + offset), i); #endif WFIFOSET(fd,packet_len(storageaddType)); } @@ -6248,7 +6248,7 @@ void clif_cart_additem(struct map_session_data *sd,int n,int amount,int fail) WBUFB(buf,12+offset)=sd->status.cart[n].refine; clif->addcards(WBUFP(buf,13+offset), &sd->status.cart[n]); #if PACKETVER >= 20150226 - clif->add_item_options(WBUFP(buf,21+offset), &sd->status.cart[n]); + clif->add_item_options(WBUFP(buf, 21 + offset), &sd->status.cart[n]); #endif WFIFOSET(fd,packet_len(cartaddType)); } @@ -6376,7 +6376,7 @@ void clif_vendinglist(struct map_session_data* sd, unsigned int id, struct s_ven WFIFOB(fd,offset+13+i*item_length) = vsd->status.cart[index].refine; clif->addcards(WFIFOP(fd,offset+14+i*item_length), &vsd->status.cart[index]); #if PACKETVER >= 20150226 - clif->add_item_options(WFIFOP(fd,offset+22+i*item_length), &vsd->status.cart[index]); + clif->add_item_options(WFIFOP(fd, offset + 22 + i * item_length), &vsd->status.cart[index]); #endif } WFIFOSET(fd,WFIFOW(fd,2)); @@ -6442,7 +6442,7 @@ void clif_openvending(struct map_session_data* sd, int id, struct s_vending* ven WFIFOB(fd,21+i*item_length) = sd->status.cart[index].refine; clif->addcards(WFIFOP(fd,22+i*item_length), &sd->status.cart[index]); #if PACKETVER >= 20150226 - clif->add_item_options(WFIFOP(fd,30+22+i*item_length), &sd->status.cart[index]); + clif->add_item_options(WFIFOP(fd, 30 + i * item_length), &sd->status.cart[index]); #endif } WFIFOSET(fd,WFIFOW(fd,2)); diff --git a/src/map/itemdb.c b/src/map/itemdb.c index a35aa67f1..4076e295c 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -2073,6 +2073,9 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char * if ((t = libconfig->setting_get_member(it, "KeepAfterUse"))) id.flag.keepafteruse = libconfig->setting_get_bool(t) ? 1 : 0; + if ((t = libconfig->setting_get_member(it, "DropAnnounce"))) + id.flag.drop_announce = libconfig->setting_get_bool(t) ? 1 : 0; + if (itemdb->lookup_const(it, "Delay", &i32) && i32 >= 0) id.delay = i32; diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 138a783ae..f77801e09 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -111,8 +111,6 @@ enum item_itemid { ITEMID_FRAGMENT_OF_CRYSTAL = 7321, ITEMID_SKULL_ = 7420, ITEMID_TOKEN_OF_SIEGFRIED = 7621, - ITEMID_GOLD_KEY77 = 7782, - ITEMID_SILVER_KEY77 = 7783, ITEMID_SPECIAL_ALLOY_TRAP = 7940, ITEMID_CATNIP_FRUIT = 11602, ITEMID_RED_POUCH_OF_SURPRISE = 12024, @@ -510,6 +508,7 @@ struct item_data { unsigned keepafteruse : 1; unsigned force_serial : 1; unsigned no_options: 1; // < disallows use of item options on the item. (non-equippable items are automatically flagged) [Smokexyz] + unsigned drop_announce : 1; // Official Drop Announce [Jedzkie] } flag; struct {// item stacking limitation unsigned short amount; diff --git a/src/map/mob.c b/src/map/mob.c index 74d25b805..52705cf4d 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2151,6 +2151,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct map_session_data *tmpsd[DAMAGELOG_SIZE] = { NULL }; struct map_session_data *mvp_sd = sd, *second_sd = NULL, *third_sd = NULL; + struct item_data *id = NULL; struct { struct party_data *p; @@ -2439,23 +2440,13 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) { ditem = mob->setdropitem(md->db->dropitem[i].nameid, 1, it); - //A Rare Drop Global Announce by Lupus - if( mvp_sd && drop_rate <= battle_config.rare_drop_announce ) { - char message[128]; - sprintf (message, msg_txt(541), mvp_sd->status.name, md->name, it->jname, (float)drop_rate/100); - //MSG: "'%s' won %s's %s (chance: %0.02f%%)" - intif->broadcast(message, (int)strlen(message)+1, BC_DEFAULT); + // Official Drop Announce [Jedzkie] + if (mvp_sd != NULL) { + if ((id = itemdb->search(it->nameid)) != NULL && id->flag.drop_announce) { + clif->item_drop_announce(mvp_sd, it->nameid, md->name); + } } - /* heres the thing we got the feature set up however we're still discussing how to best define the ids, - * so while we discuss, for a small period of time, the list is hardcoded (yes officially only those 2 use it, - * thus why we're unsure on how to best place the setting) */ - /* temp, will not be hardcoded for long thudu. */ - // TODO: This should be a field in the item db. - if (mvp_sd != NULL - && (it->nameid == ITEMID_GOLD_KEY77 || it->nameid == ITEMID_SILVER_KEY77)) /* for when not hardcoded: add a check on mvp bonus drop as well */ - clif->item_drop_announce(mvp_sd, it->nameid, md->name); - // Announce first, or else ditem will be freed. [Lance] // By popular demand, use base drop rate for autoloot code. [Skotlex] mob->item_drop(md, dlist, ditem, 0, md->db->dropitem[i].p, homkillonly); @@ -2592,14 +2583,6 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) { clif->mvp_item(mvp_sd, item.nameid); log_mvp[0] = item.nameid; - //A Rare MVP Drop Global Announce by Lupus - if (rate <= battle_config.rare_drop_announce) { - char message[128]; - sprintf(message, msg_txt(541), mvp_sd->status.name, md->name, data->jname, rate/100.); - //MSG: "'%s' won %s's %s (chance: %0.02f%%)" - intif->broadcast(message, (int)strlen(message)+1, BC_DEFAULT); - } - if((temp = pc->additem(mvp_sd,&item,1,LOG_TYPE_PICKDROP_PLAYER)) != 0) { clif->additem(mvp_sd,0,0,temp); map->addflooritem(&md->bl, &item, 1, mvp_sd->bl.m, mvp_sd->bl.x, mvp_sd->bl.y, mvp_sd->status.char_id, (second_sd?second_sd->status.char_id : 0), (third_sd ? third_sd->status.char_id : 0), 1); diff --git a/src/map/packets.h b/src/map/packets.h index cc2312356..d1875f2f0 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -4564,6 +4564,1229 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0967,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #endif +// 2016-01-27aRagexeRE +#if PACKETVER >= 20160127 +// new packets + packet(0x0a4d,-1); +// changed packet sizes +#endif + +// 2016-01-27bRagexeRE +#if PACKETVER == 20160127 +// shuffle packets + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0922,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x095a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0961,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-02-03aRagexeRE +#if PACKETVER == 20160203 +// shuffle packets + packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0437,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0835,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0872,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0873,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x088c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0918,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x093e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0940,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0947,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0954,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x095a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x095d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-02-17cRagexeRE +#if PACKETVER == 20160217 +// shuffle packets + packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0362,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0365,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0864,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0870,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0873,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x087a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0888,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x088d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x088f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0899,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a0,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a9,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08ac,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08ad,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x091d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0920,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0926,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x092e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x093b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x093e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0941,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x094a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0966,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0967,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE +#endif + +// 2016-03-02bRagexeRE +#if PACKETVER == 20160302 +// shuffle packets + packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0367,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0819,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x085b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0864,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0865,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0867,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0868,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0873,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x087a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x087d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0883,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a6,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08a9,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0927,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x092d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0945,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x094e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0950,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0957,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095a,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0960,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0967,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0968,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT +#endif + +// 2016-03-02bRagexeRE +#if PACKETVER >= 20160302 +// new packets + packet(0x0a4e,4); + packet(0x0a4f,-1,clif->pDull/*,XXX*/); + packet(0x0a50,6); + packet(0x0a51,34); +// changed packet sizes +#endif + +// 2016-03-09aRagexeRE +#if PACKETVER == 20160309 +// shuffle packets + packet(0x023b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0281,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0819,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0838,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x083c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x085a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x085f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0866,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x086a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0873,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x087e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x089b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x089d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a7,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x091d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0920,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0922,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0929,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x092e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0932,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0956,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x096a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP +#endif + +// 2016-03-16aRagexeRE +#if PACKETVER >= 20160316 +// new packets + packet(0x0a52,20,clif->pDull/*,XXX*/); + packet(0x0a53,10); + packet(0x0a54,-1); + packet(0x0a55,2); + packet(0x0a56,6,clif->pDull/*,XXX*/); + packet(0x0a57,6); + packet(0x0a58,8); + packet(0x0a59,-1); + packet(0x0a5a,2,clif->pDull/*,XXX*/); + packet(0x0a5b,7); + packet(0x0a5c,18,clif->pDull/*,XXX*/); + packet(0x0a5d,6); +// changed packet sizes +#endif + +// 2016-03-23aRagexeRE +#if PACKETVER >= 20160323 +// new packets + packet(0x0a68,3); + packet(0x0a69,6); + packet(0x0a6a,12); + packet(0x0a6b,-1); +// changed packet sizes +#endif + +// 2016-03-30aRagexeRE +#if PACKETVER == 20160330 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0867,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x086d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0878,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0889,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x088b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x088d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0918,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0925,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x092a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x092c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0930,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0939,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x093b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-03-30aRagexeRE +#if PACKETVER >= 20160330 +// new packets + packet(0x0a6c,7,clif->pDull/*,XXX*/); + packet(0x0a6d,-1); + packet(0x0a6e,-1); + packet(0x0a6f,-1); +// changed packet sizes +#endif + +// 2016-04-20aRagexeRE +#if PACKETVER == 20160420 +// shuffle packets + packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x035f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0864,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0870,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0872,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0874,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0884,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a5,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x092f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0935,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x094e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-04-27aRagexeRE +#if PACKETVER >= 20160427 +// new packets +// changed packet sizes + packet(0x0a50,4); +#endif + +// 2016-05-04aRagexeRE +#if PACKETVER >= 20160504 +// new packets + packet(0x0a70,2,clif->pDull/*,XXX*/); + packet(0x0a71,-1); + packet(0x0a72,61); +// changed packet sizes +#endif + +// 2016-05-11aRagexeRE +#if PACKETVER == 20160511 +// shuffle packets + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0894,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x089b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0918,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0940,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-05-11aRagexeRE +#if PACKETVER >= 20160511 +// new packets + packet(0x0a73,6); + packet(0x0a74,8); +// changed packet sizes +#endif + +// 2016-05-18aRagexeRE +#if PACKETVER >= 20160518 +// new packets + packet(0x0a76,80); +// changed packet sizes + packet(0x0a73,2); +#endif + +// 2016-05-25aRagexeRE +#if PACKETVER == 20160525 +// shuffle packets + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x085e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x086a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x092c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0937,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0945,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x094a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0951,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0956,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-05-25aRagexeRE +#if PACKETVER >= 20160525 +// new packets + packet(0x0a77,15); + packet(0x0a78,15); +// changed packet sizes +#endif + +// 2016-06-01aRagexeRE +#if PACKETVER >= 20160601 +// new packets + packet(0x0a79,-1); + packet(0x0a7b,-1); + packet(0x0a7c,-1); + packet(0x0a7d,-1); +// changed packet sizes +#endif + +// 2016-06-08aRagexeRE +#if PACKETVER == 20160608 +// shuffle packets + packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x035f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0437,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0802,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0889,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x089b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08a6,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x093b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x094d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0958,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x095b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0969,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-06-15aRagexeRE +#if PACKETVER == 20160615 +// shuffle packets + packet(0x0281,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0369,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x083c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0866,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0870,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x087e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x087f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0887,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0888,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088a,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x088d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0891,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0898,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x092f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x093e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0947,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0948,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x094a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x094b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0954,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0957,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0958,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x095c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x095e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0961,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK +#endif + +// 2016-06-15aRagexeRE +#if PACKETVER >= 20160615 +// new packets + packet(0x0a7e,4); + packet(0x0a7f,-1); + packet(0x0a80,2); + packet(0x0a81,3); +// changed packet sizes +#endif + +// 2016-06-22aRagexeRE +#if PACKETVER >= 20160622 +// new packets + packet(0x0a82,46); + packet(0x0a83,46); + packet(0x0a84,94); + packet(0x0a85,82); + packet(0x0a86,-1); + packet(0x0a87,4); + packet(0x0a88,2); +// changed packet sizes +#endif + +// 2016-06-29aRagexeRE +#if PACKETVER >= 20160629 +// new packets + packet(0x0a89,32); + packet(0x0a8a,6); + packet(0x0a8b,2); + packet(0x0a8c,2); + packet(0x0a8d,-1); +// changed packet sizes + packet(0x0a80,6); +#endif + +// 2016-06-30aRagexeRE +#if PACKETVER == 20160630 +// shuffle packets + packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x022d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x035f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0363,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x085c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x085e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0860,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0861,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0863,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0867,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x086b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0881,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0885,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x088e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0893,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x091e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0925,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0926,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x093e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0946,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0948,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0957,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x095a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0968,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0969,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE +#endif + +// 2016-07-06cRagexeRE +#if PACKETVER == 20160706 +// shuffle packets + packet(0x0362,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x085f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0860,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0869,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x086b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0884,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0886,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0892,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0899,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08a5,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a8,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0918,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x091b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0924,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0926,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0927,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0939,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x093d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0944,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0945,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x094c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0952,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0957,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP +#endif + +// 2016-07-06cRagexeRE +#if PACKETVER >= 20160706 +// new packets + packet(0x0a81,3); +// changed packet sizes + packet(0x0a7e,-1); + packet(0x0a89,57); +#endif + +// 2016-07-13bRagexeRE +#if PACKETVER == 20160713 +// shuffle packets + packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0363,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0838,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0860,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0865,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0869,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0875,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0877,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x087b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0883,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x088d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0892,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x089a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x089f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a2,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x091c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x091d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0921,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0922,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x092c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0931,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0939,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0944,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0945,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0947,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0957,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x095b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD +#endif + +// 2016-07-13aRagexeRE +#if PACKETVER >= 20160713 +// new packets +// changed packet sizes + packet(0x0a87,-1); +#endif + +// 2016-07-20aRagexeRE +#if PACKETVER == 20160720 +// shuffle packets + packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0363,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0365,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x07e4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0838,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x085b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x086a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x086d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x087f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0883,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0887,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0897,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x089a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x089e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a0,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x08aa,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0917,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x092a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x093b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x093e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0946,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x094d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0953,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x095b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0960,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ +#endif + +// 2016-07-20aRagexeRE +#if PACKETVER >= 20160720 +// new packets + packet(0x0a8e,2); + packet(0x0a8f,2); + packet(0x0a90,3); +// changed packet sizes +#endif + +// 2016-07-27aRagexeRE +#if PACKETVER >= 20160727 +// new packets + packet(0x0a91,-1); + packet(0x0a92,-1); + packet(0x0a93,3); +// changed packet sizes +#endif + +// 2016-07-27bRagexeRE +#if PACKETVER == 20160727 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0363,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0436,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x07ec,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0866,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0868,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0869,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0874,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0877,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0883,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0887,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0891,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x089f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a4,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08a7,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x092e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0936,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0941,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0946,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0949,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0951,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x095f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0966,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES +#endif + +// 2016-08-03bRagexeRE +#if PACKETVER >= 20160803 +// new packets + packet(0x0a94,2); +// changed packet sizes + packet(0x0a81,4); +#endif + +// 2016-08-31bRagexeRE +#if PACKETVER == 20160831 +// shuffle packets + packet(0x022d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0366,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0835,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x086d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0870,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0876,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0878,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x087c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08a8,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08a9,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0917,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x091b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0938,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0946,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x094a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x094f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0950,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0954,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0957,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x095e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0960,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0964,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL +#endif + +// 2016-09-07aRagexeRE +#if PACKETVER == 20160907 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x091c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-09-07aRagexeRE +#if PACKETVER >= 20160907 +// new packets + packet(0x0a95,4); +// changed packet sizes +#endif + +// 2016-09-21bRagexeRE +#if PACKETVER == 20160921 +// shuffle packets + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x094a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-09-21bRagexeRE +#if PACKETVER >= 20160921 +// new packets + packet(0x0a96,51); +// changed packet sizes + packet(0x0a37,59); // ZC_ITEM_PICKUP_ACK_V7 +#endif + +// 2016-09-28cRagexeRE +#if PACKETVER >= 20160928 +// new packets + packet(0x0a97,8); + packet(0x0a98,12); + packet(0x0a99,8); + packet(0x0a9a,10); + packet(0x0a9b,-1); + packet(0x0a9c,2); + packet(0x0a9d,4); + packet(0x0a9e,2); + packet(0x0a9f,2); +// changed packet sizes +#endif + +// 2016-10-05aRagexeRE +#if PACKETVER >= 20161005 +// new packets + packet(0x0aa0,2,clif->pDull/*,XXX*/); + packet(0x0aa1,4); + packet(0x0aa2,-1); + packet(0x0aa3,7); + packet(0x0aa4,2); +// changed packet sizes +#endif + +// 2016-10-12aRagexeRE +#if PACKETVER == 20161012 +// shuffle packets + packet(0x023b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0365,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0369,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x07ec,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0819,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x085b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x085e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0863,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0868,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x086d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0872,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0875,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0880,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0893,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a0,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x092d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0936,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0937,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0939,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0943,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0944,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0951,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x095c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0962,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0966,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD +#endif + +// 2016-10-26bRagexeRE +#if PACKETVER == 20161026 +// shuffle packets + packet(0x0363,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x085f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0861,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0862,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x086a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x086c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x086e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x087c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0886,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0891,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0894,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0898,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x091a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x091b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0926,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x092c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x092e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x092f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0930,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x094b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0953,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x095c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0962,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2016-10-26bRagexeRE +#if PACKETVER >= 20161026 +// new packets + packet(0x0aa5,-1); + packet(0x0aa6,36); +// changed packet sizes +#endif + +// 2016-11-09bRagexeRE +#if PACKETVER == 20161109 +// shuffle packets + packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0362,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x085d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x085e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0865,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x086a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x086d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0870,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0876,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0881,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x088e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0891,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0898,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x089a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x089f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a7,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08ad,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0937,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x093c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x093f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0954,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2016-11-30aRagexeRE +#if PACKETVER >= 20161130 +// new packets + packet(0x0aa7,6); + packet(0x0aa8,5); + packet(0x0aa9,-1); + packet(0x0aaa,-1); + packet(0x0aab,-1); +// changed packet sizes +#endif + +// 2016-12-07eRagexeRE +#if PACKETVER == 20161207 +// shuffle packets + packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0867,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0868,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0875,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x087e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0886,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08a1,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a2,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08ad,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0918,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x091d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0943,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x095d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0965,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-12-07cRagexeRE +#if PACKETVER >= 20161207 +// new packets + packet(0x0aac,67); +// changed packet sizes +#endif + +// 2016-12-14bRagexeRE +#if PACKETVER == 20161214 +// shuffle packets + packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0281,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x02c4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0862,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x086d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0887,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0895,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0899,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a6,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x092e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x093d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-12-21aRagexeRE +#if PACKETVER == 20161221 +// shuffle packets + packet(0x035f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0366,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0817,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x085b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0866,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0876,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0881,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0884,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0890,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0899,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x089a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x089b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08aa,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x091e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0926,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x092e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0930,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0943,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0946,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x094b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x095a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0965,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2016-12-21aRagexeRE +#if PACKETVER >= 20161221 +// new packets + packet(0x0aad,47); + packet(0x0aae,2); + packet(0x0aaf,6); + packet(0x0ab0,6); + packet(0x0ab1,10); +// changed packet sizes +#endif + +// 2016-12-28aRagexeRE +#if PACKETVER >= 20161228 +// new packets +// changed packet sizes + packet(0x0ab1,14); +#endif + +// 2017-01-04bRagexeRE +#if PACKETVER >= 20170104 +// new packets + packet(0x0ab2,7); + packet(0x0ab3,15); +// changed packet sizes +#endif + +// 2017-01-11aRagexeRE +#if PACKETVER >= 20170111 +// new packets + packet(0x0ab4,4); + packet(0x0ab5,2); + packet(0x0ab6,6); + packet(0x0ab7,4); + packet(0x0ab8,2); + packet(0x0ab9,39); +// changed packet sizes +#endif + +// 2017-01-18aRagexeRE +#if PACKETVER >= 20170118 +// new packets + packet(0x0aba,2); + packet(0x0abb,2); +// changed packet sizes + packet(0x0aad,51); + packet(0x0ab3,19); +#endif + +// 2017-02-01aRagexeRE +#if PACKETVER >= 20170201 +// new packets + packet(0x0abc,-1); +// changed packet sizes +#endif + +// 2017-02-15aRagexeRE +#if PACKETVER >= 20170215 +// new packets + packet(0x0abd,10); +// changed packet sizes +#endif + +// 2017-02-22aRagexeRE +#if PACKETVER >= 20170222 +// new packets + packet(0x0abe,116); + packet(0x0abf,114); +// changed packet sizes +#endif + +// 2017-02-28aRagexeRE +#if PACKETVER >= 20170228 +// new packets + packet(0x0ac0,26); + packet(0x0ac1,26); + packet(0x0ac2,-1); + packet(0x0ac3,2); + packet(0x0ac4,-1); + packet(0x0ac5,156,clif->pDull/*,XXX*/); + packet(0x0ac6,156); + packet(0x0ac7,156); +// changed packet sizes + packet(0x0abe,-1); + packet(0x0abf,-1); +#endif + +// 2017-03-08bRagexeRE +#if PACKETVER >= 20170308 +// new packets + packet(0x0ac8,2); + packet(0x0ac9,-1); +// changed packet sizes +#endif + +// 2017-03-22aRagexeRE +#if PACKETVER >= 20170322 +// new packets + packet(0x0aca,3); +// changed packet sizes +#endif + +// 2017-03-29cRagexeRE +#if PACKETVER >= 20170329 +// new packets +// changed packet sizes + packet(0x0aac,69); +#endif + +// 2017-04-05bRagexeRE +#if PACKETVER >= 20170405 +// new packets + packet(0x0acb,12); + packet(0x0acc,18); +// changed packet sizes +#endif + +// 2017-04-19bRagexeRE +#if PACKETVER >= 20170419 +// new packets + packet(0x0acd,23); +// changed packet sizes + packet(0x0a99,4); +#endif + /* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */ #if PACKETVER >= 20110817 packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); /* Thanks to Shakto */ @@ -4917,6 +6140,107 @@ packet(0x96e,-1,clif->ackmergeitems); packetKeys(0x347D68D0,0x2C705320,0x7B4A199D); /* 4144 */ #endif +#if PACKETVER == 20160127 + packetKeys(0x6B1E7146,0x612C47E6,0x274E56EE); /* 4144 */ +#endif + +#if PACKETVER == 20160203 + packetKeys(0x3E1411AF,0x6C744497,0x7CFA1BDE); /* 4144 */ +#endif + +#if PACKETVER == 20160217 + packetKeys(0x25895A8E,0x09421C19,0x763A2D7A); /* 4144 */ +#endif + +#if PACKETVER == 20160302 + packetKeys(0x7B4441B9,0x5BBC63AF,0x45DA0E71); /* 4144 */ +#endif + +#if PACKETVER == 20160309 + packetKeys(0x21587520,0x353A7706,0x1B722B25); /* 4144 */ +#endif + +#if PACKETVER == 20160330 + packetKeys(0x02050940,0x545336FF,0x7E7D4902); /* 4144 */ +#endif + +#if PACKETVER == 20160420 + packetKeys(0x67D2163A,0x3068215B,0x4835474D); /* 4144 */ +#endif + +#if PACKETVER == 20160511 + packetKeys(0x3C666FE2,0x27E84E3E,0x53E11BA5); /* 4144 */ +#endif + +#if PACKETVER == 20160525 + packetKeys(0x485C45B6,0x47DC6192,0x76B34A36); /* 4144 */ +#endif + +#if PACKETVER == 20160608 + packetKeys(0x11D74609,0x77C43E8A,0x44290F53); /* 4144 */ +#endif + +#if PACKETVER == 20160615 + packetKeys(0x062C5C26,0x6CF47E82,0x4DD53480); /* 4144 */ +#endif + +#if PACKETVER == 20160630 + packetKeys(0x0DF31CCC,0x54281606,0x5C4C6855); /* 4144 */ +#endif + +#if PACKETVER == 20160706 + packetKeys(0x33A766D0,0x743F04F8,0x0FA0276C); /* 4144 */ +#endif + +#if PACKETVER == 20160713 + packetKeys(0x714F2495,0x7DDC6F32,0x3FD8533D); /* 4144 */ +#endif + +#if PACKETVER == 20160720 + packetKeys(0x4F8A19C0,0x2D8E085C,0x37BB67D6); /* 4144 */ +#endif + +#if PACKETVER == 20160727 + packetKeys(0x3C6952AB,0x26E4077F,0x37E25DF7); /* 4144 */ +#endif + +#if PACKETVER == 20160831 + packetKeys(0x564E13B0,0x7F680549,0x382D273B); /* 4144 */ +#endif + +#if PACKETVER == 20160907 + packetKeys(0x32E5237D,0x57BD4DBD,0x5DBD5DBD); /* 4144 */ +#endif + +#if PACKETVER == 20160921 + packetKeys(0x11CD15CD,0x15CD15CD,0x15CD15CD); /* 4144 */ +#endif + +#if PACKETVER == 20161012 + packetKeys(0x5E2311F2,0x14FD012C,0x76EB64F6); /* 4144 */ +#endif + +#if PACKETVER == 20161026 + packetKeys(0x2CB86AE6,0x7D12660E,0x1B004DEB); /* 4144 */ +#endif + +#if PACKETVER == 20161109 + packetKeys(0x0A5277C0,0x2DB17506,0x0E8F26DA); /* 4144 */ +#endif + +#if PACKETVER == 20161207 + packetKeys(0x52D267AA,0x4FE42156,0x1292153E); /* 4144 */ +#endif + +#if PACKETVER == 20161214 + packetKeys(0x4DDE217B,0x07863AE0,0x5B591656); /* 4144 */ +#endif + +#if PACKETVER == 20161221 + packetKeys(0x69CB4F56,0x793C165E,0x673A2354); /* 4144 */ +#endif + + #if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3) packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3); #endif diff --git a/src/map/pc.c b/src/map/pc.c index 156e07dee..c1339b0de 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -5039,7 +5039,7 @@ int pc_useitem(struct map_session_data *sd,int n) { #if PACKETVER >= 20110309 clif->msgtable(sd, MSG_NPC_WORK_IN_PROGRESS); #else - clif->messagecolor_self(fd, COLOR_WHITE, msg_fd(fd, 48)); + clif->messagecolor_self(sd->fd, COLOR_WHITE, msg_sd(sd, 48)); #endif return 0; } @@ -5491,13 +5491,6 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skil //Logs items, Stolen from mobs [Lupus] logs->pick_mob(md, LOG_TYPE_STEAL, -1, &tmp_item, data); - //A Rare Steal Global Announce by Lupus - if(md->db->dropitem[i].p<=battle_config.rare_drop_announce) { - char message[128]; - sprintf (message, msg_txt(542), sd->status.name, md->db->jname, data->jname, (float)md->db->dropitem[i].p / 100); - //MSG: "'%s' stole %s's %s (chance: %0.02f%%)" - intif->broadcast(message, (int)strlen(message)+1, BC_DEFAULT); - } return 1; } @@ -10045,51 +10038,51 @@ void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos) *------------------------------------------*/ int pc_unequipitem(struct map_session_data *sd,int n,int flag) { - int i,iflag; - bool status_cacl = false; + int i, iflag; + bool status_calc = false; int pos; + nullpo_ret(sd); - if( n < 0 || n >= MAX_INVENTORY ) { - clif->unequipitemack(sd,0,0,UIA_FAIL); + if (n < 0 || n >= MAX_INVENTORY) { + clif->unequipitemack(sd, 0, 0, UIA_FAIL); return 0; } // if player is berserk then cannot unequip - if (!(flag&PCUNEQUIPITEM_FORCE) && sd->sc.count && (sd->sc.data[SC_BERSERK] || sd->sc.data[SC_NO_SWITCH_EQUIP]) ) - { - clif->unequipitemack(sd,n,0,UIA_FAIL); + if (!(flag & PCUNEQUIPITEM_FORCE) && sd->sc.count && (sd->sc.data[SC_BERSERK] || sd->sc.data[SC_NO_SWITCH_EQUIP])) { + clif->unequipitemack(sd, n, 0, UIA_FAIL); return 0; } - if( !(flag&PCUNEQUIPITEM_FORCE) && sd->sc.count && sd->sc.data[SC_KYOUGAKU] ) - { - clif->unequipitemack(sd,n,0,UIA_FAIL); + if (!(flag & PCUNEQUIPITEM_FORCE) && sd->sc.count && sd->sc.data[SC_KYOUGAKU]) { + clif->unequipitemack(sd, n, 0, UIA_FAIL); return 0; } - if(battle_config.battle_log) + if (battle_config.battle_log) ShowInfo("unequip %d %x:%x\n", n, (unsigned int)(pc->equippoint(sd, n)), sd->status.inventory[n].equip); - if(!sd->status.inventory[n].equip){ //Nothing to unequip - clif->unequipitemack(sd,n,0,UIA_FAIL); + if (sd->status.inventory[n].equip == 0) { //Nothing to unequip + clif->unequipitemack(sd, n, 0, UIA_FAIL); return 0; } - for(i=0;i<EQI_MAX;i++) { - if(sd->status.inventory[n].equip & pc->equip_pos[i]) + + for (i = 0; i < EQI_MAX; i++) { + if (sd->status.inventory[n].equip & pc->equip_pos[i]) sd->equip_index[i] = -1; } pos = sd->status.inventory[n].equip; pc->unequipitem_pos(sd, n, pos); - clif->unequipitemack(sd,n,pos,UIA_SUCCESS); + clif->unequipitemack(sd, n, pos, UIA_SUCCESS); - if((pos & EQP_ARMS) && - sd->weapontype1 == 0 && sd->weapontype2 == 0 && (!sd->sc.data[SC_TK_SEVENWIND] || sd->sc.data[SC_ASPERSIO])) //Check for seven wind (but not level seven!) - skill->enchant_elemental_end(&sd->bl,-1); + if ((pos & EQP_ARMS) && + sd->weapontype1 == 0 && sd->weapontype2 == 0 && (sd->sc.data[SC_TK_SEVENWIND] == 0 || sd->sc.data[SC_ASPERSIO])) //Check for seven wind (but not level seven!) + skill->enchant_elemental_end(&sd->bl, -1); - if(pos & EQP_ARMOR) { + if (pos & EQP_ARMOR) { // On Armor Change... status_change_end(&sd->bl, SC_BENEDICTIO, INVALID_TIMER); status_change_end(&sd->bl, SC_ARMOR_RESIST, INVALID_TIMER); @@ -10103,74 +10096,84 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag) if( sd->state.autobonus&pos ) sd->state.autobonus &= ~sd->status.inventory[n].equip; //Check for activated autobonus [Inkfish] - sd->status.inventory[n].equip=0; + sd->status.inventory[n].equip = 0; iflag = sd->npc_item_flag; /* check for combos (MUST be before status_calc_pc) */ - if ( sd->inventory_data[n] ) { - if( sd->inventory_data[n]->combos_count ) { - if( pc->removecombo(sd,sd->inventory_data[n]) ) - status_cacl = true; - } if(itemdb_isspecial(sd->status.inventory[n].card[0])) - ; //No cards - else { - for( i = 0; i < sd->inventory_data[n]->slot; i++ ) { + if (sd->inventory_data[n] != NULL) { + if (sd->inventory_data[n]->combos_count) { + if (pc->removecombo(sd, sd->inventory_data[n])) + status_calc = true; + } + if (itemdb_isspecial(sd->status.inventory[n].card[0]) == false) { + for (i = 0; i < sd->inventory_data[n]->slot; i++) { struct item_data *data; - if (!sd->status.inventory[n].card[i]) + if (sd->status.inventory[n].card[i] == 0) continue; - if ( ( data = itemdb->exists(sd->status.inventory[n].card[i]) ) != NULL ) { - if( data->combos_count ) { - if( pc->removecombo(sd,data) ) - status_cacl = true; + if ((data = itemdb->exists(sd->status.inventory[n].card[i])) != NULL) { + if (data->combos_count) { + if (pc->removecombo(sd, data)) + status_calc = true; } } } } + /* Item Options checking */ + for (i = 0; i < MAX_ITEM_OPTIONS; i++) { + struct item_option *ito = NULL; + int16 item_option = sd->status.inventory[n].option[i].index; + + if (item_option <= 0) + continue; + if ((ito = itemdb->option_exists(sd->status.inventory[n].option[i].index)) == NULL) + continue; + + status_calc = true; + } } - if(flag&PCUNEQUIPITEM_RECALC || status_cacl) { + if (flag & PCUNEQUIPITEM_RECALC || status_calc) { pc->checkallowskill(sd); - status_calc_pc(sd,SCO_NONE); + status_calc_pc(sd, SCO_NONE); } - if(sd->sc.data[SC_CRUCIS] && !battle->check_undead(sd->battle_status.race,sd->battle_status.def_ele)) + if (sd->sc.data[SC_CRUCIS] && battle->check_undead(sd->battle_status.race, sd->battle_status.def_ele) == false) status_change_end(&sd->bl, SC_CRUCIS, INVALID_TIMER); //OnUnEquip script [Skotlex] - if (sd->inventory_data[n]) { - if (sd->inventory_data[n]->unequip_script) { - if ( battle_config.unequip_restricted_equipment & 1 ) { - ARR_FIND(0, map->list[sd->bl.m].zone->disabled_items_count, i, map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].nameid); - if ( i == map->list[sd->bl.m].zone->disabled_items_count ) + if (sd->inventory_data[n] != NULL) { + if (sd->inventory_data[n]->unequip_script != NULL) { + if (battle_config.unequip_restricted_equipment & 1) { + ARR_FIND(0, map->list[sd->bl.m].zone->disabled_items_count, i, map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].nameid); + if (i == map->list[sd->bl.m].zone->disabled_items_count) script->run_item_unequip_script(sd, sd->inventory_data[n], npc->fake_nd->bl.id); } else script->run_item_unequip_script(sd, sd->inventory_data[n], npc->fake_nd->bl.id); } - if(itemdb_isspecial(sd->status.inventory[n].card[0])) - ; //No cards - else { - for( i = 0; i < sd->inventory_data[n]->slot; i++ ) { - struct item_data *data; - if (!sd->status.inventory[n].card[i]) + if (itemdb_isspecial(sd->status.inventory[n].card[0]) == false) { + for (i = 0; i < sd->inventory_data[n]->slot; i++) { + struct item_data *data = NULL; + if (sd->status.inventory[n].card[i] == 0) continue; - if ( ( data = itemdb->exists(sd->status.inventory[n].card[i]) ) != NULL ) { - if ( data->unequip_script ) { - if ( battle_config.unequip_restricted_equipment & 2 ) { + if ((data = itemdb->exists(sd->status.inventory[n].card[i])) != NULL) { + if (data->unequip_script) { + if (battle_config.unequip_restricted_equipment & 2) { int j; - ARR_FIND(0, map->list[sd->bl.m].zone->disabled_items_count, j, map->list[sd->bl.m].zone->disabled_items[j] == sd->status.inventory[n].card[i]); - if ( j == map->list[sd->bl.m].zone->disabled_items_count ) + ARR_FIND(0, map->list[sd->bl.m].zone->disabled_items_count, j, map->list[sd->bl.m].zone->disabled_items[j] == sd->status.inventory[n].card[i]); + if (j == map->list[sd->bl.m].zone->disabled_items_count) script->run_item_unequip_script(sd, data, npc->fake_nd->bl.id); - } - else + } else { script->run_item_unequip_script(sd, data, npc->fake_nd->bl.id); + } } } } } } + sd->npc_item_flag = iflag; return 1; diff --git a/src/map/script.c b/src/map/script.c index 6b996a11c..310722061 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -9958,7 +9958,13 @@ BUILDIN(end) { BUILDIN(checkoption) { int option; - struct map_session_data *sd = script->rid2sd(st); + struct map_session_data *sd; + + if (script_hasdata(st, 3)) + sd = map->id2sd(script_getnum(st, 3)); + else + sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source @@ -9977,7 +9983,13 @@ BUILDIN(checkoption) BUILDIN(checkoption1) { int opt1; - struct map_session_data *sd = script->rid2sd(st); + struct map_session_data *sd; + + if (script_hasdata(st, 3)) + sd = map->id2sd(script_getnum(st, 3)); + else + sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source @@ -9996,7 +10008,13 @@ BUILDIN(checkoption1) BUILDIN(checkoption2) { int opt2; - struct map_session_data *sd = script->rid2sd(st); + struct map_session_data *sd; + + if (script_hasdata(st, 3)) + sd = map->id2sd(script_getnum(st, 3)); + else + sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source @@ -10020,7 +10038,13 @@ BUILDIN(setoption) { int option; int flag = 1; - struct map_session_data *sd = script->rid2sd(st); + struct map_session_data *sd; + + if (script_hasdata(st, 4)) + sd = map->id2sd(script_getnum(st, 4)); + else + sd = script->rid2sd(st); + if (sd == NULL) return true;// no player attached, report source @@ -21601,6 +21625,67 @@ BUILDIN(useatcmd) return true; } +BUILDIN(has_permission) +{ + struct map_session_data *sd; + enum e_pc_permission perm; + + if (script_hasdata(st, 3)) { + sd = map->id2sd(script_getnum(st, 3)); + } else { + sd = script->rid2sd(st); + } + + if (sd == NULL) { + script_pushint(st, 0); + return false; + } + + if (script_isstringtype(st, 2)) { + // to check for plugin permissions + int i = 0, j = -1; + const char *name = script_getstr(st, 2); + for (; i < pcg->permission_count; ++i) { + if (strcmp(pcg->permissions[i].name, name) == 0) { + j = i; + break; + } + } + if (j < 0) { + ShowError("script:has_permission: unknown permission: %s\n", name); + script_pushint(st, 0); + return false; + } + script_pushint(st, pc_has_permission(sd, pcg->permissions[j].permission)); + return true; + } + + // to ckeck for built-in permission + perm = script_getnum(st, 2); + script_pushint(st, pc_has_permission(sd, perm)); + return true; +} + +BUILDIN(can_use_command) +{ + struct map_session_data *sd; + const char *cmd = script_getstr(st, 2); + + if (script_hasdata(st, 3)) { + sd = map->id2sd(script_getnum(st, 3)); + } else { + sd = script->rid2sd(st); + } + + if (sd == NULL) { + script_pushint(st, 0); + return false; + } + + script_pushint(st, pc->can_use_command(sd, cmd)); + return true; +} + /* getrandgroupitem <container_item_id>,<quantity> */ BUILDIN(getrandgroupitem) { @@ -23206,8 +23291,8 @@ void script_parse_builtin(void) { BUILDIN_DEF(setgroupid, "i?"), BUILDIN_DEF(getgroupid,""), BUILDIN_DEF(end,""), - BUILDIN_DEF(checkoption,"i"), - BUILDIN_DEF(setoption,"i?"), + BUILDIN_DEF(checkoption,"i?"), + BUILDIN_DEF(setoption,"i??"), BUILDIN_DEF(setcart,"?"), BUILDIN_DEF(checkcart,""), BUILDIN_DEF(setfalcon,"?"), @@ -23357,8 +23442,8 @@ void script_parse_builtin(void) { BUILDIN_DEF(setnpcdir,"*"), // [4144] BUILDIN_DEF(getnpcclass,"?"), // [4144] BUILDIN_DEF(getmapxy,"rrri?"), //by Lorky [Lupus] - BUILDIN_DEF(checkoption1,"i"), - BUILDIN_DEF(checkoption2,"i"), + BUILDIN_DEF(checkoption1,"i?"), + BUILDIN_DEF(checkoption2,"i?"), BUILDIN_DEF(guildgetexp,"i"), BUILDIN_DEF(guildchangegm,"is"), BUILDIN_DEF(logmes,"s"), //this command actls as MES but rints info into LOG file either SQL/TXT [Lupus] @@ -23575,6 +23660,8 @@ void script_parse_builtin(void) { BUILDIN_DEF(bindatcmd, "ss???"), BUILDIN_DEF(unbindatcmd, "s"), BUILDIN_DEF(useatcmd, "s"), + BUILDIN_DEF(has_permission, "v?"), + BUILDIN_DEF(can_use_command, "s?"), /** * Item bound [Xantara] [Akinari] [Mhalicot/Hercules] @@ -23820,6 +23907,34 @@ void script_hardcoded_constants(void) script->set_constant("BL_CHAR",BL_CHAR,false, false); script->set_constant("BL_ALL",BL_ALL,false, false); + script->constdb_comment("Player permissions"); + script->set_constant("PERM_TRADE", PC_PERM_TRADE, false, false); + script->set_constant("PERM_PARTY", PC_PERM_PARTY, false, false); + script->set_constant("PERM_ALL_SKILL", PC_PERM_ALL_SKILL, false, false); + script->set_constant("PERM_USE_ALL_EQUIPMENT", PC_PERM_USE_ALL_EQUIPMENT, false, false); + script->set_constant("PERM_SKILL_UNCONDITIONAL", PC_PERM_SKILL_UNCONDITIONAL, false, false); + script->set_constant("PERM_JOIN_ALL_CHAT", PC_PERM_JOIN_ALL_CHAT, false, false); + script->set_constant("PERM_NO_CHAT_KICK", PC_PERM_NO_CHAT_KICK, false, false); + script->set_constant("PERM_HIDE_SESSION", PC_PERM_HIDE_SESSION, false, false); + script->set_constant("PERM_RECEIVE_HACK_INFO", PC_PERM_RECEIVE_HACK_INFO, false, false); + script->set_constant("PERM_WARP_ANYWHERE", PC_PERM_WARP_ANYWHERE, false, false); + script->set_constant("PERM_VIEW_HPMETER", PC_PERM_VIEW_HPMETER, false, false); + script->set_constant("PERM_VIEW_EQUIPMENT", PC_PERM_VIEW_EQUIPMENT, false, false); + script->set_constant("PERM_USE_CHECK", PC_PERM_USE_CHECK, false, false); + script->set_constant("PERM_USE_CHANGEMAPTYPE", PC_PERM_USE_CHANGEMAPTYPE, false, false); + script->set_constant("PERM_USE_ALL_COMMANDS", PC_PERM_USE_ALL_COMMANDS, false, false); + script->set_constant("PERM_RECEIVE_REQUESTS", PC_PERM_RECEIVE_REQUESTS, false, false); + script->set_constant("PERM_SHOW_BOSS", PC_PERM_SHOW_BOSS, false, false); + script->set_constant("PERM_DISABLE_PVM", PC_PERM_DISABLE_PVM, false, false); + script->set_constant("PERM_DISABLE_PVP", PC_PERM_DISABLE_PVP, false, false); + script->set_constant("PERM_DISABLE_CMD_DEAD", PC_PERM_DISABLE_CMD_DEAD, false, false); + script->set_constant("PERM_HCHSYS_ADMIN", PC_PERM_HCHSYS_ADMIN, false, false); + script->set_constant("PERM_TRADE_BOUND", PC_PERM_TRADE_BOUND, false, false); + script->set_constant("PERM_DISABLE_PICK_UP", PC_PERM_DISABLE_PICK_UP, false, false); + script->set_constant("PERM_DISABLE_STORE", PC_PERM_DISABLE_STORE, false, false); + script->set_constant("PERM_DISABLE_EXP", PC_PERM_DISABLE_EXP, false, false); + script->set_constant("PERM_DISABLE_SKILL_USAGE", PC_PERM_DISABLE_SKILL_USAGE, false, false); + script->constdb_comment("Renewal"); #ifdef RENEWAL script->set_constant("RENEWAL", 1, false, false); |