diff options
Diffstat (limited to 'src/map')
55 files changed, 28896 insertions, 22888 deletions
diff --git a/src/map/Makefile.in b/src/map/Makefile.in index 6dbebb5ad..75093662f 100644 --- a/src/map/Makefile.in +++ b/src/map/Makefile.in @@ -36,6 +36,19 @@ LIBCONFIG_OBJ = $(addprefix $(LIBCONFIG_D)/, libconfig.o grammar.o scanctx.o \ LIBCONFIG_H = $(addprefix $(LIBCONFIG_D)/, libconfig.h grammar.h parsectx.h \ scanctx.h scanner.h strbuf.h wincompat.h) +ifeq (@USE_LIBBACKTRACE@,yes) + LIBBACKTRACE_D = $(THIRDPARTY_D)/libbacktrace + LIBBACKTRACE_OBJ = $(addprefix $(LIBBACKTRACE_D)/, atomic.o backtrace.o \ + dwarf.o @LIBBACKTRACE_FORMAT_FILE@ fileline.o mmapio.o mmap.o posix.o print.o \ + simple.o sort.o state.o) + LIBBACKTRACE_H = $(addprefix $(LIBBACKTRACE_D)/, backtrace.h \ + backtrace-supported.h config.h filenames.h internal.h) +else + LIBBACKTRACE_D = + LIBBACKTRACE_OBJ = + LIBBACKTRACE_H = +endif + MT19937AR_D = $(THIRDPARTY_D)/mt19937ar MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o MT19937AR_H = $(MT19937AR_D)/mt19937ar.h @@ -60,7 +73,7 @@ MAP_PH = refine.p.h HAVE_MYSQL=@HAVE_MYSQL@ ifeq ($(HAVE_MYSQL),yes) - MAP_SERVER_SQL_DEPENDS=$(MAP_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(SYSINFO_INC) + MAP_SERVER_SQL_DEPENDS=$(MAP_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) $(SYSINFO_INC) else MAP_SERVER_SQL_DEPENDS=needs_mysql endif @@ -99,7 +112,7 @@ help: Makefile: Makefile.in @$(MAKE) -C ../.. src/map/Makefile -$(SYSINFO_INC): $(MAP_C) $(MAP_PH) $(MAP_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) +$(SYSINFO_INC): $(MAP_C) $(MAP_PH) $(MAP_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H) @echo " MAKE $@" @$(MAKE) -C ../.. sysinfo @@ -120,7 +133,7 @@ map-server: ../../map-server@EXEEXT@ ../../map-server@EXEEXT@: $(MAP_SERVER_SQL_DEPENDS) Makefile @echo " LD $(notdir $@)" @$(CC) @STATIC@ @LDFLAGS@ -o ../../map-server@EXEEXT@ $(MAP_OBJ) $(COMMON_D)/obj_all/common.a $(COMMON_D)/obj_sql/common_sql.a \ - $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) @LIBS@ @MYSQL_LIBS@ + $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(LIBBACKTRACE_OBJ) @LIBS@ @MYSQL_LIBS@ # missing object files $(COMMON_D)/obj_all/common.a: @@ -139,10 +152,14 @@ $(LIBCONFIG_OBJ): @echo " MAKE $@" @$(MAKE) -C $(LIBCONFIG_D) +$(LIBBACKTRACE_OBJ): + @echo " MAKE $@" + @$(MAKE) -C $(LIBBACKTRACE_D) + .SECONDEXPANSION: # map object files -obj_sql/%.o: %.c $$(filter %.p.h, $(MAP_PH)) $(MAP_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) | obj_sql +obj_sql/%.o: %.c $$(filter %.p.h, $(MAP_PH)) $(MAP_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) $(LIBBACKTRACE_H) | obj_sql @echo " CC $<" @$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< diff --git a/src/map/achievement.c b/src/map/achievement.c index e6a9ae3be..0b0d9749b 100644 --- a/src/map/achievement.c +++ b/src/map/achievement.c @@ -194,6 +194,8 @@ static void achievement_progress_add(struct map_session_data *sd, const struct a // Check if the Achievement is complete. if (achievement->check_complete(sd, ad)) { achievement->validate_achieve(sd, ad->id); + if ((ach = achievement->ensure(sd, ad)) == NULL) + return; ach->completed_at = time(NULL); } @@ -232,6 +234,8 @@ static void achievement_progress_set(struct map_session_data *sd, const struct a if (achievement->check_complete(sd, ad)) { achievement->validate_achieve(sd, ad->id); + if ((ach = achievement->ensure(sd, ad)) == NULL) + return; ach->completed_at = time(NULL); } diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 707522423..9fb2540ef 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -962,39 +962,10 @@ ACMD(option) *------------------------------------------*/ ACMD(hide) { - if (pc_isinvisible(sd)) { - sd->sc.option &= ~OPTION_INVISIBLE; - if (sd->disguise != -1 ) - status->set_viewdata(&sd->bl, sd->disguise); - else - status->set_viewdata(&sd->bl, sd->status.class); - clif->message(fd, msg_fd(fd,10)); // Invisible: Off - - // increment the number of pvp players on the map - map->list[sd->bl.m].users_pvp++; - - if( map->list[sd->bl.m].flag.pvp && !map->list[sd->bl.m].flag.pvp_nocalcrank ) { - // register the player for ranking calculations - sd->pvp_timer = timer->add( timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0 ); - } - //bugreport:2266 - map->foreachinmovearea(clif->insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl); - } else { - clif->clearunit_area(&sd->bl, CLR_OUTSIGHT); - sd->sc.option |= OPTION_INVISIBLE; - sd->vd.class = INVISIBLE_CLASS; - clif->message(fd, msg_fd(fd,11)); // Invisible: On - - // decrement the number of pvp players on the map - map->list[sd->bl.m].users_pvp--; - - if( map->list[sd->bl.m].flag.pvp && !map->list[sd->bl.m].flag.pvp_nocalcrank && sd->pvp_timer != INVALID_TIMER ) { - // unregister the player for ranking - timer->delete( sd->pvp_timer, pc->calc_pvprank_timer ); - sd->pvp_timer = INVALID_TIMER; - } - } - clif->changeoption(&sd->bl); + if (pc_isinvisible(sd)) + pc->unhide(sd, true); + else + pc->hide(sd, true); return true; } @@ -1197,17 +1168,17 @@ ACMD(item) memset(item_name, '\0', sizeof(item_name)); - if (!strcmpi(info->command,"itembound") && (!*message || ( - sscanf(message, "\"%99[^\"]\" %12d %12d", item_name, &number, &bound) < 2 && - sscanf(message, "%99s %12d %12d", item_name, &number, &bound) < 2 - ))) { - clif->message(fd, msg_fd(fd,295)); // Please enter an item name or ID (usage: @itembound <item name/ID> <quantity> <bound_type>). + if (!strcmpi(info->command, "itembound") && (!*message || ( + sscanf(message, "\"%99[^\"]\" %12d %12d", item_name, &number, &bound) < 1 && + sscanf(message, "%99s %12d %12d", item_name, &number, &bound) < 1 + ))) { + clif->message(fd, msg_fd(fd, 295)); // Please enter an item name or ID (usage: @itembound <item name/ID> <quantity> <bound_type>). return false; } else if (!*message - || ( sscanf(message, "\"%99[^\"]\" %12d", item_name, &number) < 1 - && sscanf(message, "%99s %12d", item_name, &number) < 1 - )) { - clif->message(fd, msg_fd(fd,983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>). + || (sscanf(message, "\"%99[^\"]\" %12d", item_name, &number) < 1 + && sscanf(message, "%99s %12d", item_name, &number) < 1 + )) { + clif->message(fd, msg_fd(fd, 983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>). return false; } @@ -1215,33 +1186,33 @@ ACMD(item) number = 1; if ((item_data = itemdb->search_name(item_name)) == NULL && - (item_data = itemdb->exists(atoi(item_name))) == NULL) + (item_data = itemdb->exists(atoi(item_name))) == NULL) { - clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name. + clif->message(fd, msg_fd(fd, 19)); // Invalid item ID or name. return false; } - if(!strcmpi(info->command,"itembound") ) { - if( !(bound >= IBT_MIN && bound <= IBT_MAX) ) { - clif->message(fd, msg_fd(fd,298)); // Invalid bound type + if (!strcmpi(info->command, "itembound")) { + if (!(bound >= IBT_MIN && bound <= IBT_MAX)) { + clif->message(fd, msg_fd(fd, 298)); // Invalid bound type return false; } - switch( (enum e_item_bound_type)bound ) { - case IBT_CHARACTER: - case IBT_ACCOUNT: - break; /* no restrictions */ - case IBT_PARTY: - if( !sd->status.party_id ) { - clif->message(fd, msg_fd(fd,1498)); //You can't add a party bound item to a character without party! - return false; - } - break; - case IBT_GUILD: - if( !sd->status.guild_id ) { - clif->message(fd, msg_fd(fd,1499)); //You can't add a guild bound item to a character without guild! - return false; - } - break; + switch ((enum e_item_bound_type)bound) { + case IBT_CHARACTER: + case IBT_ACCOUNT: + break; /* no restrictions */ + case IBT_PARTY: + if (!sd->status.party_id) { + clif->message(fd, msg_fd(fd, 1498)); //You can't add a party bound item to a character without party! + return false; + } + break; + case IBT_GUILD: + if (!sd->status.guild_id) { + clif->message(fd, msg_fd(fd, 1499)); //You can't add a guild bound item to a character without guild! + return false; + } + break; } } @@ -1249,8 +1220,8 @@ ACMD(item) get_count = number; //Check if it's stackable. if (!itemdb->isstackable2(item_data)) { - if( bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR) ) { - clif->message(fd, msg_fd(fd,498)); // Cannot create bounded pet eggs or pet armors. + if (bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR)) { + clif->message(fd, msg_fd(fd, 498)); // Cannot create bounded pet eggs or pet armors. return false; } get_count = 1; @@ -1270,7 +1241,7 @@ ACMD(item) } if (flag == 0) - clif->message(fd, msg_fd(fd,18)); // Item created. + clif->message(fd, msg_fd(fd, 18)); // Item created. return true; } @@ -1283,37 +1254,37 @@ ACMD(item2) struct item_data *item_data; char item_name[100]; int item_id, number = 0, bound = 0; - int identify = 0, refine_level = 0, attr = 0; + int identify = 1, refine_level = 0, attr = ATTR_NONE; int c1 = 0, c2 = 0, c3 = 0, c4 = 0; memset(item_name, '\0', sizeof(item_name)); - if (!strcmpi(info->command,"itembound2") && (!*message || ( + if (!strcmpi(info->command, "itembound2") && (!*message || ( sscanf(message, "\"%99[^\"]\" %12d %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4, &bound) < 10 && - sscanf(message, "%99s %12d %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4, &bound) < 10 ))) { - clif->message(fd, msg_fd(fd,296)); // Please enter all parameters (usage: @itembound2 <item name/ID> <quantity> - clif->message(fd, msg_fd(fd,297)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4> <bound_type>). + sscanf(message, "%99s %12d %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4, &bound) < 10))) { + clif->message(fd, msg_fd(fd, 296)); // Please enter all parameters (usage: @itembound2 <item name/ID> <quantity> + clif->message(fd, msg_fd(fd, 297)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4> <bound_type>). return false; } else if (!*message - || ( sscanf(message, "\"%99[^\"]\" %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4) < 9 - && sscanf(message, "%99s %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4) < 9 - )) { - clif->message(fd, msg_fd(fd,984)); // Please enter all parameters (usage: @item2 <item name/ID> <quantity> - clif->message(fd, msg_fd(fd,985)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4>). + || (sscanf(message, "\"%99[^\"]\" %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4) < 1 + && sscanf(message, "%99s %12d %12d %12d %12d %12d %12d %12d %12d", item_name, &number, &identify, &refine_level, &attr, &c1, &c2, &c3, &c4) < 1 + )) { + clif->message(fd, msg_fd(fd, 984)); // Please enter all parameters (usage: @item2 <item name/ID> <quantity> + clif->message(fd, msg_fd(fd, 985)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4>). return false; } if (number <= 0) number = 1; - if( !strcmpi(info->command,"itembound2") && !(bound >= IBT_MIN && bound <= IBT_MAX) ) { - clif->message(fd, msg_fd(fd,298)); // Invalid bound type + if (!strcmpi(info->command, "itembound2") && !(bound >= IBT_MIN && bound <= IBT_MAX)) { + clif->message(fd, msg_fd(fd, 298)); // Invalid bound type return false; } item_id = 0; if ((item_data = itemdb->search_name(item_name)) != NULL || - (item_data = itemdb->exists(atoi(item_name))) != NULL) + (item_data = itemdb->exists(atoi(item_name))) != NULL) item_id = item_data->nameid; if (item_id > 500) { @@ -1321,11 +1292,11 @@ ACMD(item2) int loop, get_count, i; loop = 1; get_count = number; - if( !strcmpi(info->command,"itembound2") ) - bound = 1; - if( !itemdb->isstackable2(item_data) ) { - if( bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR) ) { - clif->message(fd, msg_fd(fd,498)); // Cannot create bounded pet eggs or pet armors. + if (!strcmpi(info->command, "itembound2")) + bound = IBT_ACCOUNT; + if (!itemdb->isstackable2(item_data)) { + if (bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR)) { + clif->message(fd, msg_fd(fd, 498)); // Cannot create bounded pet eggs or pet armors. return false; } loop = number; @@ -1338,7 +1309,8 @@ ACMD(item2) refine_level = 0; } else { identify = 1; - refine_level = attr = 0; + refine_level = 0; + attr = ATTR_NONE; } refine_level = cap_value(refine_level, 0, MAX_REFINE); for (i = 0; i < loop; i++) { @@ -1358,9 +1330,9 @@ ACMD(item2) } if (flag == 0) - clif->message(fd, msg_fd(fd,18)); // Item created. + clif->message(fd, msg_fd(fd, 18)); // Item created. } else { - clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name. + clif->message(fd, msg_fd(fd, 19)); // Invalid item ID or name. return false; } @@ -2744,42 +2716,49 @@ ACMD(guildlevelup) return true; } -/*========================================== +/** + * Creates a pet egg in the character's inventory. * - *------------------------------------------*/ + * @code{.herc} + * @makeegg <pet> + * @endcode + * + **/ ACMD(makeegg) { - struct item_data *item_data; - int id, pet_id; - - if (!*message) { - clif->message(fd, msg_fd(fd,1015)); // Please enter a monster/egg name/ID (usage: @makeegg <pet>). + if (*message == '\0') { + clif->message(fd, msg_fd(fd, 1015)); // Please enter a monster/egg name/ID (usage: @makeegg <pet>). return false; } - if ((item_data = itemdb->search_name(message)) != NULL) // for egg name + struct item_data *item_data = itemdb->search_name(message); + int id; + + if (item_data != NULL) { // Egg name. id = item_data->nameid; - else - if ((id = mob->db_searchname(message)) != 0) // for monster name - ; - else - id = atoi(message); + } else { + id = mob->db_searchname(message); // Monster name. + + if (id == 0) + id = atoi(message); // Egg/monster ID. + } + + int pet_id = pet->search_petDB_index(id, PET_CLASS); - pet_id = pet->search_petDB_index(id, PET_CLASS); - if (pet_id < 0) + if (pet_id == INDEX_NOT_FOUND) pet_id = pet->search_petDB_index(id, PET_EGG); - if (pet_id >= 0) { - sd->catch_target_class = pet->db[pet_id].class_; - intif->create_pet( - sd->status.account_id, sd->status.char_id, - pet->db[pet_id].class_, mob->db(pet->db[pet_id].class_)->lv, - pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate, - 100, 0, 1, pet->db[pet_id].jname); - } else { - clif->message(fd, msg_fd(fd,180)); // The monster/egg name/id doesn't exist. + + if (pet_id == INDEX_NOT_FOUND) { + clif->message(fd, msg_fd(fd, 180)); // The monster/egg name/ID doesn't exist. return false; } + sd->catch_target_class = pet->db[pet_id].class_; + intif->create_pet(sd->status.account_id, sd->status.char_id, pet->db[pet_id].class_, + mob->db(pet->db[pet_id].class_)->lv, pet->db[pet_id].EggID, 0, + (short)pet->db[pet_id].intimate, PET_HUNGER_STUFFED, + 0, 1,pet->db[pet_id].jname); + return true; } @@ -2798,72 +2777,86 @@ ACMD(hatch) return true; } -/*========================================== +/** + * Sets a pet's intimacy value. * - *------------------------------------------*/ + * @code{.herc} + * @petfriendly <0-1000> + * @endcode + * + **/ ACMD(petfriendly) { - int friendly; - struct pet_data *pd; - - if (!*message || (friendly = atoi(message)) < 0) { - clif->message(fd, msg_fd(fd,1016)); // Please enter a valid value (usage: @petfriendly <0-1000>). + if (*message == '\0' || (atoi(message) == 0 && isdigit(*message) == 0)) { + clif->message(fd, msg_fd(fd, 1016)); // Please enter a valid value (usage: @petfriendly <0-1000>). return false; } - pd = sd->pd; - if (!pd) { - clif->message(fd, msg_fd(fd,184)); // Sorry, but you have no pet. + int friendly = atoi(message); + + if (friendly < PET_INTIMACY_NONE || friendly > PET_INTIMACY_MAX) { + clif->message(fd, msg_fd(fd, 1016)); // Please enter a valid value (usage: @petfriendly <0-1000>). return false; } - if (friendly < 0 || friendly > 1000) - { - clif->message(fd, msg_fd(fd,37)); // An invalid number was specified. + struct pet_data *pd = sd->pd; + + if (sd->status.pet_id == 0 || pd == NULL) { + clif->message(fd, msg_fd(fd, 184)); // Sorry, but you have no pet. return false; } - if (friendly == pd->pet.intimate) { - clif->message(fd, msg_fd(fd,183)); // Pet intimacy is already at maximum. + if (friendly == pd->pet.intimate && friendly == PET_INTIMACY_MAX) { + clif->message(fd, msg_fd(fd, 183)); // Pet intimacy is already at maximum. return false; } - pet->set_intimate(pd, friendly); - clif->send_petstatus(sd); - clif->message(fd, msg_fd(fd,182)); // Pet intimacy changed. + if (friendly != pd->pet.intimate) // No need to update the pet's status if intimacy value won't change. + pet->set_intimate(pd, friendly); + + clif->message(fd, msg_fd(fd, 182)); // Pet intimacy changed. (Send message regardless of value has changed or not.) + return true; } -/*========================================== +/** + * Sets a pet's hunger value. * - *------------------------------------------*/ + * @code{.herc} + * @pethungry <0-100> + * @endcode + * + **/ ACMD(pethungry) { - int hungry; - struct pet_data *pd; - - if (!*message || (hungry = atoi(message)) < 0) { - clif->message(fd, msg_fd(fd,1017)); // Please enter a valid number (usage: @pethungry <0-100>). + if (*message == '\0' || (atoi(message) == 0 && isdigit(*message) == 0)) { + clif->message(fd, msg_fd(fd, 1017)); // Please enter a valid number (usage: @pethungry <0-100>). return false; } - pd = sd->pd; - if (!sd->status.pet_id || !pd) { - clif->message(fd, msg_fd(fd,184)); // Sorry, but you have no pet. + int hungry = atoi(message); + + if (hungry < PET_HUNGER_STARVING || hungry > PET_HUNGER_STUFFED) { + clif->message(fd, msg_fd(fd, 1017)); // Please enter a valid number (usage: @pethungry <0-100>). return false; } - if (hungry < 0 || hungry > 100) { - clif->message(fd, msg_fd(fd,37)); // An invalid number was specified. + + struct pet_data *pd = sd->pd; + + if (sd->status.pet_id == 0 || pd == NULL) { + clif->message(fd, msg_fd(fd, 184)); // Sorry, but you have no pet. return false; } - if (hungry == pd->pet.hungry) { - clif->message(fd, msg_fd(fd,186)); // Pet hunger is already at maximum. + + if (hungry == pd->pet.hungry && hungry == PET_HUNGER_STUFFED) { + clif->message(fd, msg_fd(fd, 186)); // Pet hunger is already at maximum. return false; } - pd->pet.hungry = hungry; - clif->send_petstatus(sd); - clif->message(fd, msg_fd(fd,185)); // Pet hunger changed. + if (hungry != pd->pet.hungry) // No need to update the pet's status if hunger value won't change. + pet->set_hunger(pd, hungry); + + clif->message(fd, msg_fd(fd, 185)); // Pet hunger changed. (Send message regardless of value has changed or not.) return true; } @@ -2885,6 +2878,15 @@ ACMD(petrename) } pd->pet.rename_flag = 0; + + int i; + + ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].card[0] == CARD0_PET + && pd->pet.pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2])); + + if (i != sd->status.inventorySize) + sd->status.inventory[i].card[3] = pet->get_card4_value(pd->pet.rename_flag, pd->pet.intimate); + intif->save_petdata(sd->status.account_id, &pd->pet); clif->send_petstatus(sd); clif->message(fd, msg_fd(fd,187)); // You can now rename your pet. @@ -4100,6 +4102,8 @@ ACMD(mapinfo) strcat(atcmd_output, msg_fd(fd, 1292)); // PrivateAirshipStartable | if (map->list[m_id].flag.pairship_endable) strcat(atcmd_output, msg_fd(fd, 1293)); // PrivateAirshipEndable | + if (map->list[m_id].flag.nopet != 0) + strcat(atcmd_output, msg_fd(fd, 853)); // NoPet | clif->message(fd, atcmd_output); switch (list) { @@ -4123,16 +4127,36 @@ ACMD(mapinfo) for (i = 0; i < map->list[m_id].npc_num;) { struct npc_data *nd = map->list[m_id].npc[i]; switch(nd->dir) { - case 0: strcpy(direction, msg_fd(fd,1101)); break; // North - case 1: strcpy(direction, msg_fd(fd,1102)); break; // North West - case 2: strcpy(direction, msg_fd(fd,1103)); break; // West - case 3: strcpy(direction, msg_fd(fd,1104)); break; // South West - case 4: strcpy(direction, msg_fd(fd,1105)); break; // South - case 5: strcpy(direction, msg_fd(fd,1106)); break; // South East - case 6: strcpy(direction, msg_fd(fd,1107)); break; // East - case 7: strcpy(direction, msg_fd(fd,1108)); break; // North East - case 9: strcpy(direction, msg_fd(fd,1109)); break; // North - default: strcpy(direction, msg_fd(fd,1110)); break; // Unknown + case UNIT_DIR_NORTH: + strcpy(direction, msg_fd(fd, 1101)); // North + break; + case UNIT_DIR_NORTHWEST: + strcpy(direction, msg_fd(fd, 1102)); // North West + break; + case UNIT_DIR_WEST: + strcpy(direction, msg_fd(fd, 1103)); // West + break; + case UNIT_DIR_SOUTHWEST: + strcpy(direction, msg_fd(fd, 1104)); // South West + break; + case UNIT_DIR_SOUTH: + strcpy(direction, msg_fd(fd, 1105)); // South + break; + case UNIT_DIR_SOUTHEAST: + strcpy(direction, msg_fd(fd, 1106)); // South East + break; + case UNIT_DIR_EAST: + strcpy(direction, msg_fd(fd, 1107)); // East + break; + case UNIT_DIR_NORTHEAST: + strcpy(direction, msg_fd(fd, 1108)); // North East + break; + case 9: // is this actually used? [skyleo] + strcpy(direction, msg_fd(fd, 1109)); // North + break; + default: + strcpy(direction, msg_fd(fd, 1110)); // Unknown + break; } if(strcmp(nd->name,nd->exname) == 0) safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1111), // NPC %d: %s | Direction: %s | Sprite: %d | Location: %d %d @@ -4483,6 +4507,7 @@ ACMD(loadnpc) // add to list of script sources and run it npc->addsrcfile(message); npc->parsesrcfile(message,true); + npc->motd = npc->name2id("HerculesMOTD"); npc->read_event_script(); clif->message(fd, msg_fd(fd,262)); @@ -4517,6 +4542,7 @@ ACMD(unloadnpc) npc->unload_duplicates(nd, (flag != 0)); npc->unload(nd, true, (flag != 0)); + npc->motd = npc->name2id("HerculesMOTD"); npc->read_event_script(); clif->message(fd, msg_fd(fd, 112)); /// Npc Disabled. return true; @@ -4572,6 +4598,7 @@ ACMD(reloadnpc) clif->message(fd, msg_fd(fd, 1386)); /// File unloaded. Be aware that... npc->addsrcfile(file_path); npc->parsesrcfile(file_path, true); + npc->motd = npc->name2id("HerculesMOTD"); npc->read_event_script(); clif->message(fd, msg_fd(fd, 262)); /// Script loaded. return true; @@ -5651,6 +5678,8 @@ ACMD(useskill) return false; } + pc->autocast_clear(sd); + if (skill_id >= HM_SKILLBASE && skill_id < HM_SKILLBASE+MAX_HOMUNSKILL && sd->hd && homun_alive(sd->hd)) // (If used with @useskill, put the homunc as dest) bl = &sd->hd->bl; @@ -6899,7 +6928,7 @@ ACMD(identify) } } } - + if (num == 0) clif->message(fd,msg_fd(fd,1238)); // There are no items to appraise. else if (!identifyall) @@ -7845,39 +7874,61 @@ ACMD(monsterignore) return true; } -/*========================================== - * @fakename - * => Gives your character a fake name. [Valaris] - *------------------------------------------*/ + +/** + * Temporarily changes the character's name to the specified string. + * + * @code{.herc} + * @fakename {<options>} {<fake_name>} + * @endcode + * + **/ ACMD(fakename) { - if (!*message) - { - if (sd->fakename[0]) - { + if (*message == '\0') { + if (sd->fakename[0] != '\0') { sd->fakename[0] = '\0'; + sd->fakename_options = FAKENAME_OPTION_NONE; clif->blname_ack(0, &sd->bl); - if( sd->disguise ) + + if (sd->disguise != 0) // Another packet should be sent so the client updates the name for sd. clif->blname_ack(sd->fd, &sd->bl); - clif->message(sd->fd, msg_fd(fd,1307)); // Returned to real name. + + clif->message(sd->fd, msg_fd(fd, 1307)); // Returned to real name. return true; } - clif->message(sd->fd, msg_fd(fd,1308)); // You must enter a name. + clif->message(sd->fd, msg_fd(fd, 1308)); // You must enter a name. return false; } - if (strlen(message) < 2) - { - clif->message(sd->fd, msg_fd(fd,1309)); // Fake name must be at least two characters. + int options = FAKENAME_OPTION_NONE; + char buf[NAME_LENGTH] = {'\0'}; + const char *fake_name = NULL; + + if (sscanf(message, "%d %23[^\n]", &options, buf) == 2) { + fake_name = buf; + } else { + options = FAKENAME_OPTION_NONE; + fake_name = message; + } + + if (strlen(fake_name) < 2) { + clif->message(sd->fd, msg_fd(fd, 1309)); // Fake name must be at least two characters. return false; } - safestrncpy(sd->fakename, message, sizeof(sd->fakename)); + if (options < FAKENAME_OPTION_NONE) + options = FAKENAME_OPTION_NONE; + + safestrncpy(sd->fakename, fake_name, sizeof(sd->fakename)); + sd->fakename_options = options; clif->blname_ack(0, &sd->bl); - if (sd->disguise) // Another packet should be sent so the client updates the name for sd + + if (sd->disguise != 0) // Another packet should be sent so the client updates the name for sd. clif->blname_ack(sd->fd, &sd->bl); - clif->message(sd->fd, msg_fd(fd,1310)); // Fake name enabled. + + clif->message(sd->fd, msg_fd(fd, 1310)); // Fake name enabled. return true; } @@ -8519,7 +8570,7 @@ ACMD(itemlist) if( it->card[0] == CARD0_PET ) { // pet egg - if (it->card[3]) + if ((it->card[3] & 1) != 0) StrBuf->Printf(&buf, msg_fd(fd,1348), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, named) else StrBuf->Printf(&buf, msg_fd(fd,1349), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, unnamed) @@ -8876,13 +8927,17 @@ ACMD(accinfo) /* [Ind] */ ACMD(set) { - char reg[SCRIPT_VARNAME_LENGTH+1], val[254]; + char reg[SCRIPT_VARNAME_LENGTH + 1]; + char val[SCRIPT_STRING_VAR_LENGTH + 1]; struct script_data* data; int toset = 0; bool is_str = false; size_t len; - if (!*message || (toset = sscanf(message, "%32s %253[^\n]", reg, val)) < 1) { + char format[20]; + safesnprintf(format, sizeof(format), "%%%ds %%%d[^\\n]", SCRIPT_VARNAME_LENGTH, SCRIPT_STRING_VAR_LENGTH); + + if (*message == '\0' || (toset = sscanf(message, format, reg, val)) < 1) { clif->message(fd, msg_fd(fd,1367)); // Usage: @set <variable name> <value> clif->message(fd, msg_fd(fd,1368)); // Usage: ex. "@set PoringCharVar 50" clif->message(fd, msg_fd(fd,1369)); // Usage: ex. "@set PoringCharVarSTR$ Super Duper String" @@ -10525,9 +10580,9 @@ static bool atcommand_exec(const int fd, struct map_session_data *sd, const char clif->message(fd, msg_fd(fd,143)); return false; } + if (sd->block_action.commands) // *pcblock script command + return false; } - if (sd->block_action.commands) // *pcblock script command - return false; if (*message == atcommand->char_symbol) is_atcommand = false; diff --git a/src/map/atcommand.h b/src/map/atcommand.h index 66827b3b2..f3a5155ab 100644 --- a/src/map/atcommand.h +++ b/src/map/atcommand.h @@ -54,6 +54,16 @@ typedef enum { COMMAND_CHARCOMMAND = 2, } AtCommandType; +/** @fakename display option flags **/ +enum fakename_option_flag { + FAKENAME_OPTION_NONE = 0x00, + FAKENAME_OPTION_SHOW_PARTYNAME = 0x01, + FAKENAME_OPTION_SHOW_GUILDNAME = 0x02, + FAKENAME_OPTION_SHOW_GUILDPOSITION = 0x04, + FAKENAME_OPTION_SHOW_CLANPOSITION = 0x08, + FAKENAME_OPTION_SHOW_TITLE = 0x10 +}; + /** * Typedef **/ diff --git a/src/map/battle.c b/src/map/battle.c index 40e7d3161..a571a555d 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2832,18 +2832,18 @@ static int64 battle_calc_damage(struct block_list *src, struct block_list *bl, s d->dmg_lv = ATK_BLOCK; if(src_skill_id == MH_STEINWAND){ if (--group->val2<=0) - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); if( (group->val3 - damage) > 0 ) group->val3 -= (int)cap_value(damage, INT_MIN, INT_MAX); else - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); return 0; } if( skill_id == SO_ELEMENTAL_SHIELD ) { if ( ( group->val2 - damage) > 0 ) { group->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX); } else - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); return 0; } /** @@ -2853,12 +2853,12 @@ static int64 battle_calc_damage(struct block_list *src, struct block_list *bl, s if ( ( group->val2 - damage) > 0 ) { group->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX); } else - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); if (--group->val3<=0) - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); #else if (--group->val2<=0) - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); #endif return 0; } @@ -3231,12 +3231,11 @@ static int64 battle_calc_damage(struct block_list *src, struct block_list *bl, s if (!damage) return 0; if( (sce = sc->data[SC_LIGHTNINGWALK]) && flag&BF_LONG && rnd()%100 < sce->val1 ) { - int dx[8]={0,-1,-1,-1,0,1,1,1}; - int dy[8]={1,1,0,-1,-1,-1,0,1}; - uint8 dir = map->calc_dir(bl, src->x, src->y); - if( unit->movepos(bl, src->x-dx[dir], src->y-dy[dir], 1, 1) ) { - clif->slide(bl,src->x-dx[dir],src->y-dy[dir]); - unit->setdir(bl, dir); + enum unit_dir dir = map->calc_dir(bl, src->x, src->y); + Assert_ret(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX); + if (unit->movepos(bl, src->x - dirx[dir], src->y - diry[dir], 1, 1)) { + clif->slide(bl, src->x - dirx[dir], src->y - diry[dir]); + unit->set_dir(bl, dir); } d->dmg_lv = ATK_DEF; status_change_end(bl, SC_LIGHTNINGWALK, INVALID_TIMER); @@ -3751,7 +3750,7 @@ static struct Damage battle_calc_magic_attack(struct block_list *src, struct blo if (sc){ if( sc->data[SC_TELEKINESIS_INTENSE] && s_ele == ELE_GHOST ) - ad.damage += sc->data[SC_TELEKINESIS_INTENSE]->val3; + ad.damage += ad.damage * sc->data[SC_TELEKINESIS_INTENSE]->val3 / 100; } switch(skill_id){ case MG_FIREBOLT: @@ -4125,13 +4124,6 @@ static struct Damage battle_calc_misc_attack(struct block_list *src, struct bloc case NPC_EVILLAND: md.damage = skill->calc_heal(src,target,skill_id,skill_lv,false); break; - case RK_DRAGONBREATH: - case RK_DRAGONBREATH_WATER: - md.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv; - RE_LVL_MDMOD(150); - if (sd) md.damage = md.damage * (95 + 5 * pc->checkskill(sd,RK_DRAGONTRAINING)) / 100; - md.flag |= BF_LONG|BF_WEAPON; - break; /** * Ranger **/ @@ -4959,6 +4951,12 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl break; } break; + case RK_DRAGONBREATH: + case RK_DRAGONBREATH_WATER: + wd.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv; + wd.damage = wd.damage * status->get_lv(src) / 150; + if (sd) wd.damage = wd.damage * (95 + 5 * pc->checkskill(sd, RK_DRAGONTRAINING)) / 100; + break; default: { i = (flag.cri @@ -5858,10 +5856,10 @@ static void battle_reflect_damage(struct block_list *target, struct block_list * if( wd->flag & BF_SHORT ) { if( !is_boss(src) ) { if( sc->data[SC_DEATHBOUND] && skill_id != WS_CARTTERMINATION ) { - uint8 dir = map->calc_dir(target,src->x,src->y), - t_dir = unit->getdir(target); + enum unit_dir dir = map->calc_dir(target, src->x, src->y); + enum unit_dir t_dir = unit->getdir(target); - if( !map->check_dir(dir,t_dir) ) { + if (map->check_dir(dir, t_dir) == 0) { int64 rd1 = damage * sc->data[SC_DEATHBOUND]->val2 / 100; // Amplify damage. trdamage += rdamage = rd1 - (damage = rd1 * 30 / 100); // not normalized as intended. @@ -5929,21 +5927,21 @@ static void battle_reflect_damage(struct block_list *target, struct block_list * delay += 100;/* gradual increase so the numbers don't clip in the client */ } if( sc->data[SC_LG_REFLECTDAMAGE] && rnd()%100 < (30 + 10*sc->data[SC_LG_REFLECTDAMAGE]->val1) ) { - bool change = false; - NORMALIZE_RDAMAGE(damage * sc->data[SC_LG_REFLECTDAMAGE]->val2 / 100); trdamage -= rdamage;/* wont count towards total */ - if( sd && !sd->state.autocast ) { - change = true; - sd->state.autocast = 1; + enum autocast_type ac_type; + + if (sd != NULL) { + ac_type = sd->auto_cast_current.type; + sd->auto_cast_current.type = AUTOCAST_TEMP; } map->foreachinshootrange(battle->damage_area,target,skill->get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,delay,wd->dmotion,rdamage,status_get_race(target)); - if( change ) - sd->state.autocast = 0; + if (sd != NULL) + sd->auto_cast_current.type = ac_type; delay += 150;/* gradual increase so the numbers don't clip in the client */ @@ -6133,7 +6131,7 @@ static int battle_damage_area(struct block_list *bl, va_list ap) else status_fix_damage(src,bl,damage,0); clif->damage(bl,bl,amotion,dmotion,damage,1,BDT_ENDURE,0); - if (src->type != BL_PC || !BL_UCCAST(BL_PC, src)->state.autocast) + if (src->type != BL_PC || BL_UCCAST(BL_PC, src)->auto_cast_current.type != AUTOCAST_TEMP) skill->additional_effect(src, bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick); map->freeblock_unlock(); } @@ -6229,10 +6227,10 @@ static enum damage_lv battle_weapon_attack(struct block_list *src, struct block_ status_change_end(src, SC_CLOAKINGEXCEED, INVALID_TIMER); } if( tsc && tsc->data[SC_AUTOCOUNTER] && status->check_skilluse(target, src, KN_AUTOCOUNTER, 1) ) { - uint8 dir = map->calc_dir(target,src->x,src->y); - int t_dir = unit->getdir(target); + enum unit_dir dir = map->calc_dir(target, src->x, src->y); + enum unit_dir t_dir = unit->getdir(target); int dist = distance_bl(src, target); - if(dist <= 0 || (!map->check_dir(dir,t_dir) && dist <= tstatus->rhw.range+1)) { + if(dist <= 0 || (map->check_dir(dir, t_dir) == 0 && dist <= tstatus->rhw.range + 1)) { uint16 skill_lv = tsc->data[SC_AUTOCOUNTER]->val1; clif->skillcastcancel(target); //Remove the casting bar. [Skotlex] clif->damage(src, target, sstatus->amotion, 1, 0, 1, BDT_NORMAL, 0); //Display MISS. @@ -6342,7 +6340,7 @@ static enum damage_lv battle_weapon_attack(struct block_list *src, struct block_ skill_id = AB_DUPLELIGHT_MELEE; else skill_id = AB_DUPLELIGHT_MAGIC; - skill->attack(skill->get_type(skill_id), src, src, target, skill_id, sc->data[SC_DUPLELIGHT]->val1, tick, SD_LEVEL); + skill->attack(skill->get_type(skill_id, sc->data[SC_DUPLELIGHT]->val1), src, src, target, skill_id, sc->data[SC_DUPLELIGHT]->val1, tick, SD_LEVEL); } } @@ -6457,10 +6455,10 @@ static enum damage_lv battle_weapon_attack(struct block_list *src, struct block_ } } - sd->state.autocast = 1; + sd->auto_cast_current.type = AUTOCAST_TEMP; skill->consume_requirement(sd,r_skill,r_lv,3); skill->castend_type(type, src, target, r_skill, r_lv, tick, flag); - sd->state.autocast = 0; + sd->auto_cast_current.type = AUTOCAST_NONE; sd->ud.canact_tick = tick + skill->delay_fix(src, r_skill, r_lv); clif->status_change(src, status->get_sc_icon(SC_POSTDELAY), status->get_sc_relevant_bl_types(SC_POSTDELAY), 1, skill->delay_fix(src, r_skill, r_lv), 0, 0, 1); } @@ -6601,10 +6599,6 @@ static int battle_check_target(struct block_list *src, struct block_list *target m = target->m; - if (flag & BCT_ENEMY && (map->getcell(m, src, src->x, src->y, CELL_CHKBASILICA) || map->getcell(m, src, target->x, target->y, CELL_CHKBASILICA))) { - return -1; - } - //t_bl/s_bl hold the 'master' of the attack, while src/target are the actual //objects involved. if( (t_bl = battle->get_master(target)) == NULL ) @@ -6613,6 +6607,11 @@ static int battle_check_target(struct block_list *src, struct block_list *target if( (s_bl = battle->get_master(src)) == NULL ) s_bl = src; + if ((flag & BCT_ENEMY) != 0 && (status_get_mode(s_bl) & MD_BOSS) == 0 && (map->getcell(m, src, src->x, src->y, CELL_CHKBASILICA) != 0 + || map->getcell(m, src, target->x, target->y, CELL_CHKBASILICA) != 0)) { + return -1; + } + if (s_bl->type == BL_PC) { const struct map_session_data *s_sd = BL_UCCAST(BL_PC, s_bl); switch (t_bl->type) { @@ -7085,16 +7084,15 @@ static const struct battle_data { { "guild_emperium_check", &battle_config.guild_emperium_check, 1, 0, 1, }, { "guild_exp_limit", &battle_config.guild_exp_limit, 50, 0, 99, }, { "player_invincible_time", &battle_config.pc_invincible_time, 5000, 0, INT_MAX, }, + { "pet_catch_rate_official_formula", &battle_config.pet_catch_rate_official_formula, 1, 0, 1, }, { "pet_catch_rate", &battle_config.pet_catch_rate, 100, 0, INT_MAX, }, { "pet_rename", &battle_config.pet_rename, 0, 0, 1, }, { "pet_friendly_rate", &battle_config.pet_friendly_rate, 100, 0, INT_MAX, }, { "pet_hungry_delay_rate", &battle_config.pet_hungry_delay_rate, 100, 10, INT_MAX, }, - { "pet_hungry_friendly_decrease", &battle_config.pet_hungry_friendly_decrease, 5, 0, INT_MAX, }, { "pet_status_support", &battle_config.pet_status_support, 0, 0, 1, }, { "pet_attack_support", &battle_config.pet_attack_support, 0, 0, 1, }, { "pet_damage_support", &battle_config.pet_damage_support, 0, 0, 1, }, { "pet_support_min_friendly", &battle_config.pet_support_min_friendly, 900, 0, 950, }, - { "pet_equip_min_friendly", &battle_config.pet_equip_min_friendly, 900, 0, 950, }, { "pet_support_rate", &battle_config.pet_support_rate, 100, 0, INT_MAX, }, { "pet_attack_exp_to_master", &battle_config.pet_attack_exp_to_master, 0, 0, 1, }, { "pet_attack_exp_rate", &battle_config.pet_attack_exp_rate, 100, 0, INT_MAX, }, @@ -7102,7 +7100,7 @@ static const struct battle_data { { "pet_max_stats", &battle_config.pet_max_stats, 99, 0, INT_MAX, }, { "pet_max_atk1", &battle_config.pet_max_atk1, 750, 0, INT_MAX, }, { "pet_max_atk2", &battle_config.pet_max_atk2, 1000, 0, INT_MAX, }, - { "pet_disable_in_gvg", &battle_config.pet_no_gvg, 0, 0, 1, }, + { "pet_remove_immediately", &battle_config.pet_remove_immediately, 1, 0, 1, }, { "skill_min_damage", &battle_config.skill_min_damage, 2|4, 0, 1|2|4, }, { "finger_offensive_type", &battle_config.finger_offensive_type, 0, 0, 1, }, { "heal_exp", &battle_config.heal_exp, 0, 0, INT_MAX, }, @@ -7347,6 +7345,7 @@ static const struct battle_data { { "searchstore_querydelay", &battle_config.searchstore_querydelay, 10, 0, INT_MAX, }, { "searchstore_maxresults", &battle_config.searchstore_maxresults, 30, 1, INT_MAX, }, { "display_party_name", &battle_config.display_party_name, 0, 0, 1, }, + { "send_party_options", &battle_config.send_party_options, 0x31F9, 0, 0x1FFFF, }, { "cashshop_show_points", &battle_config.cashshop_show_points, 0, 0, 1, }, { "mail_show_status", &battle_config.mail_show_status, 0, 0, 2, }, { "client_limit_unit_lv", &battle_config.client_limit_unit_lv, 0, 0, BL_ALL, }, @@ -7380,12 +7379,12 @@ static const struct battle_data { { "item_restricted_consumption_type", &battle_config.item_restricted_consumption_type,1, 0, 1, }, { "unequip_restricted_equipment", &battle_config.unequip_restricted_equipment, 0, 0, 3, }, { "max_walk_path", &battle_config.max_walk_path, 17, 1, MAX_WALKPATH, }, - { "item_enabled_npc", &battle_config.item_enabled_npc, 1, 0, 1, }, + { "item_enabled_npc", &battle_config.item_enabled_npc, 1, 0, 3, }, { "gm_ignore_warpable_area", &battle_config.gm_ignore_warpable_area, 0, 2, 100, }, { "packet_obfuscation", &battle_config.packet_obfuscation, 1, 0, 3, }, { "client_accept_chatdori", &battle_config.client_accept_chatdori, 0, 0, INT_MAX, }, { "snovice_call_type", &battle_config.snovice_call_type, 0, 0, 1, }, - { "guild_notice_changemap", &battle_config.guild_notice_changemap, 2, 0, 2, }, + { "guild_notice_changemap", &battle_config.guild_notice_changemap, 7, 0, 7, }, { "features/banking", &battle_config.feature_banking, 1, 0, 1, }, { "features/auction", &battle_config.feature_auction, 0, 0, 2, }, { "idletime_criteria", &battle_config.idletime_criteria, 0x25, 1, INT_MAX, }, @@ -7427,11 +7426,16 @@ static const struct battle_data { { "min_item_sell_price", &battle_config.min_item_sell_price, 0, 0, INT_MAX, }, { "display_fake_hp_when_dead", &battle_config.display_fake_hp_when_dead, 1, 0, 1, }, { "magicrod_type", &battle_config.magicrod_type, 0, 0, 1, }, + { "skill_enabled_npc", &battle_config.skill_enabled_npc, 0, 0, INT_MAX, }, { "features/enable_achievement_system", &battle_config.feature_enable_achievement, 1, 0, 1, }, { "ping_timer_inverval", &battle_config.ping_timer_interval, 30, 0, 99999999, }, { "ping_time", &battle_config.ping_time, 20, 0, 99999999, }, { "option_drop_max_loop", &battle_config.option_drop_max_loop, 10, 1, 100000, }, { "drop_connection_on_quit", &battle_config.drop_connection_on_quit, 0, 0, 1, }, + { "display_rate_messages", &battle_config.display_rate_messages, 1, 0, 7, }, + { "display_config_messages", &battle_config.display_config_messages, 0x1F1, 0, 0x1F7, }, + { "display_overweight_messages", &battle_config.display_overweight_messages, 3, 0, 3, }, + { "show_tip_window", &battle_config.show_tip_window, 1, 0, 1, }, { "features/enable_refinery_ui", &battle_config.enable_refinery_ui, 1, 0, 1, }, { "features/replace_refine_npcs", &battle_config.replace_refine_npcs, 1, 0, 1, }, { "batk_min_limit", &battle_config.batk_min, 0, 0, INT_MAX, }, @@ -7450,6 +7454,8 @@ static const struct battle_data { { "hit_max_limit", &battle_config.hit_max, SHRT_MAX, 1, INT_MAX, }, { "autoloot_adjust", &battle_config.autoloot_adjust, 0, 0, 1, }, { "hom_bonus_exp_from_master", &battle_config.hom_bonus_exp_from_master, 10, 0, 100, }, + { "allowed_actions_when_dead", &battle_config.allowed_actions_when_dead, 0, 0, 3, }, + { "teleport_close_storage", &battle_config.teleport_close_storage, 1, 0, 1, }, }; static bool battle_set_value_sub(int index, int value) @@ -7682,6 +7688,8 @@ static void do_init_battle(bool minimal) static void do_final_battle(void) { + if (map->minimal) + return; ers_destroy(battle->delay_damage_ers); } diff --git a/src/map/battle.h b/src/map/battle.h index 2e710f7f8..abf4c0f68 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -212,16 +212,15 @@ struct Battle_Config { int guild_aura; int pc_invincible_time; + int pet_catch_rate_official_formula; int pet_catch_rate; int pet_rename; int pet_friendly_rate; int pet_hungry_delay_rate; - int pet_hungry_friendly_decrease; int pet_status_support; int pet_attack_support; int pet_damage_support; int pet_support_min_friendly; //[Skotlex] - int pet_equip_min_friendly; int pet_support_rate; int pet_attack_exp_to_master; int pet_attack_exp_rate; @@ -229,8 +228,8 @@ struct Battle_Config { int pet_max_stats; //[Skotlex] int pet_max_atk1; //[Skotlex] int pet_max_atk2; //[Skotlex] - int pet_no_gvg; //Disables pets in gvg. [Skotlex] int pet_equip_required; + int pet_remove_immediately; int skill_min_damage; int finger_offensive_type; @@ -472,6 +471,7 @@ struct Battle_Config { int searchstore_querydelay; int searchstore_maxresults; int display_party_name; + int send_party_options; int cashshop_show_points; int mail_show_status; int client_limit_unit_lv; @@ -581,6 +581,8 @@ struct Battle_Config { int magicrod_type; + int skill_enabled_npc; + int feature_enable_achievement; int ping_timer_interval; @@ -589,6 +591,10 @@ struct Battle_Config { int option_drop_max_loop; int drop_connection_on_quit; + int display_rate_messages; + int display_config_messages; + int display_overweight_messages; + int show_tip_window; int enable_refinery_ui; int replace_refine_npcs; @@ -608,6 +614,8 @@ struct Battle_Config { int hit_max; int autoloot_adjust; + int allowed_actions_when_dead; + int teleport_close_storage; }; /* criteria for battle_config.idletime_critera */ diff --git a/src/map/buyingstore.c b/src/map/buyingstore.c index 2c2fc13ae..fd6e6fd6e 100644 --- a/src/map/buyingstore.c +++ b/src/map/buyingstore.c @@ -91,8 +91,9 @@ static void buyingstore_create(struct map_session_data *sd, int zenylimit, unsig return; } - if( !battle_config.feature_buying_store || pc_istrading(sd) || sd->state.prevend || sd->buyingstore.slots == 0 || count > sd->buyingstore.slots || zenylimit <= 0 || zenylimit > sd->status.zeny || !storename[0] ) - {// disabled or invalid input + if (battle_config.feature_buying_store == 0 || pc_istrading_except_npc(sd) || sd->state.prevend != 0 + || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->buyingstore.slots == 0 + || count > sd->buyingstore.slots || zenylimit <= 0 || zenylimit > sd->status.zeny || *storename == '\0') { // Disabled or invalid input. sd->buyingstore.slots = 0; clif->buyingstore_open_failed(sd, BUYINGSTORE_CREATE, 0); return; @@ -218,8 +219,8 @@ static void buyingstore_open(struct map_session_data *sd, int account_id) struct map_session_data* pl_sd; nullpo_retv(sd); - if (!battle_config.feature_buying_store || pc_istrading(sd) || sd->state.prevend) - {// not allowed to sell + if (battle_config.feature_buying_store == 0 || pc_istrading_except_npc(sd) || sd->state.prevend != 0 + || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { // Not allowed to sell. return; } @@ -255,8 +256,8 @@ static void buyingstore_trade(struct map_session_data* sd, int account_id, unsig return; } - if (!battle_config.feature_buying_store || pc_istrading(sd) || sd->state.prevend) - {// not allowed to sell + if (battle_config.feature_buying_store == 0 || pc_istrading_except_npc(sd) || sd->state.prevend != 0 + || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { // Not allowed to sell. clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, 0); return; } diff --git a/src/map/chrif.c b/src/map/chrif.c index b131907e0..ac5fb4dd0 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -863,6 +863,8 @@ static bool chrif_changesex(struct map_session_data *sd, bool change_account) nullpo_retr(false, sd); chrif_check(false); + chrif->save(sd, 0); + WFIFOHEAD(chrif->fd,44); WFIFOW(chrif->fd,0) = 0x2b0e; WFIFOL(chrif->fd,2) = sd->status.account_id; diff --git a/src/map/clif.c b/src/map/clif.c index 660c516d7..f44d9a716 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -936,19 +936,25 @@ static void clif_clearunit_area(struct block_list *bl, enum clr_type type) static int clif_clearunit_delayed_sub(int tid, int64 tick, int id, intptr_t data) { struct block_list *bl = (struct block_list *)data; + nullpo_ret(bl); + Assert_ret(bl->m >= 0 && bl->m < map->count); + if (map->list[bl->m].block == NULL) { + // avoid error report for missing/removed map + ers_free(clif->delay_clearunit_ers, bl); + return 0; + } clif->clearunit_area(bl, (enum clr_type) id); - ers_free(clif->delay_clearunit_ers,bl); + ers_free(clif->delay_clearunit_ers, bl); return 0; } static void clif_clearunit_delayed(struct block_list *bl, enum clr_type type, int64 tick) { - struct block_list *tbl; - nullpo_retv(bl); - tbl = ers_alloc(clif->delay_clearunit_ers, struct block_list); - memcpy (tbl, bl, sizeof (struct block_list)); - timer->add(tick, clif->clearunit_delayed_sub, (int)type, (intptr_t)tbl); + Assert_retv(bl->type == BL_MOB); + struct mob_data *md = ers_alloc(clif->delay_clearunit_ers, struct mob_data); + memcpy (md, bl, sizeof (struct mob_data)); + timer->add(tick, clif->clearunit_delayed_sub, (int)type, (intptr_t)md); } /// Gets weapon view info from sd's inventory_data and points (*rhand,*lhand) @@ -1031,6 +1037,7 @@ static void clif_set_unit_idle2(struct block_list *bl, struct map_session_data * int g_id = status->get_guild_id(bl); nullpo_retv(bl); + nullpo_retv(vd); sd = BL_CAST(BL_PC, bl); p.PacketType = idle_unit2Type; @@ -1087,6 +1094,7 @@ static void clif_set_unit_idle(struct block_list *bl, struct map_session_data *t int g_id = status->get_guild_id(bl); nullpo_retv(bl); + nullpo_retv(vd); #if PACKETVER < 20091103 if (!pc->db_checkid(vd->class)) { @@ -1197,6 +1205,7 @@ static void clif_spawn_unit2(struct block_list *bl, enum send_target target) int g_id = status->get_guild_id(bl); nullpo_retv(bl); + nullpo_retv(vd); sd = BL_CAST(BL_PC, bl); p.PacketType = spawn_unit2Type; @@ -1244,6 +1253,7 @@ static void clif_spawn_unit(struct block_list *bl, enum send_target target) int g_id = status->get_guild_id(bl); nullpo_retv(bl); + nullpo_retv(vd); #if PACKETVER < 20091103 if (!pc->db_checkid(vd->class)) { @@ -1357,6 +1367,7 @@ static void clif_set_unit_walking(struct block_list *bl, struct map_session_data nullpo_retv(bl); nullpo_retv(ud); + nullpo_retv(vd); sd = BL_CAST(BL_PC, bl); @@ -1585,10 +1596,33 @@ static bool clif_spawn(struct block_list *bl) clif->specialeffect(bl,421,AREA); if (sd->bg_id != 0 && map->list[sd->bl.m].flag.battleground) clif->sendbgemblem_area(sd); - for (i = 0; i < sd->sc_display_count; i++) { - clif->sc_continue(&sd->bl, sd->bl.id, AREA, status->get_sc_icon(sd->sc_display[i]->type), sd->sc_display[i]->val1, sd->sc_display[i]->val2, sd->sc_display[i]->val3); + struct status_change *sc = status->get_sc(bl); + + if (sd->sc_display_count > 0 && sc != NULL) { + for (i = 0; i < sd->sc_display_count; i++) { + enum sc_type type = sd->sc_display[i]->type; + + if (sc->data[type] == NULL) + continue; + + int tick = 0; + int tid = sc->data[type]->timer; + const struct TimerData *td = (tid > 0) ? timer->get(tid) : NULL; + + if (td != NULL) + tick = DIFF_TICK32(td->tick, timer->gettick()); + + int sc_icon = status->get_sc_icon(type); + int sc_types = status->get_sc_relevant_bl_types(type); + int val1 = sd->sc_display[i]->val1; + int val2 = sd->sc_display[i]->val2; + int val3 = sd->sc_display[i]->val3; + + clif->status_change(&sd->bl, sc_icon, sc_types, 1, tick, val1, val2, val3); + } } + if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0) clif->spiritcharm(sd); if (sd->status.look.robe != 0) @@ -2179,6 +2213,9 @@ static void clif_selllist(struct map_session_data *sd) if( !itemdb_cansell(&sd->status.inventory[i], pc_get_group_level(sd)) ) continue; + if (sd->status.inventory[i].favorite != 0) + continue; // Cannot Sell Favorite item + if( sd->status.inventory[i].expire_time ) continue; // Cannot Sell Rental Items @@ -2417,23 +2454,26 @@ static void clif_scriptinput(struct map_session_data *sd, int npcid) /// - close inputstr window static void clif_scriptinputstr(struct map_session_data *sd, int npcid) { - int fd; - struct block_list *bl = NULL; - nullpo_retv(sd); - if (!sd->state.using_fake_npc && (npcid == npc->fake_nd->bl.id || ((bl = map->id2bl(npcid)) != NULL && (bl->m!=sd->bl.m || - bl->x<sd->bl.x-AREA_SIZE-1 || bl->x>sd->bl.x+AREA_SIZE+1 || - bl->y<sd->bl.y-AREA_SIZE-1 || bl->y>sd->bl.y+AREA_SIZE+1)))) + struct block_list *bl = map->id2bl(npcid); + int x1 = sd->bl.x - AREA_SIZE - 1; + int x2 = sd->bl.x + AREA_SIZE + 1; + int y1 = sd->bl.y - AREA_SIZE - 1; + int y2 = sd->bl.y + AREA_SIZE + 1; + bool out_of_sight = (bl != NULL && (bl->m != sd->bl.m || bl->x < x1 || bl->x > x2 || bl->y < y1 || bl->y > y2)); + + if (sd->state.using_fake_npc == 0 && sd->state.using_megaphone == 0 + && (npcid == npc->fake_nd->bl.id || out_of_sight)) { clif->sendfakenpc(sd, npcid); + } pc->update_idle_time(sd, BCIDLE_SCRIPT); - fd=sd->fd; - WFIFOHEAD(fd, packet_len(0x1d4)); - WFIFOW(fd,0)=0x1d4; - WFIFOL(fd,2)=npcid; - WFIFOSET(fd,packet_len(0x1d4)); + WFIFOHEAD(sd->fd, packet_len(0x1d4)); + WFIFOW(sd->fd, 0) = 0x1d4; + WFIFOL(sd->fd, 2) = (sd->state.using_megaphone == 0) ? npcid : 0; + WFIFOSET(sd->fd, packet_len(0x1d4)); } /// Marks a position on client's minimap (ZC_COMPASS). @@ -2505,8 +2545,8 @@ static void clif_addcards(struct EQUIPSLOTINFO *buf, struct item *item) if (item->card[0] == CARD0_PET) { //pet eggs buf->card[0] = 0; buf->card[1] = 0; - buf->card[2] = 0; - buf->card[3] = item->card[3]; //Pet renamed flag. + buf->card[2] = (item->card[3] >> 1); // Pet intimacy level. + buf->card[3] = (item->card[3] & 1); // Pet renamed flag. return; } if (item->card[0] == CARD0_FORGE || item->card[0] == CARD0_CREATE) { //Forged/created items @@ -4900,7 +4940,7 @@ static int clif_damage(struct block_list *src, struct block_list *dst, int sdela } if(src == dst) { - unit->setdir(src,unit->getdir(src)); + unit->set_dir(src, unit->getdir(src)); } //Return adjusted can't walk delay for further processing. @@ -6221,7 +6261,7 @@ static void clif_displaymessage_sprintf(const int fd, const char *mes, ...) /// 009a <packet len>.W <message>.?B static void clif_broadcast(struct block_list *bl, const char *mes, int len, int type, enum send_target target) { - int lp = (type&BC_COLOR_MASK) ? 4 : 0; + int lp = ((type & BC_COLOR_MASK) != 0 || (type & BC_MEGAPHONE) != 0) ? 4 : 0; unsigned char *buf = NULL; nullpo_retv(mes); @@ -6233,6 +6273,8 @@ static void clif_broadcast(struct block_list *bl, const char *mes, int len, int WBUFL(buf,4) = 0x65756c62; //If there's "blue" at the beginning of the message, game client will display it in blue instead of yellow. else if( type&BC_WOE ) WBUFL(buf,4) = 0x73737373; //If there's "ssss", game client will recognize message as 'WoE broadcast'. + else if ((type & BC_MEGAPHONE) != 0) + WBUFL(buf, 4) = 0x6363696d; // If there's "micc" at the beginning of the message, the game client will recognize message as 'Megaphone shout'. memcpy(WBUFP(buf, 4 + lp), mes, len); clif->send(buf, WBUFW(buf,2), bl, target); @@ -6763,7 +6805,7 @@ static void clif_item_skill(struct map_session_data *sd, uint16 skill_id, uint16 struct PACKET_ZC_AUTORUN_SKILL *p = WFIFOP(fd, 0); int type = skill->get_inf(skill_id); - if (sd->state.itemskill_castonself == 1 && skill->is_item_skill(sd, skill_id, skill_lv)) + if (sd->auto_cast_current.itemskill_cast_on_self && sd->auto_cast_current.type == AUTOCAST_ITEM) type = INF_SELF_SKILL; p->packetType = HEADER_ZC_AUTORUN_SKILL; @@ -7276,46 +7318,101 @@ static void clif_party_inviteack(struct map_session_data *sd, const char *nick, #endif } -/// Updates party settings. -/// 0101 <exp option>.L (ZC_GROUPINFO_CHANGE) -/// 07d8 <exp option>.L <item pick rule>.B <item share rule>.B (ZC_REQ_GROUPINFO_CHANGE_V2) -/// exp option: -/// 0 = exp sharing disabled -/// 1 = exp sharing enabled -/// 2 = cannot change exp sharing -/// -/// flag: -/// 0 = send to party -/// 1 = send to sd +/** + * Sends party settings to the client. + * + * 0101 <exp option>.L (ZC_GROUPINFO_CHANGE) + * 07d8 <exp option>.L <item pick rule>.B <item share rule>.B (ZC_REQ_GROUPINFO_CHANGE_V2) + * <exp option>: + * 0 = EXP sharing disabled. + * 1 = EXP sharing enabled. + * 2 = Cannot change EXP sharing. + * + * @param p The related party. + * @param sd The related character. + * @param flag Reason for sending. + * @parblock + * Possible flags: + * 0x01 = Cannot change EXP sharing. (Only set when tried to change options manually.) + * 0x02 = Options changed manually. + * 0x04 = Options changed automatically. + * 0x08 = Member added. + * 0x10 = Member removed. + * 0x20 = Character logged in. + * 0x40 = Character changed map. + * 0x80 = Character teleported. + * @endparblock + * + **/ static void clif_party_option(struct party_data *p, struct map_session_data *sd, int flag) { - unsigned char buf[16]; + nullpo_retv(p); + + if (sd == NULL && (flag & 0x01) == 0) { + for (int i = 0; i < MAX_PARTY; i++) { + if (p->data[i].sd != NULL) { + sd = p->data[i].sd; + break; + } + } + } + + if (sd == NULL) + return; + + int conf = battle_config.send_party_options; + + if (((flag & 0x01) != 0 && (conf & 0x10) == 0) + || ((flag & 0x02) != 0 && (conf & 0x08) == 0) + || ((flag & 0x04) != 0 && (conf & 0x20) == 0) + || ((flag & 0x08) != 0 && (conf & 0x40) == 0) + || ((flag & 0x10) != 0 && (conf & 0x80) == 0) + || ((flag & 0x20) != 0 && (conf & 0x01) == 0) + || ((flag & 0x40) != 0 && (conf & 0x02) == 0) + || ((flag & 0x80) != 0 && (conf & 0x04) == 0)) { + return; + } + + enum send_target target = SELF; + + if (((flag & 0x01) != 0 && (conf & 0x100) != 0) + || ((flag & 0x01) == 0 && (flag & 0x02) != 0) + || (flag & 0x04) != 0) { + target = PARTY; + } + + int cmd = 0x101; + + if (((flag & 0x01) != 0 && (conf & 0x02000) != 0) + || ((flag & 0x02) != 0 && (conf & 0x01000) != 0) + || ((flag & 0x04) != 0 && (conf & 0x04000) != 0) + || ((flag & 0x08) != 0 && (conf & 0x08000) != 0) + || ((flag & 0x10) != 0 && (conf & 0x10000) != 0) + || ((flag & 0x20) != 0 && (conf & 0x00200) != 0) + || ((flag & 0x40) != 0 && (conf & 0x00400) != 0) + || ((flag & 0x80) != 0 && (conf & 0x00800) != 0)) { + cmd = 0x7d8; + } + #if PACKETVER < 20090603 - const int cmd = 0x101; -#else - const int cmd = 0x7d8; + if (cmd == 0x7d8) + cmd = 0x101; #endif - nullpo_retv(p); + unsigned char buf[16]; - if(!sd && flag==0){ - int i; - for(i=0;i<MAX_PARTY && !p->data[i].sd;i++) - ; - if (i < MAX_PARTY) - sd = p->data[i].sd; + WBUFW(buf, 0) = cmd; + WBUFL(buf, 2) = ((flag & 0x10) != 0) ? 0 : (((flag & 0x01) != 0) ? 2 : p->party.exp); + + if (cmd == 0x7d8) { + WBUFB(buf, 6) = ((flag & 0x10) != 0) ? 0 : (((p->party.item & 1) != 0) ? 1 : 0); + WBUFB(buf, 7) = ((flag & 0x10) != 0) ? 0 : (((p->party.item & 2) != 0) ? 1 : 0); } - if(!sd) return; - WBUFW(buf,0)=cmd; - WBUFL(buf,2)=((flag&0x01)?2:p->party.exp); -#if PACKETVER >= 20090603 - WBUFB(buf,6)=(p->party.item&1)?1:0; - WBUFB(buf,7)=(p->party.item&2)?1:0; -#endif - if(flag==0) - clif->send(buf,packet_len(cmd),&sd->bl,PARTY); - else - clif->send(buf,packet_len(cmd),&sd->bl,SELF); + + clif->send(buf, packet_len(cmd), &sd->bl, target); + + if ((flag & 0x04) != 0) + p->state.option_auto_changed = 0; } /// 0105 <account id>.L <char name>.24B <result>.B (ZC_DELETE_MEMBER_FROM_GROUP). @@ -7564,8 +7661,8 @@ static void clif_sendegg(struct map_session_data *sd) nullpo_retv(sd); fd = sd->fd; - if (battle_config.pet_no_gvg && map_flag_gvg2(sd->bl.m)) { //Disable pet hatching in GvG grounds during Guild Wars [Skotlex] - clif->message(fd, msg_sd(sd, 866)); // "Pets are not allowed in Guild Wars." + if (map->list[sd->bl.m].flag.nopet != 0) { + clif->message(fd, msg_sd(sd, 866)); // "Pets are disabled in this map." return; } @@ -9379,82 +9476,98 @@ static void clif_send_selforarea(int fd, struct block_list *bl, const void *buf, } } -/// Updates the object's (bl) name on client. -/// 0095 <id>.L <char name>.24B (ZC_ACK_REQNAME) -/// 0195 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B (ZC_ACK_REQNAMEALL) -/// 0A30 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B <title id>.L (ZC_ACK_REQNAMEALL2) +/** + * Updates a character's name on client. + * + * @code + * 0095 <id>.L <char name>.24B (ZC_ACK_REQNAME) + * 0195 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B (ZC_ACK_REQNAMEALL) + * 0A30 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B <title id>.L (ZC_ACK_REQNAMEALL2) + * @endcode + * + * @param fd The incoming file descriptor. + * @param bl The related character's block list. + * + **/ static void clif_pcname_ack(int fd, struct block_list *bl) { nullpo_retv(bl); Assert_retv(bl->type == BL_PC); - struct PACKET_ZC_ACK_REQNAMEALL packet = { 0 }; - int len = sizeof(struct PACKET_ZC_ACK_REQNAMEALL); + struct PACKET_ZC_ACK_REQNAMEALL packet = {0}; + packet.packet_id = HEADER_ZC_ACK_REQNAMEALL; packet.gid = bl->id; const struct map_session_data *ssd = BL_UCCAST(BL_PC, bl); - if (ssd->fakename[0] != '\0') { - packet.packet_id = reqName; - len = sizeof(struct packet_reqname_ack); - } else { - packet.packet_id = HEADER_ZC_ACK_REQNAMEALL; - len = sizeof(struct PACKET_ZC_ACK_REQNAMEALL); - } - - //Requesting your own "shadow" name. [Skotlex] - if (ssd->fd == fd && ssd->disguise != -1) { + if (ssd->fd == fd && ssd->disguise != -1) // Requesting your own "shadow" name. packet.gid = -bl->id; - } - if (ssd->fakename[0] != '\0') { + if (ssd->fakename[0] != '\0') memcpy(packet.name, ssd->fakename, NAME_LENGTH); - } else { -#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO) - // Title System [Dastgir/Hercules] - if (ssd->status.title_id > 0) { - packet.title_id = ssd->status.title_id; - } -#endif + else memcpy(packet.name, ssd->status.name, NAME_LENGTH); - const struct party_data *p = NULL; - int ps = -1; - if (ssd->status.party_id != 0) { - p = party->search(ssd->status.party_id); - } - const struct guild *g = NULL; - if (ssd->status.guild_id != 0) { - if ((g = ssd->guild) != NULL) { - int i; - ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id); - if (i < g->max_member) - ps = g->member[i].position; - } - } + const struct party_data *p = NULL; - if (!battle_config.display_party_name && g == NULL) { - // do not display party unless the player is also in a guild - p = NULL; - } + if (ssd->status.party_id != 0) + p = party->search(ssd->status.party_id); + + const struct guild *g = NULL; + int pos_idx = INDEX_NOT_FOUND; + + if (ssd->status.guild_id != 0 && (g = ssd->guild) != NULL) { + int i; + int acc_id = ssd->status.account_id; + int chr_id = ssd->status.char_id; + + ARR_FIND(0, g->max_member, i, g->member[i].account_id == acc_id && g->member[i].char_id == chr_id); + + if (i < g->max_member) + pos_idx = g->member[i].position; + } + + if (battle_config.display_party_name == 0 && g == NULL) + p = NULL; // Do not display party name, unless the character is also in a guild. - if (p != NULL) { + if (p != NULL) { + if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_PARTYNAME) != 0) + || ssd->fakename[0] == '\0') { memcpy(packet.party_name, p->party.name, NAME_LENGTH); } + } - if (g != NULL && ps >= 0 && ps < MAX_GUILDPOSITION) { + if (g != NULL && pos_idx >= 0 && pos_idx < MAX_GUILDPOSITION) { + if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_GUILDNAME) != 0) + || ssd->fakename[0] == '\0') { memcpy(packet.guild_name, g->name,NAME_LENGTH); - memcpy(packet.position_name, g->position[ps].name, NAME_LENGTH); } - else if (ssd->status.clan_id != 0) { - struct clan *c = clan->search(ssd->status.clan_id); - if (c != 0) { + + if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_GUILDPOSITION) != 0) + || ssd->fakename[0] == '\0') { + memcpy(packet.position_name, g->position[pos_idx].name, NAME_LENGTH); + } + } else if (ssd->status.clan_id != 0) { + struct clan *c = clan->search(ssd->status.clan_id); + + if (c != 0) { + if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_CLANPOSITION) != 0) + || ssd->fakename[0] == '\0') { memcpy(packet.position_name, c->name, NAME_LENGTH); } } } - clif->send_selforarea(fd, bl, &packet, len); +#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO) // Title system. + if (ssd->status.title_id > 0) { + if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_TITLE) != 0) + || ssd->fakename[0] == '\0') { + packet.title_id = ssd->status.title_id; + } + } +#endif + + clif->send_selforarea(fd, bl, &packet, sizeof(struct PACKET_ZC_ACK_REQNAMEALL)); } /// Updates the object's (bl) name on client. @@ -9703,10 +9816,22 @@ static void clif_elemname_ack(int fd, struct block_list *bl) clif->send_selforarea(fd, bl, &packet, sizeof(struct PACKET_ZC_ACK_REQNAME_TITLE)); } +static void clif_skillname_ack(int fd, struct block_list *bl) +{ +} + +static void clif_itemname_ack(int fd, struct block_list *bl) +{ + nullpo_retv(bl); + ShowError("clif_itemname_ack: bad type %u(%d)\n", bl->type, bl->id); + Assert_retv(0); +} + static void clif_unknownname_ack(int fd, struct block_list *bl) { nullpo_retv(bl); ShowError("clif_blname_ack: bad type %u(%d)\n", bl->type, bl->id); + Assert_retv(0); } static void clif_blname_ack(int fd, struct block_list *bl) @@ -9738,62 +9863,102 @@ static void clif_blname_ack(int fd, struct block_list *bl) case BL_ELEM: clif->elemname_ack(fd, bl); break; + case BL_ITEM: + clif->itemname_ack(fd, bl); + break; + case BL_SKILL: + clif->skillname_ack(fd, bl); + break; default: clif->unknownname_ack(fd, bl); break; } } -//Used to update when a char leaves a party/guild. [Skotlex] -//Needed because when you send a 0x95 packet, the client will not remove the cached party/guild info that is not sent. +/** + * Updates a character's name on client when leaving a party/guild. + * + * @code + * 0195 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B (ZC_ACK_REQNAMEALL) + * 0A30 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B <title id>.L (ZC_ACK_REQNAMEALL2) + * @endcode + * + * @param ssd The related character. + * + **/ static void clif_charnameupdate(struct map_session_data *ssd) { - int ps = -1; - struct party_data *p = NULL; - struct guild *g = NULL; - struct PACKET_ZC_ACK_REQNAMEALL packet = { 0 }; - nullpo_retv(ssd); - if (ssd->fakename[0]) - return; //No need to update as the party/guild was not displayed anyway. - + struct PACKET_ZC_ACK_REQNAMEALL packet = {0}; packet.packet_id = HEADER_ZC_ACK_REQNAMEALL; packet.gid = ssd->bl.id; - memcpy(packet.name, ssd->status.name, NAME_LENGTH); + if (ssd->fakename[0] != '\0') + memcpy(packet.name, ssd->fakename, NAME_LENGTH); + else + memcpy(packet.name, ssd->status.name, NAME_LENGTH); - if (!battle_config.display_party_name) { - if (ssd->status.party_id > 0 && ssd->status.guild_id > 0 && (g = ssd->guild) != NULL) - p = party->search(ssd->status.party_id); - } else { - if (ssd->status.party_id > 0) - p = party->search(ssd->status.party_id); - } + struct party_data *p = NULL; + + if (ssd->status.party_id != 0) + p = party->search(ssd->status.party_id); - if (ssd->status.guild_id > 0 && (g = ssd->guild) != NULL) { + struct guild *g = NULL; + int pos_idx = INDEX_NOT_FOUND; + + if (ssd->status.guild_id != 0 && (g = ssd->guild) != NULL) { int i; - ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id); - if( i < g->max_member ) ps = g->member[i].position; + int acc_id = ssd->status.account_id; + int chr_id = ssd->status.char_id; + + ARR_FIND(0, g->max_member, i, g->member[i].account_id == acc_id && g->member[i].char_id == chr_id); + + if (i < g->max_member) + pos_idx = g->member[i].position; } - if (p != NULL) - memcpy(packet.party_name, p->party.name, NAME_LENGTH); + if (battle_config.display_party_name == 0 && g == NULL) + p = NULL; // Do not display party name, unless the character is also in a guild. - if (g != NULL && ps >= 0 && ps < MAX_GUILDPOSITION) { - memcpy(packet.guild_name, g->name,NAME_LENGTH); - memcpy(packet.position_name, g->position[ps].name, NAME_LENGTH); + if (p != NULL) { + if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_PARTYNAME) != 0) + || ssd->fakename[0] == '\0') { + memcpy(packet.party_name, p->party.name, NAME_LENGTH); + } } -#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO) - // Achievement System [Dastgir/Hercules] + if (g != NULL && pos_idx >= 0 && pos_idx < MAX_GUILDPOSITION) { + if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_GUILDNAME) != 0) + || ssd->fakename[0] == '\0') { + memcpy(packet.guild_name, g->name,NAME_LENGTH); + } + + if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_GUILDPOSITION) != 0) + || ssd->fakename[0] == '\0') { + memcpy(packet.position_name, g->position[pos_idx].name, NAME_LENGTH); + } + } else if (ssd->status.clan_id != 0) { + struct clan *c = clan->search(ssd->status.clan_id); + + if (c != 0) { + if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_CLANPOSITION) != 0) + || ssd->fakename[0] == '\0') { + memcpy(packet.position_name, c->name, NAME_LENGTH); + } + } + } + +#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO) // Title system. if (ssd->status.title_id > 0) { - packet.title_id = ssd->status.title_id; + if ((ssd->fakename[0] != '\0' && (ssd->fakename_options & FAKENAME_OPTION_SHOW_TITLE) != 0) + || ssd->fakename[0] == '\0') { + packet.title_id = ssd->status.title_id; + } } #endif - // Update nearby clients - clif->send(&packet, sizeof(packet), &ssd->bl, AREA); + clif->send(&packet, sizeof(packet), &ssd->bl, AREA); // Update nearby clients. } /// Taekwon Jump (TK_HIGHJUMP) effect (ZC_HIGHJUMP). @@ -10318,7 +10483,8 @@ static const char *clif_process_chat_message(struct map_session_data *sd, const * @param[in] sd The source character. * @param[in] packet The packet data. * @param[out] out_name The parsed target name buffer (must be a valid - * buffer of size NAME_LENGTH). + * buffer of size NAME_LENGTH + 1 because the client + * can send 24 characters without NULL terminator). * @param[out] out_message The output message buffer (must be a valid buffer). * @param[in] out_messagelen The size of out_message. * @retval true if the validation succeeded and the message is a chat message. @@ -10328,7 +10494,7 @@ static const char *clif_process_chat_message(struct map_session_data *sd, const */ static bool clif_process_whisper_message(struct map_session_data *sd, const struct packet_whisper_message *packet, char *out_name, char *out_message, int out_messagelen) { - int namelen = 0, messagelen = 0; + int messagelen = 0; nullpo_retr(false, sd); nullpo_retr(false, packet); @@ -10341,15 +10507,6 @@ static bool clif_process_whisper_message(struct map_session_data *sd, const stru return false; } - // validate name - namelen = (int)strnlen(packet->name, NAME_LENGTH-1); // name length (w/o zero byte) - - if (packet->name[namelen] != '\0') { - // only restriction is that the name must be zero-terminated - ShowWarning("clif_process_whisper_message: Player '%s' sent an unterminated name!\n", sd->status.name); - return false; - } - #if PACKETVER >= 20151001 // Packet doesn't include a NUL terminator messagelen = packet->packet_len - NAME_LENGTH - 4; @@ -10368,7 +10525,7 @@ static bool clif_process_whisper_message(struct map_session_data *sd, const stru return false; } - safestrncpy(out_name, packet->name, namelen+1); // [!] packet->name is not NUL terminated + safestrncpy(out_name, packet->name, NAME_LENGTH + 1); // [!] packet->name is not NUL terminated safestrncpy(out_message, packet->message, messagelen+1); // [!] packet->message is not necessarily NUL terminated if (!pc->process_chat_message(sd, out_message)) @@ -10536,366 +10693,556 @@ static void clif_parse_WantToConnection(int fd, struct map_session_data *sd) chrif->authreq(sd,false); } +/** + * Displays the common server messages upon login, chaning maps or teleporting to a character. + * + * @param sd The character who should receive the messages. + * @param connect_new Whether the character is logging in. + * @param change_map Whether the character is changing maps. + * + **/ +static void clif_load_end_ack_sub_messages(struct map_session_data *sd, bool connect_new, bool change_map) +{ + nullpo_retv(sd); + + /** Display overweight messages. **/ + if (((battle_config.display_overweight_messages & 0x1) != 0 && connect_new) + || ((battle_config.display_overweight_messages & 0x2) != 0 && !connect_new && change_map)) { + // Send the character's weight to the client. (With displaying overweight messages.) + clif->updatestatus(sd, SP_MAXWEIGHT); + clif->updatestatus(sd, SP_WEIGHT); + } else { + // Send the character's weight to the client. (Without displaying overweight messages.) + clif->updatestatus(sd, SP_WEIGHT); + clif->updatestatus(sd, SP_MAXWEIGHT); + } + + /** Display configuration messages. **/ + if (((battle_config.display_config_messages & 0x1) != 0 && connect_new) + || ((battle_config.display_config_messages & 0x2) != 0 && !connect_new && change_map) + || (battle_config.display_config_messages & 0x4) != 0) { +#if PACKETVER >= 20070918 + if ((battle_config.display_config_messages & 0x10) != 0) + clif->partyinvitationstate(sd); + + if ((battle_config.display_config_messages & 0x20) != 0) + clif->equpcheckbox(sd); +#endif + +#if PACKETVER_MAIN_NUM >= 20171025 || PACKETVER_RE_NUM >= 20170920 + if ((battle_config.display_config_messages & 0x40) != 0) + clif->zc_config(sd, CZ_CONFIG_CALL, sd->status.allow_call); + + if ((battle_config.display_config_messages & 0x80) != 0) { + if (sd->pd != NULL) + clif->zc_config(sd, CZ_CONFIG_PET_AUTOFEEDING, sd->pd->pet.autofeed); + else + clif->zc_config(sd, CZ_CONFIG_PET_AUTOFEEDING, false); + } + + if ((battle_config.display_config_messages & 0x100) != 0) { + if (sd->hd != NULL) + clif->zc_config(sd, CZ_CONFIG_HOMUNCULUS_AUTOFEEDING, sd->hd->homunculus.autofeed); + else + clif->zc_config(sd, CZ_CONFIG_HOMUNCULUS_AUTOFEEDING, false); + } +#endif + } + + /** Display party options. **/ + struct party_data *p = NULL; + + if (sd->status.party_id != 0 && (p = party->search(sd->status.party_id)) != NULL) { + int flag; + + if (p->state.option_auto_changed != 0) + flag = 0x04; + else if (connect_new) + flag = 0x20; + else if (change_map) + flag = 0x40; + else + flag = 0x80; + + clif->party_option(p, sd, flag); + } + + /** Display rate modifier messages. **/ + if (((battle_config.display_rate_messages & 0x1) != 0 && connect_new) + || ((battle_config.display_rate_messages & 0x2) != 0 && !connect_new && change_map) + || (battle_config.display_rate_messages & 0x4) != 0) { + clif->show_modifiers(sd); + } + + /** Display guild notice. **/ + if (sd->guild != NULL) { + if (((battle_config.guild_notice_changemap & 0x1) != 0 && connect_new) + || ((battle_config.guild_notice_changemap & 0x2) != 0 && !connect_new && change_map) + || (battle_config.guild_notice_changemap & 0x4) != 0) { + clif->guild_notice(sd, sd->guild); + } + } +} + +/** + * Notification from the client, that it has finished map loading and is about to display player's character. (CZ_NOTIFY_ACTORINIT) + * + * @code + * 007d + * @endcode + * + * @param fd The incoming file descriptor. + * @param sd The related character. + * + **/ static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); -/// Notification from the client, that it has finished map loading and is about to display player's character (CZ_NOTIFY_ACTORINIT). -/// 007d static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) { - bool first_time = false; + if (sd->state.using_megaphone != 0) + sd->state.using_megaphone = 0; - if(sd->bl.prev != NULL) + if (sd->bl.prev != NULL) return; - if (!sd->state.active) { //Character loading is not complete yet! - //Let pc->reg_received reinvoke this when ready. + if (sd->state.active == 0) { // Character loading is not complete yet! Let pc->reg_received reinvoke this when ready. sd->state.connect_new = 0; return; } - if (sd->state.rewarp) { //Rewarp player. + if (sd->state.rewarp != 0) { // Rewarp character. sd->state.rewarp = 0; clif->changemap(sd, sd->bl.m, sd->bl.x, sd->bl.y); return; } sd->state.warping = 0; - sd->state.dialog = 0;/* reset when warping, client dialog will go missing */ + sd->state.dialog = 0; // Reset when warping. Client dialog will go missing. - // Character Looks + // Character looks. #if PACKETVER < 4 clif->changelook(&sd->bl, LOOK_WEAPON, sd->status.look.weapon); clif->changelook(&sd->bl, LOOK_SHIELD, sd->status.look.shield); #else - clif->changelook(&sd->bl,LOOK_WEAPON,0); + clif->changelook(&sd->bl, LOOK_WEAPON, 0); #endif - if(sd->vd.cloth_color) - clif->refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF); + if (sd->vd.cloth_color != 0) + clif->refreshlook(&sd->bl, sd->bl.id, LOOK_CLOTHES_COLOR, sd->vd.cloth_color, SELF); - if (sd->vd.body_style) - clif->refreshlook(&sd->bl,sd->bl.id,LOOK_BODY2,sd->vd.body_style,SELF); + if (sd->vd.body_style != 0) + clif->refreshlook(&sd->bl, sd->bl.id, LOOK_BODY2, sd->vd.body_style, SELF); - // Send character inventory to the client. - // call this before pc->checkitem() so that the client isn't called to delete a non-existent item. + /** + * Send character inventory to the client. + * Call this before pc->checkitem() so that the client isn't called to delete a non-existent items. + * + **/ clif->inventoryList(sd); // Send the cart inventory, counts & weight to the client. - if(pc_iscarton(sd)) { + if (pc_iscarton(sd)) { clif->cartList(sd); clif->updatestatus(sd, SP_CARTINFO); } - // Check for and delete unavailable/disabled items. - pc->checkitem(sd); + /** + * In official servers, an item's unequip script is executed when entering a zone where the item is restricted, + * even if the item won't be unequipped. + * + **/ + if (map->list[sd->bl.m].zone != NULL && map->list[sd->bl.m].zone->disabled_items_count != 0) { + struct map_zone_data *zone = map->list[sd->bl.m].zone; + int dis_items_cnt = zone->disabled_items_count; + int handled_equip = 0x00000000; + + for (int i = 0; i < EQI_MAX; i++) { + if (sd->equip_index[i] == INDEX_NOT_FOUND) + continue; + + int inv_idx = sd->equip_index[i]; + struct item_data *equip_data = sd->inventory_data[inv_idx]; + + if (equip_data == NULL) + continue; + + if ((handled_equip & equip_data->equip) != 0) + continue; // Equipment takes multiple slots and was already handled. + + handled_equip |= equip_data->equip; + + if (equip_data->unequip_script != NULL) { + int idx; + + ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == equip_data->nameid); + + if (idx < dis_items_cnt) + script->run_item_unequip_script(sd, equip_data, npc->fake_nd->bl.id); + } + + if (inv_idx != sd->equip_index[i]) + continue; // Unequip script execution corrupted the inventory index. + + struct item *equip = &sd->status.inventory[inv_idx]; + + if (equip != NULL && !itemdb_isspecial(equip->card[0])) { + for (int slot = 0; slot < equip_data->slot; slot++) { + if (equip->card[slot] == 0) + continue; + + struct item_data *card_data = itemdb->exists(equip->card[slot]); - // Send the character's weight to the client. - clif->updatestatus(sd, SP_WEIGHT); - clif->updatestatus(sd, SP_MAXWEIGHT); + if (card_data != NULL && card_data->unequip_script != NULL) { + int idx; - // guild - // (needs to go before clif_spawn() to show guild emblems correctly) - if(sd->status.guild_id) - guild->send_memberinfoshort(sd,1); + ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == card_data->nameid); - if(battle_config.pc_invincible_time > 0) { - pc->setinvincibletimer(sd,battle_config.pc_invincible_time); + if (idx < dis_items_cnt) + script->run_item_unequip_script(sd, card_data, npc->fake_nd->bl.id); + } + } + } + } } - if( map->list[sd->bl.m].users++ == 0 && battle_config.dynamic_mobs ) + // Check for and delete unavailable/disabled items. + pc->checkitem(sd); + + // Send character's guild info to the client. Call this before clif->spawn() to show guild emblems correctly. + if (sd->status.guild_id != 0) + guild->send_memberinfoshort(sd, 1); + + if (battle_config.pc_invincible_time > 0) + pc->setinvincibletimer(sd, battle_config.pc_invincible_time); + + if (map->list[sd->bl.m].users++ == 0 && battle_config.dynamic_mobs != 0) map->spawnmobs(sd->bl.m); - if( map->list[sd->bl.m].instance_id >= 0 ) { + if (map->list[sd->bl.m].instance_id >= 0) { instance->list[map->list[sd->bl.m].instance_id].users++; instance->check_idle(map->list[sd->bl.m].instance_id); } - if( pc_has_permission(sd,PC_PERM_VIEW_HPMETER) ) { + if (pc_has_permission(sd, PC_PERM_VIEW_HPMETER)) { map->list[sd->bl.m].hpmeter_visible++; sd->state.hpmeter_visible = 1; } - if (!pc_isinvisible(sd)) { // increment the number of pvp players on the map + if (!pc_isinvisible(sd)) // Increment the number of pvp players on the map. map->list[sd->bl.m].users_pvp++; - } - sd->state.debug_remove_map = 0; // temporary state to track double remove_map's [FlavioJS] + sd->state.debug_remove_map = 0; // Temporary state to track double calls of unit->remove_map(). [FlavioJS] + sd->state.callshop = 0; // Reset the callshop flag if the character changes map. + map->addblock(&sd->bl); // Add the character to the map. + clif->spawn(&sd->bl); // Spawn character client side. + + clif_load_end_ack_sub_messages(sd, (sd->state.connect_new != 0), (sd->state.changemap != 0)); + + struct party_data *p = NULL; - // reset the callshop flag if the player changes map - sd->state.callshop = 0; + if (sd->status.party_id != 0) + p = party->search(sd->status.party_id); - map->addblock(&sd->bl); - clif->spawn(&sd->bl); + // Send character's party info to the client. Call this after clif->spawn() to show HP bars correctly. + if (p != NULL) { + if (sd->state.connect_new == 0) // Login is handled in party_member_joined(). + party->send_movemap(sd); - // Party - // (needs to go after clif_spawn() to show hp bars correctly) - if(sd->status.party_id) { - party->send_movemap(sd); - clif->party_hp(sd); // Show hp after displacement [LuzZza] + clif->party_hp(sd); // Show HP after displacement. [LuzZza] } - if( sd->bg_id ) clif->bg_hp(sd); // BattleGround System + if (sd->bg_id != 0) + clif->bg_hp(sd); // BattleGround system. + + if (map->list[sd->bl.m].flag.pvp != 0 && !pc_isinvisible(sd)) { + if (battle_config.pk_mode == 0) { // Remove PVP stuff for pk_mode. [Valaris] + if (map->list[sd->bl.m].flag.pvp_nocalcrank == 0) + sd->pvp_timer = timer->add(timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0); - if (map->list[sd->bl.m].flag.pvp && !pc_isinvisible(sd)) { - if(!battle_config.pk_mode) { // remove pvp stuff for pk_mode [Valaris] - if (!map->list[sd->bl.m].flag.pvp_nocalcrank) - sd->pvp_timer = timer->add(timer->gettick()+200, pc->calc_pvprank_timer, sd->bl.id, 0); sd->pvp_rank = 0; sd->pvp_lastusers = 0; sd->pvp_point = 5; sd->pvp_won = 0; sd->pvp_lost = 0; } + clif->map_property(sd, MAPPROPERTY_FREEPVPZONE); - } else - // set flag, if it's a duel [LuzZza] - if(sd->duel_group) + } else if(sd->duel_group != 0) { // Set flag, if it's a duel. [LuzZza] clif->map_property(sd, MAPPROPERTY_FREEPVPZONE); + } - if (map->list[sd->bl.m].flag.gvg_dungeon) + if (map->list[sd->bl.m].flag.gvg_dungeon != 0) clif->map_property(sd, MAPPROPERTY_FREEPVPZONE); //TODO: Figure out the real packet to send here. - if( map_flag_gvg2(sd->bl.m) ) + if (map_flag_gvg2(sd->bl.m)) clif->map_property(sd, MAPPROPERTY_AGITZONE); - // info about nearby objects - // must use foreachinarea (CIRCULAR_AREA interferes with foreachinrange) - map->foreachinarea(clif->getareachar, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_ALL, sd); + // Info about nearby objects. Must use map->foreachinarea(). (CIRCULAR_AREA interferes with map->foreachinrange().) + map->foreachinarea(clif->getareachar, sd->bl.m, sd->bl.x - AREA_SIZE, sd->bl.y - AREA_SIZE, + sd->bl.x + AREA_SIZE, sd->bl.y + AREA_SIZE, BL_ALL, sd); - // pet - if( sd->pd ) { - if( battle_config.pet_no_gvg && map_flag_gvg2(sd->bl.m) ) { //Return the pet to egg. [Skotlex] - clif->message(sd->fd, msg_sd(sd,866)); // "Pets are not allowed in Guild Wars." - pet->menu(sd, 3); //Option 3 is return to egg. + // Spawn pet. + if (sd->pd != NULL) { + if (map->list[sd->bl.m].flag.nopet != 0) { // Return the pet to egg. [Skotlex] + clif->message(sd->fd, msg_sd(sd, 866)); // Pets are not allowed in Guild Wars. + pet->menu(sd, 3); // Option 3 is return to egg. } else { - map->addblock(&sd->pd->bl); - clif->spawn(&sd->pd->bl); - clif->send_petdata(sd,sd->pd,0,0); - clif->send_petstatus(sd); - //skill->unit_move(&sd->pd->bl,timer->gettick(),1); + pet->spawn(sd, false); } } - //homunculus [blackhole89] - if( homun_alive(sd->hd) ) { + // Spawn homunculus. [blackhole89] + if (homun_alive(sd->hd)) { map->addblock(&sd->hd->bl); clif->spawn(&sd->hd->bl); - clif->send_homdata(sd,SP_ACK,0); - clif->hominfo(sd,sd->hd,1); - clif->hominfo(sd,sd->hd,0); //for some reason, at least older clients want this sent twice + clif->send_homdata(sd, SP_ACK, 0); + clif->hominfo(sd,sd->hd, 1); + clif->hominfo(sd,sd->hd, 0); // For some reason, at least older clients want this sent twice. clif->homskillinfoblock(sd); - if( battle_config.hom_setting&0x8 ) - status_calc_bl(&sd->hd->bl, SCB_SPEED); //Homunc mimic their master's speed on each map change - if( !(battle_config.hom_setting&0x2) ) - skill->unit_move(&sd->hd->bl,timer->gettick(),1); // apply land skills immediately + + if ((battle_config.hom_setting & 0x8) != 0) + status_calc_bl(&sd->hd->bl, SCB_SPEED); // Homunculi mimic their master's speed on each map change. + + if ((battle_config.hom_setting & 0x2) == 0) + skill->unit_move(&sd->hd->bl, timer->gettick(), 1); // Apply land skills immediately. } - if( sd->md ) { + // Spawn mercenary. + if (sd->md != NULL) { map->addblock(&sd->md->bl); clif->spawn(&sd->md->bl); clif->mercenary_info(sd); clif->mercenary_skillblock(sd); - status_calc_bl(&sd->md->bl, SCB_SPEED); // Mercenary mimic their master's speed on each map change + status_calc_bl(&sd->md->bl, SCB_SPEED); // Mercenaries mimic their master's speed on each map change. } - if( sd->ed ) { + // Spawn elemental. + if (sd->ed != NULL) { map->addblock(&sd->ed->bl); clif->spawn(&sd->ed->bl); clif->elemental_info(sd); - clif->elemental_updatestatus(sd,SP_HP); - clif->hpmeter_single(sd->fd,sd->ed->bl.id,sd->ed->battle_status.hp,sd->ed->battle_status.max_hp); - clif->elemental_updatestatus(sd,SP_SP); - status_calc_bl(&sd->ed->bl, SCB_SPEED); //Elemental mimic their master's speed on each map change + clif->elemental_updatestatus(sd, SP_HP); + clif->hpmeter_single(sd->fd, sd->ed->bl.id, sd->ed->battle_status.hp, sd->ed->battle_status.max_hp); + clif->elemental_updatestatus(sd, SP_SP); + status_calc_bl(&sd->ed->bl, SCB_SPEED); // Elementals mimic their master's speed on each map change. } - if(sd->state.connect_new) { - int lv; + bool first_time = false; + + if (sd->state.connect_new != 0) { first_time = true; sd->state.connect_new = 0; clif->skillinfoblock(sd); clif->hotkeysAll(sd); - clif->updatestatus(sd,SP_BASEEXP); - clif->updatestatus(sd,SP_NEXTBASEEXP); - clif->updatestatus(sd,SP_JOBEXP); - clif->updatestatus(sd,SP_NEXTJOBEXP); - clif->updatestatus(sd,SP_SKILLPOINT); + clif->updatestatus(sd, SP_BASEEXP); + clif->updatestatus(sd, SP_NEXTBASEEXP); + clif->updatestatus(sd, SP_JOBEXP); + clif->updatestatus(sd, SP_NEXTJOBEXP); + clif->updatestatus(sd, SP_SKILLPOINT); clif->initialstatus(sd); - if (pc_isfalcon(sd)) - clif->status_change(&sd->bl, status->get_sc_icon(SC_FALCON), status->get_sc_relevant_bl_types(SC_FALCON), 1, 0, 0, 0, 0); - if (pc_isridingpeco(sd) || pc_isridingdragon(sd)) - clif->status_change(&sd->bl, status->get_sc_icon(SC_RIDING), status->get_sc_relevant_bl_types(SC_RIDING), 1, 0, 0, 0, 0); - else if (pc_isridingwug(sd)) - clif->status_change(&sd->bl, status->get_sc_icon(SC_WUGRIDER), status->get_sc_relevant_bl_types(SC_WUGRIDER), 1, 0, 0, 0, 0); + // Unequip items which can't be equipped by the character. + for (int i = 0; i < EQI_MAX; i++) { + if (sd->equip_index[i] >= 0 && pc->isequip(sd , sd->equip_index[i]) == 0) + pc->unequipitem(sd, sd->equip_index[i], PCUNEQUIPITEM_FORCE); + } - if(sd->status.manner < 0) - sc_start(NULL,&sd->bl,SC_NOCHAT,100,0,0); + if (pc_isfalcon(sd)) { + int sc_icn = status->get_sc_icon(SC_FALCON); + int sc_typ = status->get_sc_relevant_bl_types(SC_FALCON); + clif->status_change(&sd->bl, sc_icn, sc_typ, 1, 0, 0, 0, 0); + } - //Auron reported that This skill only triggers when you logon on the map o.O [Skotlex] - if ((lv = pc->checkskill(sd,SG_KNOWLEDGE)) > 0) { - int i; - for (i = 0; i < MAX_PC_FEELHATE; i++) { + if (pc_isridingpeco(sd) || pc_isridingdragon(sd)) { + int sc_icn = status->get_sc_icon(SC_RIDING); + int sc_typ = status->get_sc_relevant_bl_types(SC_RIDING); + clif->status_change(&sd->bl, sc_icn, sc_typ, 1, 0, 0, 0, 0); + } else if (pc_isridingwug(sd)) { + int sc_icn = status->get_sc_icon(SC_WUGRIDER); + int sc_typ = status->get_sc_relevant_bl_types(SC_WUGRIDER); + clif->status_change(&sd->bl, sc_icn, sc_typ, 1, 0, 0, 0, 0); + } + + if (sd->status.manner < 0) + sc_start(NULL, &sd->bl, SC_NOCHAT, 100, 0, 0); + + int lv = pc->checkskill(sd,SG_KNOWLEDGE); + + // Auron reported that this skill only triggers when you logon on the map. [Skotlex] + if (lv > 0) { + for (int i = 0; i < MAX_PC_FEELHATE; i++) { if (sd->bl.m == sd->feel_map[i].m) { - sc_start(NULL,&sd->bl, SC_KNOWLEDGE, 100, lv, skill->get_time(SG_KNOWLEDGE, lv)); + sc_start(NULL, &sd->bl, SC_KNOWLEDGE, 100, lv, skill->get_time(SG_KNOWLEDGE, lv)); break; } } } - if(sd->pd && sd->pd->pet.intimate > 900) - clif->pet_emotion(sd->pd,(sd->pd->pet.class_ - 100)*100 + 50 + pet->hungry_val(sd->pd)); + if (sd->pd != NULL && sd->pd->pet.intimate > PET_INTIMACY_LOYAL) + clif->pet_emotion(sd->pd, (sd->pd->pet.class_ - 100) * 100 + 50 + pet->hungry_val(sd->pd)); - if(homun_alive(sd->hd)) + if (homun_alive(sd->hd)) homun->init_timers(sd->hd); - if (map->night_flag && map->list[sd->bl.m].flag.nightenabled) { + if (map->night_flag != 0 && map->list[sd->bl.m].flag.nightenabled != 0) { + int sc_icn = status->get_sc_icon(SC_SKE); + int sc_typ = status->get_sc_relevant_bl_types(SC_SKE); + sd->state.night = 1; - clif->status_change(&sd->bl, status->get_sc_icon(SC_SKE), status->get_sc_relevant_bl_types(SC_SKE), 1, 0, 0, 0, 0); + clif->status_change(&sd->bl, sc_icn, sc_typ, 1, 0, 0, 0, 0); } - // Notify everyone that this char logged in [Skotlex]. + // Notify everyone that this character logged in. [Skotlex] map->foreachpc(clif->friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 1); - //Login Event +#if PACKETVER >= 20171122 + if (battle_config.show_tip_window != 0) + clif->open_ui_send(sd, ZC_TIPBOX_UI); +#endif + + // Run OnPCLoginEvent labels. npc->script_event(sd, NPCE_LOGIN); } else { - //For some reason the client "loses" these on warp/map-change. - clif->updatestatus(sd,SP_STR); - clif->updatestatus(sd,SP_AGI); - clif->updatestatus(sd,SP_VIT); - clif->updatestatus(sd,SP_INT); - clif->updatestatus(sd,SP_DEX); - clif->updatestatus(sd,SP_LUK); - - if (sd->state.warp_clean) { - // abort currently running script + // For some reason the client "loses" these on warp/map-change. + clif->updatestatus(sd, SP_STR); + clif->updatestatus(sd, SP_AGI); + clif->updatestatus(sd, SP_VIT); + clif->updatestatus(sd, SP_INT); + clif->updatestatus(sd, SP_DEX); + clif->updatestatus(sd, SP_LUK); + + if (sd->state.warp_clean != 0) { // Abort currently running script. sd->state.using_fake_npc = 0; sd->state.menu_or_input = 0; sd->npc_menu = 0; - if(sd->npc_id) + + if (sd->npc_id != 0) npc->event_dequeue(sd); } else { sd->state.warp_clean = 1; } - if( sd->guild && ( battle_config.guild_notice_changemap == 2 || ( battle_config.guild_notice_changemap == 1 && sd->state.changemap ) ) ) - clif->guild_notice(sd,sd->guild); } - if( sd->state.changemap ) {// restore information that gets lost on map-change -#if PACKETVER >= 20070918 - clif->partyinvitationstate(sd); - clif->equpcheckbox(sd); -#endif + if (sd->state.changemap != 0) { // Restore information that gets lost on map-change. + bool flee_penalty = (battle_config.bg_flee_penalty != 100 || battle_config.gvg_flee_penalty != 100); + bool is_gvg = (map_flag_gvg2(sd->state.pmap) || map_flag_gvg2(sd->bl.m)); + bool is_bg = (map->list[sd->state.pmap].flag.battleground != 0 || map->list[sd->bl.m].flag.battleground != 0); -#if PACKETVER_MAIN_NUM >= 20171025 || PACKETVER_RE_NUM >= 20170920 - if (sd->hd != NULL) - clif->zc_config(sd, CZ_CONFIG_HOMUNCULUS_AUTOFEEDING, sd->hd->homunculus.autofeed); - else - clif->zc_config(sd, CZ_CONFIG_HOMUNCULUS_AUTOFEEDING, false); -#endif - if( (battle_config.bg_flee_penalty != 100 || battle_config.gvg_flee_penalty != 100) - && (map_flag_gvg2(sd->state.pmap) || map_flag_gvg2(sd->bl.m) - || map->list[sd->state.pmap].flag.battleground || map->list[sd->bl.m].flag.battleground) ) - status_calc_bl(&sd->bl, SCB_FLEE); //Refresh flee penalty + if (flee_penalty && (is_gvg || is_bg)) + status_calc_bl(&sd->bl, SCB_FLEE); // Refresh flee penalty. + + if (map->night_flag != 0 && map->list[sd->bl.m].flag.nightenabled != 0) { + if (sd->state.night == 0) { // Display night. + int sc_icn = status->get_sc_icon(SC_SKE); + int sc_typ = status->get_sc_relevant_bl_types(SC_SKE); - if( map->night_flag && map->list[sd->bl.m].flag.nightenabled ) { - //Display night. - if( !sd->state.night ) { sd->state.night = 1; - clif->status_change(&sd->bl, status->get_sc_icon(SC_SKE), status->get_sc_relevant_bl_types(SC_SKE), 1, 0, 0, 0, 0); + clif->status_change(&sd->bl, sc_icn, sc_typ, 1, 0, 0, 0, 0); } - } else if( sd->state.night ) { //Clear night display. + } else if (sd->state.night != 0) { // Clear night display. sd->state.night = 0; clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_SKE)); } - if( map->list[sd->bl.m].flag.battleground ) { - clif->map_type(sd, MAPTYPE_BATTLEFIELD); // Battleground Mode - if( map->list[sd->bl.m].flag.battleground == 2 ) + if (map->list[sd->bl.m].flag.battleground != 0) { + clif->map_type(sd, MAPTYPE_BATTLEFIELD); // Battleground mode. + + if (map->list[sd->bl.m].flag.battleground == 2) clif->bg_updatescore_single(sd); } - if( map->list[sd->bl.m].flag.allowks && !map_flag_ks(sd->bl.m) ) { + if (map->list[sd->bl.m].flag.allowks != 0 && !map_flag_ks(sd->bl.m)) { char output[128]; + sprintf(output, "%s", msg_sd(sd, 893)); // [ Kill Steal Protection Disabled. KS is allowed in this map ] clif->broadcast(&sd->bl, output, (int)strlen(output) + 1, BC_BLUE, SELF); } - map->iwall_get(sd); // Updates Walls Info on this Map to Client - status_calc_pc(sd, SCO_NONE);/* some conditions are map-dependent so we must recalculate */ + map->iwall_get(sd); // Updates walls info on this map to client. + status_calc_pc(sd, SCO_NONE); // Some conditions are map-dependent so we must recalculate. sd->state.changemap = false; - if (channel->config->local && channel->config->local_autojoin) { + if (channel->config->local && channel->config->local_autojoin) channel->map_join(sd); - } - if (channel->config->irc && channel->config->irc_autojoin) { + + if (channel->config->irc && channel->config->irc_autojoin) channel->irc_join(sd); - } } mail->clear(sd); - - clif->maptypeproperty2(&sd->bl,SELF); - - /* Guild Aura Init */ - if( sd->state.gmaster_flag ) { - guild->aura_refresh(sd,GD_LEADERSHIP,guild->checkskill(sd->guild,GD_LEADERSHIP)); - guild->aura_refresh(sd,GD_GLORYWOUNDS,guild->checkskill(sd->guild,GD_GLORYWOUNDS)); - guild->aura_refresh(sd,GD_SOULCOLD,guild->checkskill(sd->guild,GD_SOULCOLD)); - guild->aura_refresh(sd,GD_HAWKEYES,guild->checkskill(sd->guild,GD_HAWKEYES)); + clif->maptypeproperty2(&sd->bl, SELF); + + if (sd->guild != NULL) { + // Init guild aura. + if (sd->state.gmaster_flag != 0) { + guild->aura_refresh(sd, GD_LEADERSHIP, guild->checkskill(sd->guild, GD_LEADERSHIP)); + guild->aura_refresh(sd, GD_GLORYWOUNDS, guild->checkskill(sd->guild, GD_GLORYWOUNDS)); + guild->aura_refresh(sd, GD_SOULCOLD, guild->checkskill(sd->guild, GD_SOULCOLD)); + guild->aura_refresh(sd, GD_HAWKEYES, guild->checkskill(sd->guild, GD_HAWKEYES)); + } } - if( sd->state.vending ) { /* show we have a vending */ - clif->openvending(sd,sd->bl.id,sd->vending); - clif->showvendingboard(&sd->bl,sd->message,0); + if (sd->state.vending != 0) { // Character is vending. + clif->openvending(sd, sd->bl.id, sd->vending); + clif->showvendingboard(&sd->bl, sd->message, 0); } - if(map->list[sd->bl.m].flag.loadevent) // Lance + if (map->list[sd->bl.m].flag.loadevent != 0) // Run OnPCLoadMapEvent labels. [Lance] npc->script_event(sd, NPCE_LOADMAP); - if (pc->checkskill(sd, SG_DEVIL) && !pc->nextjobexp(sd)) //blindness [Komurka] + if (pc->checkskill(sd, SG_DEVIL) > 0 && pc->nextjobexp(sd) == 0) // Blindness. [Komurka] clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_DEVIL1)); - if (sd->sc.opt2) //Client loses these on warp. + if (sd->sc.opt2 != 0) // Client loses these on warp. clif->changeoption(&sd->bl); - if( sd->sc.data[SC_MONSTER_TRANSFORM] && battle_config.mon_trans_disable_in_gvg && map_flag_gvg2(sd->bl.m) ){ + if (sd->sc.data[SC_MONSTER_TRANSFORM] != NULL && battle_config.mon_trans_disable_in_gvg != 0 + && map_flag_gvg2(sd->bl.m)) { status_change_end(&sd->bl, SC_MONSTER_TRANSFORM, INVALID_TIMER); - clif->message(sd->fd, msg_sd(sd,1488)); // Transforming into monster is not allowed in Guild Wars. + clif->message(sd->fd, msg_sd(sd, 1488)); // Transforming into monster is not allowed in Guild Wars. } clif->weather_check(sd); - // This should be displayed last - if( sd->guild && first_time ) - clif->guild_notice(sd, sd->guild); - - // For automatic triggering of NPCs after map loading (so you don't need to walk 1 step first) - if (map->getcell(sd->bl.m, &sd->bl, sd->bl.x, sd->bl.y, CELL_CHKNPC)) - npc->touch_areanpc(sd,sd->bl.m,sd->bl.x,sd->bl.y); + // For automatic triggering of NPCs after map loading. (So you don't need to walk 1 step first.) + if (map->getcell(sd->bl.m, &sd->bl, sd->bl.x, sd->bl.y, CELL_CHKNPC) != 0) + npc->touch_areanpc(sd, sd->bl.m, sd->bl.x, sd->bl.y); else npc->untouch_areanpc(sd, sd->bl.m, sd->bl.x, sd->bl.y); - /* it broke at some point (e.g. during a crash), so we make it visibly dead again. */ - if( !sd->status.hp && !pc_isdead(sd) && status->isdead(&sd->bl) ) + // It broke at some point (e.g. during a crash), so we make it visibly dead again. + if (sd->status.hp == 0 && !pc_isdead(sd) && status->isdead(&sd->bl) != 0) pc_setdead(sd); - // If player is dead, and is spawned (such as @refresh) send death packet. [Valaris] - if(pc_isdead(sd)) + // Send death packet, if character is dead and is spawned (such as @refresh). [Valaris] + if (pc_isdead(sd)) { clif->clearunit_area(&sd->bl, CLR_DEAD); - else { + } else { skill->usave_trigger(sd); + if (battle_config.player_warp_keep_direction == 1) clif->changed_dir(&sd->bl, SELF); // Visually updates player facing direction } - // Trigger skill effects if you appear standing on them - if(!battle_config.pc_invincible_time) - skill->unit_move(&sd->bl,timer->gettick(),1); + // Trigger skill effects if you appear standing on them. + if (battle_config.pc_invincible_time == 0) + skill->unit_move(&sd->bl, timer->gettick(), 1); - // NPC Quest / Event Icon Check [Kisuka] #if PACKETVER >= 20090218 - quest->questinfo_refresh(sd); + quest->questinfo_refresh(sd); // NPC quest/event icon check. [Kisuka] #endif + + if (first_time) { + int i; + + ARR_FIND(0, instance->instances, i, instance->list[i].owner_type == IOT_CHAR && instance->list[i].owner_id == sd->status.account_id); + + if (i < instance->instances) { + sd->instances = 1; + CREATE(sd->instance, short, 1); + sd->instance[0] = instance->list[i].id; + clif->instance_join(sd->fd, instance->list[i].id); + } + } } /// Server's tick (ZC_NOTIFY_TIME). @@ -11117,7 +11464,7 @@ static void clif_parse_WalkToXY(int fd, struct map_session_data *sd) ; //You CAN walk on this OPT1 value. /*else if( sd->progressbar.npc_id ) clif->progressbar_abort(sd);*/ - else if (pc_cant_act(sd) || pc_isvending(sd)) + else if (pc_cant_act_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; if(sd->sc.data[SC_RUN] || sd->sc.data[SC_WUGDASH]) @@ -11130,7 +11477,7 @@ static void clif_parse_WalkToXY(int fd, struct map_session_data *sd) //Set last idle time... [Skotlex] pc->update_idle_time(sd, BCIDLE_WALK); - unit->walktoxy(&sd->bl, x, y, 4); + unit->walk_toxy(&sd->bl, x, y, 4); } /// Notification about the result of a disconnect request (ZC_ACK_REQ_DISCONNECT). @@ -11348,15 +11695,7 @@ static void clif_parse_MapMove(int fd, struct map_session_data *sd) /// 0 = straight /// 1 = turned CW /// 2 = turned CCW -/// dir: -/// 0 = north -/// 1 = northwest -/// 2 = west -/// 3 = southwest -/// 4 = south -/// 5 = southeast -/// 6 = east -/// 7 = northeast +/// dir: @see enum unit_dir static void clif_changed_dir(struct block_list *bl, enum send_target target) { unsigned char buf[64]; @@ -11487,8 +11826,10 @@ static void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action return; } - if (pc_cant_act(sd) || pc_issit(sd) || sd->sc.option&OPTION_HIDE || pc_isvending(sd)) + if (pc_cant_act_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) + || pc_issit(sd) || (sd->sc.option & OPTION_HIDE) != 0 || pc_isvending(sd)) { return; + } if (sd->sc.option & OPTION_COSTUME) return; @@ -11626,7 +11967,8 @@ static void clif_parse_WisMessage(int fd, struct map_session_data *sd) struct map_session_data* dstsd; int i; - char target[NAME_LENGTH], message[CHAT_SIZE_MAX + 1]; + char target[NAME_LENGTH + 1]; // Client can send 24 characters without NULL terminator. + char message[CHAT_SIZE_MAX + 1]; const struct packet_whisper_message *packet = RP2PTR(fd); if (!clif->process_whisper_message(sd, packet, target, message, sizeof message)) @@ -11642,7 +11984,7 @@ static void clif_parse_WisMessage(int fd, struct map_session_data *sd) char *str = target + 4; // Skip the NPC: string part. struct npc_data *nd; if ((nd = npc->name2id(str))) { - char split_data[NUM_WHISPER_VAR][CHAT_SIZE_MAX]; + char split_data[NUM_WHISPER_VAR][SCRIPT_STRING_VAR_LENGTH + 1]; char *split; char output[256]; @@ -11787,7 +12129,7 @@ static void clif_parse_TakeItem(int fd, struct map_session_data *sd) ) ) break; - if (pc_cant_act(sd)) + if (pc_cant_act_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) break; if (!pc->takeitem(sd, fitem)) @@ -11813,7 +12155,7 @@ static void clif_parse_DropItem(int fd, struct map_session_data *sd) if (pc_isdead(sd)) break; - if ( pc_cant_act2(sd) || sd->state.vending ) + if (pc_cant_act_except_npc_chat(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) break; if (sd->sc.count && ( @@ -11886,7 +12228,7 @@ static void clif_parse_EquipItem(int fd, struct map_session_data *sd) return; //Out of bounds check. if( sd->npc_id ) { - if ( !sd->npc_item_flag ) + if ((sd->npc_item_flag & ITEMENABLEDNPC_EQUIP) == 0 && sd->state.using_megaphone == 0) return; } else if (sd->state.storage_flag != STORAGE_FLAG_CLOSED || sd->sc.opt1) ; //You can equip/unequip stuff while storage is open/under status changes @@ -11931,7 +12273,7 @@ static void clif_parse_UnequipItem(int fd, struct map_session_data *sd) } if( sd->npc_id ) { - if ( !sd->npc_item_flag ) + if ((sd->npc_item_flag & ITEMENABLEDNPC_EQUIP) == 0 && sd->state.using_megaphone == 0) return; } else if (sd->state.storage_flag != STORAGE_FLAG_CLOSED || sd->sc.opt1) ; //You can equip/unequip stuff while storage is open/under status changes @@ -12131,7 +12473,7 @@ static void clif_parse_CreateChatRoom(int fd, struct map_session_data *sd) __att /// 1 = public static void clif_parse_CreateChatRoom(int fd, struct map_session_data *sd) { - if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd)) return; int len = (int)RFIFOW(fd, 2) - 15; @@ -12179,7 +12521,7 @@ static void clif_parse_ChatAddMember(int fd, struct map_session_data *sd) __attr /// 00d9 <chat ID>.L <passwd>.8B static void clif_parse_ChatAddMember(int fd, struct map_session_data *sd) { - if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd)) return; int chatid = RFIFOL(fd,2); @@ -12196,7 +12538,7 @@ static void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data *sd) /// 1 = public static void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data *sd) { - if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd)) return; int len = (int)RFIFOW(fd, 2) - 15; @@ -12231,7 +12573,7 @@ static void clif_parse_ChangeChatOwner(int fd, struct map_session_data *sd) __at /// 1 = normal static void clif_parse_ChangeChatOwner(int fd, struct map_session_data *sd) { - if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd)) return; chat->change_owner(sd, RFIFOP(fd,6)); // non null terminated @@ -12242,7 +12584,7 @@ static void clif_parse_KickFromChat(int fd, struct map_session_data *sd) __attri /// 00e2 <name>.24B static void clif_parse_KickFromChat(int fd, struct map_session_data *sd) { - if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd)) return; chat->kick(sd, RFIFOP(fd,2)); // non null terminated @@ -12253,7 +12595,7 @@ static void clif_parse_ChatLeave(int fd, struct map_session_data *sd) __attribut /// 00e3 static void clif_parse_ChatLeave(int fd, struct map_session_data *sd) { - if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_CHAT) == 0) || pc_isvending(sd)) return; chat->leave(sd, false); @@ -12280,12 +12622,12 @@ static void clif_parse_TradeRequest(int fd, struct map_session_data *sd) __attri /// 00e4 <account id>.L static void clif_parse_TradeRequest(int fd, struct map_session_data *sd) { - if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd)) return; struct map_session_data *t_sd = map->id2sd(RFIFOL(fd, 2)); - if (sd->chat_id == 0 && pc_cant_act(sd)) + if (pc_cant_act_except_npc_chat(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) return; //You can trade while in a chatroom. // @noask [LuzZza] @@ -12310,7 +12652,7 @@ static void clif_parse_TradeAck(int fd, struct map_session_data *sd) __attribute /// 4 = rejected static void clif_parse_TradeAck(int fd, struct map_session_data *sd) { - if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if (sd->state.trading || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd)) return; trade->ack(sd,RFIFOB(fd,2)); @@ -12321,7 +12663,7 @@ static void clif_parse_TradeAddItem(int fd, struct map_session_data *sd) __attri /// 00e8 <index>.W <amount>.L static void clif_parse_TradeAddItem(int fd, struct map_session_data *sd) { - if (!sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if (sd->state.trading == 0 || (pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd)) return; short index = RFIFOW(fd,2); @@ -12338,8 +12680,9 @@ static void clif_parse_TradeOk(int fd, struct map_session_data *sd) __attribute_ /// 00eb static void clif_parse_TradeOk(int fd, struct map_session_data *sd) { - if (pc_isdead(sd) || pc_isvending(sd)) + if ((pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd)) return; + trade->ok(sd); } @@ -12348,7 +12691,7 @@ static void clif_parse_TradeCancel(int fd, struct map_session_data *sd) __attrib /// 00ed static void clif_parse_TradeCancel(int fd, struct map_session_data *sd) { - if (pc_isdead(sd) || pc_isvending(sd)) + if ((pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd)) return; trade->cancel(sd); @@ -12359,7 +12702,7 @@ static void clif_parse_TradeCommit(int fd, struct map_session_data *sd) __attrib /// 00ef static void clif_parse_TradeCommit(int fd, struct map_session_data *sd) { - if (pc_isdead(sd) || pc_isvending(sd)) + if ((pc_isdead(sd) && (battle_config.allowed_actions_when_dead & PCALLOWACTION_TRADE) == 0) || pc_isvending(sd)) return; trade->commit(sd); @@ -12379,8 +12722,10 @@ static void clif_parse_PutItemToCart(int fd, struct map_session_data *sd) __attr static void clif_parse_PutItemToCart(int fd, struct map_session_data *sd) { int flag = 0; - if (pc_istrading(sd) || sd->state.prevend) + + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->state.prevend != 0) return; + if (!pc_iscarton(sd)) return; if ( (flag = pc->putitemtocart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4))) ) { @@ -12394,8 +12739,9 @@ static void clif_parse_GetItemFromCart(int fd, struct map_session_data *sd) __at /// 0127 <index>.W <amount>.L static void clif_parse_GetItemFromCart(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || sd->state.prevend) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->state.prevend != 0) return; + if (!pc_iscarton(sd)) return; pc->getitemfromcart(sd,RFIFOW(fd,2)-2,RFIFOL(fd,4)); @@ -12465,7 +12811,7 @@ static void clif_parse_ChangeCart(int fd, struct map_session_data *sd) if (pc->checkskill(sd, MC_CHANGECART) == 0) return; - if (sd->npc_id || sd->state.workinprogress & 1) { + if ((sd->npc_id != 0 && sd->state.using_megaphone == 0) || (sd->state.workinprogress & 1) != 0) { #if PACKETVER >= 20110308 clif->msgtable(sd, MSG_BUSY); #else @@ -12652,6 +12998,16 @@ static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill { int64 tick = timer->gettick(); + pc->autocast_set_current(sd, skill_id); + + /** + * According to Skotlex' comment below, the client sometimes passes 0 for the skill level. + * Even though this seems to only affect guild skills, sd->autocast.skill_lv is used + * for the auto-cast data validation if skill_lv is 0. + * + **/ + skill->validate_autocast_data(sd, skill_id, (skill_lv == 0) ? sd->auto_cast_current.skill_lv : skill_lv); + if (skill_lv < 1) skill_lv = 1; //No clue, I have seen the client do this with guild skills :/ [Skotlex] @@ -12672,7 +13028,11 @@ static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill // Whether skill fails or not is irrelevant, the char ain't idle. [Skotlex] pc->update_idle_time(sd, BCIDLE_USESKILLTOID); - if (sd->npc_id || sd->state.workinprogress & 1) { + bool allow_self_skill = ((tmp & INF_SELF_SKILL) != 0 && (skill->get_nk(skill_id) & NK_NO_DAMAGE) != 0); + allow_self_skill = (allow_self_skill && battle_config.skill_enabled_npc == SKILLENABLEDNPC_SELF); + + if ((sd->npc_id != 0 && sd->state.using_megaphone == 0 && !allow_self_skill && battle_config.skill_enabled_npc != SKILLENABLEDNPC_ALL) + || (sd->state.workinprogress & 1) != 0) { #if PACKETVER >= 20110308 clif->msgtable(sd, MSG_BUSY); #else @@ -12681,7 +13041,7 @@ static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill return; } - if (pc_cant_act(sd) + if (pc_cant_act_except_npc(sd) && skill_id != RK_REFRESH && !(skill_id == SR_GENTLETOUCH_CURE && (sd->sc.opt1 == OPT1_STONE || sd->sc.opt1 == OPT1_FREEZE || sd->sc.opt1 == OPT1_STUN)) && (sd->state.storage_flag != STORAGE_FLAG_CLOSED && !(tmp&INF_SELF_SKILL)) // SELF skills can be used with the storage open, issue: 8027 @@ -12702,10 +13062,10 @@ static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill target_id = sd->bl.id; if (sd->ud.skilltimer != INVALID_TIMER) { - if (skill_id != SA_CASTCANCEL && skill_id != SO_SPELLFIST) + if (skill_id != SA_CASTCANCEL && skill_id != SO_SPELLFIST && sd->auto_cast_current.type == AUTOCAST_NONE) return; } else if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) { - if (sd->skillitem != skill_id) { + if (sd->auto_cast_current.type == AUTOCAST_NONE) { clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0); return; } @@ -12723,16 +13083,16 @@ static void clif_useSkillToIdReal(int fd, struct map_session_data *sd, int skill } else if (sd->menuskill_id != SA_AUTOSPELL) return; //Can't use skills while a menu is open. } - if (sd->skillitem == skill_id) { - if (skill_lv != sd->skillitemlv) - skill_lv = sd->skillitemlv; + if (sd->auto_cast_current.type != AUTOCAST_NONE) { + if (skill_lv != sd->auto_cast_current.skill_lv) + skill_lv = sd->auto_cast_current.skill_lv; if (!(tmp&INF_SELF_SKILL)) pc->delinvincibletimer(sd); // Target skills through items cancel invincibility. [Inkfish] unit->skilluse_id(&sd->bl, target_id, skill_id, skill_lv); return; } - sd->skillitem = sd->skillitemlv = 0; + pc->autocast_clear(sd); if (skill_id >= GD_SKILLBASE && skill_id < GD_MAX) { if (sd->state.gmaster_flag) @@ -12793,6 +13153,18 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin int64 tick = timer->gettick(); nullpo_retv(sd); + + pc->autocast_set_current(sd, skill_id); + + /** + * When using clif_item_skill() to initiate the execution of ground skills, + * the client sometimes passes 0 for the skill level in packet 0x0af4. + * In that case sd->autocast.skill_lv is used for the auto-cast data validation, + * since clif_item_skill() is only used for auto-cast skills. + * + **/ + skill->validate_autocast_data(sd, skill_id, (skill_lv == 0) ? sd->auto_cast_current.skill_lv : skill_lv); + if( !(skill->get_inf(skill_id)&INF_GROUND_SKILL) ) return; //Using a target skill on the ground? WRONG. @@ -12806,7 +13178,8 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin return; } - if (sd->state.workinprogress & 1) { + if ((sd->npc_id != 0 && sd->state.using_megaphone == 0 && battle_config.skill_enabled_npc != SKILLENABLEDNPC_ALL) + || (sd->state.workinprogress & 1) != 0) { #if PACKETVER >= 20110308 clif->msgtable(sd, MSG_BUSY); #else @@ -12829,11 +13202,11 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin safestrncpy(sd->message, RFIFOP(fd, skillmoreinfo), TALKBOX_MESSAGE_SIZE); } - if( sd->ud.skilltimer != INVALID_TIMER ) + if (sd->ud.skilltimer != INVALID_TIMER && sd->auto_cast_current.type == AUTOCAST_NONE) return; if( DIFF_TICK(tick, sd->ud.canact_tick) < 0 ) { - if( sd->skillitem != skill_id ) { + if (sd->auto_cast_current.type == AUTOCAST_NONE) { clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0, 0); return; } @@ -12854,13 +13227,13 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin pc->delinvincibletimer(sd); - if( sd->skillitem == skill_id ) { - if( skill_lv != sd->skillitemlv ) - skill_lv = sd->skillitemlv; + if (sd->auto_cast_current.type != AUTOCAST_NONE) { + if (skill_lv != sd->auto_cast_current.skill_lv) + skill_lv = sd->auto_cast_current.skill_lv; unit->skilluse_pos(&sd->bl, x, y, skill_id, skill_lv); } else { int lv; - sd->skillitem = sd->skillitemlv = 0; + pc->autocast_clear(sd); if( (lv = pc->checkskill(sd, skill_id)) > 0 ) { if( skill_lv > lv ) skill_lv = lv; @@ -12876,7 +13249,7 @@ static void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) __attr /// There are various variants of this packet, some of them have padding between fields. static void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) { - if (pc_cant_act(sd)) + if (pc_cant_act_except_npc(sd)) return; if (pc_issit(sd)) return; @@ -12897,7 +13270,7 @@ static void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd /// There are various variants of this packet, some of them have padding between fields. static void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd) { - if (pc_cant_act(sd)) + if (pc_cant_act_except_npc(sd)) return; if (pc_issit(sd)) return; @@ -12926,14 +13299,23 @@ static void clif_parse_UseSkillMap(int fd, struct map_session_data *sd) return; // It is possible to use teleport with the storage window open issue:8027 - if (pc_cant_act(sd) && (sd->state.storage_flag == STORAGE_FLAG_CLOSED && skill_id != AL_TELEPORT)) { + if ((pc_cant_act_except_npc(sd) && sd->state.storage_flag == STORAGE_FLAG_CLOSED && skill_id != AL_TELEPORT) + || (sd->npc_id != 0 && sd->state.using_megaphone == 0 && battle_config.skill_enabled_npc != SKILLENABLEDNPC_ALL)) { clif_menuskill_clear(sd); return; } + + pc->autocast_set_current(sd, skill_id); + + /** + * Since no skill level was passed use 0 to notify skill_validate_autocast_data() of this special case. + * + **/ + skill->validate_autocast_data(sd, skill_id, 0); pc->delinvincibletimer(sd); skill->castend_map(sd,skill_id,map_name); - pc->itemskill_clear(sd); + pc->autocast_clear(sd); } static void clif_parse_RequestMemo(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); @@ -12961,7 +13343,8 @@ static void clif_parse_ProduceMix(int fd, struct map_session_data *sd) default: return; } - if (pc_istrading(sd) || pc_isdead(sd) || pc_isvending(sd)) { + if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd) + || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { //Make it fail to avoid shop exploits where you sell something different than you see. clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0); clif_menuskill_clear(sd); @@ -12992,7 +13375,8 @@ static void clif_parse_Cooking(int fd, struct map_session_data *sd) if (type == 6 && sd->menuskill_id != GN_MIX_COOKING && sd->menuskill_id != GN_S_PHARMACY) return; - if (pc_istrading(sd) || pc_isdead(sd) || pc_isvending(sd)) { + if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd) + || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { //Make it fail to avoid shop exploits where you sell something different than you see. clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0); clif_menuskill_clear(sd); @@ -13012,7 +13396,8 @@ static void clif_parse_RepairItem(int fd, struct map_session_data *sd) if (sd->menuskill_id != BS_REPAIRWEAPON) return; - if (pc_istrading(sd) || pc_isdead(sd) || pc_isvending(sd)) { + if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd) + || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { //Make it fail to avoid shop exploits where you sell something different than you see. clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0); clif_menuskill_clear(sd); @@ -13031,7 +13416,8 @@ static void clif_parse_WeaponRefine(int fd, struct map_session_data *sd) if (sd->menuskill_id != WS_WEAPONREFINE) //Packet exploit? return; - if (pc_istrading(sd) || pc_isdead(sd) || pc_isvending(sd)) { + if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd) + || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { //Make it fail to avoid shop exploits where you sell something different than you see. clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0); clif_menuskill_clear(sd); @@ -13118,7 +13504,7 @@ static void clif_parse_NpcStringInput(int fd, struct map_session_data *sd) __att /// 01d5 <packet len>.W <npc id>.L <string>.?B static void clif_parse_NpcStringInput(int fd, struct map_session_data *sd) { - if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if ((sd->state.trading != 0 || pc_isvending(sd) || pc_isdead(sd)) && sd->state.using_megaphone == 0) return; int len = RFIFOW(fd, 2); @@ -13134,7 +13520,7 @@ static void clif_parse_NpcStringInput(int fd, struct map_session_data *sd) if (len < 9) return; - npcid = RFIFOL(fd, 4); + npcid = (sd->state.using_megaphone == 0) ? RFIFOL(fd, 4) : sd->npc_id; message = RFIFOP(fd, 8); safestrncpy(sd->npc_str, message, min(message_len,CHATBOX_SIZE)); @@ -13203,7 +13589,8 @@ static void clif_parse_SelectArrow(int fd, struct map_session_data *sd) __attrib static void clif_parse_SelectArrow(int fd, struct map_session_data *sd) { int itemId; - if (pc_istrading(sd) || pc_isdead(sd) || pc_isvending(sd)) { + if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd) + || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { //Make it fail to avoid shop exploits where you sell something different than you see. clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0); clif_menuskill_clear(sd); @@ -13489,7 +13876,7 @@ static void clif_parse_CreateParty(int fd, struct map_session_data *sd) __attrib /// 01e8 <party name>.24B <item pickup rule>.B <item share rule>.B (CZ_MAKE_GROUP2) static void clif_parse_CreateParty(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; char name[NAME_LENGTH]; @@ -13512,7 +13899,7 @@ static void clif_parse_CreateParty(int fd, struct map_session_data *sd) static void clif_parse_CreateParty2(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); static void clif_parse_CreateParty2(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; char name[NAME_LENGTH]; @@ -13540,7 +13927,7 @@ static void clif_parse_PartyInvite(int fd, struct map_session_data *sd) __attrib /// 02c4 <char name>.24B (CZ_PARTY_JOIN_REQ) static void clif_parse_PartyInvite(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; struct map_session_data *t_sd; @@ -13564,7 +13951,7 @@ static void clif_parse_PartyInvite(int fd, struct map_session_data *sd) static void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); static void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; struct map_session_data *t_sd; @@ -13597,7 +13984,7 @@ static void clif_parse_ReplyPartyInvite(int fd, struct map_session_data *sd) __a /// 1 = accept static void clif_parse_ReplyPartyInvite(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) { + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) { party->reply_invite(sd, RFIFOL(fd, 2), 0); return; } @@ -13608,7 +13995,7 @@ static void clif_parse_ReplyPartyInvite(int fd, struct map_session_data *sd) static void clif_parse_ReplyPartyInvite2(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); static void clif_parse_ReplyPartyInvite2(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) { + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) { party->reply_invite(sd, RFIFOL(fd, 2), 0); return; } @@ -13621,7 +14008,7 @@ static void clif_parse_LeaveParty(int fd, struct map_session_data *sd) __attribu /// 0100 static void clif_parse_LeaveParty(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; if (map->list[sd->bl.m].flag.partylock) { @@ -13637,7 +14024,7 @@ static void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) __ /// 0103 <account id>.L <char name>.24B static void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; if (map->list[sd->bl.m].flag.partylock) { @@ -13654,7 +14041,7 @@ static void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) __ /// 07d7 <exp share rule>.L <item pickup rule>.B <item share rule>.B (CZ_GROUPINFO_CHANGE_V2) static void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; struct party_data *p; @@ -13709,7 +14096,7 @@ static void clif_parse_PartyChangeLeader(int fd, struct map_session_data *sd) __ /// 07da <account id>.L static void clif_parse_PartyChangeLeader(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; party->changeleader(sd, map->id2sd(RFIFOL(fd,2))); @@ -13724,7 +14111,7 @@ static void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data * static void clif_parse_PartyBookingRegisterReq(int fd, struct map_session_data *sd) { #ifndef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; short level = RFIFOW(fd,2); @@ -13769,7 +14156,7 @@ static void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data *sd static void clif_parse_PartyBookingSearchReq(int fd, struct map_session_data *sd) { #ifndef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; short level = RFIFOW(fd,2); @@ -13823,7 +14210,7 @@ static void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data *sd static void clif_parse_PartyBookingDeleteReq(int fd, struct map_session_data *sd) { #ifndef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; if (party->booking_delete(sd)) @@ -13862,7 +14249,7 @@ static void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data *sd static void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data *sd) { #ifndef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; short job[PARTY_BOOKING_JOBS]; @@ -13881,7 +14268,7 @@ static void clif_parse_PartyBookingUpdateReq(int fd, struct map_session_data *sd static void clif_PartyBookingInsertNotify(struct map_session_data *sd, struct party_booking_ad_info *pb_ad) { #ifndef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; int i; @@ -13952,7 +14339,7 @@ static void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data * static void clif_parse_PartyRecruitRegisterReq(int fd, struct map_session_data *sd) { #ifdef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; short level = RFIFOW(fd, 2); @@ -14026,7 +14413,7 @@ static void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data *sd static void clif_parse_PartyRecruitSearchReq(int fd, struct map_session_data *sd) { #ifdef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; short level = RFIFOW(fd, 2); @@ -14046,7 +14433,7 @@ static void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data *sd static void clif_parse_PartyRecruitDeleteReq(int fd, struct map_session_data *sd) { #ifdef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; if (party->booking_delete(sd)) @@ -14085,7 +14472,7 @@ static void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd static void clif_parse_PartyRecruitUpdateReq(int fd, struct map_session_data *sd) { #ifdef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; const char *notice = RFIFOP(fd, 2); @@ -14161,7 +14548,7 @@ static void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_d static void clif_parse_PartyBookingAddFilteringList(int fd, struct map_session_data *sd) { #ifdef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; int index = RFIFOL(fd, 2); @@ -14178,7 +14565,7 @@ static void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_d static void clif_parse_PartyBookingSubFilteringList(int fd, struct map_session_data *sd) { #ifdef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; int gid = RFIFOL(fd, 2); @@ -14195,7 +14582,7 @@ static void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data static void clif_parse_PartyBookingReqVolunteer(int fd, struct map_session_data *sd) { #ifdef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; int index = RFIFOL(fd, 2); @@ -14274,7 +14661,7 @@ static void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_da static void clif_parse_PartyBookingRefuseVolunteer(int fd, struct map_session_data *sd) { #ifdef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; unsigned int aid = RFIFOL(fd, 2); @@ -14306,7 +14693,7 @@ static void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_da static void clif_parse_PartyBookingCancelVolunteer(int fd, struct map_session_data *sd) { #ifdef PARTY_RECRUIT - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; int index = RFIFOL(fd, 2); @@ -14384,7 +14771,7 @@ static void clif_parse_CloseVending(int fd, struct map_session_data *sd) __attri /// 012e static void clif_parse_CloseVending(int fd, struct map_session_data *sd) { - if (sd->npc_id || sd->state.buyingstore || sd->state.trading) + if ((sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->state.buyingstore != 0 || sd->state.trading != 0) return; vending->close(sd); @@ -14395,12 +14782,9 @@ static void clif_parse_VendingListReq(int fd, struct map_session_data *sd) __att /// 0130 <account id>.L static void clif_parse_VendingListReq(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isdead(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isdead(sd)) return; - if( sd->npc_id ) {// using an NPC - return; - } vending->list(sd,RFIFOL(fd,2)); } @@ -14462,8 +14846,10 @@ static void clif_parse_OpenVending(int fd, struct map_session_data *sd) __attrib /// 1 = open static void clif_parse_OpenVending(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isdead(sd) || sd->state.vending || sd->state.buyingstore) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) + || pc_isdead(sd) || sd->state.vending != 0 || sd->state.buyingstore != 0) { return; + } int len = (int)RFIFOW(fd, 2) - 85; @@ -15126,58 +15512,68 @@ static void clif_parse_ChangePetName(int fd, struct map_session_data *sd) pet->change_name(sd, RFIFOP(fd,2)); } +/** + * Request to evolve the pet. (CZ_PET_EVOLUTION) + * + * @code + * 09fb <Length>.W <EvolvedPetEggID>.W {<index>.W <amount>.W}*items + * @endcode + * + * @param fd The incoming file descriptor. + * @param sd The related character. + * + **/ static void clif_parse_pet_evolution(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); -/// Request to Evolve the pet (CZ_PET_EVOLUTION) [Dastgir/Hercules] -/// 09fb <Length>.W <EvolvedPetEggID>.W {<index>.W <amount>.W}*items static void clif_parse_pet_evolution(int fd, struct map_session_data *sd) { - if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd)) + if (sd->state.trading != 0 || pc_isdead(sd) || pc_isvending(sd)) return; - const struct PACKET_CZ_PET_EVOLUTION *p = RP2PTR(fd); - int i = 0, idx, petIndex; - - Assert_retv(p->PacketLength >= (uint16)sizeof(struct PACKET_CZ_PET_EVOLUTION)); - - if (sd->status.pet_id == 0) { + if (sd->pd == NULL || sd->status.pet_id == 0) { // No pet. clif->petEvolutionResult(fd, PET_EVOL_NO_CALLPET); return; } - ARR_FIND(0, sd->status.inventorySize, idx, sd->status.inventory[idx].card[0] == CARD0_PET && - sd->status.pet_id == MakeDWord(sd->status.inventory[idx].card[1], sd->status.inventory[idx].card[2])); + int inv_index; + + ARR_FIND(0, sd->status.inventorySize, inv_index, sd->status.inventory[inv_index].card[0] == CARD0_PET + && sd->status.pet_id == MakeDWord(sd->status.inventory[inv_index].card[1], + sd->status.inventory[inv_index].card[2])); - if (idx == sd->status.inventorySize) { + if (inv_index == sd->status.inventorySize) { // No pet egg. clif->petEvolutionResult(fd, PET_EVOL_NO_PETEGG); return; } - // Not Loyal Yet - if (sd->pd == NULL || sd->pd->pet.intimate < 900) { + if (sd->pd->pet.intimate < PET_INTIMACY_LOYAL) { // Pet isn't loyal. clif->petEvolutionResult(fd, PET_EVOL_RG_FAMILIAR); return; } - ARR_FIND(0, MAX_PET_DB, petIndex, pet->db[petIndex].class_ == sd->pd->pet.class_); + int pet_index; - if (petIndex == MAX_PET_DB) { - // Which error? - clif->petEvolutionResult(fd, PET_EVOL_UNKNOWN); + ARR_FIND(0, MAX_PET_DB, pet_index, pet->db[pet_index].class_ == sd->pd->pet.class_); + + if (pet_index == MAX_PET_DB) { + clif->petEvolutionResult(fd, PET_EVOL_UNKNOWN); // Which error? return; } + const struct PACKET_CZ_PET_EVOLUTION *p = RP2PTR(fd); + + Assert_retv(p->PacketLength >= (uint16)sizeof(struct PACKET_CZ_PET_EVOLUTION)); + // Client side validation is not done as it is insecure. - for (i = 0; i < VECTOR_LENGTH(pet->db[petIndex].evolve_data); i++) { - struct pet_evolve_data *ped = &VECTOR_INDEX(pet->db[petIndex].evolve_data, i); - if (ped->petEggId == p->EvolvedPetEggID) { - int j; - int pet_id; + for (int i = 0; i < VECTOR_LENGTH(pet->db[pet_index].evolve_data); i++) { + struct pet_evolve_data *ped = &VECTOR_INDEX(pet->db[pet_index].evolve_data, i); + if (ped->petEggId == p->EvolvedPetEggID) { if (VECTOR_LENGTH(ped->items) == 0) { clif->petEvolutionResult(fd, PET_EVOL_NO_RECIPE); return; } - for (j = 0; j < VECTOR_LENGTH(ped->items); j++) { + + for (int j = 0; j < VECTOR_LENGTH(ped->items); j++) { struct itemlist_entry *list = &VECTOR_INDEX(ped->items, j); int n = pc->search_inventory(sd, list->id); @@ -15187,7 +15583,7 @@ static void clif_parse_pet_evolution(int fd, struct map_session_data *sd) } } - for (j = 0; j < VECTOR_LENGTH(ped->items); j++) { + for (int j = 0; j < VECTOR_LENGTH(ped->items); j++) { struct itemlist_entry *list = &VECTOR_INDEX(ped->items, j); int n = pc->search_inventory(sd, list->id); @@ -15197,27 +15593,26 @@ static void clif_parse_pet_evolution(int fd, struct map_session_data *sd) } } - // Return to Egg - pet->return_egg(sd, sd->pd); + pet->return_egg(sd, sd->pd); // Return pet to egg. - if (pc->delitem(sd, idx, 1, 0, DELITEM_NORMAL, LOG_TYPE_EGG) == 1) { + if (pc->delitem(sd, inv_index, 1, 0, DELITEM_NORMAL, LOG_TYPE_EGG) == 1) { clif->petEvolutionResult(fd, PET_EVOL_NO_PETEGG); return; } - pet_id = pet->search_petDB_index(ped->petEggId, PET_EGG); + int pet_id = pet->search_petDB_index(ped->petEggId, PET_EGG); + if (pet_id >= 0) { sd->catch_target_class = pet->db[pet_id].class_; - - intif->create_pet( - sd->status.account_id, sd->status.char_id, - pet->db[pet_id].class_, mob->db(pet->db[pet_id].class_)->lv, - pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate, - 100, 0, 1, pet->db[pet_id].jname); + intif->create_pet(sd->status.account_id, sd->status.char_id, pet->db[pet_id].class_, + mob->db(pet->db[pet_id].class_)->lv, pet->db[pet_id].EggID, + 0, (short)pet->db[pet_id].intimate, PET_HUNGER_STUFFED, + 0, 1, pet->db[pet_id].jname); clif->petEvolutionResult(fd, PET_EVOL_SUCCESS); } else { clif->petEvolutionResult(fd, PET_EVOL_UNKNOWN); } + return; } } @@ -15290,6 +15685,7 @@ static void clif_parse_GMKick(int fd, struct map_session_data *sd) } npc->unload_duplicates(nd, true); npc->unload(nd, true, true); + npc->motd = npc->name2id("HerculesMOTD"); npc->read_event_script(); } break; @@ -15786,7 +16182,7 @@ static void clif_friendslist_toggle(struct map_session_data *sd, int account_id, WFIFOL(fd, 2) = sd->status.friends[i].account_id; WFIFOL(fd, 6) = sd->status.friends[i].char_id; WFIFOB(fd, 10) = !online; //Yeah, a 1 here means "logged off", go figure... -#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 +#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328 memcpy(WFIFOP(fd, 11), sd->status.friends[i].name, NAME_LENGTH); #endif // PACKETVER_ZERO @@ -15811,7 +16207,7 @@ static void clif_friendslist_send(struct map_session_data *sd) { int i = 0, n, fd = sd->fd; -#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 +#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328 const int offset = 8; #else const int offset = 32; @@ -15823,7 +16219,7 @@ static void clif_friendslist_send(struct map_session_data *sd) for(i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id; i++) { WFIFOL(fd, 4 + offset * i + 0) = sd->status.friends[i].account_id; WFIFOL(fd, 4 + offset * i + 4) = sd->status.friends[i].char_id; -#if !(PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221) +#if !(PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328) memcpy(WFIFOP(fd, 4 + offset * i + 8), &sd->status.friends[i].name, NAME_LENGTH); #endif } @@ -16459,7 +16855,7 @@ static void clif_parse_HomMoveToMaster(int fd, struct map_session_data *sd) unit->calc_pos(bl, sd->bl.x, sd->bl.y, sd->ud.dir); ud = unit->bl2ud(bl); - unit->walktoxy(bl, ud->to_x, ud->to_y, 4); + unit->walk_toxy(bl, ud->to_x, ud->to_y, 4); } static void clif_parse_HomMoveTo(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); @@ -16483,7 +16879,7 @@ static void clif_parse_HomMoveTo(int fd, struct map_session_data *sd) else return; - unit->walktoxy(bl, x, y, 4); + unit->walk_toxy(bl, x, y, 4); } static void clif_parse_HomAttack(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); @@ -16540,7 +16936,7 @@ static void clif_parse_AutoRevive(int fd, struct map_session_data *sd) __attribu /// 0292 static void clif_parse_AutoRevive(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isvending(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isvending(sd)) return; if (!pc_isdead(sd)) @@ -18968,7 +19364,7 @@ static void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data *sd) _ /// 1 = open static void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data *sd) { - if (pc_istrading(sd) || pc_isdead(sd)) + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0) || pc_isdead(sd)) return; const unsigned int blocksize = sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE_sub); @@ -19743,9 +20139,9 @@ static int clif_autoshadowspell_list(struct map_session_data *sd) WFIFOHEAD(fd, 2 * 6 + 4); WFIFOW(fd,0) = 0x442; for (i = 0, c = 0; i < MAX_SKILL_DB; i++) - if( sd->status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].id > 0 && - sd->status.skill[i].id < GS_GLITTERING && skill->get_type(sd->status.skill[i].id) == BF_MAGIC ) - { // Can't auto cast both Extended class and 3rd class skills. + if (sd->status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd->status.skill[i].id > 0 && sd->status.skill[i].id < GS_GLITTERING + && skill->get_type(sd->status.skill[i].id, sd->status.skill[i].lv) == BF_MAGIC) { + // Can't auto cast both Extended class and 3rd class skills. WFIFOW(fd,8+c*2) = sd->status.skill[i].id; c++; } @@ -19806,7 +20202,7 @@ static void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) if (sd->menuskill_id != SC_AUTOSHADOWSPELL) return; - if (pc_istrading(sd) || sd->state.prevend) { + if (pc_istrading_except_npc(sd) || sd->state.prevend != 0 || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { clif->skill_fail(sd, sd->ud.skill_id, 0, 0, 0); clif_menuskill_clear(sd); return; @@ -20037,7 +20433,7 @@ static void clif_parse_cashShopOpen2(int fd, struct map_session_data *sd) static void clif_cashShopOpen(int fd, struct map_session_data *sd, int tab) { -#if PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || PACKETVER_ZERO_NUM >= defined(PACKETVER_ZERO) +#if PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || defined(PACKETVER_ZERO) WFIFOHEAD(fd, sizeof(struct PACKET_ZC_SE_CASHSHOP_OPEN)); struct PACKET_ZC_SE_CASHSHOP_OPEN *p = WFIFOP(fd, 0); p->packetType = HEADER_ZC_SE_CASHSHOP_OPEN; @@ -20251,17 +20647,14 @@ static void clif_maptypeproperty2(struct block_list *bl, enum send_target t) { #if PACKETVER >= 20121010 struct packet_maptypeproperty2 p; - struct map_session_data *sd = NULL; nullpo_retv(bl); - sd = BL_CAST(BL_PC, bl); - p.PacketType = maptypeproperty2Type; p.type = 0x28; p.flag.party = map->list[bl->m].flag.pvp ? 1 : 0; //PARTY p.flag.guild = (map->list[bl->m].flag.battleground || map_flag_gvg(bl->m)) ? 1 : 0; // GUILD p.flag.siege = (map->list[bl->m].flag.battleground || map_flag_gvg2(bl->m)) ? 1: 0; // SIEGE - p.flag.mineffect = map_flag_gvg(bl->m) ? 1 : ( (sd && sd->state.lesseffect) ? 1 : 0); // USE_SIMPLE_EFFECT - Forcing /mineffect in castles during WoE (probably redundant? I'm not sure) + p.flag.mineffect = map_flag_gvg2(bl->m) ? 1 : 0; // USE_SIMPLE_EFFECT - Automatically enable /mineffect in guild arenas and castles. p.flag.nolockon = 0; // DISABLE_LOCKON - TODO p.flag.countpk = map->list[bl->m].flag.pvp ? 1 : 0; // COUNT_PK p.flag.nopartyformation = map->list[bl->m].flag.partylock ? 1 : 0; // NO_PARTY_FORMATION @@ -20716,20 +21109,57 @@ static void clif_bank_withdraw(struct map_session_data *sd, enum e_BANKING_WITHD #endif } -/* TODO: official response packet (tried 0x8cb/0x97b but the display was quite screwed up.) */ -/* currently mimicing */ +/** + * Sends EXP, drop and death-penalty rates. + * 0x097b <packet len>.W <exp>.L <death>.L <drop>.L <DETAIL_EXP_INFO>13B (ZC_PERSONAL_INFOMATION2) + * <InfoType>.B <Exp>.L <Death>.L <Drop>.L (DETAIL_EXP_INFO) + * + * @param sd The character which should receive the messages. + * + **/ static void clif_show_modifiers(struct map_session_data *sd) { nullpo_retv(sd); - if( sd->status.mod_exp != 100 || sd->status.mod_drop != 100 || sd->status.mod_death != 100 ) { +#if PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO) + int length = sizeof(struct PACKET_ZC_PERSONAL_INFOMATION) + 4 * sizeof(struct PACKET_ZC_PERSONAL_INFOMATION_SUB); + WFIFOHEAD(sd->fd, length); + struct PACKET_ZC_PERSONAL_INFOMATION *p = WFIFOP(sd->fd, 0); + + p->packetType = HEADER_ZC_PERSONAL_INFOMATION; + p->length = length; + // Single values. + p->details[0].type = PC_EXP_INFO; + p->details[0].exp = 0; + p->details[0].death = 0; + p->details[0].drop = 0; + p->details[1].type = TPLUS_EXP_INFO; + p->details[1].exp = 0; + p->details[1].death = 0; + p->details[1].drop = 0; + p->details[2].type = PREMIUM_EXP_INFO; + p->details[2].exp = (sd->status.mod_exp - 100) * 1000; + p->details[2].death = (sd->status.mod_death - 100) * 1000; + p->details[2].drop = (sd->status.mod_drop - 100) * 1000; + p->details[3].type = SERVER_EXP_INFO; + p->details[3].exp = battle_config.base_exp_rate * 1000; + p->details[3].death = battle_config.death_penalty_base * 10; + p->details[3].drop = battle_config.item_rate_common * 1000; + // Total values. + p->total_exp = (battle_config.base_exp_rate * sd->status.mod_exp / 100) * 1000; + p->total_death = (battle_config.base_exp_rate * sd->status.mod_death / 100) * 10; + p->total_drop = (battle_config.base_exp_rate * sd->status.mod_drop / 100) * 1000; + + WFIFOSET(sd->fd, length); +#else + if (sd->status.mod_exp != 100 || sd->status.mod_drop != 100 || sd->status.mod_death != 100) { char output[128]; - snprintf(output,128, msg_sd(sd, 896), // Base EXP : %d%% | Base Drop: %d%% | Base Death Penalty: %d%% - sd->status.mod_exp,sd->status.mod_drop,sd->status.mod_death); + // Base EXP : %d%% | Base Drop: %d%% | Base Death Penalty: %d%% + safesnprintf(output, sizeof(output), msg_sd(sd, 896), sd->status.mod_exp, sd->status.mod_drop, sd->status.mod_death); clif->broadcast2(&sd->bl, output, (int)strlen(output) + 1, 0xffbc90, 0x190, 12, 0, 0, SELF); } - +#endif // PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO) } static void clif_notify_bounditem(struct map_session_data *sd, unsigned short index) @@ -21969,7 +22399,10 @@ static void clif_parse_rodex_open_write_mail(int fd, struct map_session_data *sd return; const struct PACKET_CZ_REQ_OPEN_WRITE_MAIL *rPacket = RFIFOP(fd, 0); - int8 result = (rodex->isenabled() == true && sd->npc_id == 0) ? 1 : 0; + int8 result = (rodex->isenabled() && (sd->npc_id == 0 || sd->state.using_megaphone != 0)) ? 1 : 0; + + if (result == 1) + sd->state.workinprogress |= 2; clif->rodex_open_write_mail(fd, rPacket->receiveName, result); } @@ -22115,7 +22548,7 @@ static void clif_rodex_checkname_result(struct map_session_data *sd, int char_id sPacket->Class = class_; sPacket->BaseLevel = base_level; #if PACKETVER >= 20160316 - strncpy(sPacket->Name, name, NAME_LENGTH); + safestrncpy(sPacket->Name, name, NAME_LENGTH); #endif WFIFOSET(fd, sizeof(*sPacket)); #endif @@ -22752,61 +23185,65 @@ static void clif_parse_open_ui_request(int fd, struct map_session_data *sd) clif->open_ui(sd, p->UIType); } -static void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType) +/** + * Does the actual packet sending for clif_open_ui(). + * + * @param sd The character who opens the UI. + * @param ui_type The UI which should be opened. + * + **/ +static void clif_open_ui_send(struct map_session_data *sd, enum zc_ui_types ui_type) { + nullpo_retv(sd); + #if PACKETVER >= 20150128 struct PACKET_ZC_OPEN_UI p; -#if PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411 - int claimed = 0; -#endif - - nullpo_retv(sd); p.PacketType = openUiType; - switch (uiType) { - case CZ_STYLIST_UI: - p.UIType = ZC_STYLIST_UI; -#if PACKETVER >= 20171122 - p.data = 0; -#endif - break; - case CZ_MACRO_REGISTER_UI: - p.UIType = ZC_CAPTCHA_UI; + p.UIType = ui_type; + + switch (ui_type) { + case ZC_BANK_UI: + case ZC_STYLIST_UI: + case ZC_CAPTCHA_UI: + case ZC_MACRO_UI: #if PACKETVER >= 20171122 p.data = 0; #endif break; - case CZ_MACRO_DETECTOR_UI: - p.UIType = ZC_MACRO_UI; #if PACKETVER >= 20171122 + case ZC_TIPBOX_UI: + case ZC_RENEWQUEST_UI: p.data = 0; -#endif break; - case CZ_ATTENDANCE_UI: - { + case ZC_ATTENDANCE_UI: + if (battle_config.feature_enable_attendance_system == 0) + return; + if (clif->attendance_getendtime() < time(NULL)) { #if PACKETVER >= 20180207 clif->msgtable_color(sd, MSG_ATTENDANCE_UNAVAILABLE, COLOR_RED); #endif return; } - if (battle_config.feature_enable_attendance_system != 1) - return; + #if PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411 - if (clif->attendance_timediff(sd) != true) + int claimed = 0; + + if (!clif->attendance_timediff(sd)) ++claimed; else if (sd->status.attendance_count >= VECTOR_LENGTH(clif->attendance_data)) sd->status.attendance_count = 0; - p.UIType = ZC_ATTENDANCE_UI; + p.data = sd->status.attendance_count * 10 + claimed; #else ShowWarning("Attendance System available only for PACKETVER_RE_NUM >= 20180307 || PACKETVER_MAIN_NUM >= 20180404 || PACKETVER_ZERO_NUM >= 20180411.\n"); return; #endif break; - } +#endif default: - ShowWarning("clif_open_ui: Requested UI (%u) is not implemented yet.\n", uiType); + ShowWarning("clif_open_ui_send: Requested UI (%u) is not implemented yet.\n", ui_type); return; } @@ -22814,6 +23251,37 @@ static void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType) #endif } +static void clif_open_ui(struct map_session_data *sd, enum cz_ui_types uiType) +{ + nullpo_retv(sd); + + enum zc_ui_types send_ui_type; + + switch (uiType) { +#if PACKETVER >= 20150128 + case CZ_STYLIST_UI: + send_ui_type = ZC_STYLIST_UI; + break; + case CZ_MACRO_REGISTER_UI: + send_ui_type = ZC_CAPTCHA_UI; + break; + case CZ_MACRO_DETECTOR_UI: + send_ui_type = ZC_MACRO_UI; + break; +#endif +#if PACKETVER >= 20171122 + case CZ_ATTENDANCE_UI: + send_ui_type = ZC_ATTENDANCE_UI; + break; +#endif + default: + ShowWarning("clif_open_ui: Requested UI (%u) is not implemented yet.\n", uiType); + return; + } + + clif->open_ui_send(sd, send_ui_type); +} + static void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); static void clif_parse_attendance_reward_request(int fd, struct map_session_data *sd) { @@ -23232,7 +23700,8 @@ static void clif_parse_npc_expanded_barter_closed(int fd, struct map_session_dat #if PACKETVER_MAIN_NUM >= 20191120 || PACKETVER_RE_NUM >= 20191106 || PACKETVER_ZERO_NUM >= 20191127 #define NEXT_EXPANDED_BARTER_ITEM(var, count) \ var = (struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub *)((char*)item + \ - sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub) + \ + sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub) - \ + sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2) + \ count * sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2)) #endif @@ -23252,7 +23721,11 @@ static void clif_npc_expanded_barter_open(struct map_session_data *sd, struct np packet->packetType = HEADER_ZC_NPC_EXPANDED_BARTER_OPEN; struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub *item = &packet->items[0]; - for (int i = 0; i < shop_size && buf_left >= sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub); i++) { + // Workaround for fix Visual Studio bug (error C2233) + // Here should be sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub) + const int ptr_size = sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub) - + sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2); + for (int i = 0; i < shop_size && buf_left >= ptr_size; i++) { if (shop[i].nameid) { struct item_data *id = itemdb->exists(shop[i].nameid); if (id == NULL) @@ -23265,7 +23738,7 @@ static void clif_npc_expanded_barter_open(struct map_session_data *sd, struct np item->index = i; item->zeny = shop[i].value; item->currency_count = 0; - buf_left -= sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub); + buf_left -= ptr_size; items_count ++; int count = shop[i].value2; if (buf_left < sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2) * count) { @@ -23294,7 +23767,7 @@ static void clif_npc_expanded_barter_open(struct map_session_data *sd, struct np packet->items_count = items_count; packet->packetLength = sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN) + - sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub) * items_count + + ptr_size * items_count + sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2) * currencies_count; clif->send(packet, packet->packetLength, &sd->bl, SELF); #endif @@ -23607,12 +24080,15 @@ static void clif_parse_lapineDdukDdak_ack(int fd, struct map_session_data *sd) _ static void clif_parse_lapineDdukDdak_ack(int fd, struct map_session_data *sd) { #if PACKETVER >= 20160302 + if (sd->state.lapine_ui == 0) + return; + const struct PACKET_CZ_LAPINEDDUKDDAK_ACK *p = RP2PTR(fd); struct item_data *it = itemdb->exists(p->itemId); if (it == NULL || it->lapineddukddak == NULL) return; - if (pc_cant_act(sd)) + if (pc_cant_act_except_lapine(sd)) return; if (pc->search_inventory(sd, it->nameid) == INDEX_NOT_FOUND) return; @@ -23673,6 +24149,55 @@ static void clif_parse_lapineDdukDdak_close(int fd, struct map_session_data *sd) #endif // PACKETVER >= 20160504 } +static bool clif_lapineUpgrade_open(struct map_session_data *sd, int item_id) +{ +#if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) + nullpo_retr(false, sd); + nullpo_retr(false, itemdb->exists(item_id)); + struct PACKET_ZC_LAPINEUPGRADE_OPEN p; + + p.packetType = HEADER_ZC_LAPINEUPGRADE_OPEN; + p.itemId = item_id; + clif->send(&p, sizeof(p), &sd->bl, SELF); + + return true; +#else + return false; +#endif // PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) +} + +static void clif_parse_lapineUpgrade_close(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); +static void clif_parse_lapineUpgrade_close(int fd, struct map_session_data *sd) +{ +#if PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO) +#endif // PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO) +} + +static void clif_parse_lapineUpgrade_makeItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); +static void clif_parse_lapineUpgrade_makeItem(int fd, struct map_session_data *sd) +{ +#if PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO) + ShowError("Lapin upgrade not implimented yet"); + clif->lapineUpgrade_result(sd, LAPINE_UPGRADE_FAILED); +#endif // PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO) +} + +static bool clif_lapineUpgrade_result(struct map_session_data *sd, enum lapineUpgrade_result result) +{ +#if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) + nullpo_retr(false, sd); + struct PACKET_ZC_LAPINEUPGRADE_RESULT p; + + p.packetType = HEADER_ZC_LAPINEUPGRADE_RESULT; + p.result = result; + clif->send(&p, sizeof(p), &sd->bl, SELF); + + return true; +#else + return false; +#endif // PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) +} + /*========================================== * Main client packet processing function *------------------------------------------*/ @@ -23951,7 +24476,7 @@ static int do_init_clif(bool minimal) timer->add_func_list(clif->clearunit_delayed_sub, "clif_clearunit_delayed_sub"); timer->add_func_list(clif->delayquit, "clif_delayquit"); - clif->delay_clearunit_ers = ers_new(sizeof(struct block_list),"clif.c::delay_clearunit_ers",ERS_OPT_CLEAR); + clif->delay_clearunit_ers = ers_new(sizeof(struct mob_data), "clif.c::delay_clearunit_ers", ERS_OPT_CLEAR); clif->delayed_damage_ers = ers_new(sizeof(struct cdelayed_damage),"clif.c::delayed_damage_ers",ERS_OPT_CLEAR); #if PACKETVER_MAIN_NUM >= 20190403 || PACKETVER_RE_NUM >= 20190320 @@ -24173,6 +24698,8 @@ void clif_defaults(void) clif->mobname_normal_ack = clif_mobname_normal_ack; clif->chatname_ack = clif_chatname_ack; clif->elemname_ack = clif_elemname_ack; + clif->skillname_ack = clif_skillname_ack; + clif->itemname_ack = clif_itemname_ack; clif->unknownname_ack = clif_unknownname_ack; clif->monster_hp_bar = clif_monster_hp_bar; clif->hpmeter = clif_hpmeter; @@ -24865,6 +25392,7 @@ void clif_defaults(void) clif->attendance_timediff = clif_attendance_timediff; clif->attendance_getendtime = clif_attendance_getendtime; clif->pOpenUIRequest = clif_parse_open_ui_request; + clif->open_ui_send = clif_open_ui_send; clif->open_ui = clif_open_ui; clif->pAttendanceRewardRequest = clif_parse_attendance_reward_request; clif->ui_action = clif_ui_action; @@ -24916,5 +25444,9 @@ void clif_defaults(void) clif->lapineDdukDdak_result = clif_lapineDdukDdak_result; clif->plapineDdukDdak_ack = clif_parse_lapineDdukDdak_ack; clif->plapineDdukDdak_close = clif_parse_lapineDdukDdak_close; + clif->lapineUpgrade_open = clif_lapineUpgrade_open; + clif->lapineUpgrade_result = clif_lapineUpgrade_result; + clif->pLapineUpgrade_close = clif_parse_lapineUpgrade_close; + clif->pLapineUpgrade_makeItem = clif_parse_lapineUpgrade_makeItem; clif->pReqGearOff = clif_parse_reqGearOff; } diff --git a/src/map/clif.h b/src/map/clif.h index 25ac65af5..ee76e62e8 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -146,6 +146,8 @@ typedef enum broadcast_flags { BC_WOE = 0x20, BC_COLOR_MASK = 0x30, // BC_YELLOW|BC_BLUE|BC_WOE + BC_MEGAPHONE = 0x40, + BC_DEFAULT = BC_ALL|BC_PC|BC_YELLOW } broadcast_flags; @@ -733,6 +735,11 @@ enum lapineddukddak_result { LAPINEDDKUKDDAK_INVALID_ITEM = 7, }; +enum lapineUpgrade_result { + LAPINE_UPGRADE_SUCCESS = 0, + LAPINE_UPGRADE_FAILED = 1 +}; + enum removeGear_flag { REMOVE_MOUNT_0 = 0, // unused REMOVE_MOUNT_DRAGON = 1, @@ -743,6 +750,14 @@ enum removeGear_flag { REMOVE_MOUNT_CART = 6, }; +/** Info types for PACKET_ZC_PERSONAL_INFOMATION (0x097b). **/ +enum detail_exp_info_type { + PC_EXP_INFO = 0x0, //!< PCBang internet cafe modifiers. (http://pcbang.gnjoy.com/) (Unused.) + PREMIUM_EXP_INFO = 0x1, //!< Premium user modifiers. Values aren't displayed in 20161207+ clients. + SERVER_EXP_INFO = 0x2, //!< Server rates. + TPLUS_EXP_INFO = 0x3, //!< Unknown. Values are displayed as "TPLUS" in kRO. (Unused.) +}; + /** * Clif.c Interface **/ @@ -952,6 +967,8 @@ struct clif_interface { void (*mobname_normal_ack) (int fd, struct block_list *bl); void (*chatname_ack) (int fd, struct block_list *bl); void (*elemname_ack) (int fd, struct block_list *bl); + void (*skillname_ack) (int fd, struct block_list *bl); + void (*itemname_ack) (int fd, struct block_list *bl); void (*unknownname_ack) (int fd, struct block_list *bl); void (*monster_hp_bar) ( struct mob_data* md, struct map_session_data *sd ); int (*hpmeter) (struct map_session_data *sd); @@ -1641,6 +1658,7 @@ struct clif_interface { bool (*attendance_timediff) (struct map_session_data *sd); time_t (*attendance_getendtime) (void); void (*pOpenUIRequest) (int fd, struct map_session_data *sd); + void (*open_ui_send) (struct map_session_data *sd, enum zc_ui_types ui_type); void (*open_ui) (struct map_session_data *sd, enum cz_ui_types uiType); void (*pAttendanceRewardRequest) (int fd, struct map_session_data *sd); void (*ui_action) (struct map_session_data *sd, int32 UIType, int32 data); @@ -1688,6 +1706,10 @@ struct clif_interface { bool (*lapineDdukDdak_result) (struct map_session_data *sd, enum lapineddukddak_result result); void (*plapineDdukDdak_ack) (int fd, struct map_session_data *sd); void (*plapineDdukDdak_close) (int fd, struct map_session_data *sd); + bool (*lapineUpgrade_open) (struct map_session_data *sd, int item_id); + bool (*lapineUpgrade_result) (struct map_session_data *sd, enum lapineUpgrade_result result); + void (*pLapineUpgrade_close) (int fd, struct map_session_data *sd); + void (*pLapineUpgrade_makeItem) (int fd, struct map_session_data *sd); void (*pReqGearOff) (int fd, struct map_session_data *sd); }; diff --git a/src/map/elemental.c b/src/map/elemental.c index 1c1d98634..f176bb9e2 100644 --- a/src/map/elemental.c +++ b/src/map/elemental.c @@ -788,8 +788,8 @@ static int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_ return 0; //Already walking to him if( DIFF_TICK(tick, ed->ud.canmove_tick) < 0 ) return 0; //Can't move yet. - if( map->search_freecell(&ed->bl, sd->bl.m, &x, &y, MIN_ELEDISTANCE, MIN_ELEDISTANCE, 1) - && unit->walktoxy(&ed->bl, x, y, 0) ) + if (map->search_freecell(&ed->bl, sd->bl.m, &x, &y, MIN_ELEDISTANCE, MIN_ELEDISTANCE, 1) != 0 + && unit->walk_toxy(&ed->bl, x, y, 0) == 0) return 0; } diff --git a/src/map/guild.c b/src/map/guild.c index f344878e1..a78ea169c 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -887,6 +887,12 @@ static void guild_member_joined(struct map_session_data *sd) channel->join(g->channel, sd, "", true); } + for (int j = 0; j < g->instances; j++) { + if (g->instance[j] >= 0) { + clif->instance_join(sd->fd, g->instance[j]); + break; + } + } } } @@ -940,6 +946,13 @@ static int guild_member_added(int guild_id, int account_id, int char_id, int fla channel->join(g->channel, sd, "", true); } + for (int i = 0; i < g->instances; i++) { + if (g->instance[i] >= 0) { + clif->instance_join(sd->fd, g->instance[i]); + break; + } + } + return 0; } @@ -1519,7 +1532,7 @@ static void guild_guildaura_refresh(struct map_session_data *sd, uint16 skill_id if( !skill_lv ) return; if (sd->sc.data[type] && (group = skill->id2group(sd->sc.data[type]->val4)) != NULL) { - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); status_change_end(&sd->bl,type,INVALID_TIMER); } group = skill->unitsetting(&sd->bl,skill_id,skill_lv,sd->bl.x,sd->bl.y,0); @@ -2069,7 +2082,7 @@ static int guild_break(struct map_session_data *sd, const char *name) } } for(i = 0; i < count; i++) { // FIXME: Why is this not done in the above loop? - skill->del_unitgroup(groups[i],ALC_MARK); + skill->del_unitgroup(groups[i]); } } diff --git a/src/map/instance.c b/src/map/instance.c index 1104b7e88..d2c0a229c 100644 --- a/src/map/instance.c +++ b/src/map/instance.c @@ -68,7 +68,7 @@ static bool instance_is_valid(int instance_id) /*-------------------------------------- * name : instance name * Return value could be - * -4 = already exists | -3 = no free instances | -2 = owner not found | -1 = invalid type + * -4 = already exists | -2 = owner not found | -1 = invalid type * On success return instance_id *--------------------------------------*/ static int instance_create(int owner_id, const char *name, enum instance_owner_type type) @@ -734,7 +734,7 @@ static void instance_force_destroy(struct map_session_data *sd) switch (instance->list[i].owner_type) { case IOT_CHAR: { - if (instance->list[i].owner_id != sd->status.char_id) + if (instance->list[i].owner_id != sd->status.account_id) continue; break; } diff --git a/src/map/intif.c b/src/map/intif.c index a420b7204..276b40780 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -218,13 +218,13 @@ static int intif_saveregistry(struct map_session_data *sd) plen += 1; if( p->value ) { - len = strlen(p->value)+1; + len = strlen(p->value); - WFIFOB(inter_fd, plen) = (unsigned char)len;/* won't be higher; the column size is 254 */ + WFIFOB(inter_fd, plen) = (unsigned char)len; // Won't be higher; the column size is 255. plen += 1; - safestrncpy(WFIFOP(inter_fd,plen), p->value, len); - plen += len; + safestrncpy(WFIFOP(inter_fd, plen), p->value, len + 1); + plen += len + 1; } else { script->reg_destroy_single(sd,key.i64,&p->flag); } @@ -1025,7 +1025,7 @@ static void intif_parse_Registers(int fd) * { keyLength(B), key(<keyLength>), index(L), valLength(B), val(<valLength>) } **/ if (type) { - char sval[254]; + char sval[SCRIPT_STRING_VAR_LENGTH + 1]; for (i = 0; i < max; i++) { int len = RFIFOB(fd, cursor); safestrncpy(key, RFIFOP(fd, cursor + 1), min((int)sizeof(key), len)); @@ -1035,8 +1035,8 @@ static void intif_parse_Registers(int fd) cursor += 4; len = RFIFOB(fd, cursor); - safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len)); - cursor += len + 1; + safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len + 1)); + cursor += len + 2; script->set_reg(NULL,sd,reference_uid(script->add_variable(key), index), key, sval, NULL); } diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 5f0790b10..39f0e7945 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -152,6 +152,7 @@ enum item_itemid { ITEMID_BUBBLE_GUM = 12210, ITEMID_GIANT_FLY_WING = 12212, ITEMID_NEURALIZER = 12213, + ITEMID_MEGAPHONE = 12221, ITEMID_M_CENTER_POTION = 12241, ITEMID_M_AWAKENING_POTION = 12242, ITEMID_M_BERSERK_POTION = 12243, @@ -606,7 +607,6 @@ struct item_data { #define itemid_isgemstone(n) ((n) >= ITEMID_YELLOW_GEMSTONE && (n) <= ITEMID_BLUE_GEMSTONE) #define itemdb_is_GNbomb(n) ((n) >= ITEMID_APPLE_BOMB && (n) <= ITEMID_VERY_HARD_LUMP) #define itemdb_is_GNthrowable(n) ((n) >= ITEMID_MYSTERIOUS_POWDER && (n) <= ITEMID_BLACK_THING_TO_THROW) -#define itemid_is_pilebunker(n) ((n) == ITEMID_PILEBUNCKER || (n) == ITEMID_PILEBUNCKER_P || (n) == ITEMID_PILEBUNCKER_S || (n) == ITEMID_PILEBUNCKER_T) #define itemdb_is_shadowequip(n) ((n) & (EQP_SHADOW_ARMOR|EQP_SHADOW_WEAPON|EQP_SHADOW_SHIELD|EQP_SHADOW_SHOES|EQP_SHADOW_ACC_R|EQP_SHADOW_ACC_L)) #define itemdb_is_costumeequip(n) ((n) & (EQP_COSTUME_HEAD_TOP|EQP_COSTUME_HEAD_MID|EQP_COSTUME_HEAD_LOW|EQP_COSTUME_GARMENT)) diff --git a/src/map/mail.c b/src/map/mail.c index a1176e8fc..b862900c7 100644 --- a/src/map/mail.c +++ b/src/map/mail.c @@ -81,9 +81,9 @@ static int mail_removezeny(struct map_session_data *sd, short flag) static unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount) { - nullpo_retr(1, sd); - if( pc_istrading(sd) ) + + if (pc_istrading_except_npc(sd) || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) return 1; if( idx == 0 ) { // Zeny Transfer diff --git a/src/map/map.c b/src/map/map.c index 70623ae22..c88118b43 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -261,11 +261,13 @@ static int map_addblock(struct block_list *bl) pos = x/BLOCK_SIZE+(y/BLOCK_SIZE)*map->list[m].bxs; if (bl->type == BL_MOB) { + Assert_ret(map->list[m].block_mob != NULL); bl->next = map->list[m].block_mob[pos]; bl->prev = &map->bl_head; if (bl->next) bl->next->prev = bl; map->list[m].block_mob[pos] = bl; } else { + Assert_ret(map->list[m].block != NULL); bl->next = map->list[m].block[pos]; bl->prev = &map->bl_head; if (bl->next) bl->next->prev = bl; @@ -307,8 +309,10 @@ static int map_delblock(struct block_list *bl) if (bl->prev == &map->bl_head) { //Since the head of the list, update the block_list map of [] if (bl->type == BL_MOB) { + Assert_ret(map->list[bl->m].block_mob != NULL); map->list[bl->m].block_mob[pos] = bl->next; } else { + Assert_ret(map->list[bl->m].block != NULL); map->list[bl->m].block[pos] = bl->next; } } else { @@ -450,6 +454,12 @@ static int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) struct block_list *bl; int count = 0; + Assert_ret(m >= -1); + if (m < 0) + return 0; + Assert_ret(m < map->count); + Assert_ret(map->list[m].block != NULL); + if (x < 0 || y < 0 || (x >= map->list[m].xs) || (y >= map->list[m].ys)) return 0; @@ -512,6 +522,12 @@ static struct skill_unit *map_find_skill_unit_oncell(struct block_list *target, nullpo_retr(NULL, target); m = target->m; + Assert_ret(m >= -1); + if (m < 0) + return 0; + Assert_ret(m < map->count); + Assert_ret(map->list[m].block != NULL); + if (x < 0 || y < 0 || (x >= map->list[m].xs) || (y >= map->list[m].ys)) return NULL; @@ -586,8 +602,11 @@ static int map_vforeachinmap(int (*func)(struct block_list*, va_list), int16 m, struct block_list *bl; int blockcount = map->bl_list_count; + Assert_ret(m >= -1); if (m < 0) return 0; + Assert_ret(m < map->count); + Assert_ret(map->list[m].block != NULL); bsize = map->list[m].bxs * map->list[m].bys; for (i = 0; i < bsize; i++) { @@ -719,24 +738,28 @@ static int bl_getall_area(int type, int m, int x0, int y0, int x1, int y1, int ( struct block_list *bl; int found = 0; + Assert_ret(m >= -1); if (m < 0) return 0; + Assert_ret(m < map->count); + const struct map_data *const listm = &map->list[m]; + Assert_ret(listm->xs > 0 && listm->ys > 0); + Assert_ret(listm->block != NULL); + + // Limit search area to map size + x0 = min(max(x0, 0), map->list[m].xs - 1); + y0 = min(max(y0, 0), map->list[m].ys - 1); + x1 = min(max(x1, 0), map->list[m].xs - 1); + y1 = min(max(y1, 0), map->list[m].ys - 1); if (x1 < x0) swap(x0, x1); if (y1 < y0) swap(y0, y1); - // Limit search area to map size - x0 = max(x0, 0); - y0 = max(y0, 0); - x1 = min(x1, map->list[m].xs - 1); - y1 = min(y1, map->list[m].ys - 1); - { const int x0b = x0 / BLOCK_SIZE; const int x1b = x1 / BLOCK_SIZE; const int y0b = y0 / BLOCK_SIZE; const int y1b = y1 / BLOCK_SIZE; - const struct map_data *const listm = &map->list[m]; const int bxs0 = listm->bxs; // duplication for better performance @@ -1670,7 +1693,7 @@ static int map_search_freecell(struct block_list *src, int16 m, int16 *x, int16 *------------------------------------------*/ static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int16 *y, int type, int flag) { - uint8 dir = 6; + enum unit_dir dir = UNIT_DIR_EAST; int16 tx; int16 ty; int costrange = 10; @@ -1689,7 +1712,7 @@ static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, short dy = diry[dir]; //Linear search - if(dir%2 == 0 && costrange%MOVE_COST == 0) { + if (!unit_is_diagonal_dir(dir) && (costrange % MOVE_COST) == 0) { tx = *x+dx*(costrange/MOVE_COST); ty = *y+dy*(costrange/MOVE_COST); if (!map->count_oncell(m, tx, ty, type, flag) && map->getcell(m, bl, tx, ty, CELL_CHKPASS)) { @@ -1699,7 +1722,7 @@ static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, } } //Full diagonal search - else if(dir%2 == 1 && costrange%MOVE_DIAGONAL_COST == 0) { + else if (unit_is_diagonal_dir(dir) && (costrange % MOVE_DIAGONAL_COST) == 0) { tx = *x+dx*(costrange/MOVE_DIAGONAL_COST); ty = *y+dy*(costrange/MOVE_DIAGONAL_COST); if (!map->count_oncell(m, tx, ty, type, flag) && map->getcell(m, bl, tx, ty, CELL_CHKPASS)) { @@ -1709,16 +1732,24 @@ static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, } } //One cell diagonal, rest linear (TODO: Find a better algorithm for this) - else if(dir%2 == 1 && costrange%MOVE_COST == 4) { - tx = *x+dx*((dir%4==3)?(costrange/MOVE_COST):1); - ty = *y+dy*((dir%4==1)?(costrange/MOVE_COST):1); + else if (unit_is_diagonal_dir(dir) && (costrange % MOVE_COST) == 4) { + tx = *x + dx; + ty = *y + dy; + if (unit_is_dir_or_opposite(dir, UNIT_DIR_SOUTHWEST)) + tx = tx * costrange / MOVE_COST; + if (unit_is_dir_or_opposite(dir, UNIT_DIR_NORTHWEST)) + ty = ty * costrange / MOVE_COST; if (!map->count_oncell(m, tx, ty, type, flag) && map->getcell(m, bl, tx, ty, CELL_CHKPASS)) { *x = tx; *y = ty; return true; } - tx = *x+dx*((dir%4==1)?(costrange/MOVE_COST):1); - ty = *y+dy*((dir%4==3)?(costrange/MOVE_COST):1); + tx = *x + dx; + ty = *y + dy; + if (unit_is_dir_or_opposite(dir, UNIT_DIR_NORTHWEST)) + tx = tx * costrange / MOVE_COST; + if (unit_is_dir_or_opposite(dir, UNIT_DIR_SOUTHWEST)) + ty = ty * costrange / MOVE_COST; if (!map->count_oncell(m, tx, ty, type, flag) && map->getcell(m, bl, tx, ty, CELL_CHKPASS)) { *x = tx; *y = ty; @@ -1727,17 +1758,17 @@ static bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, } //Get next direction - if (dir == 5) { + if (dir == UNIT_DIR_SOUTHEAST) { //Diagonal search complete, repeat with higher cost range if(costrange == 14) costrange += 6; else if(costrange == 28 || costrange >= 38) costrange += 2; else costrange += 4; - dir = 6; - } else if (dir == 4) { + dir = UNIT_DIR_EAST; + } else if (dir == UNIT_DIR_SOUTH) { //Linear search complete, switch to diagonal directions - dir = 7; + dir = UNIT_DIR_NORTHEAST; } else { - dir = (dir+2)%8; + dir = unit_get_ccw90_dir(dir); } } @@ -1880,6 +1911,7 @@ static void map_reqnickdb(struct map_session_data *sd, int charid) } // not in cache, request it CREATE(req, struct charid_request, 1); + req->charid = sd->status.char_id; req->next = p->requests; p->requests = req; chrif->searchcharid(charid); @@ -2845,63 +2877,70 @@ static int map_mapname2ipport(unsigned short name, uint32 *ip, uint16 *port) return 0; } -/*========================================== +/** * Checks if both dirs point in the same direction. - *------------------------------------------*/ -static int map_check_dir(int s_dir, int t_dir) + * @param s_dir: direction source is facing + * @param t_dir: direction target is facing + * @return 0: success(both face the same direction), 1: failure + **/ +static int map_check_dir(enum unit_dir s_dir, enum unit_dir t_dir) { - if(s_dir == t_dir) + if (s_dir == t_dir || ((t_dir + UNIT_DIR_MAX - 1) % UNIT_DIR_MAX) == s_dir + || ((t_dir + UNIT_DIR_MAX + 1) % UNIT_DIR_MAX) == s_dir) return 0; - switch(s_dir) { - case 0: if(t_dir == 7 || t_dir == 1 || t_dir == 0) return 0; break; - case 1: if(t_dir == 0 || t_dir == 2 || t_dir == 1) return 0; break; - case 2: if(t_dir == 1 || t_dir == 3 || t_dir == 2) return 0; break; - case 3: if(t_dir == 2 || t_dir == 4 || t_dir == 3) return 0; break; - case 4: if(t_dir == 3 || t_dir == 5 || t_dir == 4) return 0; break; - case 5: if(t_dir == 4 || t_dir == 6 || t_dir == 5) return 0; break; - case 6: if(t_dir == 5 || t_dir == 7 || t_dir == 6) return 0; break; - case 7: if(t_dir == 6 || t_dir == 0 || t_dir == 7) return 0; break; - } return 1; } -/*========================================== +/** * Returns the direction of the given cell, relative to 'src' - *------------------------------------------*/ -static uint8 map_calc_dir(struct block_list *src, int16 x, int16 y) + * @param src: object to put in relation between coordinates + * @param x: x-coordinate of cell + * @param y: y-coordinate of cell + * @return the direction of the given cell, relative to 'src' + **/ +static enum unit_dir map_calc_dir(const struct block_list *src, int16 x, int16 y) { - uint8 dir = 0; - int dx, dy; - - nullpo_ret(src); + nullpo_retr(UNIT_DIR_NORTH, src); + enum unit_dir dir = UNIT_DIR_NORTH; - dx = x-src->x; - dy = y-src->y; + int dx = x - src->x; + int dy = y - src->y; if (dx == 0 && dy == 0) { // both are standing on the same spot. // aegis-style, makes knockback default to the left. // athena-style, makes knockback default to behind 'src'. - dir = (battle_config.knockback_left ? 6 : unit->getdir(src)); - } else if (dx >= 0 && dy >=0) { - // upper-right - if( dx*2 < dy || dx == 0 ) dir = 0; // up - else if( dx > dy*2+1 || dy == 0 ) dir = 6; // right - else dir = 7; // up-right + if (battle_config.knockback_left != 0) + dir = UNIT_DIR_EAST; + else + dir = unit->getdir(src); + } else if (dx >= 0 && dy >= 0) { + if (dx * 2 < dy || dx == 0) + dir = UNIT_DIR_NORTH; + else if (dx > dy * 2 + 1 || dy == 0) + dir = UNIT_DIR_EAST; + else + dir = UNIT_DIR_NORTHEAST; } else if (dx >= 0 && dy <= 0) { - // lower-right - if( dx*2 < -dy || dx == 0 ) dir = 4; // down - else if( dx > -dy*2+1 || dy == 0 ) dir = 6; // right - else dir = 5; // down-right + if (dx * 2 < -dy || dx == 0) + dir = UNIT_DIR_SOUTH; + else if (dx > -dy * 2 + 1 || dy == 0) + dir = UNIT_DIR_EAST; + else + dir = UNIT_DIR_SOUTHEAST; } else if (dx <= 0 && dy <= 0) { - // lower-left - if( dx*2 > dy || dx == 0 ) dir = 4; // down - else if( dx < dy*2-1 || dy == 0 ) dir = 2; // left - else dir = 3; // down-left + if (dx * 2 > dy || dx == 0 ) + dir = UNIT_DIR_SOUTH; + else if (dx < dy * 2 + 1 || dy == 0) + dir = UNIT_DIR_WEST; + else + dir = UNIT_DIR_SOUTHWEST; } else { - // upper-left - if( -dx*2 < dy || dx == 0 ) dir = 0; // up - else if( -dx > dy*2+1 || dy == 0) dir = 2; // left - else dir = 1; // up-left + if (-dx * 2 < dy || dx == 0 ) + dir = UNIT_DIR_NORTH; + else if (-dx > dy * 2 + 1 || dy == 0) + dir = UNIT_DIR_WEST; + else + dir = UNIT_DIR_NORTHWEST; } return dir; } @@ -2929,11 +2968,11 @@ static int map_random_dir(struct block_list *bl, int16 *x, int16 *y) if (dist < 1) dist =1; do { - int j = 1 + 2*(rnd()%4); //Pick a random diagonal direction + enum unit_dir dir = unit_get_rnd_diagonal_dir(); short segment = 1+(rnd()%dist); //Pick a random interval from the whole vector in that direction - xi = bl->x + segment*dirx[j]; + xi = bl->x + segment * dirx[dir]; segment = (short)sqrt((float)(dist2 - segment*segment)); //The complement of the previously picked segment - yi = bl->y + segment*diry[j]; + yi = bl->y + segment * diry[dir]; } while ((map->getcell(bl->m, bl, xi, yi, CELL_CHKNOPASS) || !path->search(NULL, bl, bl->m, bl->x, bl->y, xi, yi, 1, CELL_CHKNOREACH)) && (++i)<100); @@ -3062,6 +3101,8 @@ static int map_getcellp(struct map_data *m, const struct block_list *bl, int16 x return (cell.icewall); case CELL_CHKNOICEWALL: return (cell.noicewall); + case CELL_CHKNOSKILL: + return (cell.noskill); // special checks case CELL_CHKPASS: @@ -3126,6 +3167,7 @@ static void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) case CELL_NOCHAT: map->list[m].cell[j].nochat = flag; break; case CELL_ICEWALL: map->list[m].cell[j].icewall = flag; break; case CELL_NOICEWALL: map->list[m].cell[j].noicewall = flag; break; + case CELL_NOSKILL: map->list[m].cell[j].noskill = flag; break; default: ShowWarning("map_setcell: invalid cell type '%d'\n", (int)cell); @@ -4441,7 +4483,6 @@ static bool inter_config_read_connection(const char *filename, const struct conf static bool inter_config_read_database_names(const char *filename, const struct config_t *config, bool imported) { const struct config_setting_t *setting = NULL; - bool retval = true; nullpo_retr(false, filename); nullpo_retr(false, config); @@ -4459,16 +4500,14 @@ static bool inter_config_read_database_names(const char *filename, const struct libconfig->setting_lookup_mutable_string(setting, "npc_barter_data_db", map->npc_barter_data_db, sizeof(map->npc_barter_data_db)); libconfig->setting_lookup_mutable_string(setting, "npc_expanded_barter_data_db", map->npc_expanded_barter_data_db, sizeof(map->npc_expanded_barter_data_db)); - if (!mapreg->config_read(filename, setting, imported)) - retval = false; - if ((setting = libconfig->lookup(config, "inter_configuration/database_names/registry")) == NULL) { if (imported) - return retval; + return true; ShowError("inter_config_read: inter_configuration/database_names/registry was not found in %s!\n", filename); return false; } - return retval; + + return mapreg->config_read_registry(filename, setting, imported); } /*======================================= @@ -5250,7 +5289,7 @@ static bool map_zone_mf_cache(int m, char *flag, char *params) } } - if( modifier[0] == '\0' || !( skill_id = skill->name2id(skill_name) ) || !skill->get_unit_id( skill->name2id(skill_name), 0) || atoi(modifier) < 1 || atoi(modifier) > USHRT_MAX ) { + if (modifier[0] == '\0' || (skill_id = skill->name2id(skill_name)) == 0 || skill->get_unit_id(skill->name2id(skill_name), 1, 0) == 0 || atoi(modifier) < 1 || atoi(modifier) > USHRT_MAX) { ;/* we don't mind it, the server will take care of it next. */ } else { int idx = map->list[m].unit_count; @@ -5430,6 +5469,19 @@ static bool map_zone_mf_cache(int m, char *flag, char *params) map_zone_mf_cache_add(m, rflag); } } + } else if (strcmpi(flag, "nopet") == 0) { + if (state == 0) { + if (map->list[m].flag.nopet != 0) { + sprintf(rflag, "nopet\t%d", map->list[m].flag.nopet); + map_zone_mf_cache_add(m, rflag); + } + } + if (sscanf(params, "%d", &state) == 1) { + if (state != map->list[m].flag.nopet) { + sprintf(rflag, "nopet\t%d", state); + map_zone_mf_cache_add(m, rflag); + } + } } return false; @@ -6032,11 +6084,15 @@ static bool map_add_questinfo(int m, struct npc_data *nd) nullpo_retr(false, nd); Assert_retr(false, m >= 0 && m < map->count); - if (&VECTOR_LAST(map->list[m].qi_list) == nd) + int i; + ARR_FIND(0, VECTOR_LENGTH(map->list[m].qi_list), i, VECTOR_INDEX(map->list[m].qi_list, i) == nd); + + if (i < VECTOR_LENGTH(map->list[m].qi_list)) { return false; + } VECTOR_ENSURE(map->list[m].qi_list, 1, 1); - VECTOR_PUSH(map->list[m].qi_list, *nd); + VECTOR_PUSH(map->list[m].qi_list, nd); return true; } @@ -6047,7 +6103,7 @@ static bool map_remove_questinfo(int m, struct npc_data *nd) Assert_retr(false, m >= 0 && m < map->count); int i; - ARR_FIND(0, VECTOR_LENGTH(map->list[m].qi_list), i, &VECTOR_INDEX(map->list[m].qi_list, i) == nd); + ARR_FIND(0, VECTOR_LENGTH(map->list[m].qi_list), i, VECTOR_INDEX(map->list[m].qi_list, i) == nd); if (i != VECTOR_LENGTH(map->list[m].qi_list)) { VECTOR_ERASE(map->list[m].qi_list, i); return true; @@ -6649,6 +6705,8 @@ int do_init(int argc, char *argv[]) atcommand->msg_read(map->MSG_CONF_NAME, false); map->inter_config_read(map->INTER_CONF_NAME, false); logs->config_read(map->LOG_CONF_NAME, false); + } else { + battle->config_read(map->BATTLE_CONF_FILENAME, false); } script->config_read(map->SCRIPT_CONF_NAME, false); @@ -6699,8 +6757,8 @@ int do_init(int argc, char *argv[]) timer->add_func_list(map->removemobs_timer, "map_removemobs_timer"); timer->add_interval(timer->gettick()+1000, map->freeblock_timer, 0, 0, 60*1000); - HPM->event(HPET_INIT); } + HPM->event(HPET_INIT); atcommand->init(minimal); battle->init(minimal); @@ -6747,8 +6805,12 @@ int do_init(int argc, char *argv[]) exit(EXIT_SUCCESS); } - if( minimal ) { + if (minimal) { HPM->event(HPET_READY); + HPM->event(HPET_FINAL); + battle->final(); + HPM_map_do_final(); + HPM->event(HPET_POST_FINAL); exit(EXIT_SUCCESS); } diff --git a/src/map/map.h b/src/map/map.h index dbd9c0fba..e7c0cb50d 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -27,6 +27,7 @@ #include "common/db.h" #include "common/mapindex.h" #include "common/mmo.h" +#include "map/unitdefines.h" // enum unit_dir #include <stdio.h> #include <stdarg.h> @@ -328,6 +329,14 @@ enum bl_type { enum npc_subtype { WARP, SHOP, SCRIPT, CASHSHOP, TOMB }; +/** optional flags for script labels, used by the label db */ +enum script_label_flags { + /** the label can be called from outside the local scope of the NPC */ + LABEL_IS_EXTERN = 0x1, + /** the label is a public or private local NPC function */ + LABEL_IS_USERFUNC = 0x2, +}; + /** * Race type IDs. * @@ -587,6 +596,7 @@ typedef enum { CELL_NOCHAT, CELL_ICEWALL, CELL_NOICEWALL, + CELL_NOSKILL, } cell_t; @@ -611,6 +621,7 @@ typedef enum { CELL_CHKNOCHAT, CELL_CHKICEWALL, CELL_CHKNOICEWALL, + CELL_CHKNOSKILL, } cell_chk; @@ -629,7 +640,8 @@ struct mapcell { novending : 1, nochat : 1, icewall : 1, - noicewall : 1; + noicewall : 1, + noskill : 1; #ifdef CELL_NOSTACK int cell_bl; //Holds amount of bls in this cell. @@ -787,6 +799,7 @@ struct map_data { unsigned pairship_endable : 1; unsigned nostorage : 2; unsigned nogstorage : 2; + unsigned nopet : 1; uint32 noviewid; ///< noviewid (bitmask - @see enum equip_pos) } flag; struct point save; @@ -845,7 +858,7 @@ struct map_data { } cell_buf; /* questinfo entries list */ - VECTOR_DECL(struct npc_data) qi_list; + VECTOR_DECL(struct npc_data *) qi_list; /* speeds up clif_updatestatus processing by causing hpmeter to run only when someone with the permission can view it */ unsigned short hpmeter_visible; @@ -1216,8 +1229,8 @@ END_ZEROED_BLOCK; // reload config file looking only for npcs void (*reloadnpc) (bool clear); - int (*check_dir) (int s_dir,int t_dir); - uint8 (*calc_dir) (struct block_list *src,int16 x,int16 y); + int (*check_dir) (enum unit_dir s_dir, enum unit_dir t_dir); + enum unit_dir (*calc_dir) (const struct block_list *src, int16 x, int16 y); int (*random_dir) (struct block_list *bl, short *x, short *y); // [Skotlex] int (*cleanup_sub) (struct block_list *bl, va_list ap); diff --git a/src/map/mapdefines.h b/src/map/mapdefines.h index f5a8149d4..8a363e2d4 100644 --- a/src/map/mapdefines.h +++ b/src/map/mapdefines.h @@ -30,7 +30,15 @@ #define DAMAGELOG_SIZE 30 #define LOOTITEM_SIZE 10 #define MAX_MOBSKILL 50 + +#ifndef MAX_MOB_LIST_PER_MAP +#ifdef RENEWAL #define MAX_MOB_LIST_PER_MAP 100 +#else +#define MAX_MOB_LIST_PER_MAP 115 +#endif +#endif + #define MAX_EVENTQUEUE 2 #define MAX_EVENTTIMER 32 #define NATURAL_HEAL_INTERVAL 500 diff --git a/src/map/mapreg.h b/src/map/mapreg.h index b3b89e1b2..4318eaea8 100644 --- a/src/map/mapreg.h +++ b/src/map/mapreg.h @@ -21,55 +21,66 @@ #ifndef MAP_MAPREG_H #define MAP_MAPREG_H -#include "map/script.h" // struct reg_db -#include "common/hercules.h" +#include "map/script.h" #include "common/db.h" +#include "common/hercules.h" -/* Forward Declarations */ -struct config_setting_t; // common/conf.h +/** Forward Declarations **/ +struct config_setting_t; struct eri; -/** Container for a mapreg value */ +#ifndef MAPREG_AUTOSAVE_INTERVAL +#define MAPREG_AUTOSAVE_INTERVAL (300 * 1000) //!< Interval for auto-saving permanent global variables to the database in milliseconds. +#endif /** MAPREG_AUTOSAVE_INTERVAL **/ + +/** Global variable structure. **/ struct mapreg_save { - int64 uid; ///< Unique ID - union { - int i; ///< Numeric value - char *str; ///< String value + int64 uid; //!< The variable's unique ID. + union value { //!< The variable's value container. + int i; //!< The variable's integer value. + char *str; //!< The variable's string value. } u; - bool is_string; ///< true if it's a string, false if it's a number - bool save; ///< Whether a save operation is pending + bool is_string; //!< Whether the variable's value is a string. + bool save; //!< Whether the variable's save operation is pending. }; +/** The mapreg interface structure. **/ struct mapreg_interface { - struct reg_db regs; - /* */ - bool skip_insert; - /* */ - struct eri *ers; //[Ind/Hercules] - /* */ - char table[32]; - /* */ - bool dirty; ///< Whether there are modified regs to be saved - /* */ - void (*init) (void); - void (*final) (void); - /* */ + /** Interface variables. **/ + struct eri *ers; //!< Entry manager for global variables. + struct reg_db regs; //!< Generic database for global variables. + bool dirty; //!< Whether there are modified global variables to be saved. + bool skip_insert; //!< Whether to skip inserting the variable into the SQL database in mapreg_set_*_db(). + char num_db[32]; //!< Name of SQL table which holds permanent global integer variables. + char str_db[32]; //!< Name of SQL table which holds permanent global string variables. + + /** Interface functions. **/ int (*readreg) (int64 uid); - char* (*readregstr) (int64 uid); + char *(*readregstr) (int64 uid); + bool (*set_num_db) (int64 uid, const char *name, unsigned int index, int value); + bool (*delete_num_db) (int64 uid, const char *name, unsigned int index); bool (*setreg) (int64 uid, int val); + bool (*set_str_db) (int64 uid, const char *name, unsigned int index, const char *value); + bool (*delete_str_db) (int64 uid, const char *name, unsigned int index); bool (*setregstr) (int64 uid, const char *str); + void (*load_num_db) (void); + void (*load_str_db) (void); void (*load) (void); + void (*save_num_db) (const char *name, unsigned int index, int value); + void (*save_str_db) (const char *name, unsigned int index, const char *value); void (*save) (void); int (*save_timer) (int tid, int64 tick, int id, intptr_t data); int (*destroyreg) (union DBKey key, struct DBData *data, va_list ap); void (*reload) (void); - bool (*config_read) (const char *filename, const struct config_setting_t *config, bool imported); + bool (*config_read_registry) (const char *filename, const struct config_setting_t *config, bool imported); + void (*final) (void); + void (*init) (void); }; #ifdef HERCULES_CORE void mapreg_defaults(void); -#endif // HERCULES_CORE +#endif /** HERCULES_CORE **/ HPShared struct mapreg_interface *mapreg; -#endif /* MAP_MAPREG_H */ +#endif /** MAP_MAPREG_H **/ diff --git a/src/map/mapreg_sql.c b/src/map/mapreg_sql.c index 741505e17..16d8b0ff6 100644 --- a/src/map/mapreg_sql.c +++ b/src/map/mapreg_sql.c @@ -22,7 +22,7 @@ #include "mapreg.h" -#include "map/map.h" // map-"mysql_handle +#include "map/map.h" #include "map/script.h" #include "common/cbasetypes.h" #include "common/conf.h" @@ -38,289 +38,596 @@ #include <stdlib.h> #include <string.h> -static struct mapreg_interface mapreg_s; -struct mapreg_interface *mapreg; - -#define MAPREG_AUTOSAVE_INTERVAL (300*1000) +static struct mapreg_interface mapreg_s; //!< Private interface structure. +struct mapreg_interface *mapreg; //!< Public interface structure. /** - * Looks up the value of an integer variable using its uid. + * Looks up the value of a global integer variable using its unique ID. * - * @param uid variable's unique identifier. - * @return variable's integer value - */ -static int mapreg_readreg(int64 uid) + * @param uid The variable's unique ID. + * @return The variable's value or 0 if the variable does not exist. + * + **/ +static int mapreg_get_num_reg(int64 uid) { - struct mapreg_save *m = i64db_get(mapreg->regs.vars, uid); - return m?m->u.i:0; + struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid); + return (var != NULL) ? var->u.i : 0; } /** - * Looks up the value of a string variable using its uid. + * Looks up the value of a global string variable using its unique ID. * - * @param uid variable's unique identifier - * @return variable's string value - */ -static char *mapreg_readregstr(int64 uid) + * @param uid The variable's unique ID. + * @return The variable's value or NULL if the variable does not exist. + * + **/ +static char *mapreg_get_str_reg(int64 uid) { - struct mapreg_save *m = i64db_get(mapreg->regs.vars, uid); - return m?m->u.str:NULL; + struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid); + return (var != NULL) ? var->u.str : NULL; } /** - * Modifies the value of an integer variable. + * Sets the value of a global integer variable. * - * @param uid variable's unique identifier - * @param val new value - * @retval true value was successfully set - */ -static bool mapreg_setreg(int64 uid, int val) + * @param uid The variable's unique ID. + * @param name The variable's name. + * @param index The variable's array index. + * @param value The variable's new value. + * @return True on success, otherwise false. + * + **/ +static bool mapreg_set_num_db(int64 uid, const char *name, unsigned int index, int value) { - struct mapreg_save *m; - int num = script_getvarid(uid); - unsigned int i = script_getvaridx(uid); - const char* name = script->get_str(num); - - nullpo_retr(true, name); - if( val != 0 ) { - if( (m = i64db_get(mapreg->regs.vars, uid)) ) { - m->u.i = val; - if(name[1] != '@') { - m->save = true; - mapreg->dirty = true; - } - } else { - if( i ) - script->array_update(&mapreg->regs, uid, false); - - m = ers_alloc(mapreg->ers, struct mapreg_save); - - m->u.i = val; - m->uid = uid; - m->save = false; - m->is_string = false; - - if (name[1] != '@' && !mapreg->skip_insert) {// write new variable to database - char tmp_str[(SCRIPT_VARNAME_LENGTH+1)*2+1]; - SQL->EscapeStringLen(map->mysql_handle, tmp_str, name, strnlen(name, SCRIPT_VARNAME_LENGTH+1)); - if( SQL_ERROR == SQL->Query(map->mysql_handle, "INSERT INTO `%s`(`varname`,`index`,`value`) VALUES ('%s','%u','%d')", mapreg->table, tmp_str, i, val) ) - Sql_ShowDebug(map->mysql_handle); - } - i64db_put(mapreg->regs.vars, uid, m); + nullpo_retr(false, name); + Assert_retr(false, *name != '\0'); + Assert_retr(false, strlen(name) <= SCRIPT_VARNAME_LENGTH); + + if (value == 0) + return mapreg->delete_num_db(uid, name, index); + + struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid); + + // Update variable. + if (var != NULL) { + var->u.i = value; + + if (script->is_permanent_variable(name)) { + var->save = true; + mapreg->dirty = true; } - } else { // val == 0 - if( i ) - script->array_update(&mapreg->regs, uid, true); - if( (m = i64db_get(mapreg->regs.vars, uid)) ) { - ers_free(mapreg->ers, m); + + return true; + } + + // Add new variable. + if (index != 0) + script->array_update(&mapreg->regs, uid, false); + + var = ers_alloc(mapreg->ers, struct mapreg_save); + var->u.i = value; + var->uid = uid; + var->save = false; + var->is_string = false; + i64db_put(mapreg->regs.vars, uid, var); + + if (script->is_permanent_variable(name) && !mapreg->skip_insert) { + struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle); + + if (stmt == NULL) { + SqlStmt_ShowDebug(stmt); + return false; } - i64db_remove(mapreg->regs.vars, uid); - if( name[1] != '@' ) {// Remove from database because it is unused. - if( SQL_ERROR == SQL->Query(map->mysql_handle, "DELETE FROM `%s` WHERE `varname`='%s' AND `index`='%u'", mapreg->table, name, i) ) - Sql_ShowDebug(map->mysql_handle); + const char *query = "INSERT INTO `%s` (`key`, `index`, `value`) VALUES (?, ?, ?)"; + + if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->num_db) + || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_STRING, name, strlen(name)) + || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_UINT32, &index, sizeof(index)) + || SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_INT32, &value, sizeof(value)) + || SQL_ERROR == SQL->StmtExecute(stmt)) { + SqlStmt_ShowDebug(stmt); + SQL->StmtFree(stmt); + return false; } + + SQL->StmtFree(stmt); } return true; } /** - * Modifies the value of a string variable. + * Deletes a global integer variable. * - * @param uid variable's unique identifier - * @param str new value - * @retval true value was successfully set - */ -static bool mapreg_setregstr(int64 uid, const char *str) + * @param uid The variable's unique ID. + * @param name The variable's name. + * @param index The variable's array index. + * @return True on success, otherwise false. + * + **/ +static bool mapreg_delete_num_db(int64 uid, const char *name, unsigned int index) { - struct mapreg_save *m; - int num = script_getvarid(uid); - unsigned int i = script_getvaridx(uid); - const char* name = script->get_str(num); - - nullpo_retr(true, name); - - if( str == NULL || *str == 0 ) { - if( i ) - script->array_update(&mapreg->regs, uid, true); - if(name[1] != '@') { - if (SQL_ERROR == SQL->Query(map->mysql_handle, "DELETE FROM `%s` WHERE `varname`='%s' AND `index`='%u'", mapreg->table, name, i)) - Sql_ShowDebug(map->mysql_handle); + nullpo_retr(false, name); + Assert_retr(false, *name != '\0'); + Assert_retr(false, strlen(name) <= SCRIPT_VARNAME_LENGTH); + + struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid); + + if (var != NULL) + ers_free(mapreg->ers, var); + + if (index != 0) + script->array_update(&mapreg->regs, uid, true); + + i64db_remove(mapreg->regs.vars, uid); + + if (script->is_permanent_variable(name)) { + struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle); + + if (stmt == NULL) { + SqlStmt_ShowDebug(stmt); + return false; } - if( (m = i64db_get(mapreg->regs.vars, uid)) ) { - if( m->u.str != NULL ) - aFree(m->u.str); - ers_free(mapreg->ers, m); + + const char *query = "DELETE FROM `%s` WHERE `key`=? AND `index`=?"; + + if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->num_db) + || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_STRING, name, strlen(name)) + || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_UINT32, &index, sizeof(index)) + || SQL_ERROR == SQL->StmtExecute(stmt)) { + SqlStmt_ShowDebug(stmt); + SQL->StmtFree(stmt); + return false; } - i64db_remove(mapreg->regs.vars, uid); - } else { - if( (m = i64db_get(mapreg->regs.vars, uid)) ) { - if( m->u.str != NULL ) - aFree(m->u.str); - m->u.str = aStrdup(str); - if(name[1] != '@') { - mapreg->dirty = true; - m->save = true; - } - } else { - if( i ) - script->array_update(&mapreg->regs, uid, false); - - m = ers_alloc(mapreg->ers, struct mapreg_save); - - m->uid = uid; - m->u.str = aStrdup(str); - m->save = false; - m->is_string = true; - - if(name[1] != '@' && !mapreg->skip_insert) { //put returned null, so we must insert. - char tmp_str[(SCRIPT_VARNAME_LENGTH+1)*2+1]; - char tmp_str2[255*2+1]; - SQL->EscapeStringLen(map->mysql_handle, tmp_str, name, strnlen(name, SCRIPT_VARNAME_LENGTH+1)); - SQL->EscapeStringLen(map->mysql_handle, tmp_str2, str, strnlen(str, 255)); - if( SQL_ERROR == SQL->Query(map->mysql_handle, "INSERT INTO `%s`(`varname`,`index`,`value`) VALUES ('%s','%u','%s')", mapreg->table, tmp_str, i, tmp_str2) ) - Sql_ShowDebug(map->mysql_handle); - } - i64db_put(mapreg->regs.vars, uid, m); + + SQL->StmtFree(stmt); + } + + return true; +} + +/** + * Sets the value of a global integer variable or deletes it if passed value is 0. + * + * @param uid The variable's unique ID. + * @param val The variable's new value. + * @return True on success, otherwise false. + * + **/ +static bool mapreg_set_num(int64 uid, int val) +{ + unsigned int index = script_getvaridx(uid); + const char *name = script->get_str(script_getvarid(uid)); + + if (val != 0) + return mapreg->set_num_db(uid, name, index, val); + else + return mapreg->delete_num_db(uid, name, index); +} + +/** + * Sets the value of a global string variable. + * + * @param uid The variable's unique ID. + * @param name The variable's name. + * @param index The variable's array index. + * @param value The variable's new value. + * @return True on success, otherwise false. + * + **/ +static bool mapreg_set_str_db(int64 uid, const char *name, unsigned int index, const char *value) +{ + nullpo_retr(false, name); + Assert_retr(false, *name != '\0'); + Assert_retr(false, strlen(name) <= SCRIPT_VARNAME_LENGTH); + + if (value == NULL || *value == '\0') + return mapreg->delete_str_db(uid, name, index); + + if (script->is_permanent_variable(name)) + Assert_retr(false, strlen(value) <= SCRIPT_STRING_VAR_LENGTH); + + struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid); + + // Update variable. + if (var != NULL) { + if (var->u.str != NULL) + aFree(var->u.str); + + var->u.str = aStrdup(value); + + if (script->is_permanent_variable(name)) { + var->save = true; + mapreg->dirty = true; } + + return true; + } + + // Add new variable. + if (index != 0) + script->array_update(&mapreg->regs, uid, false); + + var = ers_alloc(mapreg->ers, struct mapreg_save); + var->u.str = aStrdup(value); + var->uid = uid; + var->save = false; + var->is_string = true; + i64db_put(mapreg->regs.vars, uid, var); + + if (script->is_permanent_variable(name) && !mapreg->skip_insert) { + struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle); + + if (stmt == NULL) { + SqlStmt_ShowDebug(stmt); + return false; + } + + const char *query = "INSERT INTO `%s` (`key`, `index`, `value`) VALUES (?, ?, ?)"; + + if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->str_db) + || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_STRING, name, strlen(name)) + || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_UINT32, &index, sizeof(index)) + || SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_STRING, value, strlen(value)) + || SQL_ERROR == SQL->StmtExecute(stmt)) { + SqlStmt_ShowDebug(stmt); + SQL->StmtFree(stmt); + return false; + } + + SQL->StmtFree(stmt); } return true; } /** - * Loads permanent variables from database. - */ -static void script_load_mapreg(void) + * Deletes a global string variable. + * + * @param uid The variable's unique ID. + * @param name The variable's name. + * @param index The variable's array index. + * @return True on success, otherwise false. + * + **/ +static bool mapreg_delete_str_db(int64 uid, const char *name, unsigned int index) +{ + nullpo_retr(false, name); + Assert_retr(false, *name != '\0'); + Assert_retr(false, strlen(name) <= SCRIPT_VARNAME_LENGTH); + + struct mapreg_save *var = i64db_get(mapreg->regs.vars, uid); + + if (var != NULL) { + if (var->u.str != NULL) + aFree(var->u.str); + + ers_free(mapreg->ers, var); + } + + if (index != 0) + script->array_update(&mapreg->regs, uid, true); + + i64db_remove(mapreg->regs.vars, uid); + + if (script->is_permanent_variable(name)) { + struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle); + + if (stmt == NULL) { + SqlStmt_ShowDebug(stmt); + return false; + } + + const char *query = "DELETE FROM `%s` WHERE `key`=? AND `index`=?"; + + if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->str_db) + || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_STRING, name, strlen(name)) + || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_UINT32, &index, sizeof(index)) + || SQL_ERROR == SQL->StmtExecute(stmt)) { + SqlStmt_ShowDebug(stmt); + SQL->StmtFree(stmt); + return false; + } + + SQL->StmtFree(stmt); + } + + return true; +} + +/** + * Sets the value of a global string variable or deletes it if passed value is NULL or an empty string. + * + * @param uid The variable's unique ID. + * @param str The variable's new value. + * @return True on success, otherwise false. + * + **/ +static bool mapreg_set_str(int64 uid, const char *str) +{ + unsigned int index = script_getvaridx(uid); + const char *name = script->get_str(script_getvarid(uid)); + + if (str != NULL && *str != '\0') + return mapreg->set_str_db(uid, name, index, str); + else + return mapreg->delete_str_db(uid, name, index); +} + +/** + * Loads permanent global interger variables from the database. + * + **/ +static void mapreg_load_num_db(void) { - /* - 0 1 2 - +-------------------------+ - | varname | index | value | - +-------------------------+ - */ struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle); - char varname[SCRIPT_VARNAME_LENGTH+1]; - int index; - char value[255+1]; - uint32 length; - - if ( SQL_ERROR == SQL->StmtPrepare(stmt, "SELECT `varname`, `index`, `value` FROM `%s`", mapreg->table) - || SQL_ERROR == SQL->StmtExecute(stmt) - ) { + + if (stmt == NULL) { SqlStmt_ShowDebug(stmt); - SQL->StmtFree(stmt); return; } - mapreg->skip_insert = true; + const char *query = "SELECT `key`, `index`, `value` FROM `%s`"; + char name[SCRIPT_VARNAME_LENGTH + 1]; + unsigned int index; + int value; - SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &varname, sizeof varname, &length, NULL); - SQL->StmtBindColumn(stmt, 1, SQLDT_INT, &index, sizeof index, NULL, NULL); - SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &value, sizeof value, NULL, NULL); + if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->num_db) + || SQL_ERROR == SQL->StmtExecute(stmt) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &name, sizeof(name), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UINT32, &index, sizeof(index), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_INT32, &value, sizeof(value), NULL, NULL)) { + SqlStmt_ShowDebug(stmt); + SQL->StmtFree(stmt); + return; + } - while ( SQL_SUCCESS == SQL->StmtNextRow(stmt) ) { - int s = script->add_variable(varname); - int i = index; + if (SQL->StmtNumRows(stmt) < 1) { + SQL->StmtFree(stmt); + return; + } + mapreg->skip_insert = true; + + while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) { + int var_key = script->add_variable(name); + int64 uid = reference_uid(var_key, index); - if( i64db_exists(mapreg->regs.vars, reference_uid(s, i)) ) { - ShowWarning("load_mapreg: duplicate! '%s' => '%s' skipping...\n",varname,value); + if (i64db_exists(mapreg->regs.vars, uid)) { + ShowWarning("mapreg_load_num_db: Duplicate! '%s' => '%d' Skipping...\n", name, value); continue; } - if( varname[length-1] == '$' ) { - mapreg->setregstr(reference_uid(s, i),value); - } else { - mapreg->setreg(reference_uid(s, i),atoi(value)); - } + + mapreg->setreg(uid, value); } + mapreg->skip_insert = false; SQL->StmtFree(stmt); +} + +/** + * Loads permanent global string variables from the database. + * + **/ +static void mapreg_load_str_db(void) +{ + struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle); + + if (stmt == NULL) { + SqlStmt_ShowDebug(stmt); + return; + } + + const char *query = "SELECT `key`, `index`, `value` FROM `%s`"; + char name[SCRIPT_VARNAME_LENGTH + 1]; + unsigned int index; + char value[SCRIPT_STRING_VAR_LENGTH + 1]; + + if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->str_db) + || SQL_ERROR == SQL->StmtExecute(stmt) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 0, SQLDT_STRING, &name, sizeof(name), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 1, SQLDT_UINT32, &index, sizeof(index), NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 2, SQLDT_STRING, &value, sizeof(value), NULL, NULL)) { + SqlStmt_ShowDebug(stmt); + SQL->StmtFree(stmt); + return; + } + + if (SQL->StmtNumRows(stmt) < 1) { + SQL->StmtFree(stmt); + return; + } + + mapreg->skip_insert = true; + + while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) { + int var_key = script->add_variable(name); + int64 uid = reference_uid(var_key, index); + + if (i64db_exists(mapreg->regs.vars, uid)) { + ShowWarning("mapreg_load_str_db: Duplicate! '%s' => '%s' Skipping...\n", name, value); + continue; + } + + mapreg->setregstr(uid, value); + } mapreg->skip_insert = false; + SQL->StmtFree(stmt); +} +/** + * Loads permanent global variables from the database. + * + **/ +static void mapreg_load(void) +{ + mapreg->load_num_db(); + mapreg->load_str_db(); mapreg->dirty = false; } /** - * Saves permanent variables to database. - */ -static void script_save_mapreg(void) + * Saves a permanent global integer variable to the database. + * + * @param name The variable's name. + * @param index The variable's array index. + * @param value The variable's value. + * + **/ +static void mapreg_save_num_db(const char *name, unsigned int index, int value) +{ + nullpo_retv(name); + Assert_retv(*name != '\0'); + Assert_retv(strlen(name) <= SCRIPT_VARNAME_LENGTH); + + struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle); + + if (stmt == NULL) { + SqlStmt_ShowDebug(stmt); + return; + } + + const char *query = "UPDATE `%s` SET `value`=? WHERE `key`=? AND `index`=? LIMIT 1"; + + if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->num_db) + || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_INT32, &value, sizeof(value)) + || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_STRING, name, strlen(name)) + || SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_UINT32, &index, sizeof(index)) + || SQL_ERROR == SQL->StmtExecute(stmt)) { + SqlStmt_ShowDebug(stmt); + } + + SQL->StmtFree(stmt); +} + +/** + * Saves a permanent global string variable to the database. + * + * @param name The variable's name. + * @param index The variable's array index. + * @param value The variable's value. + * + **/ +static void mapreg_save_str_db(const char *name, unsigned int index, const char *value) +{ + nullpo_retv(name); + nullpo_retv(value); + Assert_retv(*name != '\0'); + Assert_retv(strlen(name) <= SCRIPT_VARNAME_LENGTH); + Assert_retv(*value != '\0'); + Assert_retv(strlen(value) <= SCRIPT_STRING_VAR_LENGTH); + + struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle); + + if (stmt == NULL) { + SqlStmt_ShowDebug(stmt); + return; + } + + const char *query = "UPDATE `%s` SET `value`=? WHERE `key`=? AND `index`=? LIMIT 1"; + + if (SQL_ERROR == SQL->StmtPrepare(stmt, query, mapreg->str_db) + || SQL_ERROR == SQL->StmtBindParam(stmt, 0, SQLDT_STRING, value, strlen(value)) + || SQL_ERROR == SQL->StmtBindParam(stmt, 1, SQLDT_STRING, name, strlen(name)) + || SQL_ERROR == SQL->StmtBindParam(stmt, 2, SQLDT_UINT32, &index, sizeof(index)) + || SQL_ERROR == SQL->StmtExecute(stmt)) { + SqlStmt_ShowDebug(stmt); + } + + SQL->StmtFree(stmt); +} + +/** + * Saves permanent global variables to the database. + * + **/ +static void mapreg_save(void) { if (mapreg->dirty) { struct DBIterator *iter = db_iterator(mapreg->regs.vars); - struct mapreg_save *m = NULL; - for (m = dbi_first(iter); dbi_exists(iter); m = dbi_next(iter)) { - if (m->save) { - int num = script_getvarid(m->uid); - int i = script_getvaridx(m->uid); - const char* name = script->get_str(num); - nullpo_retv(name); - if (!m->is_string) { - if( SQL_ERROR == SQL->Query(map->mysql_handle, "UPDATE `%s` SET `value`='%d' WHERE `varname`='%s' AND `index`='%d' LIMIT 1", mapreg->table, m->u.i, name, i) ) - Sql_ShowDebug(map->mysql_handle); - } else { - char tmp_str2[2*255+1]; - SQL->EscapeStringLen(map->mysql_handle, tmp_str2, m->u.str, safestrnlen(m->u.str, 255)); - if( SQL_ERROR == SQL->Query(map->mysql_handle, "UPDATE `%s` SET `value`='%s' WHERE `varname`='%s' AND `index`='%d' LIMIT 1", mapreg->table, tmp_str2, name, i) ) - Sql_ShowDebug(map->mysql_handle); - } - m->save = false; + struct mapreg_save *var = NULL; + + for (var = dbi_first(iter); dbi_exists(iter); var = dbi_next(iter)) { + if (var->save) { + int index = script_getvaridx(var->uid); + const char *name = script->get_str(script_getvarid(var->uid)); + + if (!var->is_string) + mapreg->save_num_db(name, index, var->u.i); + else + mapreg->save_str_db(name, index, var->u.str); + + var->save = false; } } + dbi_destroy(iter); mapreg->dirty = false; } } /** - * Timer event to auto-save permanent variables. + * Timer event to auto-save permanent global variables. * - * @see timer->do_timer - */ -static int script_autosave_mapreg(int tid, int64 tick, int id, intptr_t data) + * @see timer->do_timer() + * + * @param tid Unused. + * @param tick Unused. + * @param id Unused. + * @param data Unused. + * @return Always 0. + * + **/ +static int mapreg_save_timer(int tid, int64 tick, int id, intptr_t data) { mapreg->save(); return 0; } /** - * Destroys a mapreg_save structure, freeing the contained string, if any. + * Destroys a mapreg_save structure and frees the contained string, if any. * * @see DBApply - */ -static int mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap) + * + * @param key Unused. + * @param data The DB data holding the mapreg_save data. + * @param ap Unused. + * @return 0 on success, otherwise 1. + * + **/ +static int mapreg_destroy_reg(union DBKey key, struct DBData *data, va_list ap) { - struct mapreg_save *m = NULL; + nullpo_retr(1, data); if (data->type != DB_DATA_PTR) // Sanity check - return 0; + return 1; - m = DB->data2ptr(data); + struct mapreg_save *var = DB->data2ptr(data); - if (m->is_string) { - if (m->u.str) - aFree(m->u.str); - } - ers_free(mapreg->ers, m); + if (var == NULL) + return 1; + + if (var->is_string && var->u.str != NULL) + aFree(var->u.str); + ers_free(mapreg->ers, var); return 0; } /** - * Reloads mapregs, saving to database beforehand. + * Reloads permanent global variables, saving them to the database beforehand. * - * This has the effect of clearing the temporary variables, and - * reloading the permanent ones. - */ + * This has the effect of clearing the temporary global variables and reloading the permanent ones. + * + **/ static void mapreg_reload(void) { mapreg->save(); - mapreg->regs.vars->clear(mapreg->regs.vars, mapreg->destroyreg); - if( mapreg->regs.arrays ) { + if (mapreg->regs.arrays != NULL) { mapreg->regs.arrays->destroy(mapreg->regs.arrays, script->array_free_db); mapreg->regs.arrays = NULL; } @@ -329,86 +636,105 @@ static void mapreg_reload(void) } /** - * Finalizer. - */ + * Loads the mapreg database table names from configuration file. + * + * @param filename Path to configuration file. (Used in error and warning messages). + * @param config The current config being parsed. + * @param imported Whether the current config is imported from another file. + * @return True on success, otherwise false. + * + **/ +static bool mapreg_config_read_registry(const char *filename, const struct config_setting_t *config, bool imported) +{ + nullpo_retr(false, filename); + nullpo_retr(false, config); + + bool ret_val = true; + size_t sz = sizeof(mapreg->num_db); + int result = libconfig->setting_lookup_mutable_string(config, "map_reg_num_db", mapreg->num_db, sz); + + if (result != CONFIG_TRUE && !imported) { + ShowError("%s: inter_configuration/database_names/registry/map_reg_num_db was not found in %s!\n", + __func__, filename); + ret_val = false; + } + + sz = sizeof(mapreg->str_db); + result = libconfig->setting_lookup_mutable_string(config, "map_reg_str_db", mapreg->str_db, sz); + + if (result != CONFIG_TRUE && !imported) { + ShowError("%s: inter_configuration/database_names/registry/map_reg_str_db was not found in %s!\n", + __func__, filename); + ret_val = false; + } + + return ret_val; +} + +/** + * Saves permanent global variables to the database and frees all the memory they use afterwards. + * + **/ static void mapreg_final(void) { mapreg->save(); - mapreg->regs.vars->destroy(mapreg->regs.vars, mapreg->destroyreg); - ers_destroy(mapreg->ers); - if( mapreg->regs.arrays ) + if (mapreg->regs.arrays != NULL) mapreg->regs.arrays->destroy(mapreg->regs.arrays, script->array_free_db); } /** - * Initializer. - */ + * Allocates memory for permanent global variables, loads them from the database and initializes the auto-save timer. + * + **/ static void mapreg_init(void) { mapreg->regs.vars = i64db_alloc(DB_OPT_BASE); mapreg->ers = ers_new(sizeof(struct mapreg_save), "mapreg_sql.c::mapreg_ers", ERS_OPT_CLEAN); - mapreg->load(); - - timer->add_func_list(mapreg->save_timer, "mapreg_script_autosave_mapreg"); + timer->add_func_list(mapreg->save_timer, "mapreg_save_timer"); timer->add_interval(timer->gettick() + MAPREG_AUTOSAVE_INTERVAL, mapreg->save_timer, 0, 0, MAPREG_AUTOSAVE_INTERVAL); } /** - * Loads the mapreg configuration file. - * - * @param filename Path to configuration file (used in error and warning messages). - * @param config The current config being parsed. - * @param imported Whether the current config is imported from another file. + * Initializes the mapreg interface defaults. * - * @retval false in case of error. - */ -static bool mapreg_config_read(const char *filename, const struct config_setting_t *config, bool imported) -{ - nullpo_retr(false, filename); - nullpo_retr(false, config); - - if (libconfig->setting_lookup_mutable_string(config, "mapreg_db", mapreg->table, sizeof(mapreg->table)) != CONFIG_TRUE) - return false; - - return true; -} - -/** - * Interface defaults initializer. - */ + **/ void mapreg_defaults(void) { + /** Interface structure. **/ mapreg = &mapreg_s; - /* */ - mapreg->regs.vars = NULL; + /** Interface variables. **/ mapreg->ers = NULL; - mapreg->skip_insert = false; - - safestrncpy(mapreg->table, "mapreg", sizeof(mapreg->table)); - mapreg->dirty = false; - - /* */ + mapreg->regs.vars = NULL; mapreg->regs.arrays = NULL; - - /* */ - mapreg->init = mapreg_init; - mapreg->final = mapreg_final; - - /* */ - mapreg->readreg = mapreg_readreg; - mapreg->readregstr = mapreg_readregstr; - mapreg->setreg = mapreg_setreg; - mapreg->setregstr = mapreg_setregstr; - mapreg->load = script_load_mapreg; - mapreg->save = script_save_mapreg; - mapreg->save_timer = script_autosave_mapreg; - mapreg->destroyreg = mapreg_destroyreg; + mapreg->dirty = false; + mapreg->skip_insert = false; + safestrncpy(mapreg->num_db, "map_reg_num_db", sizeof(mapreg->num_db)); + safestrncpy(mapreg->str_db, "map_reg_str_db", sizeof(mapreg->str_db)); + + /** Interface functions. **/ + mapreg->readreg = mapreg_get_num_reg; + mapreg->readregstr = mapreg_get_str_reg; + mapreg->set_num_db = mapreg_set_num_db; + mapreg->delete_num_db = mapreg_delete_num_db; + mapreg->setreg = mapreg_set_num; + mapreg->set_str_db = mapreg_set_str_db; + mapreg->delete_str_db = mapreg_delete_str_db; + mapreg->setregstr = mapreg_set_str; + mapreg->load_num_db = mapreg_load_num_db; + mapreg->load_str_db = mapreg_load_str_db; + mapreg->load = mapreg_load; + mapreg->save_num_db = mapreg_save_num_db; + mapreg->save_str_db = mapreg_save_str_db; + mapreg->save = mapreg_save; + mapreg->save_timer = mapreg_save_timer; + mapreg->destroyreg = mapreg_destroy_reg; mapreg->reload = mapreg_reload; - mapreg->config_read = mapreg_config_read; - + mapreg->config_read_registry = mapreg_config_read_registry; + mapreg->final = mapreg_final; + mapreg->init = mapreg_init; } diff --git a/src/map/messages_main.h b/src/map/messages_main.h index 6fc0310e7..7dc0ff2b6 100644 --- a/src/map/messages_main.h +++ b/src/map/messages_main.h @@ -2,8 +2,8 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2020 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2013-2020 Hercules Dev Team + * Copyright (C) 2018-2020 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20200129 +Latest version: 20200701 */ enum clif_messages { @@ -13866,12 +13866,14 @@ Ghost %d Shadow %d */ MSG_NAVIGATION_PROPERTY8 = 0x8de, -/*20120417 to latest +/*20120417 to 20200506 언데드%d Undead %d 20130807 to 20130814 염속성%d Ghost %d +20200520 to latest +불사%d */ MSG_NAVIGATION_PROPERTY9 = 0x8df, /*20120417 to latest @@ -22521,6 +22523,139 @@ Search */ MSG_ID_ECE = 0xece, #endif +#if PACKETVER >= 20200212 +/*20200212 to latest +합주를 혼자 사용할 수 있습니다. +*/ + MSG_ID_ECF = 0xecf, +/*20200212 to latest +크바시르의 지혜가 사라집니다. +*/ + MSG_ID_ED0 = 0xed0, +/*20200212 to latest +미스틱 심포니의 효과가 부여됩니다. +*/ + MSG_ID_ED1 = 0xed1, +/*20200212 to latest +미스틱 심포니의 효과가 사라집니다. +*/ + MSG_ID_ED2 = 0xed2, +/*20200212 to latest +마법 저항력이 감소했습니다. +*/ + MSG_ID_ED3 = 0xed3, +/*20200212 to latest +게페니아 녹턴의 효과가 해제 되었습니다. +*/ + MSG_ID_ED4 = 0xed4, +/*20200212 to latest +물리 저항력이 감소했습니다. +*/ + MSG_ID_ED5 = 0xed5, +/*20200212 to latest +마인워커 랩소디 상태가 해제되었습니다. +*/ + MSG_ID_ED6 = 0xed6, +/*20200212 to latest +물리 저항력이 증가했습니다. +*/ + MSG_ID_ED7 = 0xed7, +/*20200212 to latest +뮤지컬 인터루드 상태가 해제되었습니다. +*/ + MSG_ID_ED8 = 0xed8, +/*20200212 to latest +특성 마법 공격력과 이동 속도가 증가합니다. +*/ + MSG_ID_ED9 = 0xed9, +/*20200212 to latest +저녁 노을의 세레나데 효과가 해제되었습니다. +*/ + MSG_ID_EDA = 0xeda, +/*20200212 to latest +특성 물리 공격력과 이동 속도가 증가합니다. +*/ + MSG_ID_EDB = 0xedb, +/*20200212 to latest + 프론테라의 행진곡 효과가 해제되었습니다. +*/ + MSG_ID_EDC = 0xedc, +/*20200212 to latest +바람의 분노가 시전자에게 흘러 들어옵니다. +*/ + MSG_ID_EDD = 0xedd, +/*20200212 to latest +캘러미티 가일 상태가 해제되었습니다. +*/ + MSG_ID_EDE = 0xede, +/*20200212 to latest +바람에 의해 약점과 모습이 드러납니다. +*/ + MSG_ID_EDF = 0xedf, +/*20200212 to latest +윈드 사인 효과가 사라집니다. +*/ + MSG_ID_EE0 = 0xee0, +#endif +#if PACKETVER >= 20200304 +/*20200304 to latest +E X P : %.1f%% ( basic 100.0%% %s %.1f%%) +EXP: %.1f%% (basic: 100.0%%, %s: %.1f%%) +*/ + MSG_ID_EE1 = 0xee1, +/*20200304 to latest +DROP : %.1f%% ( basic 100.0%% %s %.1f%%) +DROP: %.1f%% (basic: 100.0%%, %s: %.1f%%) +*/ + MSG_ID_EE2 = 0xee2, +/*20200304 to latest +DEATH : %.1f%% ( basic 100.0%% %s %.1f%%) +DEATH: %.1f%% (basic: 100.0%%, %s: %.1f%%) +*/ + MSG_ID_EE3 = 0xee3, +#endif +#if PACKETVER >= 20200506 +/*20200506 to latest +특성 마법 공격력이 증가되었습니다. +*/ + MSG_ID_EE4 = 0xee4, +/*20200506 to latest +스펠 인챈팅 효과가 해제되었습니다. +*/ + MSG_ID_EE5 = 0xee5, +/*20200506 to latest +프롬 디 어비스 효과가 해제되었습니다. +*/ + MSG_ID_EE6 = 0xee6, +/*20200506 to latest +특성 물리 공격력, 특성 마법 공격력 및 명중률이 증가되었습니다. +*/ + MSG_ID_EE7 = 0xee7, +/*20200506 to latest +어비스 슬레이어 효과가 해제되었습니다. +*/ + MSG_ID_EE8 = 0xee8, +#endif +#if PACKETVER >= 20200617 +/*20200617 to latest +캐릭터 생성에 제한이 있을 수 있습니다. +*/ + MSG_ID_EE9 = 0xee9, +/*20200617 to latest +월드가 포화상태입니다. 다른 월드를 이용해 주세요. +*/ + MSG_ID_EEA = 0xeea, +#endif +#if PACKETVER >= 20200701 +/*20200701 to latest +채팅차단해제(수신거부해제) +*/ + MSG_ID_EEB = 0xeeb, +/*20200701 to latest +채팅차단(수신거부) +*/ + MSG_ID_EEC = 0xeec, +#endif }; #endif /* MAP_MESSAGES_MAIN_H */ diff --git a/src/map/messages_re.h b/src/map/messages_re.h index f4cc62d68..aa05a2e56 100644 --- a/src/map/messages_re.h +++ b/src/map/messages_re.h @@ -2,8 +2,8 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2020 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2013-2020 Hercules Dev Team + * Copyright (C) 2018-2020 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20200205 +Latest version: 20200709 */ enum clif_messages { @@ -13342,12 +13342,14 @@ Ghost %d Shadow %d */ MSG_NAVIGATION_PROPERTY8 = 0x8de, -/*20120417 to latest +/*20120417 to 20200304 언데드%d Undead %d 20130807 to 20130814 염속성%d Ghost %d +20200709 to latest +불사%d */ MSG_NAVIGATION_PROPERTY9 = 0x8df, /*20120417 to latest @@ -21998,6 +22000,135 @@ Search */ MSG_ID_ECE = 0xece, #endif +#if PACKETVER >= 20200212 +/*20200212 to latest +합주를 혼자 사용할 수 있습니다. +*/ + MSG_ID_ECF = 0xecf, +/*20200212 to latest +크바시르의 지혜가 사라집니다. +*/ + MSG_ID_ED0 = 0xed0, +/*20200212 to latest +미스틱 심포니의 효과가 부여됩니다. +*/ + MSG_ID_ED1 = 0xed1, +/*20200212 to latest +미스틱 심포니의 효과가 사라집니다. +*/ + MSG_ID_ED2 = 0xed2, +/*20200212 to latest +마법 저항력이 감소했습니다. +*/ + MSG_ID_ED3 = 0xed3, +/*20200212 to latest +게페니아 녹턴의 효과가 해제 되었습니다. +*/ + MSG_ID_ED4 = 0xed4, +/*20200212 to latest +물리 저항력이 감소했습니다. +*/ + MSG_ID_ED5 = 0xed5, +/*20200212 to latest +마인워커 랩소디 상태가 해제되었습니다. +*/ + MSG_ID_ED6 = 0xed6, +/*20200212 to latest +물리 저항력이 증가했습니다. +*/ + MSG_ID_ED7 = 0xed7, +/*20200212 to latest +뮤지컬 인터루드 상태가 해제되었습니다. +*/ + MSG_ID_ED8 = 0xed8, +/*20200212 to latest +특성 마법 공격력과 이동 속도가 증가합니다. +*/ + MSG_ID_ED9 = 0xed9, +/*20200212 to latest +저녁 노을의 세레나데 효과가 해제되었습니다. +*/ + MSG_ID_EDA = 0xeda, +/*20200212 to latest +특성 물리 공격력과 이동 속도가 증가합니다. +*/ + MSG_ID_EDB = 0xedb, +/*20200212 to latest + 프론테라의 행진곡 효과가 해제되었습니다. +*/ + MSG_ID_EDC = 0xedc, +/*20200212 to latest +바람의 분노가 시전자에게 흘러 들어옵니다. +*/ + MSG_ID_EDD = 0xedd, +/*20200212 to latest +캘러미티 가일 상태가 해제되었습니다. +*/ + MSG_ID_EDE = 0xede, +/*20200212 to latest +바람에 의해 약점과 모습이 드러납니다. +*/ + MSG_ID_EDF = 0xedf, +/*20200212 to latest +윈드 사인 효과가 사라집니다. +*/ + MSG_ID_EE0 = 0xee0, +#endif +#if PACKETVER >= 20200304 +/*20200304 to latest +E X P : %.1f%% ( basic 100.0%% %s %.1f%%) +EXP: %.1f%% (basic: 100.0%%, %s: %.1f%%) +*/ + MSG_ID_EE1 = 0xee1, +/*20200304 to latest +DROP : %.1f%% ( basic 100.0%% %s %.1f%%) +DROP: %.1f%% (basic: 100.0%%, %s: %.1f%%) +*/ + MSG_ID_EE2 = 0xee2, +/*20200304 to latest +DEATH : %.1f%% ( basic 100.0%% %s %.1f%%) +DEATH: %.1f%% (basic: 100.0%%, %s: %.1f%%) +*/ + MSG_ID_EE3 = 0xee3, +#endif +#if PACKETVER >= 20200709 +/*20200709 to latest +특성 마법 공격력이 증가되었습니다. +*/ + MSG_ID_EE4 = 0xee4, +/*20200709 to latest +스펠 인챈팅 효과가 해제되었습니다. +*/ + MSG_ID_EE5 = 0xee5, +/*20200709 to latest +프롬 디 어비스 효과가 해제되었습니다. +*/ + MSG_ID_EE6 = 0xee6, +/*20200709 to latest +특성 물리 공격력, 특성 마법 공격력 및 명중률이 증가되었습니다. +*/ + MSG_ID_EE7 = 0xee7, +/*20200709 to latest +어비스 슬레이어 효과가 해제되었습니다. +*/ + MSG_ID_EE8 = 0xee8, +/*20200709 to latest +캐릭터 생성에 제한이 있을 수 있습니다. +*/ + MSG_ID_EE9 = 0xee9, +/*20200709 to latest +월드가 포화상태입니다. 다른 월드를 이용해 주세요. +*/ + MSG_ID_EEA = 0xeea, +/*20200709 to latest +채팅차단해제(수신거부해제) +*/ + MSG_ID_EEB = 0xeeb, +/*20200709 to latest +채팅차단(수신거부) +*/ + MSG_ID_EEC = 0xeec, +#endif }; #endif /* MAP_MESSAGES_RE_H */ diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h index 55c0329ee..7eca56cd9 100644 --- a/src/map/messages_zero.h +++ b/src/map/messages_zero.h @@ -2,8 +2,8 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2020 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2013-2020 Hercules Dev Team + * Copyright (C) 2018-2020 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20200129 +Latest version: 20200701 */ enum clif_messages { @@ -11263,9 +11263,11 @@ Shadow %d Ghost %d */ MSG_NAVIGATION_PROPERTY8 = 0x8de, -/*20171018 to latest +/*20171018 to 20200506 언데드%d Undead %d +20200520 to latest +불사%d */ MSG_NAVIGATION_PROPERTY9 = 0x8df, /*20171018 to latest @@ -18605,6 +18607,144 @@ Search */ MSG_ID_ECD = 0xecd, #endif +#if PACKETVER >= 20200212 +/*20200212 to latest +검색 +Search +*/ + MSG_ID_ECE = 0xece, +/*20200212 to latest +합주를 혼자 사용할 수 있습니다. +*/ + MSG_ID_ECF = 0xecf, +/*20200212 to latest +크바시르의 지혜가 사라집니다. +*/ + MSG_ID_ED0 = 0xed0, +/*20200212 to latest +미스틱 심포니의 효과가 부여됩니다. +*/ + MSG_ID_ED1 = 0xed1, +/*20200212 to latest +미스틱 심포니의 효과가 사라집니다. +*/ + MSG_ID_ED2 = 0xed2, +/*20200212 to latest +마법 저항력이 감소했습니다. +*/ + MSG_ID_ED3 = 0xed3, +/*20200212 to latest +게페니아 녹턴의 효과가 해제 되었습니다. +*/ + MSG_ID_ED4 = 0xed4, +/*20200212 to latest +물리 저항력이 감소했습니다. +*/ + MSG_ID_ED5 = 0xed5, +/*20200212 to latest +마인워커 랩소디 상태가 해제되었습니다. +*/ + MSG_ID_ED6 = 0xed6, +/*20200212 to latest +물리 저항력이 증가했습니다. +*/ + MSG_ID_ED7 = 0xed7, +/*20200212 to latest +뮤지컬 인터루드 상태가 해제되었습니다. +*/ + MSG_ID_ED8 = 0xed8, +/*20200212 to latest +특성 마법 공격력과 이동 속도가 증가합니다. +*/ + MSG_ID_ED9 = 0xed9, +/*20200212 to latest +저녁 노을의 세레나데 효과가 해제되었습니다. +*/ + MSG_ID_EDA = 0xeda, +/*20200212 to latest +특성 물리 공격력과 이동 속도가 증가합니다. +*/ + MSG_ID_EDB = 0xedb, +/*20200212 to latest + 프론테라의 행진곡 효과가 해제되었습니다. +*/ + MSG_ID_EDC = 0xedc, +/*20200212 to latest +바람의 분노가 시전자에게 흘러 들어옵니다. +*/ + MSG_ID_EDD = 0xedd, +/*20200212 to latest +캘러미티 가일 상태가 해제되었습니다. +*/ + MSG_ID_EDE = 0xede, +/*20200212 to latest +바람에 의해 약점과 모습이 드러납니다. +*/ + MSG_ID_EDF = 0xedf, +/*20200212 to latest +윈드 사인 효과가 사라집니다. +*/ + MSG_ID_EE0 = 0xee0, +#endif +#if PACKETVER >= 20200304 +/*20200304 to latest +E X P : %.1f%% ( basic 100.0%% %s %.1f%%) +EXP: %.1f%% (basic: 100.0%%, %s: %.1f%%) +*/ + MSG_ID_EE1 = 0xee1, +/*20200304 to latest +DROP : %.1f%% ( basic 100.0%% %s %.1f%%) +DROP: %.1f%% (basic: 100.0%%, %s: %.1f%%) +*/ + MSG_ID_EE2 = 0xee2, +/*20200304 to latest +DEATH : %.1f%% ( basic 100.0%% %s %.1f%%) +DEATH: %.1f%% (basic: 100.0%%, %s: %.1f%%) +*/ + MSG_ID_EE3 = 0xee3, +#endif +#if PACKETVER >= 20200506 +/*20200506 to latest +특성 마법 공격력이 증가되었습니다. +*/ + MSG_ID_EE4 = 0xee4, +/*20200506 to latest +스펠 인챈팅 효과가 해제되었습니다. +*/ + MSG_ID_EE5 = 0xee5, +/*20200506 to latest +프롬 디 어비스 효과가 해제되었습니다. +*/ + MSG_ID_EE6 = 0xee6, +/*20200506 to latest +특성 물리 공격력, 특성 마법 공격력 및 명중률이 증가되었습니다. +*/ + MSG_ID_EE7 = 0xee7, +/*20200506 to latest +어비스 슬레이어 효과가 해제되었습니다. +*/ + MSG_ID_EE8 = 0xee8, +#endif +#if PACKETVER >= 20200617 +/*20200617 to latest +캐릭터 생성에 제한이 있을 수 있습니다. +*/ + MSG_ID_EE9 = 0xee9, +/*20200617 to latest +월드가 포화상태입니다. 다른 월드를 이용해 주세요. +*/ + MSG_ID_EEA = 0xeea, +#endif +#if PACKETVER >= 20200701 +/*20200701 to latest +채팅차단해제(수신거부해제) +*/ + MSG_ID_EEB = 0xeeb, +/*20200701 to latest +채팅차단(수신거부) +*/ + MSG_ID_EEC = 0xeec, +#endif }; #endif /* MAP_MESSAGES_ZERO_H */ diff --git a/src/map/mob.c b/src/map/mob.c index 0830e5a5a..849b962a1 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -78,6 +78,7 @@ struct mob_interface *mob; // Move probability for mobs away from players (rate of 1000 minute) // in Aegis, this is 100% for mobs that have been activated by players and none otherwise. #define MOB_LAZYMOVEPERC(md) ((md)->state.spotted?1000:0) +#define MOB_MAX_CASTTIME (10 * 60 * 1000) // Maximum cast time for monster skills. (10 minutes) #define MOB_MAX_DELAY (24*3600*1000) #define MAX_MINCHASE 30 //Max minimum chase value to use for mobs. #define RUDE_ATTACKED_COUNT 2 //After how many rude-attacks should the skill be used? @@ -446,6 +447,9 @@ static bool mob_ksprotected(struct block_list *src, struct block_list *target) if( !battle_config.ksprotection ) return false; // KS Protection Disabled + if (status->isdead(target) != 0) + return false; // Target is dead. + if( !(md = BL_CAST(BL_MOB,target)) ) return false; // Target is not MOB @@ -1462,7 +1466,7 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick) // If master is BL_MOB and in battle, lock & chase to master's target instead, unless configured not to. if ((battle_config.slave_chase_masters_chasetarget == 0 || (m_md != NULL && !mob->is_in_battle_state(m_md))) && map->search_freecell(&md->bl, bl->m, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 1) - && unit->walktoxy(&md->bl, x, y, 0)) + && unit->walk_toxy(&md->bl, x, y, 0) == 0) return 1; } } else if (bl->m != md->bl.m && map_flag_gvg(md->bl.m)) { @@ -1519,7 +1523,7 @@ static int mob_unlocktarget(struct mob_data *md, int64 tick) FALLTHROUGH case MSS_IDLE: // Idle skill. - if (!(++md->ud.walk_count%IDLE_SKILL_INTERVAL) && mob->skill_use(md, tick, -1)) + if ((++md->ud.walk_count % IDLE_SKILL_INTERVAL) == 0 && mob->skill_use(md, tick, -1) == 0) break; //Random walk. if (!md->master_id && @@ -1544,7 +1548,7 @@ static int mob_unlocktarget(struct mob_data *md, int64 tick) unit->set_target(&md->ud, 0); } if(battle_config.official_cell_stack_limit && map->count_oncell(md->bl.m, md->bl.x, md->bl.y, BL_CHAR|BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) { - unit->walktoxy(&md->bl, md->bl.x, md->bl.y, 8); + unit->walk_toxy(&md->bl, md->bl.x, md->bl.y, 8); } return 0; @@ -1576,9 +1580,9 @@ static int mob_randomwalk(struct mob_data *md, int64 tick) x+=md->bl.x; y+=md->bl.y; - if (((x != md->bl.x) || (y != md->bl.y)) && map->getcell(md->bl.m, &md->bl, x, y, CELL_CHKPASS) && unit->walktoxy(&md->bl, x, y, 8)) { + if ((x != md->bl.x || y != md->bl.y) && map->getcell(md->bl.m, &md->bl, x, y, CELL_CHKPASS) != 0 + && unit->walk_toxy(&md->bl, x, y, 8) == 0) break; - } } if(i==retrycount){ md->move_fail_count++; @@ -1699,7 +1703,7 @@ static bool mob_ai_sub_hard(struct mob_data *md, int64 tick) || !mob->can_reach(md, tbl, md->min_chase, MSS_RUSH) ) && md->state.attacked_count++ >= RUDE_ATTACKED_COUNT - && !mob->skill_use(md, tick, MSC_RUDEATTACKED) // If can't rude Attack + && mob->skill_use(md, tick, MSC_RUDEATTACKED) == 0 // If can't rude Attack && can_move && unit->escape(&md->bl, tbl, rnd()%10 +1) // Attempt escape ) { //Escaped @@ -1727,7 +1731,7 @@ static bool mob_ai_sub_hard(struct mob_data *md, int64 tick) ) { // Rude attacked if (md->state.attacked_count++ >= RUDE_ATTACKED_COUNT - && !mob->skill_use(md, tick, MSC_RUDEATTACKED) && can_move + && mob->skill_use(md, tick, MSC_RUDEATTACKED) == 0 && can_move != 0 && !tbl && unit->escape(&md->bl, abl, rnd()%10 +1) ) { //Escaped. @@ -2422,6 +2426,7 @@ static int mob_dead(struct mob_data *md, struct block_list *src, int type) nullpo_retr(3, md); m = md->bl.m; + Assert_retr(false, m >= 0 && m < map->count); mstatus = &md->status; if( md->guardian_data && md->guardian_data->number >= 0 && md->guardian_data->number < MAX_GUARDIANS ) @@ -3387,272 +3392,344 @@ static struct block_list *mob_getmasterhpltmaxrate(struct mob_data *md, int rate return NULL; } -/*========================================== - * What a status state suits by nearby MOB is looked for. - *------------------------------------------*/ + +/** + * Checks if the passed monster/character meets the passed status change requirements + * and returns it by reference parameter on success. + * + * @param bl The monster/character to check. + * @param ap List of arguments. (Source monster, MSC_* flag, SC_* flag, reference bl.) + * @return Always 0. + * + **/ static int mob_getfriendstatus_sub(struct block_list *bl, va_list ap) { - int cond1,cond2; - struct mob_data **fr = NULL, *md = NULL, *mmd = NULL; - int flag=0; - nullpo_ret(bl); - Assert_ret(bl->type == BL_MOB); - md = BL_UCAST(BL_MOB, bl); - nullpo_ret(mmd=va_arg(ap,struct mob_data *)); - if( mmd->bl.id == bl->id && !(battle_config.mob_ai&0x10) ) + struct mob_data *md = va_arg(ap, struct mob_data *); + + nullpo_ret(md); + + if (md->bl.id == bl->id && (battle_config.mob_ai & 0x10) == 0) + return 0; + + if (battle->check_target(&md->bl, bl, BCT_ENEMY) > 0) return 0; - if (battle->check_target(&mmd->bl,bl,BCT_ENEMY)>0) + int cond1 = va_arg(ap, int); + int cond2 = va_arg(ap, int); + struct block_list **fr = va_arg(ap, struct block_list **); + + if ((*fr) != NULL) // A friend was already found. return 0; - cond1=va_arg(ap,int); - cond2=va_arg(ap,int); - fr=va_arg(ap,struct mob_data **); - if( cond2==-1 ){ - int j; - for(j=SC_COMMON_MIN;j<=SC_COMMON_MAX && !flag;j++){ - if ((flag=(md->sc.data[j] != NULL))) //Once an effect was found, break out. [Skotlex] + + int flag = 0; + struct status_change *sc = status->get_sc(bl); + + if (cond2 == -1) { // Check for any of the common status alignments. + for (int i = SC_COMMON_MIN; i <= SC_COMMON_MAX; i++) { + if ((flag = (sc->data[i] != NULL)) != 0) // Once an effect was found, break out. [Skotlex] break; } - }else - flag=( md->sc.data[cond2] != NULL ); - if( flag^( cond1==MSC_FRIENDSTATUSOFF ) ) - (*fr)=md; + } else { + flag = (sc->data[cond2] != NULL); + } + + if ((flag ^ (cond1 == MSC_FRIENDSTATUSOFF)) != 0) + (*fr) = bl; return 0; } -static struct mob_data *mob_getfriendstatus(struct mob_data *md, int cond1, int cond2) +/** + * Gets a random monster/character within a range of 8 cells around md. + * If md is summoned (no monster slave!) a character is picker, otherwise a monster. + * + * @param md The monster which tries to cast a skill. + * @param cond1 Whether to check for active or inactive status change. (MSC_FRIENDSTATUSON/MSC_FRIENDSTATUSOFF) + * @param cond2 The status change (SC_* flag) to check. + * @return A randomly picked monster/character within range. + * + **/ +static struct block_list *mob_getfriendstatus(struct mob_data *md, int cond1, int cond2) { - struct mob_data* fr = NULL; nullpo_ret(md); - map->foreachinrange(mob->getfriendstatus_sub, &md->bl, 8,BL_MOB, md,cond1,cond2,&fr); + int type = (md->special_state.ai != AI_NONE) ? BL_PC : BL_MOB; + struct block_list *fr = NULL; + + map->foreachinrange(mob->getfriendstatus_sub, &md->bl, 8, type, md, cond1, cond2, &fr); + return fr; } -/*========================================== - * Skill use judging - *------------------------------------------*/ -static int mobskill_use(struct mob_data *md, int64 tick, int event) +/** + * Checks if skill cast condition in fulfilled and executes the skill in case of success. + * + * @param md The monster which tries to cast a skill. + * @param tick The timestamp of skill execution. + * @param event The MSC_* flag which triggered the skill execution. (-1 for non-event skill conditions.) + * @return 0 on success, 1 on failure. + * + **/ +static int mob_skill_use(struct mob_data *md, int64 tick, int event) { - struct mob_skill *ms; - struct block_list *fbl = NULL; //Friend bl, which can either be a BL_PC or BL_MOB depending on the situation. [Skotlex] - struct block_list *bl; - struct mob_data *fmd = NULL; - int i,j,n; - nullpo_ret(md); - nullpo_ret(ms = md->db->skill); - if (!battle_config.mob_skill_rate || md->ud.skilltimer != INVALID_TIMER || !md->db->maxskill) - return 0; + struct mob_skill *ms = md->db->skill; + + nullpo_ret(ms); + + if (battle_config.mob_skill_rate == 0 || md->ud.skilltimer != INVALID_TIMER || md->db->maxskill == 0) + return 1; if (event == -1 && DIFF_TICK(md->ud.canact_tick, tick) > 0) - return 0; //Skill act delay only affects non-event skills. + return 1; // Skill act delay only affects non-event skill conditions. - //Pick a starting position and loop from that. - i = (battle_config.mob_ai&0x100) ? rnd()%md->db->maxskill : 0; - for (n = 0; n < md->db->maxskill; i++, n++) { - int c2, flag = 0; + // Pick a starting position and loop from that. + int skill_idx = ((battle_config.mob_ai & 0x100) != 0) ? rnd() % md->db->maxskill : 0; - if (i == md->db->maxskill) - i = 0; + for (int i = 0; i < md->db->maxskill; skill_idx++, i++) { + if (skill_idx == md->db->maxskill) + skill_idx = 0; - if (DIFF_TICK(tick, md->skilldelay[i]) < ms[i].delay) + if (DIFF_TICK(tick, md->skilldelay[skill_idx]) < ms[skill_idx].delay) continue; - c2 = ms[i].cond2; + enum MobSkillState state = ms[skill_idx].state; - if (ms[i].state != md->state.skillstate) { - if (md->state.skillstate != MSS_DEAD && (ms[i].state == MSS_ANY || - (ms[i].state == MSS_ANYTARGET && md->target_id && md->state.skillstate != MSS_LOOT) - )) //ANYTARGET works with any state as long as there's a target. [Skotlex] - ; - else + if (state != md->state.skillstate) { + bool state_dead = (md->state.skillstate == MSS_DEAD); + bool any_target = (state == MSS_ANYTARGET && md->target_id != 0 && md->state.skillstate != MSS_LOOT); + + // MSS_ANYTARGET works with any state as long as there's a target. [Skotlex] + if (state_dead || (state != MSS_ANY && !any_target)) continue; } - if (rnd() % 10000 > ms[i].permillage) //Lupus (max value = 10000) + + if (rnd() % 10000 > ms[skill_idx].permillage) continue; - if (ms[i].cond1 == event) - flag = 1; //Trigger skill. - else if (ms[i].cond1 == MSC_SKILLUSED) - flag = ((event & 0xffff) == MSC_SKILLUSED && ((event >> 16) == c2 || c2 == 0)); - else if(event == -1){ - //Avoid entering on defined events to avoid "hyper-active skill use" due to the overflow of calls to this function in battle. - switch (ms[i].cond1) - { - case MSC_ALWAYS: - flag = 1; break; - case MSC_MYHPLTMAXRATE: // HP< maxhp% - flag = get_percentage(md->status.hp, md->status.max_hp); - flag = (flag <= c2); - break; - case MSC_MYHPINRATE: - flag = get_percentage(md->status.hp, md->status.max_hp); - flag = (flag >= c2 && flag <= ms[i].val[0]); - break; - case MSC_MYSTATUSON: // status[num] on - case MSC_MYSTATUSOFF: // status[num] off - if (!md->sc.count) { - flag = 0; - } else if (ms[i].cond2 == -1) { - for (j = SC_COMMON_MIN; j <= SC_COMMON_MAX; j++) - if ((flag = (md->sc.data[j]!=NULL)) != 0) - break; - } else { - flag = (md->sc.data[ms[i].cond2]!=NULL); + int cast_cond = ms[skill_idx].cond1; + int cond_data = ms[skill_idx].cond2; + int flag = 0; + struct block_list *fbl = NULL; // Friend bl, which can either be a BL_PC or BL_MOB depending on the situation. [Skotlex] + + if (cast_cond == event) { + flag = 1; // Trigger skill. + } else if (cast_cond == MSC_SKILLUSED) { + flag = ((event & 0xFFFF) == MSC_SKILLUSED && ((event >> 16) == cond_data || cond_data == 0)); + } else if (event == -1) { + // Avoid entering on defined events to avoid "hyper-active skill use" due to the overflow of calls to this function in battle. + switch (cast_cond) { + case MSC_ALWAYS: + flag = 1; + break; + case MSC_MYHPLTMAXRATE: // HP <= x% + flag = get_percentage(md->status.hp, md->status.max_hp); + flag = (flag <= cond_data); + break; + case MSC_MYHPINRATE: // HP >= x% && HP <= y% + flag = get_percentage(md->status.hp, md->status.max_hp); + flag = (flag >= cond_data && flag <= ms[skill_idx].val[0]); + break; + case MSC_MYSTATUSON: // Status change x is active. + case MSC_MYSTATUSOFF: // Status change x is inactive. + if (cond_data == -1) { // Check for any of the common status alignments. + for (int j = SC_COMMON_MIN; j <= SC_COMMON_MAX; j++) { + if ((flag = (md->sc.data[j] != NULL)) != 0) + break; } - flag ^= (ms[i].cond1 == MSC_MYSTATUSOFF); break; - case MSC_FRIENDHPLTMAXRATE: // friend HP < maxhp% - flag = ((fbl = mob->getfriendhprate(md, 0, ms[i].cond2)) != NULL); break; - case MSC_FRIENDHPINRATE: - flag = ((fbl = mob->getfriendhprate(md, ms[i].cond2, ms[i].val[0])) != NULL); break; - case MSC_FRIENDSTATUSON: // friend status[num] on - case MSC_FRIENDSTATUSOFF: // friend status[num] off - flag = ((fmd = mob->getfriendstatus(md, ms[i].cond1, ms[i].cond2)) != NULL); break; - case MSC_SLAVELT: // slave < num - flag = (mob->countslave(&md->bl) < c2 ); break; - case MSC_ATTACKPCGT: // attack pc > num - flag = (unit->counttargeted(&md->bl) > c2); break; - case MSC_SLAVELE: // slave <= num - flag = (mob->countslave(&md->bl) <= c2 ); break; - case MSC_ATTACKPCGE: // attack pc >= num - flag = (unit->counttargeted(&md->bl) >= c2); break; - case MSC_AFTERSKILL: - flag = (md->ud.skill_id == c2); break; - case MSC_RUDEATTACKED: - flag = (md->state.attacked_count >= RUDE_ATTACKED_COUNT); - if (flag) md->state.attacked_count = 0; //Rude attacked count should be reset after the skill condition is met. Thanks to Komurka [Skotlex] - break; - case MSC_MASTERHPLTMAXRATE: - flag = ((fbl = mob->getmasterhpltmaxrate(md, ms[i].cond2)) != NULL); break; - case MSC_MASTERATTACKED: - flag = (md->master_id > 0 && (fbl=map->id2bl(md->master_id)) != NULL && unit->counttargeted(fbl) > 0); - break; - case MSC_ALCHEMIST: - flag = (md->state.alchemist); - break; + } else { + flag = (md->sc.data[cond_data] != NULL); + } + + flag ^= (cast_cond == MSC_MYSTATUSOFF); + break; + case MSC_FRIENDHPLTMAXRATE: // FriendHP <= x% + flag = ((fbl = mob->getfriendhprate(md, 0, cond_data)) != NULL); + break; + case MSC_FRIENDHPINRATE: // FriendHP >= x% && FriendHP <= y% + flag = ((fbl = mob->getfriendhprate(md, cond_data, ms[skill_idx].val[0])) != NULL); + break; + case MSC_FRIENDSTATUSON: // Friend's status change x is active. + case MSC_FRIENDSTATUSOFF: // Friend's status change x is inactive. + flag = ((fbl = mob->getfriendstatus(md, cast_cond, cond_data)) != NULL); + break; + case MSC_SLAVELT: // Monster has less than x active slaves. + flag = (mob->countslave(&md->bl) < cond_data); + break; + case MSC_ATTACKPCGT: // Monster is attacked by more than x units. + flag = (unit->counttargeted(&md->bl) > cond_data); + break; + case MSC_SLAVELE: // Monster has x or less active slaves. + flag = (mob->countslave(&md->bl) <= cond_data); + break; + case MSC_ATTACKPCGE: // Monster is attacked by x or more units. + flag = (unit->counttargeted(&md->bl) >= cond_data); + break; + case MSC_AFTERSKILL: // Monster used skill x, or any skill if x is 0. + flag = (md->ud.skill_id == cond_data || cond_data == 0); + break; + case MSC_RUDEATTACKED: // Monster was rude attacked RUDE_ATTACKED_COUNT or more times. + flag = (md->state.attacked_count >= RUDE_ATTACKED_COUNT); + + // Rude attacked count should be reset after the skill condition is met. Thanks to Komurka [Skotlex] + if (flag) + md->state.attacked_count = 0; + + break; + case MSC_MASTERHPLTMAXRATE: // MasterHP < x% + flag = ((fbl = mob->getmasterhpltmaxrate(md, cond_data)) != NULL); + break; + case MSC_MASTERATTACKED: // Monster's master is under attack. + flag = (md->master_id > 0 && (fbl = map->id2bl(md->master_id)) != NULL); + flag = (fbl != NULL && unit->counttargeted(fbl) > 0); + break; + case MSC_ALCHEMIST: // Monster was summoned by an Alchemist. + flag = (md->state.alchemist != 0); + break; } } - if (!flag) - continue; //Skill requisite failed to be fulfilled. + if (flag == 0) // Skill cast condition not fulfilled. + continue; - //Execute skill - if (skill->get_casttype(ms[i].skill_id) == CAST_GROUND) {//Ground skill. - short x, y; - switch (ms[i].target) { - case MST_RANDOM: //Pick a random enemy within skill range. - bl = battle->get_enemy(&md->bl, DEFAULT_ENEMY_TYPE(md), - skill->get_range2(&md->bl, ms[i].skill_id, ms[i].skill_lv)); - break; - case MST_TARGET: - case MST_AROUND5: - case MST_AROUND6: - case MST_AROUND7: - case MST_AROUND8: - bl = map->id2bl(md->target_id); - break; - case MST_MASTER: - bl = &md->bl; - if (md->master_id) - bl = map->id2bl(md->master_id); - if (bl) //Otherwise, fall through. - break; - FALLTHROUGH - case MST_FRIEND: - bl = fbl?fbl:(fmd?&fmd->bl:&md->bl); - break; - default: - bl = &md->bl; + // Execute skill. + if (skill->get_casttype(ms[skill_idx].skill_id) == CAST_GROUND) { // Ground skill. + int target_type = ms[skill_idx].target; + int skill_range = skill->get_range2(&md->bl, ms[skill_idx].skill_id, ms[skill_idx].skill_lv); + struct block_list *bl; + + switch (target_type) { + case MST_RANDOM: // Pick a random enemy within skill range. Skill center is monster position. + bl = battle->get_enemy(&md->bl, DEFAULT_ENEMY_TYPE(md), skill_range); + break; + case MST_TARGET: // Monster's current target is within skill range. Skill center is monster position. + case MST_AROUND5: // Monster's current target is within skill range. Skill center is a random cell within a range of 1. + case MST_AROUND6: // Monster's current target is within skill range. Skill center is a random cell within a range of 2. + case MST_AROUND7: // Monster's current target is within skill range. Skill center is a random cell within a range of 3. + case MST_AROUND8: // Monster's current target is within skill range. Skill center is a random cell within a range of 4. + bl = map->id2bl(md->target_id); + break; + case MST_MASTER: // Monster's master is within skill range. Skill center is monster position. + // If monster has no master, use the monster as target, + bl = (md->master_id != 0) ? map->id2bl(md->master_id) : &md->bl; + + if (bl != NULL) break; + + // If monster has a master but master wasn't found, try a friend. + FALLTHROUGH + case MST_FRIEND: // Monster's friend is within skill range. Skill center is monster position. + bl = (fbl != NULL) ? fbl : &md->bl; + break; + default: // Monster is within skill range. Skill center is monster position. + bl = &md->bl; + break; } - if (!bl) continue; - - x = bl->x; - y = bl->y; - // Look for an area to cast the spell around... - if (ms[i].target >= MST_AROUND1 || ms[i].target >= MST_AROUND5) { - j = ms[i].target >= MST_AROUND1? - (ms[i].target-MST_AROUND1) +1: - (ms[i].target-MST_AROUND5) +1; - map->search_freecell(&md->bl, md->bl.m, &x, &y, j, j, 3); + + if (bl == NULL) // No target found. + continue; + + short x = bl->x; + short y = bl->y; + + // Find a target cell. + if (target_type >= MST_AROUND5 && target_type <= MST_AROUND) { + int range = target_type - ((target_type >= MST_AROUND1) ? MST_AROUND1 : MST_AROUND5) + 1; + map->search_freecell(&md->bl, md->bl.m, &x, &y, range, range, 3); } - md->skill_idx = i; + + md->skill_idx = skill_idx; map->freeblock_lock(); - if( !battle->check_range(&md->bl,bl,skill->get_range2(&md->bl, ms[i].skill_id,ms[i].skill_lv)) - || !unit->skilluse_pos2(&md->bl, x, y,ms[i].skill_id, ms[i].skill_lv,ms[i].casttime, ms[i].cancel) - ) { + + uint16 sk_id = ms[skill_idx].skill_id; + uint16 sk_lv = ms[skill_idx].skill_lv; + int casttime = ms[skill_idx].casttime; + short cancel = ms[skill_idx].cancel; + + if (!battle->check_range(&md->bl, bl, skill_range) + || unit->skilluse_pos2(&md->bl, x, y, sk_id, sk_lv, casttime, cancel) == 0) { map->freeblock_unlock(); continue; } - } else { - //Targeted skill - switch (ms[i].target) { - case MST_RANDOM: //Pick a random enemy within skill range. - bl = battle->get_enemy(&md->bl, DEFAULT_ENEMY_TYPE(md), - skill->get_range2(&md->bl, ms[i].skill_id, ms[i].skill_lv)); - break; - case MST_TARGET: - bl = map->id2bl(md->target_id); - break; - case MST_MASTER: - bl = &md->bl; - if (md->master_id) - bl = map->id2bl(md->master_id); - if (bl) //Otherwise, fall through. - break; - FALLTHROUGH - case MST_FRIEND: - if (fbl) { - bl = fbl; - break; - } else if (fmd) { - bl = &fmd->bl; - break; - } // else fall through - FALLTHROUGH - default: - bl = &md->bl; + } else { // Targeted skill. + int skill_range = skill->get_range2(&md->bl, ms[skill_idx].skill_id, ms[skill_idx].skill_lv); + struct block_list *bl; + + switch (ms[skill_idx].target) { + case MST_RANDOM: // Pick a random enemy within skill range. + bl = battle->get_enemy(&md->bl, DEFAULT_ENEMY_TYPE(md), skill_range); + break; + case MST_TARGET: // Monster's current target is within skill range. + bl = map->id2bl(md->target_id); + break; + case MST_MASTER: // Monster's master is within skill range. + // If monster has no master, use the monster as target, + bl = (md->master_id != 0) ? map->id2bl(md->master_id) : &md->bl; + + if (bl != NULL) break; + + // If monster has a master but master wasn't found, try a friend. + FALLTHROUGH + case MST_FRIEND: // Monster's friend is within skill range. + bl = (fbl != NULL) ? fbl : &md->bl; + break; + default: // Monster is within skill range. + bl = &md->bl; + break; } - if (!bl) continue; - md->skill_idx = i; + if (bl == NULL) // No target found. + continue; + + md->skill_idx = skill_idx; map->freeblock_lock(); - if( !battle->check_range(&md->bl,bl,skill->get_range2(&md->bl, ms[i].skill_id,ms[i].skill_lv)) - || !unit->skilluse_id2(&md->bl, bl->id,ms[i].skill_id, ms[i].skill_lv,ms[i].casttime, ms[i].cancel) - ) { + + uint16 sk_id = ms[skill_idx].skill_id; + uint16 sk_lv = ms[skill_idx].skill_lv; + int casttime = ms[skill_idx].casttime; + short cancel = ms[skill_idx].cancel; + + if (!battle->check_range(&md->bl, bl, skill_range) + || unit->skilluse_id2(&md->bl, bl->id, sk_id, sk_lv, casttime, cancel) == 0) { map->freeblock_unlock(); continue; } } - //Skill used. Post-setups... - if ( ms[ i ].msg_id ){ //Display color message [SnakeDrak] - struct mob_chat *mc = mob->chat(ms[i].msg_id); + + // Skill used. + if (ms[skill_idx].msg_id != 0) { // Display color message. [SnakeDrak] char temp[CHAT_SIZE_MAX]; char name[NAME_LENGTH]; - snprintf(name, sizeof name,"%s", md->name); - strtok(name, "#"); // discard extra name identifier if present [Daegaladh] - safesnprintf(temp, sizeof temp,"%s : %s", name, mc->msg); + struct mob_chat *mc = mob->chat(ms[skill_idx].msg_id); + + snprintf(name, sizeof(name), "%s", md->name); + strtok(name, "#"); // Discard extra name identifier if present. [Daegaladh] + safesnprintf(temp, sizeof(temp), "%s : %s", name, mc->msg); clif->messagecolor(&md->bl, mc->color, temp); } - if(!(battle_config.mob_ai&0x200)) { //pass on delay to same skill. - for (j = 0; j < md->db->maxskill; j++) - if (md->db->skill[j].skill_id == ms[i].skill_id) - md->skilldelay[j]=tick; - } else - md->skilldelay[i]=tick; + + if ((battle_config.mob_ai & 0x200) == 0) { // Pass on delay to same skill. + for (int j = 0; j < md->db->maxskill; j++) { + if (md->db->skill[j].skill_id == ms[skill_idx].skill_id) + md->skilldelay[j] = tick; + } + } else { + md->skilldelay[skill_idx] = tick; + } + map->freeblock_unlock(); - return 1; + return 0; } - //No skill was used. + + // No skill was used. md->skill_idx = -1; - return 0; + return 1; } + /*========================================== * Skill use event processing *------------------------------------------*/ @@ -3663,7 +3740,7 @@ static int mobskill_event(struct mob_data *md, struct block_list *src, int64 tic nullpo_ret(md); nullpo_ret(src); if(md->bl.prev == NULL || md->status.hp <= 0) - return 0; + return 1; if (md->special_state.ai == AI_SPHERE) {//LOne WOlf explained that ANYONE can trigger the marine countdown skill. [Skotlex] md->state.alchemist = 1; @@ -3682,8 +3759,10 @@ static int mobskill_event(struct mob_data *md, struct block_list *src, int64 tic res = mob->skill_use(md, tick, MSC_CLOSEDATTACKED); else if (flag&BF_LONG && !(flag&BF_MAGIC)) //Long-attacked should not include magic. res = mob->skill_use(md, tick, MSC_LONGRANGEATTACKED); + else if ((flag & BF_MAGIC) != 0) + res = mob->skill_use(md, tick, MSC_MAGICATTACKED); - if (!res) + if (res != 0) //Restore previous target only if skill condition failed to trigger. [Skotlex] md->target_id = target_id; //Otherwise check if the target is an enemy, and unlock if needed. @@ -3793,7 +3872,7 @@ static int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 continue; /// Normal aggressive mob. Disable skills that cannot help fighting against players. (Those with flags UF_NOMOB and UF_NOPC are specific to always aid players!) [Skotlex] - if (flag == 0 && skill->get_unit_id(skill_id, 0) != 0 && + if (flag == 0 && skill->get_unit_id(skill_id, sd->status.skill[idx].lv, 0) != 0 && (skill->get_unit_flag(skill_id) & (UF_NOMOB | UF_NOPC)) > 0) continue; @@ -3826,7 +3905,7 @@ static int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 mob_skills[i].state = MSS_IDLE; mob_skills[i].target = MST_AROUND2; mob_skills[i].delay = 60000; - } else if (skill->get_unit_target(skill_id) == BCT_ENEMY) { /// Target Enemy. + } else if (skill->get_unit_target(skill_id, sd->status.skill[idx].lv) == BCT_ENEMY) { /// Target Enemy. mob_skills[i].state = MSS_ANYTARGET; mob_skills[i].target = MST_TARGET; mob_skills[i].cond1 = MSC_ALWAYS; @@ -3907,8 +3986,8 @@ static int mob_clone_spawn(struct map_session_data *sd, int16 m, int16 x, int16 } } - mob_skills[i].permillage *= battle_config.mob_skill_rate / 100; - mob_skills[i].delay *= battle_config.mob_skill_delay / 100; + mob_skills[i].permillage = mob_skills[i].permillage * battle_config.mob_skill_rate / 100; + mob_skills[i].delay = mob_skills[i].delay * battle_config.mob_skill_delay / 100; db->maxskill = ++i; } @@ -5012,12 +5091,10 @@ static int mob_read_db_sub(struct config_setting_t *mobt, int n, const char *sou md.status.def_ele = i32; md.status.ele_lv = value; } else if (!inherit) { - ShowWarning("mob_read_db_sub: Missing element for monster ID %d.\n", md.mob_id); md.status.def_ele = ELE_NEUTRAL; md.status.ele_lv = 1; } } else if (!inherit) { - ShowWarning("mob_read_db_sub: Missing element for monster ID %d.\n", md.mob_id); md.status.def_ele = ELE_NEUTRAL; md.status.ele_lv = 1; } @@ -5491,115 +5568,134 @@ static bool mob_skill_db_libconfig_sub(struct config_setting_t *it, int n) return true; } +/** + * Reads a single monster skill from DB. + * + * @param it The libconfig settings block, which contains the skill data. + * @param n The skill data block's index within the parent monster block. + * @param mob_id The monster's ID. + * @return true on success, false on failure. + * + **/ static bool mob_skill_db_libconfig_sub_skill(struct config_setting_t *it, int n, int mob_id) { - int i, j, idx = 0; - int i32; - int skill_id = 0; - int skill_idx = 0; - bool clearskills = false; - const char *name = config_setting_name(it); - struct mob_skill *ms, gms; - nullpo_retr(false, it); Assert_retr(false, mob_id <= 0 || mob->db(mob_id) != mob->dummy); - if (!(skill_id = skill->name2id(name))) { - ShowWarning("mob_skill_db_libconfig_sub_skill: Non existant skill id %d in monster %d, skipping.\n", skill_id, mob_id); + int skill_id = 0; + const char *name = config_setting_name(it); + const char *mob_str = (mob_id < 0) ? "global ID" : "monster"; + + if ((skill_id = skill->name2id(name)) == 0) { + ShowWarning("%s: Non existant skill %d in %s %d, skipping.\n", __func__, skill_id, mob_str, mob_id); return false; } + const char *skill_name = skill->get_name(skill_id); + bool clearskills = false; + // If ClearSkills flag is enabled clear all the previous skills. - if (libconfig->setting_lookup_bool_real(it, "ClearSkills", &clearskills) && clearskills) { - if (mob_id < 0) // Clearing skills globaly is not supported + if (libconfig->setting_lookup_bool_real(it, "ClearSkills", &clearskills) == CONFIG_TRUE && clearskills) { + if (mob_id < 0) { + ShowError("%s: Global skill clearing is not supported, skipping. (Global ID %d, skill %d (%s).)\n", + __func__, mob_id, skill_id, skill_name); return false; + } + memset(mob->db_data[mob_id]->skill, 0, sizeof(struct mob_skill) * MAX_MOBSKILL); mob->db_data[mob_id]->maxskill = 0; return true; } - if (mob_id < 0) { - // Prepare global skill. [Skotlex] + struct mob_skill *ms; + + if (mob_id < 0) { // Prepare global skill. [Skotlex] + struct mob_skill gms; memset(&gms, 0, sizeof (struct mob_skill)); ms = &gms; } else { + int idx = 0; + ARR_FIND(0, MAX_MOBSKILL, idx, (ms = &mob->db_data[mob_id]->skill[idx])->skill_id == 0); + if (idx == MAX_MOBSKILL) { - ShowError("mob_skill_db_libconfig_sub_skill: Too many skills for monster %d\n", mob_id); + ShowError("%s: Too many skills for monster %d, skipping.\n", __func__, mob_id); return false; } + + mob->db_data[mob_id]->maxskill = idx + 1; } + ms->skill_id = skill_id; + int i32 = MSS_ANY; if (mob->lookup_const(it, "SkillState", &i32) && (i32 < MSS_ANY || i32 > MSS_ANYTARGET)) { - ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid skill state %d for skill id %d in monster %d, defaulting to MSS_ANY.\n", i32, skill_id, mob_id); + ShowWarning("%s: Invalid skill state %d for skill %d (%s) in %s %d, defaulting to MSS_ANY.\n", + __func__, i32, skill_id, skill_name, mob_str, mob_id); i32 = MSS_ANY; } ms->state = i32; - if (!libconfig->setting_lookup_int(it, "SkillLevel", &i32) || i32 <= 0) - i32 = 1; - ms->skill_lv = i32 > battle_config.mob_max_skilllvl ? battle_config.mob_max_skilllvl : i32; //we strip max skill level + int res = libconfig->setting_lookup_int(it, "SkillLevel", &i32); + ms->skill_lv = (res == CONFIG_FALSE) ? 1 : cap_value(i32, 1, battle_config.mob_max_skilllvl); - //Apply battle_config modifiers to rate (permillage) and delay [Skotlex] - if (libconfig->setting_lookup_int(it, "Rate", &i32)) - ms->permillage = i32; + res = libconfig->setting_lookup_int(it, "Rate", &i32); + ms->permillage = (res == CONFIG_FALSE) ? 1 : cap_value(i32, 1, 10000); + // Apply battle_config modifier to rate (permillage). if (battle_config.mob_skill_rate != 100) ms->permillage = ms->permillage * battle_config.mob_skill_rate / 100; + if (ms->permillage > 10000) ms->permillage = 10000; - else if (ms->permillage == 0 && battle_config.mob_skill_rate) + else if (ms->permillage == 0 && battle_config.mob_skill_rate != 0) ms->permillage = 1; - if (libconfig->setting_lookup_int(it, "CastTime", &i32) && i32 > 0) - ms->casttime = i32; + res = libconfig->setting_lookup_int(it, "CastTime", &i32); + ms->casttime = (res == CONFIG_FALSE) ? 0 : cap_value(i32, 0, MOB_MAX_CASTTIME); + + res = libconfig->setting_lookup_int(it, "Delay", &i32); + ms->delay = (res == CONFIG_FALSE) ? 0 : cap_value(i32, 0, MOB_MAX_DELAY); - if (libconfig->setting_lookup_int(it, "Delay", &i32)) - ms->delay = i32; + // Apply battle_config modifier to delay. if (battle_config.mob_skill_delay != 100) ms->delay = ms->delay * battle_config.mob_skill_delay / 100; - if (ms->delay < 0 || ms->delay > MOB_MAX_DELAY) //time overflow? - ms->delay = MOB_MAX_DELAY; - if (libconfig->setting_lookup_bool(it, "Cancelable", &i32)) - ms->cancel = (i32 == 0) ? 0 : 1; + ms->delay = min(ms->delay, MOB_MAX_DELAY); + + res = libconfig->setting_lookup_bool(it, "Cancelable", &i32); + ms->cancel = (res == CONFIG_FALSE) ? 0 : cap_value(i32, 0, 1); + i32 = MST_TARGET; if (mob->lookup_const(it, "SkillTarget", &i32) && (i32 < MST_TARGET || i32 > MST_AROUND)) { - ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid skill target %d for skill id %d in monster %d, defaulting to MST_TARGET.\n", i32, skill_id, mob_id); - ms->target = MST_TARGET; + ShowWarning("%s: Invalid skill target %d for skill %d (%s) in %s %d, defaulting to MST_TARGET.\n", + __func__, i32, skill_id, skill_name, mob_str, mob_id); + i32 = MST_TARGET; } ms->target = i32; - //Check that the target condition is right for the skill type. [Skotlex] - skill_idx = skill->get_index(skill_id); - if (skill->get_casttype2(skill_idx) == CAST_GROUND) {//Ground skill. - if (ms->target > MST_AROUND) { - ShowWarning("mob_skill_db_libconfig_sub_skill: Wrong mob skill target for ground skill %d (%s) for %s.\n", - ms->skill_id, skill->dbs->db[skill_idx].name, - mob_id < 0 ? "all mobs" : mob->db_data[mob_id]->sprite); - ms->target = MST_TARGET; - } - } else if (ms->target > MST_MASTER) { - ShowWarning("mob_skill_db_libconfig_sub_skill: Wrong mob skill target 'around' for non-ground skill %d (%s) for %s.\n", - ms->skill_id, skill->dbs->db[skill_idx].name, - mob_id < 0 ? "all mobs" : mob->db_data[mob_id]->sprite); + // Check the target condition for non-ground skills. (Ground skills can use every target.) + if (skill->get_casttype2(skill->get_index(skill_id)) != CAST_GROUND && ms->target > MST_MASTER) { + ShowWarning("%s: Wrong skill target %d for non-ground skill %d (%s) in %s %d, defaulting to MST_TARGET.\n", + __func__, ms->target, skill_id, skill_name, mob_str, mob_id); ms->target = MST_TARGET; } - if (mob->lookup_const(it, "CastCondition", &i32) && (i32 < MSC_ALWAYS || i32 > MSC_SPAWN)) { - ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid skill condition %d for skill id %d in monster %d, defaulting to MSC_ALWAYS.\n", i32, skill_id, mob_id); - ms->cond1 = MSC_ALWAYS; + i32 = MSC_ALWAYS; + if (mob->lookup_const(it, "CastCondition", &i32) && (i32 < MSC_ALWAYS || i32 > MSC_MAGICATTACKED)) { + ShowWarning("%s: Invalid skill condition %d for skill id %d (%s) in %s %d, defaulting to MSC_ALWAYS.\n", + __func__, i32, skill_id, skill_name, mob_str, mob_id); + i32 = MSC_ALWAYS; } ms->cond1 = i32; - if (mob->lookup_const(it, "ConditionData", &i32)) - ms->cond2 = i32; + ms->cond2 = !mob->lookup_const(it, "ConditionData", &i32) ? 0 : cap_value(i32, SHRT_MIN, SHRT_MAX); - for (i = 0; i < 5; i++) { + for (int i = 0; i < 5; i++) { char valname[16]; sprintf(valname, "val%1d", i); - if (libconfig->setting_lookup_int(it, valname, &i32)) + + if (libconfig->setting_lookup_int(it, valname, &i32) == CONFIG_TRUE) ms->val[i] = i32; } @@ -5610,60 +5706,64 @@ static bool mob_skill_db_libconfig_sub_skill(struct config_setting_t *it, int n, if (mob_id > 0 && (uint32)ms->val[1] == mob->db(mob_id)->status.mode) { ms->val[1] = MD_NONE; - ms->val[4] = 1; //request to return mode to normal. + ms->val[4] = 1; // Request to return mode to normal. } } if (ms->skill_id == NPC_EMOTION_ON && mob_id > 0 && ms->val[1] != MD_NONE) { - //Adds a mode to the mob. - //Remove aggressive mode when the new mob type is passive. - if (!(ms->val[1] & MD_AGGRESSIVE)) + // Add a mode to the mob and remove aggressive mode if the new mode is passive. + if ((ms->val[1] & MD_AGGRESSIVE) == 0) ms->val[3] |= MD_AGGRESSIVE; - ms->val[2] |= (uint32)ms->val[1]; //Add the new mode. - ms->val[1] = MD_NONE; //Do not "set" it. + + ms->val[2] |= (uint32)ms->val[1]; // Add the new mode. + ms->val[1] = MD_NONE; // Do not "set" it. } - if (libconfig->setting_lookup_int(it, "Emotion", &i32)) - ms->emotion = i32; - else - ms->emotion = -1; + res = libconfig->setting_lookup_int(it, "Emotion", &i32); + ms->emotion = (res == CONFIG_FALSE) ? -1 : cap_value(i32, -1, SHRT_MAX); - if (libconfig->setting_lookup_int(it, "ChatMsgID", &i32) && i32 > 0 && i32 <= MAX_MOB_CHAT) { - if (mob->chat_db[i32] == NULL) { - ShowWarning("mob_skill_db_libconfig_sub_skill: Invalid msg id %d for skill id %d in monster %d, ignoring.\n", i32, skill_id, mob_id); + if (libconfig->setting_lookup_int(it, "ChatMsgID", &i32) == CONFIG_TRUE) { + if (i32 <= 0 || i32 > MAX_MOB_CHAT || mob->chat_db[i32] == NULL) { + ShowWarning("%s: Invalid message ID %d for skill %d (%s) in %s %d, ignoring.\n", + __func__, i32, skill_id, skill_name, mob_str, mob_id); } else { ms->msg_id = i32; } } - if (mob_id < 0) { - // Set this skill to ALL mobs. [Skotlex] - mob_id *= -1; - for (i = 1; i < MAX_MOB_DB; i++) { + if (mob_id < 0) { // Global skill assignment. + mob_id = -mob_id; + + for (int i = 1; i < MAX_MOB_DB; i++) { if (mob->db_data[i] == NULL) continue; - if (mob->db_data[i]->status.mode & MD_BOSS) { - if (!(mob_id & 2)) //Skill not for bosses + + if ((mob->db_data[i]->status.mode & MD_BOSS) != 0) { + if ((mob_id & 2) == 0) // Skill not for boss monsters. continue; } else { - if (!(mob_id & 1)) //Skill not for normal enemies. + if ((mob_id & 1) == 0) // Skill not for normal monsters. continue; } - ARR_FIND(0, MAX_MOBSKILL, j, mob->db_data[i]->skill[j].skill_id == 0); - if (j == MAX_MOBSKILL) + + int idx; + + ARR_FIND(0, MAX_MOBSKILL, idx, mob->db_data[i]->skill[idx].skill_id == 0); + + if (idx == MAX_MOBSKILL) { + ShowError("%s: Too many skills for monster %d in global ID %d, skipping.\n", + __func__, i, -mob_id); continue; + } - memcpy(&mob->db_data[i]->skill[j], ms, sizeof(struct mob_skill)); - mob->db_data[i]->maxskill = j + 1; + memcpy(&mob->db_data[i]->skill[idx], ms, sizeof(struct mob_skill)); + mob->db_data[i]->maxskill = idx + 1; } - } else { //Skill set on a single mob. - mob->db_data[mob_id]->maxskill = idx + 1; } return true; } - /*========================================== * mob_skill_db.txt reading *------------------------------------------*/ @@ -6059,7 +6159,7 @@ void mob_defaults(void) mob->getmasterhpltmaxrate = mob_getmasterhpltmaxrate; mob->getfriendstatus_sub = mob_getfriendstatus_sub; mob->getfriendstatus = mob_getfriendstatus; - mob->skill_use = mobskill_use; + mob->skill_use = mob_skill_use; mob->skill_event = mobskill_event; mob->is_clone = mob_is_clone; mob->clone_spawn = mob_clone_spawn; diff --git a/src/map/mob.h b/src/map/mob.h index 8839809f2..59b288fcc 100644 --- a/src/map/mob.h +++ b/src/map/mob.h @@ -35,7 +35,7 @@ struct hplugin_data_store; // Change this to increase the table size in your mob_db to accommodate a larger mob database. // Be sure to note that IDs 4001 to 4048 are reserved for advanced/baby/expanded classes. // Notice that the last 1000 entries are used for player clones, so always set this to desired value +1000 -#define MAX_MOB_DB 5000 +#define MAX_MOB_DB 22000 //The number of drops all mobs have and the max drop-slot that the steal skill will attempt to steal from. #define MAX_MOB_DROP 10 @@ -321,6 +321,14 @@ enum { MSC_MASTERATTACKED, MSC_ALCHEMIST, MSC_SPAWN, + MSC_MAGICATTACKED, +}; + +/** Special monster(-name) constants used to assign skills to a group of monsters. **/ +enum mob_group { + ALL_MOBS_NONBOSS = -1, + ALL_MOBS_BOSS = -2, + ALL_MOBS = -3, }; /** @@ -566,7 +574,7 @@ struct mob_interface { struct block_list* (*getfriendhprate) (struct mob_data *md, int min_rate, int max_rate); struct block_list* (*getmasterhpltmaxrate) (struct mob_data *md, int rate); int (*getfriendstatus_sub) (struct block_list *bl, va_list ap); - struct mob_data* (*getfriendstatus) (struct mob_data *md, int cond1, int cond2); + struct block_list *(*getfriendstatus) (struct mob_data *md, int cond1, int cond2); int (*skill_use) (struct mob_data *md, int64 tick, int event); int (*skill_event) (struct mob_data *md, struct block_list *src, int64 tick, int flag); int (*is_clone) (int class_); diff --git a/src/map/npc.c b/src/map/npc.c index e66888a74..7a3fa9c3f 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -389,7 +389,10 @@ static int npc_event_export(struct npc_data *nd, int i) Assert_ret(i >= 0 && i < nd->u.scr.label_list_num); lname = nd->u.scr.label_list[i].name; pos = nd->u.scr.label_list[i].pos; - if ((lname[0] == 'O' || lname[0] == 'o') && (lname[1] == 'N' || lname[1] == 'n')) { + + if ((nd->u.scr.label_list[i].flags & LABEL_IS_EXTERN) != 0 + && ((nd->u.scr.label_list[i].flags & LABEL_IS_USERFUNC) == 0 + || script->config.functions_as_events)) { struct event_data *ev; struct linkdb_node **label_linkdb = NULL; char buf[EVENT_NAME_LENGTH]; @@ -1799,6 +1802,7 @@ static void npc_expanded_barter_fromsql(void) ) { SqlStmt_ShowDebug(stmt); SQL->StmtFree(stmt); + StrBuf->Destroy(&buf); return; } @@ -2711,43 +2715,47 @@ static int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_l char card_slot[NAME_LENGTH]; char opt_index_str[NAME_LENGTH]; char opt_value_str[NAME_LENGTH]; - int i, j; + char opt_param_str[NAME_LENGTH]; + int i = 0; + int j = 0; int key_nameid = 0; int key_amount = 0; int key_refine = 0; - int key_attribute = 0; + int key_attribute = ATTR_NONE; int key_identify = 0; int key_card[MAX_SLOTS]; int key_opt_idx[MAX_ITEM_OPTIONS]; int key_opt_value[MAX_ITEM_OPTIONS]; + int key_opt_param[MAX_ITEM_OPTIONS]; nullpo_ret(sd); nullpo_ret(item_list); nullpo_ret(nd); // discard old contents - script->cleararray_pc(sd, "@sold_nameid", (void*)0); - script->cleararray_pc(sd, "@sold_quantity", (void*)0); - script->cleararray_pc(sd, "@sold_refine", (void*)0); - script->cleararray_pc(sd, "@sold_attribute", (void*)0); - script->cleararray_pc(sd, "@sold_identify", (void*)0); - - for( j = 0; j < MAX_SLOTS; j++ ) - {// clear each of the card slot entries + script->cleararray_pc(sd, "@sold_nameid", (void *)0); + script->cleararray_pc(sd, "@sold_quantity", (void *)0); + script->cleararray_pc(sd, "@sold_refine", (void *)0); + script->cleararray_pc(sd, "@sold_attribute", (void *)0); + script->cleararray_pc(sd, "@sold_identify", (void *)0); + + for (j = 0; j < MAX_SLOTS; j++) { // clear each of the card slot entries key_card[j] = 0; snprintf(card_slot, sizeof(card_slot), "@sold_card%d", j + 1); - script->cleararray_pc(sd, card_slot, (void*)0); + script->cleararray_pc(sd, card_slot, (void *)0); } for (j = 0; j < MAX_ITEM_OPTIONS; j++) { // Clear Each item option entry key_opt_idx[j] = 0; key_opt_value[j] = 0; + key_opt_param[j] = 0; - snprintf(opt_index_str, sizeof(opt_index_str), "@slot_opt_idx%d", j + 1); - script->cleararray_pc(sd, opt_index_str, (void*)0); - - snprintf(opt_value_str, sizeof(opt_value_str), "@slot_opt_val%d", j + 1); - script->cleararray_pc(sd, opt_value_str, (void*)0); + snprintf(opt_index_str, sizeof(opt_index_str), "@sold_opt_idx%d", j + 1); + script->cleararray_pc(sd, opt_index_str, (void *)0); + snprintf(opt_value_str, sizeof(opt_value_str), "@sold_opt_val%d", j + 1); + script->cleararray_pc(sd, opt_value_str, (void *)0); + snprintf(opt_param_str, sizeof(opt_param_str), "@sold_opt_param%d", j + 1); + script->cleararray_pc(sd, opt_param_str, (void *)0); } // save list of to be sold items @@ -2760,32 +2768,31 @@ static int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_l intptr_t attribute = item->attribute; intptr_t identify = item->identify; - script->setarray_pc(sd, "@sold_nameid", i, (void*)nameid, &key_nameid); - script->setarray_pc(sd, "@sold_quantity", i, (void*)amount, &key_amount); - // process item based information into the arrays - script->setarray_pc(sd, "@sold_refine", i, (void*)refine, &key_refine); - script->setarray_pc(sd, "@sold_attribute", i, (void*)attribute, &key_attribute); - script->setarray_pc(sd, "@sold_identify", i, (void*)identify, &key_identify); + script->setarray_pc(sd, "@sold_nameid", i, (void *)nameid, &key_nameid); + script->setarray_pc(sd, "@sold_quantity", i, (void *)amount, &key_amount); + script->setarray_pc(sd, "@sold_refine", i, (void *)refine, &key_refine); + script->setarray_pc(sd, "@sold_attribute", i, (void *)attribute, &key_attribute); + script->setarray_pc(sd, "@sold_identify", i, (void *)identify, &key_identify); for (j = 0; j < MAX_SLOTS; j++) { intptr_t card = item->card[j]; - // store each of the cards/special info from the item in the array snprintf(card_slot, sizeof(card_slot), "@sold_card%d", j + 1); - script->setarray_pc(sd, card_slot, i, (void*)card, &key_card[j]); + script->setarray_pc(sd, card_slot, i, (void *)card, &key_card[j]); } for (j = 0; j < MAX_ITEM_OPTIONS; j++) { intptr_t opt_idx = item->option[j].index; intptr_t opt_value = item->option[j].value; + intptr_t opt_param = item->option[j].param; - snprintf(opt_index_str, sizeof(opt_index_str), "@slot_opt_idx%d", j + 1); - script->setarray_pc(sd, opt_index_str, i, (void*)opt_idx, &key_opt_idx[j]); - - snprintf(opt_value_str, sizeof(opt_value_str), "@slot_opt_val%d", j + 1); - script->setarray_pc(sd, opt_value_str, i, (void*)opt_value, &key_opt_value[j]); + snprintf(opt_index_str, sizeof(opt_index_str), "@sold_opt_idx%d", j + 1); + script->setarray_pc(sd, opt_index_str, i, (void *)opt_idx, &key_opt_idx[j]); + snprintf(opt_value_str, sizeof(opt_value_str), "@sold_opt_val%d", j + 1); + script->setarray_pc(sd, opt_value_str, i, (void *)opt_value, &key_opt_value[j]); + snprintf(opt_param_str, sizeof(opt_param_str), "@sold_opt_param%d", j + 1); + script->setarray_pc(sd, opt_param_str, i, (void *)opt_param, &key_opt_param[j]); } - } // invoke event @@ -2794,104 +2801,102 @@ static int npc_selllist_sub(struct map_session_data *sd, struct itemlist *item_l return 0; } -/// Player item selling to npc shop. -/// -/// @param item_list 'n' pairs <index,amount> -/// @return result code for clif->parse_NpcSellListSend +/** + * Processes a character's request to sell items to a NPC shop. + * + * @param sd The character who wants to sell the items. + * @param item_list The list of items and respective amounts which should be sold. + * @return 1 on failure, 0 on success. + * + **/ static int npc_selllist(struct map_session_data *sd, struct itemlist *item_list) { - int64 z; - int i,skill_t, skill_idx = skill->get_index(MC_OVERCHARGE); - struct npc_data *nd; - bool duplicates[MAX_INVENTORY] = { 0 }; - nullpo_retr(1, sd); nullpo_retr(1, item_list); - if( ( nd = npc->checknear(sd, map->id2bl(sd->npc_shopid)) ) == NULL ) { + struct npc_data *nd = npc->checknear(sd, map->id2bl(sd->npc_shopid)); + + if (nd == NULL) return 1; - } - if( nd->subtype != SHOP ) { - if (!(nd->subtype == SCRIPT && nd->u.scr.shop && (nd->u.scr.shop->type == NST_ZENY || nd->u.scr.shop->type == NST_MARKET))) + if (nd->subtype != SHOP) { + if (nd->subtype != SCRIPT || nd->u.scr.shop == NULL || (nd->u.scr.shop->type != NST_ZENY && nd->u.scr.shop->type != NST_MARKET)) return 1; } - z = 0; - if (sd->status.zeny >= MAX_ZENY && nd->master_nd == NULL) return 1; - // verify the sell list - for (i = 0; i < VECTOR_LENGTH(*item_list); i++) { + bool duplicates[MAX_INVENTORY] = { false }; + int64 z = 0; + + // Verify the sell list. + for (int i = 0; i < VECTOR_LENGTH(*item_list); i++) { struct itemlist_entry *entry = &VECTOR_INDEX(*item_list, i); - int nameid, value, idx = entry->id; + int idx = entry->id; - if (idx >= sd->status.inventorySize || idx < 0 || entry->amount < 0) { + if (idx >= sd->status.inventorySize || idx < 0 || entry->amount < 0) return 1; - } - if (duplicates[idx]) { - // Sanity check. The client sends each inventory index at most once [Haru] + if (duplicates[idx]) // Sanity check. The client sends each inventory index at most once. [Haru] return 1; - } + duplicates[idx] = true; - nameid = sd->status.inventory[idx].nameid; + int nameid = sd->status.inventory[idx].nameid; - if (!nameid || !sd->inventory_data[idx] || sd->status.inventory[idx].amount < entry->amount) { + if (nameid == 0 || sd->inventory_data[idx] == NULL || sd->status.inventory[idx].amount < entry->amount) return 1; - } - if (nd->master_nd) { - // Script-controlled shops decide by themselves, what can be sold and at what price. + if (nd->master_nd != NULL) // Script-controlled shops decide by themselves, what can be sold and at what price. continue; - } - value = pc->modifysellvalue(sd, sd->inventory_data[idx]->value_sell); + int value = pc->modifysellvalue(sd, sd->inventory_data[idx]->value_sell); z += (int64)value * entry->amount; } - if( nd->master_nd ) { // Script-controlled shops + if (nd->master_nd != NULL) // Script-controlled shops. return npc->selllist_sub(sd, item_list, nd->master_nd); - } - // delete items - for (i = 0; i < VECTOR_LENGTH(*item_list); i++) { + if (z + sd->status.zeny > MAX_ZENY) + return 1; + + // Delete items. + for (int i = 0; i < VECTOR_LENGTH(*item_list); i++) { struct itemlist_entry *entry = &VECTOR_INDEX(*item_list, i); int idx = entry->id; if (sd->inventory_data[idx]->type == IT_PETEGG && sd->status.inventory[idx].card[0] == CARD0_PET) { - if (pet->search_petDB_index(sd->status.inventory[idx].nameid, PET_EGG) >= 0) { + if (pet->search_petDB_index(sd->status.inventory[idx].nameid, PET_EGG) >= 0) intif->delete_petdata(MakeDWord(sd->status.inventory[idx].card[1], sd->status.inventory[idx].card[2])); - } } - // Achievements [Smokexyz/Hercules] + // Achievements. [Smokexyz/Hercules] achievement->validate_item_sell(sd, sd->status.inventory[idx].nameid, entry->amount); pc->delitem(sd, idx, entry->amount, 0, DELITEM_SOLD, LOG_TYPE_NPC); - } - if (z + sd->status.zeny > MAX_ZENY && nd->master_nd == NULL) - return 1; - if (z > MAX_ZENY) z = MAX_ZENY; pc->getzeny(sd, (int)z, LOG_TYPE_NPC, NULL); - // custom merchant shop exp bonus - if( battle_config.shop_exp > 0 && z > 0 && ( skill_t = pc->checkskill2(sd,skill_idx) ) > 0) { - if( sd->status.skill[skill_idx].flag >= SKILL_FLAG_REPLACED_LV_0 ) + int skill_t; + int skill_idx = skill->get_index(MC_OVERCHARGE); + + // Custom merchant shop exp bonus. + if (battle_config.shop_exp > 0 && z > 0 && (skill_t = pc->checkskill2(sd, skill_idx)) > 0) { + if (sd->status.skill[skill_idx].flag >= SKILL_FLAG_REPLACED_LV_0) skill_t = sd->status.skill[skill_idx].flag - SKILL_FLAG_REPLACED_LV_0; - if( skill_t > 0 ) { + if (skill_t > 0) { z = apply_percentrate64(z, skill_t * battle_config.shop_exp, 10000); + if (z < 1) z = 1; + pc->gainexp(sd, NULL, 0, (int)z, false); } } @@ -3053,11 +3058,11 @@ static int npc_unload(struct npc_data *nd, bool single, bool unload_mobs) aFree(nd->u.shop.shop_item); /// src check for duplicate shops. [Orcao] } else if (nd->subtype == SCRIPT) { char evname[EVENT_NAME_LENGTH]; - + snprintf(evname, ARRAYLENGTH(evname), "%s::OnNPCUnload", nd->exname); struct event_data *ev = strdb_get(npc->ev_db, evname); - + if (ev != NULL) script->run_npc(nd->u.scr.script, ev->pos, 0, nd->bl.id); /// Run OnNPCUnload. @@ -3391,7 +3396,7 @@ static bool npc_viewisid(const char *viewid) * @param class_ The NPC view class. * @return A pointer to the created NPC data (ownership passed to the caller). */ -static struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, uint8 dir, int class_) +static struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, enum unit_dir dir, int class_) { struct npc_data *nd; @@ -3664,6 +3669,7 @@ static void npc_convertlabel_db(struct npc_label_list *label_list, const char *f for( i = 0; i < script->label_count; i++ ) { const char* lname = script->get_str(script->labels[i].key); int lpos = script->labels[i].pos; + enum script_label_flags flags = script->labels[i].flags; struct npc_label_list* label; const char *p; size_t len; @@ -3685,6 +3691,7 @@ static void npc_convertlabel_db(struct npc_label_list *label_list, const char *f safestrncpy(label->name, lname, sizeof(label->name)); label->pos = lpos; + label->flags = flags; } } @@ -5098,7 +5105,7 @@ static const char *npc_parse_mapflag(const char *w1, const char *w2, const char else if (modifier[0] == '\0') { ShowWarning("npc_parse_mapflag: Missing 5th param for 'adjust_unit_duration' flag! removing flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer)); if (retval) *retval = EXIT_FAILURE; - } else if( !( skill_id = skill->name2id(skill_name) ) || !skill->get_unit_id( skill->name2id(skill_name), 0) ) { + } else if ((skill_id = skill->name2id(skill_name)) == 0 || skill->get_unit_id(skill->name2id(skill_name), 1, 0) == 0) { ShowWarning("npc_parse_mapflag: Unknown skill (%s) for 'adjust_unit_duration' flag! removing flag from %s in file '%s', line '%d'.\n",skill_name, map->list[m].name, filepath, strline(buffer,start-buffer)); if (retval) *retval = EXIT_FAILURE; } else if ( atoi(modifier) < 1 || atoi(modifier) > USHRT_MAX ) { @@ -5235,6 +5242,8 @@ static const char *npc_parse_mapflag(const char *w1, const char *w2, const char map->list[m].flag.nostorage = (state) ? cap_value(atoi(w4), 1, 3) : 0; } else if (!strcmpi(w3, "nogstorage")) { map->list[m].flag.nogstorage = (state) ? cap_value(atoi(w4), 1, 3) : 0; + } else if (strcmpi(w3, "nopet") == 0) { + map->list[m].flag.nopet = (state != 0) ? 1 : 0; } else { npc->parse_unknown_mapflag(mapname, w3, w4, start, buffer, filepath, retval); } @@ -5605,7 +5614,7 @@ static int npc_reload(void) npc->npc_last_npd = NULL; npc->npc_last_path = NULL; npc->npc_last_ref = NULL; - + const int npc_new_min = npc->npc_id; struct s_mapiterator *iter = mapit_geteachiddb(); @@ -5722,8 +5731,10 @@ static bool npc_unloadfile(const char *filepath, bool unload_mobs) dbi_destroy(iter); - if (found) /// Refresh event cache. + if (found) { /// Refresh event cache. + npc->motd = npc->name2id("HerculesMOTD"); npc->read_event_script(); + } return found; } diff --git a/src/map/npc.h b/src/map/npc.h index 65c9796d9..16d7a984b 100644 --- a/src/map/npc.h +++ b/src/map/npc.h @@ -56,9 +56,15 @@ enum npc_shop_types { struct npc_timerevent_list { int timer,pos; }; + +/** list of labels within a NPC (used internally by the label db) */ struct npc_label_list { + /** label name */ char name[NAME_LENGTH]; + /** start point within the script */ int pos; + /** optional label flags */ + enum script_label_flags flags; }; struct npc_barter_currency { @@ -95,7 +101,7 @@ struct npc_data { int chat_id; int touching_id; int64 next_walktime; - uint8 dir; + enum unit_dir dir; uint8 area_size; int clan_id; @@ -281,7 +287,7 @@ struct npc_interface { void (*parsename) (struct npc_data *nd, const char *name, const char *start, const char *buffer, const char *filepath); int (*parseview) (const char *w4, const char *start, const char *buffer, const char *filepath); bool (*viewisid) (const char *viewid); - struct npc_data *(*create_npc) (enum npc_subtype subtype, int m, int x, int y, uint8 dir, int class_); + struct npc_data *(*create_npc) (enum npc_subtype subtype, int m, int x, int y, enum unit_dir dir, int class_); struct npc_data* (*add_warp) (char *name, short from_mapid, short from_x, short from_y, short xs, short ys, unsigned short to_mapindex, short to_x, short to_y); const char *(*parse_warp) (const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval); const char *(*parse_shop) (const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval); diff --git a/src/map/npc_chat.c b/src/map/npc_chat.c index 0ca84cff4..0df323e96 100644 --- a/src/map/npc_chat.c +++ b/src/map/npc_chat.c @@ -394,7 +394,8 @@ static int npc_chat_sub(struct block_list *bl, va_list ap) // save out the matched strings for (i = 0; i < r; i++) { - char var[15], val[255]; + char var[SCRIPT_VARNAME_LENGTH + 1]; + char val[SCRIPT_STRING_VAR_LENGTH + 1]; snprintf(var, sizeof(var), "$@p%i$", i); libpcre->copy_substring(msg, offsets, r, i, val, sizeof(val)); script->set_var(sd, var, val); diff --git a/src/map/packets.h b/src/map/packets.h index 1e6dc71bc..e30acbdf7 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -1824,6 +1824,11 @@ packet(0x96e,clif->ackmergeitems); packet(0x0aa4, clif->pRefineryUIClose); #endif +#if PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO) + packet(0x0ab5, clif->pLapineUpgrade_close); + packet(0x0ab6, clif->pLapineUpgrade_makeItem); +#endif + // 2017-02-28aRagexeRE #if PACKETVER >= 20170228 // new packets diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h index a72d9bf5f..ef8d39fb7 100644 --- a/src/map/packets_keys_main.h +++ b/src/map/packets_keys_main.h @@ -2,8 +2,8 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2020 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2013-2020 Hercules Dev Team + * Copyright (C) 2018-2020 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,7 +37,7 @@ packetKeys(0x49357d72,0x22c370a1,0x5f836591); #endif -// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE, 2019-09-25aRagexe, 2019-09-25aRagexeRE, 2019-09-25bRagexe, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexe, 2019-10-16fRagexeRE, 2019-10-16gRagexe, 2019-10-16gRagexeRE, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-06bRagexeRE, 2019-11-07aRagexe, 2019-11-07aRagexeRE, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-13eRagexeRE, 2019-11-20aRagexe, 2019-11-20cRagexeRE, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27aRagexeRE, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04aRagexeRE, 2019-12-04bRagexe, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11aRagexe, 2019-12-11fRagexeRE, 2019-12-18bRagexe, 2019-12-18bRagexeRE, 2019-12-24aRagexe, 2019-12-24aRagexeRE, 2019-12-24bRagexe, 2019-12-24bRagexeRE, 2020-01-08aRagexe, 2020-01-08bRagexeRE, 2020-01-22cRagexe, 2020-01-22cRagexeRE, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-05aRagexeRE, 2020-02-06aRagexe +// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE, 2019-09-25aRagexe, 2019-09-25aRagexeRE, 2019-09-25bRagexe, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexe, 2019-10-16fRagexeRE, 2019-10-16gRagexe, 2019-10-16gRagexeRE, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-06bRagexeRE, 2019-11-07aRagexe, 2019-11-07aRagexeRE, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-13eRagexeRE, 2019-11-20aRagexe, 2019-11-20cRagexeRE, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27aRagexeRE, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04aRagexeRE, 2019-12-04bRagexe, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11aRagexe, 2019-12-11fRagexeRE, 2019-12-18bRagexe, 2019-12-18bRagexeRE, 2019-12-24aRagexe, 2019-12-24aRagexeRE, 2019-12-24bRagexe, 2019-12-24bRagexeRE, 2020-01-08aRagexe, 2020-01-08bRagexeRE, 2020-01-22cRagexe, 2020-01-22cRagexeRE, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-05aRagexeRE, 2020-02-06aRagexe, 2020-02-12aRagexe, 2020-02-12aRagexeRE, 2020-02-19dRagexe, 2020-02-19eRagexeRE, 2020-03-04aRagexe, 2020-03-04aRagexeRE, 2020-03-18bRagexe, 2020-04-01bRagexe, 2020-04-14_6aRagexe, 2020-04-14eRagexe, 2020-05-06aRagexe, 2020-05-20bRagexe, 2020-06-03aRagexe, 2020-06-17aRagexe, 2020-07-01bRagexe, 2020-07-01cRagexe, 2020-07-09_sakaRagexeRE, 2020-07-15bRagexe #if PACKETVER == 20101123 || \ PACKETVER == 20101124 || \ PACKETVER == 20101125 || \ @@ -186,7 +186,20 @@ PACKETVER == 20200129 || \ PACKETVER == 20200130 || \ PACKETVER == 20200205 || \ - PACKETVER >= 20200206 + PACKETVER == 20200206 || \ + PACKETVER == 20200212 || \ + PACKETVER == 20200219 || \ + PACKETVER == 20200304 || \ + PACKETVER == 20200318 || \ + PACKETVER == 20200401 || \ + PACKETVER == 20200414 || \ + PACKETVER == 20200506 || \ + PACKETVER == 20200520 || \ + PACKETVER == 20200603 || \ + PACKETVER == 20200617 || \ + PACKETVER == 20200701 || \ + PACKETVER == 20200709 || \ + PACKETVER >= 20200715 packetKeys(0x00000000,0x00000000,0x00000000); #endif diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h index 90d226c92..1aa370b56 100644 --- a/src/map/packets_keys_zero.h +++ b/src/map/packets_keys_zero.h @@ -2,8 +2,8 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2020 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2013-2020 Hercules Dev Team + * Copyright (C) 2018-2020 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ /* This file is autogenerated, please do not commit manual changes */ -// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero +// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero, 2020-02-12aRagexe_zero, 2020-02-26aRagexe_zero, 2020-02-26bRagexe_zero, 2020-03-04aRagexe_zero, 2020-03-18_2aRagexe_zero, 2020-04-01_2aRagexe_zero, 2020-04-14bRagexe_zero, 2020-05-06aRagexe_zero, 2020-05-20_5aRagexe_zero, 2020-06-03_2aRagexe_zero, 2020-06-17aRagexe_zero, 2020-07-01_2aRagexe_zero, 2020-07-01aRagexe_zero #if PACKETVER == 20171018 || \ PACKETVER == 20171019 || \ PACKETVER == 20171023 || \ @@ -105,7 +105,18 @@ PACKETVER == 20191211 || \ PACKETVER == 20191224 || \ PACKETVER == 20200115 || \ - PACKETVER >= 20200129 + PACKETVER == 20200129 || \ + PACKETVER == 20200212 || \ + PACKETVER == 20200226 || \ + PACKETVER == 20200304 || \ + PACKETVER == 20200318 || \ + PACKETVER == 20200401 || \ + PACKETVER == 20200414 || \ + PACKETVER == 20200506 || \ + PACKETVER == 20200520 || \ + PACKETVER == 20200603 || \ + PACKETVER == 20200617 || \ + PACKETVER >= 20200701 packetKeys(0x00000000,0x00000000,0x00000000); #endif diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h index 2d7f1d6ec..fc28a12a9 100644 --- a/src/map/packets_shuffle_main.h +++ b/src/map/packets_shuffle_main.h @@ -2,8 +2,8 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2020 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2013-2020 Hercules Dev Team + * Copyright (C) 2018-2020 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,3312 +40,3312 @@ // 2012-07-10aRagexe, 2012-07-12aRagexe #if PACKETVER == 20120710 || \ PACKETVER == 20120712 - packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0362,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0367,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0877,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0878,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a6,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0936,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0956,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x0202,clif->pSolveCharName,2); + packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); + packet(0x0362,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0365,clif->pFriendsListAdd,2); + packet(0x0367,clif->pMoveToKafra,2,4); + packet(0x0436,clif->pActionRequest,2,6); + packet(0x07e4,clif->pTickSend,2); + packet(0x0811,clif->pReqClickBuyingStore,2); + packet(0x085b,clif->pUseSkillToId,2,4,6); + packet(0x0877,clif->pGetCharNameRequest,2); + packet(0x0878,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x087f,clif->pWalkToXY,2); + packet(0x088d,clif->pChangeDir,2,4); + packet(0x0893,clif->pStoragePassword,0); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0899,clif->pTakeItem,2); + packet(0x08a3,clif->pDropItem,2,4); + packet(0x08a6,clif->pItemListWindowSelected,2,4,8); + packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); + packet(0x08aa,clif->pMoveFromKafra,2,4); + packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0936,clif->pDull/*,XXX*/); + packet(0x0948,clif->pReqCloseBuyingStore,0); + packet(0x094b,clif->pHomMenu,2,4); + packet(0x094e,clif->pPartyInvite2,2); + packet(0x0953,clif->pDull/*,XXX*/); + packet(0x0956,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0958,clif->pSearchStoreInfoNextPage,0); + packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2012-07-16aRagexe #if PACKETVER == 20120716 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x089f,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-07-24aRagexe #if PACKETVER == 20120724 - packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0815,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0835,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0865,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0872,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0935,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0938,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0965,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 + packet(0x035f,clif->pDull/*,XXX*/); + packet(0x0364,clif->pReqClickBuyingStore,2); + packet(0x0815,clif->pItemListWindowSelected,2,4,8); + packet(0x0835,clif->pPartyInvite2,2); + packet(0x0865,clif->pReqCloseBuyingStore,0); + packet(0x0866,clif->pDull/*,XXX*/); + packet(0x0872,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087c,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0887,clif->pChangeDir,2,4); + packet(0x0888,clif->pHomMenu,2,4); + packet(0x088e,clif->pUseSkillToId,2,4,6); + packet(0x08a1,clif->pGetCharNameRequest,2); + packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); + packet(0x08ab,clif->pTakeItem,2); + packet(0x091c,clif->pWalkToXY,2); + packet(0x091f,clif->pTickSend,2); + packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0935,clif->pSearchStoreInfoNextPage,0); + packet(0x0938,clif->pUseSkillToPos,2,4,6,8); + packet(0x093c,clif->pMoveToKafra,2,4); + packet(0x0945,clif->pActionRequest,2,6); + packet(0x0957,clif->pStoragePassword,0); + packet(0x0959,clif->pFriendsListAdd,2); + packet(0x0963,clif->pDropItem,2,4); + packet(0x0965,clif->pSolveCharName,2); + packet(0x0966,clif->pMoveFromKafra,2,4); #endif // 2012-08-01aRagexe, 2012-08-01bRagexe #if PACKETVER == 20120801 - packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0438,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a2,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0934,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x093c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0946,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0438,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x085d,clif->pSolveCharName,2); + packet(0x086a,clif->pItemListWindowSelected,2,4,8); + packet(0x086b,clif->pGetCharNameRequest,2); + packet(0x086f,clif->pReqCloseBuyingStore,0); + packet(0x0873,clif->pUseSkillToId,2,4,6); + packet(0x0875,clif->pTakeItem,2); + packet(0x087b,clif->pSearchStoreInfoNextPage,0); + packet(0x088b,clif->pHomMenu,2,4); + packet(0x0890,clif->pActionRequest,2,6); + packet(0x0895,clif->pWantToConnection,2,6,10,14,18); + packet(0x089c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089d,clif->pDropItem,2,4); + packet(0x089f,clif->pWalkToXY,2); + packet(0x08a2,clif->pFriendsListAdd,2); + packet(0x08aa,clif->pChangeDir,2,4); + packet(0x08ab,clif->pMoveFromKafra,2,4); + packet(0x0917,clif->pStoragePassword,0); + packet(0x091d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092a,clif->pDull/*,XXX*/); + packet(0x092e,clif->pReqClickBuyingStore,2); + packet(0x0930,clif->pTickSend,2); + packet(0x0934,clif->pUseSkillToPos,2,4,6,8); + packet(0x093c,clif->pPartyInvite2,2); + packet(0x0941,clif->pMoveToKafra,2,4); + packet(0x0946,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2012-08-08aRagexe, 2012-08-08bRagexe, 2012-08-08cRagexe #if PACKETVER == 20120808 - packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x093d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pWantToConnection,2,6,10,14,18); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pFriendsListAdd,2); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085f,clif->pStoragePassword,0); + packet(0x088f,clif->pChangeDir,2,4); + packet(0x093d,clif->pHomMenu,2,4); + packet(0x0940,clif->pUseSkillToPos,2,4,6,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-08-14aRagexe, 2012-08-14bRagexe #if PACKETVER == 20120814 - packet(0x0281,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0365,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x07ec,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0815,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0861,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0865,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0875,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0882,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x088d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0895,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0920,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0929,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0941,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0969,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x0281,clif->pHomMenu,2,4); + packet(0x0361,clif->pItemListWindowSelected,2,4,8); + packet(0x0365,clif->pSolveCharName,2); + packet(0x0366,clif->pSearchStoreInfoNextPage,0); + packet(0x0438,clif->pTickSend,2); + packet(0x07ec,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0815,clif->pDropItem,2,4); + packet(0x0838,clif->pReqCloseBuyingStore,0); + packet(0x085e,clif->pMoveToKafra,2,4); + packet(0x0861,clif->pReqClickBuyingStore,2); + packet(0x0862,clif->pTakeItem,2); + packet(0x0865,clif->pMoveFromKafra,2,4); + packet(0x0868,clif->pActionRequest,2,6); + packet(0x086f,clif->pStoragePassword,0); + packet(0x0875,clif->pWalkToXY,2); + packet(0x087f,clif->pPartyInvite2,2); + packet(0x0882,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x088b,clif->pFriendsListAdd,2); + packet(0x088d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0895,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a8,clif->pDull/*,XXX*/); + packet(0x091f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0920,clif->pGetCharNameRequest,2); + packet(0x0929,clif->pDull/*,XXX*/); + packet(0x0932,clif->pUseSkillToPos,2,4,6,8); + packet(0x0934,clif->pUseSkillToId,2,4,6); + packet(0x0941,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0969,clif->pChangeDir,2,4); #endif // 2012-08-22aRagexe, 2012-08-22bRagexe, 2012-08-22cRagexe #if PACKETVER == 20120822 - packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x085d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a5,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ab,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0917,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0927,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0935,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0943,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0953,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0955,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0958,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 + packet(0x0365,clif->pFriendsListAdd,2); + packet(0x0437,clif->pTakeItem,2); + packet(0x085a,clif->pWalkToXY,2); + packet(0x085c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x085d,clif->pUseSkillToId,2,4,6); + packet(0x086b,clif->pSolveCharName,2); + packet(0x086e,clif->pChangeDir,2,4); + packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x087d,clif->pTickSend,2); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x088a,clif->pMoveToKafra,2,4); + packet(0x0899,clif->pPartyInvite2,2); + packet(0x089f,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a5,clif->pDull/*,XXX*/); + packet(0x08ab,clif->pActionRequest,2,6); + packet(0x0917,clif->pItemListWindowSelected,2,4,8); + packet(0x0924,clif->pSearchStoreInfoNextPage,0); + packet(0x0927,clif->pGetCharNameRequest,2); + packet(0x0935,clif->pHomMenu,2,4); + packet(0x0937,clif->pUseSkillToPos,2,4,6,8); + packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0943,clif->pMoveFromKafra,2,4); + packet(0x094d,clif->pStoragePassword,0); + packet(0x094e,clif->pDropItem,2,4); + packet(0x0953,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0955,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0958,clif->pReqCloseBuyingStore,0); + packet(0x095b,clif->pReqClickBuyingStore,2); #endif // 2012-08-30aRagexe #if PACKETVER == 20120830 - packet(0x022d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0838,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0926,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0364,clif->pSearchStoreInfoNextPage,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pPartyInvite2,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0802,clif->pStoragePassword,0); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pMoveToKafra,2,4); + packet(0x0838,clif->pHomMenu,2,4); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0861,clif->pWantToConnection,2,6,10,14,18); + packet(0x0872,clif->pFriendsListAdd,2); + packet(0x0887,clif->pUseSkillToPos,2,4,6,8); + packet(0x0888,clif->pDull/*,XXX*/); + packet(0x0890,clif->pDull/*,XXX*/); + packet(0x091d,clif->pItemListWindowSelected,2,4,8); + packet(0x0926,clif->pMoveFromKafra,2,4); + packet(0x0934,clif->pChangeDir,2,4); + packet(0x0945,clif->pDropItem,2,4); + packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0964,clif->pTakeItem,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-09-05aRagexe #if PACKETVER == 20120905 - packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0895,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a0,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0918,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0927,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x093c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0944,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0945,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0950,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0959,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x022d,clif->pMoveToKafra,2,4); + packet(0x0365,clif->pDull/*,XXX*/); + packet(0x0817,clif->pStoragePassword,0); + packet(0x085a,clif->pSearchStoreInfoNextPage,0); + packet(0x085d,clif->pUseSkillToPos,2,4,6,8); + packet(0x086f,clif->pSolveCharName,2); + packet(0x0876,clif->pHomMenu,2,4); + packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0878,clif->pWalkToXY,2); + packet(0x087a,clif->pUseSkillToId,2,4,6); + packet(0x087b,clif->pTickSend,2); + packet(0x087e,clif->pMoveFromKafra,2,4); + packet(0x0887,clif->pWantToConnection,2,6,10,14,18); + packet(0x0895,clif->pChangeDir,2,4); + packet(0x0897,clif->pTakeItem,2); + packet(0x08a0,clif->pDull/*,XXX*/); + packet(0x08a6,clif->pFriendsListAdd,2); + packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0918,clif->pItemListWindowSelected,2,4,8); + packet(0x091a,clif->pGetCharNameRequest,2); + packet(0x0927,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x093c,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0944,clif->pPartyInvite2,2); + packet(0x0945,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0950,clif->pDropItem,2,4); + packet(0x0954,clif->pReqCloseBuyingStore,0); + packet(0x0959,clif->pReqClickBuyingStore,2); + packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0967,clif->pActionRequest,2,6); #endif // 2012-09-11aRagexe #if PACKETVER == 20120911 - packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0877,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a4,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0930,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0935,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0948,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0949,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0962,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x0438,clif->pTickSend,2); + packet(0x0819,clif->pMoveFromKafra,2,4); + packet(0x0868,clif->pTakeItem,2); + packet(0x086f,clif->pWalkToXY,2); + packet(0x0876,clif->pHomMenu,2,4); + packet(0x0877,clif->pPartyInvite2,2); + packet(0x0879,clif->pReqClickBuyingStore,2); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x088a,clif->pGetCharNameRequest,2); + packet(0x088f,clif->pFriendsListAdd,2); + packet(0x08a4,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a7,clif->pDropItem,2,4); + packet(0x08ad,clif->pItemListWindowSelected,2,4,8); + packet(0x0930,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0935,clif->pReqCloseBuyingStore,0); + packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0948,clif->pUseSkillToPos,2,4,6,8); + packet(0x0949,clif->pDull/*,XXX*/); + packet(0x094b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0958,clif->pUseSkillToId,2,4,6); + packet(0x0959,clif->pActionRequest,2,6); + packet(0x0962,clif->pSearchStoreInfoNextPage,0); + packet(0x0963,clif->pSolveCharName,2); + packet(0x0966,clif->pMoveToKafra,2,4); + packet(0x0968,clif->pChangeDir,2,4); + packet(0x096a,clif->pStoragePassword,0); #endif // 2012-09-19aRagexe #if PACKETVER == 20120919 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0956,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-09-25aRagexe, 2012-09-26aRagexe #if PACKETVER == 20120925 || \ PACKETVER == 20120926 - packet(0x07e4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0815,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0835,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0873,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x091c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0927,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0932,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0948,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0950,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0958,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 + packet(0x07e4,clif->pDull/*,XXX*/); + packet(0x0815,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0819,clif->pWantToConnection,2,6,10,14,18); + packet(0x0835,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0838,clif->pGetCharNameRequest,2); + packet(0x085d,clif->pHomMenu,2,4); + packet(0x0869,clif->pMoveToKafra,2,4); + packet(0x0873,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087a,clif->pDropItem,2,4); + packet(0x087e,clif->pFriendsListAdd,2); + packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088a,clif->pPartyInvite2,2); + packet(0x088d,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089d,clif->pItemListWindowSelected,2,4,8); + packet(0x08a4,clif->pActionRequest,2,6); + packet(0x091c,clif->pSearchStoreInfoNextPage,0); + packet(0x091e,clif->pReqCloseBuyingStore,0); + packet(0x0923,clif->pTakeItem,2); + packet(0x0927,clif->pReqClickBuyingStore,2); + packet(0x0932,clif->pTickSend,2); + packet(0x0942,clif->pStoragePassword,0); + packet(0x0948,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0950,clif->pWalkToXY,2); + packet(0x0956,clif->pDull/*,XXX*/); + packet(0x0957,clif->pChangeDir,2,4); + packet(0x0958,clif->pSolveCharName,2); + packet(0x095e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0963,clif->pMoveFromKafra,2,4); #endif // 2012-10-10aRagexe, 2012-10-10bRagexe #if PACKETVER == 20121010 - packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0817,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0896,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0942,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0947,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0959,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0969,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x0202,clif->pItemListWindowSelected,2,4,8); + packet(0x0817,clif->pGetCharNameRequest,2); + packet(0x085a,clif->pReqCloseBuyingStore,0); + packet(0x0869,clif->pTakeItem,2); + packet(0x086c,clif->pDull/*,XXX*/); + packet(0x0874,clif->pMoveFromKafra,2,4); + packet(0x087d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0883,clif->pWalkToXY,2); + packet(0x0888,clif->pDull/*,XXX*/); + packet(0x088f,clif->pPartyInvite2,2); + packet(0x0891,clif->pUseSkillToId,2,4,6); + packet(0x0896,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0898,clif->pStoragePassword,0); + packet(0x08a1,clif->pActionRequest,2,6); + packet(0x08a6,clif->pSolveCharName,2); + packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0934,clif->pTickSend,2); + packet(0x093c,clif->pMoveToKafra,2,4); + packet(0x0942,clif->pReqClickBuyingStore,2); + packet(0x0946,clif->pWantToConnection,2,6,10,14,18); + packet(0x0947,clif->pUseSkillToPos,2,4,6,8); + packet(0x094c,clif->pDropItem,2,4); + packet(0x0957,clif->pChangeDir,2,4); + packet(0x0958,clif->pSearchStoreInfoNextPage,0); + packet(0x0959,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095c,clif->pHomMenu,2,4); + packet(0x0964,clif->pFriendsListAdd,2); + packet(0x0969,clif->pPartyBookingRegisterReq,2,4,6); #endif // 2012-10-17aRagexe, 2012-10-17bRagexe #if PACKETVER == 20121017 - packet(0x023b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0888,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0918,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pPartyInvite2,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pMoveFromKafra,2,4); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0868,clif->pDull/*,XXX*/); + packet(0x086b,clif->pDropItem,2,4); + packet(0x0887,clif->pItemListWindowSelected,2,4,8); + packet(0x0888,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0897,clif->pMoveToKafra,2,4); + packet(0x089a,clif->pFriendsListAdd,2); + packet(0x08a6,clif->pChangeDir,2,4); + packet(0x0918,clif->pStoragePassword,0); + packet(0x0920,clif->pDull/*,XXX*/); + packet(0x0960,clif->pHomMenu,2,4); + packet(0x0962,clif->pTakeItem,2); + packet(0x0965,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-10-24aRagexe #if PACKETVER == 20121024 - packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0438,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x087e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x089c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a9,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0931,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0942,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0947,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0954,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0955,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x0436,clif->pWalkToXY,2); + packet(0x0437,clif->pUseSkillToId,2,4,6); + packet(0x0438,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0817,clif->pActionRequest,2,6); + packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x085a,clif->pMoveFromKafra,2,4); + packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0872,clif->pGetCharNameRequest,2); + packet(0x0875,clif->pDull/*,XXX*/); + packet(0x087a,clif->pMoveToKafra,2,4); + packet(0x087b,clif->pItemListWindowSelected,2,4,8); + packet(0x087e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0882,clif->pStoragePassword,0); + packet(0x0888,clif->pHomMenu,2,4); + packet(0x0889,clif->pDropItem,2,4); + packet(0x088a,clif->pReqClickBuyingStore,2); + packet(0x089c,clif->pPartyInvite2,2); + packet(0x08a9,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08aa,clif->pChangeDir,2,4); + packet(0x0931,clif->pTakeItem,2); + packet(0x0938,clif->pReqCloseBuyingStore,0); + packet(0x093a,clif->pDull/*,XXX*/); + packet(0x0942,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0947,clif->pTickSend,2); + packet(0x0954,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0955,clif->pSearchStoreInfoNextPage,0); + packet(0x095d,clif->pFriendsListAdd,2); + packet(0x095e,clif->pSolveCharName,2); + packet(0x0965,clif->pWantToConnection,2,6,10,14,18); #endif // 2012-10-31aRagexe #if PACKETVER == 20121031 - packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pTickSend,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pHomMenu,2,4); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pFriendsListAdd,2); + packet(0x0871,clif->pChangeDir,2,4); + packet(0x0877,clif->pWantToConnection,2,6,10,14,18); + packet(0x0898,clif->pStoragePassword,0); + packet(0x092b,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-11-07aRagexe #if PACKETVER == 20121107 - packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x085c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0871,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0873,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0896,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0922,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x094d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0966,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 + packet(0x0360,clif->pTakeItem,2); + packet(0x0361,clif->pStoragePassword,0); + packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x085c,clif->pItemListWindowSelected,2,4,8); + packet(0x0861,clif->pTickSend,2); + packet(0x0865,clif->pWantToConnection,2,6,10,14,18); + packet(0x086c,clif->pHomMenu,2,4); + packet(0x086d,clif->pSolveCharName,2); + packet(0x0871,clif->pSearchStoreInfoNextPage,0); + packet(0x0873,clif->pMoveToKafra,2,4); + packet(0x0878,clif->pPartyInvite2,2); + packet(0x087f,clif->pChangeDir,2,4); + packet(0x088f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0890,clif->pUseSkillToId,2,4,6); + packet(0x0891,clif->pMoveFromKafra,2,4); + packet(0x0896,clif->pReqClickBuyingStore,2); + packet(0x089a,clif->pActionRequest,2,6); + packet(0x089b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a2,clif->pReqCloseBuyingStore,0); + packet(0x08ad,clif->pGetCharNameRequest,2); + packet(0x0922,clif->pDull/*,XXX*/); + packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x094d,clif->pWalkToXY,2); + packet(0x0960,clif->pDropItem,2,4); + packet(0x0963,clif->pDull/*,XXX*/); + packet(0x0966,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x096a,clif->pFriendsListAdd,2); #endif // 2012-11-14aRagexe #if PACKETVER == 20121114 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0815,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0876,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0881,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0899,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08aa,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0930,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0935,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0938,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0944,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0949,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x095c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0965,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x0364,clif->pStoragePassword,0); + packet(0x0365,clif->pHomMenu,2,4); + packet(0x0437,clif->pDropItem,2,4); + packet(0x0815,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0838,clif->pPartyInvite2,2); + packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0876,clif->pSolveCharName,2); + packet(0x0879,clif->pGetCharNameRequest,2); + packet(0x0881,clif->pSearchStoreInfoNextPage,0); + packet(0x0898,clif->pActionRequest,2,6); + packet(0x0899,clif->pWalkToXY,2); + packet(0x08a9,clif->pTickSend,2); + packet(0x08aa,clif->pReqCloseBuyingStore,0); + packet(0x08ab,clif->pChangeDir,2,4); + packet(0x091a,clif->pMoveFromKafra,2,4); + packet(0x0930,clif->pDull/*,XXX*/); + packet(0x0935,clif->pUseSkillToId,2,4,6); + packet(0x0938,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093c,clif->pMoveToKafra,2,4); + packet(0x0941,clif->pFriendsListAdd,2); + packet(0x0944,clif->pItemListWindowSelected,2,4,8); + packet(0x0949,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x094a,clif->pUseSkillToPos,2,4,6,8); + packet(0x094b,clif->pWantToConnection,2,6,10,14,18); + packet(0x094f,clif->pReqClickBuyingStore,2); + packet(0x095c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0965,clif->pTakeItem,2); + packet(0x096a,clif->pDull/*,XXX*/); #endif // 2012-11-21aRagexe #if PACKETVER == 20121121 - packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0863,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a7,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0921,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0938,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0946,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x094d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0958,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 + packet(0x0202,clif->pUseSkillToId,2,4,6); + packet(0x0362,clif->pReqCloseBuyingStore,0); + packet(0x0437,clif->pTakeItem,2); + packet(0x0863,clif->pItemListWindowSelected,2,4,8); + packet(0x086a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086d,clif->pSolveCharName,2); + packet(0x086f,clif->pMoveFromKafra,2,4); + packet(0x0872,clif->pGetCharNameRequest,2); + packet(0x0875,clif->pMoveToKafra,2,4); + packet(0x087e,clif->pSearchStoreInfoNextPage,0); + packet(0x0880,clif->pChangeDir,2,4); + packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x089a,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x08a7,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08aa,clif->pActionRequest,2,6); + packet(0x091a,clif->pTickSend,2); + packet(0x0921,clif->pUseSkillToPos,2,4,6,8); + packet(0x0927,clif->pWantToConnection,2,6,10,14,18); + packet(0x0929,clif->pDull/*,XXX*/); + packet(0x0938,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0946,clif->pWalkToXY,2); + packet(0x094d,clif->pDull/*,XXX*/); + packet(0x0950,clif->pHomMenu,2,4); + packet(0x0952,clif->pDropItem,2,4); + packet(0x0954,clif->pStoragePassword,0); + packet(0x0957,clif->pPartyInvite2,2); + packet(0x0958,clif->pReqClickBuyingStore,2); #endif // 2012-11-28aRagexe #if PACKETVER == 20121128 - packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x07ec,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0861,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x086c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a8,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08ad,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0931,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0950,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0953,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0960,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 + packet(0x0362,clif->pWantToConnection,2,6,10,14,18); + packet(0x0363,clif->pFriendsListAdd,2); + packet(0x07ec,clif->pPartyInvite2,2); + packet(0x0802,clif->pStoragePassword,0); + packet(0x0861,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0867,clif->pTickSend,2); + packet(0x086c,clif->pUseSkillToPos,2,4,6,8); + packet(0x086e,clif->pDull/*,XXX*/); + packet(0x0872,clif->pUseSkillToId,2,4,6); + packet(0x0888,clif->pChangeDir,2,4); + packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0894,clif->pDull/*,XXX*/); + packet(0x0895,clif->pTakeItem,2); + packet(0x08a8,clif->pItemListWindowSelected,2,4,8); + packet(0x08ad,clif->pWalkToXY,2); + packet(0x091b,clif->pSolveCharName,2); + packet(0x091c,clif->pGetCharNameRequest,2); + packet(0x091e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0921,clif->pSearchStoreInfoNextPage,0); + packet(0x0922,clif->pMoveFromKafra,2,4); + packet(0x092f,clif->pReqClickBuyingStore,2); + packet(0x0931,clif->pActionRequest,2,6); + packet(0x0945,clif->pHomMenu,2,4); + packet(0x0947,clif->pReqCloseBuyingStore,0); + packet(0x0950,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0953,clif->pDropItem,2,4); + packet(0x0954,clif->pMoveToKafra,2,4); + packet(0x0960,clif->pReqTradeBuyingStore,2,4,8,12); #endif // 2012-12-05aRagexe, 2012-12-05bRagexe #if PACKETVER == 20121205 - packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0815,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0863,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0864,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0878,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0888,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x093a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0954,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0959,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0360,clif->pWalkToXY,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0815,clif->pTakeItem,2); + packet(0x0863,clif->pTickSend,2); + packet(0x0864,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x086c,clif->pItemListWindowSelected,2,4,8); + packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0873,clif->pSearchStoreInfoNextPage,0); + packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0878,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0888,clif->pStoragePassword,0); + packet(0x0889,clif->pDropItem,2,4); + packet(0x088b,clif->pDull/*,XXX*/); + packet(0x089a,clif->pFriendsListAdd,2); + packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08ad,clif->pSolveCharName,2); + packet(0x091a,clif->pReqCloseBuyingStore,0); + packet(0x091c,clif->pMoveFromKafra,2,4); + packet(0x0921,clif->pWantToConnection,2,6,10,14,18); + packet(0x093a,clif->pReqClickBuyingStore,2); + packet(0x093e,clif->pDull/*,XXX*/); + packet(0x093f,clif->pUseSkillToId,2,4,6); + packet(0x0946,clif->pUseSkillToPos,2,4,6,8); + packet(0x094b,clif->pGetCharNameRequest,2); + packet(0x0954,clif->pActionRequest,2,6); + packet(0x0959,clif->pPartyInvite2,2); + packet(0x0966,clif->pMoveToKafra,2,4); + packet(0x0968,clif->pChangeDir,2,4); #endif // 2012-12-12aRagexe, 2012-12-12bRagexe #if PACKETVER == 20121212 - packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0368,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0438,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x087d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0893,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0932,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0957,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0368,clif->pFriendsListAdd,2); + packet(0x0369,clif->pPartyInvite2,2); + packet(0x0436,clif->pSearchStoreInfoNextPage,0); + packet(0x0438,clif->pReqCloseBuyingStore,0); + packet(0x0817,clif->pUseSkillToPos,2,4,6,8); + packet(0x085c,clif->pActionRequest,2,6); + packet(0x0877,clif->pTickSend,2); + packet(0x087d,clif->pUseSkillToId,2,4,6); + packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0893,clif->pSolveCharName,2); + packet(0x0895,clif->pReqClickBuyingStore,2); + packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a7,clif->pWalkToXY,2); + packet(0x08a9,clif->pStoragePassword,0); + packet(0x08aa,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pDropItem,2,4); + packet(0x0917,clif->pMoveFromKafra,2,4); + packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0920,clif->pChangeDir,2,4); + packet(0x0932,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0947,clif->pHomMenu,2,4); + packet(0x0951,clif->pDull/*,XXX*/); + packet(0x0953,clif->pTakeItem,2); + packet(0x0957,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095b,clif->pMoveToKafra,2,4); + packet(0x0965,clif->pItemListWindowSelected,2,4,8); + packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-12-18aRagexe, 2012-12-18bRagexe #if PACKETVER == 20121218 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0872,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0957,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pUseSkillToId,2,4,6); + packet(0x0363,clif->pTakeItem,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pDropItem,2,4); + packet(0x0867,clif->pHomMenu,2,4); + packet(0x0872,clif->pDull/*,XXX*/); + packet(0x087a,clif->pChangeDir,2,4); + packet(0x087b,clif->pPartyInvite2,2); + packet(0x0886,clif->pMoveToKafra,2,4); + packet(0x0889,clif->pItemListWindowSelected,2,4,8); + packet(0x0890,clif->pDull/*,XXX*/); + packet(0x091a,clif->pMoveFromKafra,2,4); + packet(0x091c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0935,clif->pFriendsListAdd,2); + packet(0x0946,clif->pStoragePassword,0); + packet(0x0957,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-12-27aRagexe #if PACKETVER == 20121227 - packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x02c4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0860,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0870,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0886,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0896,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08aa,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0917,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0943,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0947,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 + packet(0x0202,clif->pHomMenu,2,4); + packet(0x02c4,clif->pWantToConnection,2,6,10,14,18); + packet(0x0361,clif->pStoragePassword,0); + packet(0x0368,clif->pItemListWindowSelected,2,4,8); + packet(0x0437,clif->pDropItem,2,4); + packet(0x0860,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0870,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0872,clif->pReqClickBuyingStore,2); + packet(0x087a,clif->pActionRequest,2,6); + packet(0x0886,clif->pMoveFromKafra,2,4); + packet(0x0888,clif->pTickSend,2); + packet(0x088e,clif->pChangeDir,2,4); + packet(0x0890,clif->pUseSkillToPos,2,4,6,8); + packet(0x0894,clif->pFriendsListAdd,2); + packet(0x0896,clif->pSolveCharName,2); + packet(0x08a6,clif->pTakeItem,2); + packet(0x08aa,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0917,clif->pReqCloseBuyingStore,0); + packet(0x091f,clif->pDull/*,XXX*/); + packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0932,clif->pWalkToXY,2); + packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0940,clif->pUseSkillToId,2,4,6); + packet(0x0943,clif->pSearchStoreInfoNextPage,0); + packet(0x0947,clif->pGetCharNameRequest,2); + packet(0x0953,clif->pDull/*,XXX*/); + packet(0x0958,clif->pMoveToKafra,2,4); + packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0962,clif->pPartyInvite2,2); #endif // 2013-01-03aRagexe, 2013-01-07aRagexe #if PACKETVER == 20130103 || \ PACKETVER == 20130107 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pDull/*,XXX*/); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pStoragePassword,0); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-01-09aRagexe #if PACKETVER == 20130109 - packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0368,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ac,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0918,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0928,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0931,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093e,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0955,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x0281,clif->pGetCharNameRequest,2); + packet(0x0365,clif->pDull/*,XXX*/); + packet(0x0368,clif->pUseSkillToPos,2,4,6,8); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0838,clif->pMoveFromKafra,2,4); + packet(0x0866,clif->pWalkToXY,2); + packet(0x0886,clif->pMoveToKafra,2,4); + packet(0x0888,clif->pChangeDir,2,4); + packet(0x088a,clif->pWantToConnection,2,6,10,14,18); + packet(0x088e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0892,clif->pUseSkillToId,2,4,6); + packet(0x08a2,clif->pSolveCharName,2); + packet(0x08aa,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pSearchStoreInfoNextPage,0); + packet(0x0918,clif->pFriendsListAdd,2); + packet(0x091b,clif->pDropItem,2,4); + packet(0x0922,clif->pReqClickBuyingStore,2); + packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0928,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0930,clif->pHomMenu,2,4); + packet(0x0931,clif->pItemListWindowSelected,2,4,8); + packet(0x0938,clif->pPartyInvite2,2); + packet(0x093e,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0950,clif->pStoragePassword,0); + packet(0x0951,clif->pTickSend,2); + packet(0x0955,clif->pReqCloseBuyingStore,0); + packet(0x095e,clif->pTakeItem,2); #endif // 2013-01-15bRagexe, 2013-01-16aRagexe, 2013-01-16bRagexe #if PACKETVER == 20130115 || \ PACKETVER == 20130116 - packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0817,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0861,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0895,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0918,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x092d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0939,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x0361,clif->pDull/*,XXX*/); + packet(0x07ec,clif->pDull/*,XXX*/); + packet(0x0817,clif->pWalkToXY,2); + packet(0x085e,clif->pReqCloseBuyingStore,0); + packet(0x0861,clif->pMoveFromKafra,2,4); + packet(0x0863,clif->pActionRequest,2,6); + packet(0x086b,clif->pSearchStoreInfoNextPage,0); + packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0871,clif->pFriendsListAdd,2); + packet(0x0877,clif->pReqClickBuyingStore,2); + packet(0x0879,clif->pChangeDir,2,4); + packet(0x087c,clif->pSolveCharName,2); + packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0894,clif->pHomMenu,2,4); + packet(0x0895,clif->pTickSend,2); + packet(0x08a0,clif->pPartyInvite2,2); + packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); + packet(0x08ac,clif->pMoveToKafra,2,4); + packet(0x0918,clif->pUseSkillToId,2,4,6); + packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x092d,clif->pWantToConnection,2,6,10,14,18); + packet(0x092e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0939,clif->pGetCharNameRequest,2); + packet(0x0946,clif->pItemListWindowSelected,2,4,8); + packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x094c,clif->pTakeItem,2); + packet(0x094e,clif->pDropItem,2,4); + packet(0x095a,clif->pStoragePassword,0); #endif // 2013-01-21aRagexe #if PACKETVER == 20130121 - packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0802,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x095b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pReqCloseBuyingStore,0); + packet(0x035f,clif->pDull/*,XXX*/); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pTickSend,2); + packet(0x0802,clif->pActionRequest,2,6); + packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0817,clif->pStoragePassword,0); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pDull/*,XXX*/); + packet(0x085d,clif->pHomMenu,2,4); + packet(0x086c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0874,clif->pMoveToKafra,2,4); + packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0893,clif->pFriendsListAdd,2); + packet(0x091f,clif->pTakeItem,2); + packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094f,clif->pDropItem,2,4); + packet(0x0956,clif->pChangeDir,2,4); + packet(0x095b,clif->pPartyInvite2,2); + packet(0x0963,clif->pMoveFromKafra,2,4); + packet(0x0969,clif->pItemListWindowSelected,2,4,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-01-30aRagexe #if PACKETVER == 20130130 - packet(0x035f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0368,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0437,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x086b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0886,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a0,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a9,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x091a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0956,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x035f,clif->pMoveToKafra,2,4); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0367,clif->pGetCharNameRequest,2); + packet(0x0368,clif->pChangeDir,2,4); + packet(0x0437,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0862,clif->pReqCloseBuyingStore,0); + packet(0x086b,clif->pDull/*,XXX*/); + packet(0x087d,clif->pWalkToXY,2); + packet(0x087f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0885,clif->pActionRequest,2,6); + packet(0x0886,clif->pTakeItem,2); + packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0889,clif->pTickSend,2); + packet(0x089a,clif->pPartyInvite2,2); + packet(0x089f,clif->pDropItem,2,4); + packet(0x08a0,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a4,clif->pUseSkillToId,2,4,6); + packet(0x08a9,clif->pDull/*,XXX*/); + packet(0x091a,clif->pSolveCharName,2); + packet(0x0920,clif->pFriendsListAdd,2); + packet(0x0924,clif->pReqClickBuyingStore,2); + packet(0x093a,clif->pStoragePassword,0); + packet(0x093d,clif->pItemListWindowSelected,2,4,8); + packet(0x0956,clif->pWantToConnection,2,6,10,14,18); + packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095b,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x095c,clif->pMoveFromKafra,2,4); + packet(0x095d,clif->pSearchStoreInfoNextPage,0); #endif // 2013-02-06aRagexe #if PACKETVER == 20130206 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0811,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0883,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0899,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0925,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x0811,clif->pTakeItem,2); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pMoveFromKafra,2,4); + packet(0x0876,clif->pDull/*,XXX*/); + packet(0x0883,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0885,clif->pMoveToKafra,2,4); + packet(0x0899,clif->pItemListWindowSelected,2,4,8); + packet(0x08a0,clif->pChangeDir,2,4); + packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); + packet(0x0920,clif->pPartyInvite2,2); + packet(0x0925,clif->pDropItem,2,4); + packet(0x093a,clif->pHomMenu,2,4); + packet(0x093c,clif->pFriendsListAdd,2); + packet(0x0950,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-02-15aRagexe, 2013-02-15bRagexe #if PACKETVER == 20130215 - packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x095d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pReqClickBuyingStore,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pStoragePassword,0); + packet(0x0366,clif->pWantToConnection,2,6,10,14,18); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0869,clif->pMoveToKafra,2,4); + packet(0x086f,clif->pDull/*,XXX*/); + packet(0x0886,clif->pDropItem,2,4); + packet(0x089e,clif->pItemListWindowSelected,2,4,8); + packet(0x089f,clif->pDull/*,XXX*/); + packet(0x08ad,clif->pTakeItem,2); + packet(0x0923,clif->pHomMenu,2,4); + packet(0x0941,clif->pFriendsListAdd,2); + packet(0x0956,clif->pPartyInvite2,2); + packet(0x095d,clif->pChangeDir,2,4); + packet(0x0962,clif->pMoveFromKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-02-20aRagexe #if PACKETVER == 20130220 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x094b,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-02-27aRagexe #if PACKETVER == 20130227 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0815,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0867,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0898,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a0,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0924,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x092b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0946,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0951,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x035f,clif->pHomMenu,2,4); + packet(0x0360,clif->pWantToConnection,2,6,10,14,18); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0811,clif->pTickSend,2); + packet(0x0815,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0817,clif->pReqClickBuyingStore,2); + packet(0x085a,clif->pUseSkillToId,2,4,6); + packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0867,clif->pTakeItem,2); + packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x086e,clif->pDull/*,XXX*/); + packet(0x087b,clif->pPartyInvite2,2); + packet(0x0893,clif->pMoveFromKafra,2,4); + packet(0x0898,clif->pChangeDir,2,4); + packet(0x08a0,clif->pReqCloseBuyingStore,0); + packet(0x08a1,clif->pDull/*,XXX*/); + packet(0x091b,clif->pGetCharNameRequest,2); + packet(0x091f,clif->pDropItem,2,4); + packet(0x0924,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x092b,clif->pItemListWindowSelected,2,4,8); + packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0946,clif->pMoveToKafra,2,4); + packet(0x0951,clif->pUseSkillToPos,2,4,6,8); + packet(0x095b,clif->pSolveCharName,2); + packet(0x095e,clif->pStoragePassword,0); + packet(0x095f,clif->pSearchStoreInfoNextPage,0); + packet(0x0967,clif->pActionRequest,2,6); #endif // 2013-03-06aRagexe #if PACKETVER == 20130306 - packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0367,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0368,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0802,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0945,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0951,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x022d,clif->pItemListWindowSelected,2,4,8); + packet(0x0367,clif->pSolveCharName,2); + packet(0x0368,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0802,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0817,clif->pHomMenu,2,4); + packet(0x085b,clif->pWalkToXY,2); + packet(0x085c,clif->pReqClickBuyingStore,2); + packet(0x0860,clif->pChangeDir,2,4); + packet(0x086d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0890,clif->pDull/*,XXX*/); + packet(0x0898,clif->pActionRequest,2,6); + packet(0x089f,clif->pTickSend,2); + packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); + packet(0x08ac,clif->pDull/*,XXX*/); + packet(0x0917,clif->pMoveFromKafra,2,4); + packet(0x091e,clif->pMoveToKafra,2,4); + packet(0x0926,clif->pStoragePassword,0); + packet(0x0934,clif->pFriendsListAdd,2); + packet(0x0936,clif->pSearchStoreInfoNextPage,0); + packet(0x0943,clif->pUseSkillToId,2,4,6); + packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0945,clif->pReqCloseBuyingStore,0); + packet(0x0946,clif->pPartyInvite2,2); + packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x094e,clif->pGetCharNameRequest,2); + packet(0x0951,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0960,clif->pDropItem,2,4); + packet(0x0962,clif->pTakeItem,2); #endif // 2013-03-13aRagexe #if PACKETVER == 20130313 - packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0920,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pPartyInvite2,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pFriendsListAdd,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0887,clif->pChangeDir,2,4); + packet(0x0920,clif->pStoragePassword,0); + packet(0x092d,clif->pHomMenu,2,4); + packet(0x0947,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-03-20dRagexe, 2013-03-20eRagexe #if PACKETVER == 20130320 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0438,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0868,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0881,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0933,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pTickSend,2); + packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0438,clif->pDropItem,2,4); + packet(0x085a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x085d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0868,clif->pItemListWindowSelected,2,4,8); + packet(0x086d,clif->pPartyInvite2,2); + packet(0x086f,clif->pFriendsListAdd,2); + packet(0x0874,clif->pMoveFromKafra,2,4); + packet(0x0881,clif->pWalkToXY,2); + packet(0x0886,clif->pReqCloseBuyingStore,0); + packet(0x0888,clif->pWantToConnection,2,6,10,14,18); + packet(0x088e,clif->pActionRequest,2,6); + packet(0x0890,clif->pDull/*,XXX*/); + packet(0x0897,clif->pChangeDir,2,4); + packet(0x0898,clif->pGetCharNameRequest,2); + packet(0x089b,clif->pUseSkillToId,2,4,6); + packet(0x08ac,clif->pMoveToKafra,2,4); + packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092e,clif->pSearchStoreInfoNextPage,0); + packet(0x0933,clif->pTakeItem,2); + packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x093f,clif->pHomMenu,2,4); + packet(0x0947,clif->pStoragePassword,0); + packet(0x094c,clif->pSolveCharName,2); + packet(0x094e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0959,clif->pUseSkillToPos,2,4,6,8); + packet(0x095a,clif->pDull/*,XXX*/); #endif // 2013-03-27bRagexe #if PACKETVER == 20130327 - packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0893,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0933,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0939,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0955,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0960,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0961,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0967,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 + packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x0835,clif->pHomMenu,2,4); + packet(0x086d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0873,clif->pWantToConnection,2,6,10,14,18); + packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087a,clif->pSearchStoreInfoNextPage,0); + packet(0x0885,clif->pDropItem,2,4); + packet(0x088f,clif->pUseSkillToId,2,4,6); + packet(0x0891,clif->pMoveToKafra,2,4); + packet(0x0893,clif->pReqCloseBuyingStore,0); + packet(0x0899,clif->pTakeItem,2); + packet(0x08a1,clif->pGetCharNameRequest,2); + packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x092b,clif->pWalkToXY,2); + packet(0x092d,clif->pPartyInvite2,2); + packet(0x092e,clif->pDull/*,XXX*/); + packet(0x092f,clif->pDull/*,XXX*/); + packet(0x0933,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0938,clif->pMoveFromKafra,2,4); + packet(0x0939,clif->pTickSend,2); + packet(0x094a,clif->pChangeDir,2,4); + packet(0x094b,clif->pStoragePassword,0); + packet(0x094f,clif->pFriendsListAdd,2); + packet(0x0955,clif->pActionRequest,2,6); + packet(0x0960,clif->pUseSkillToPos,2,4,6,8); + packet(0x0961,clif->pSolveCharName,2); + packet(0x0967,clif->pItemListWindowSelected,2,4,8); #endif // 2013-04-03aRagexe #if PACKETVER == 20130403 - packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a5,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0942,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0950,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pReqClickBuyingStore,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pStoragePassword,0); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0884,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a5,clif->pDull/*,XXX*/); + packet(0x0926,clif->pHomMenu,2,4); + packet(0x0942,clif->pChangeDir,2,4); + packet(0x0950,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-04-10aRagexe #if PACKETVER == 20130410 - packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0865,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0881,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x088c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0891,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08a7,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0933,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0939,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x093d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0955,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0967,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 + packet(0x0367,clif->pReqClickBuyingStore,2); + packet(0x0437,clif->pTakeItem,2); + packet(0x0860,clif->pWantToConnection,2,6,10,14,18); + packet(0x0865,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0879,clif->pMoveToKafra,2,4); + packet(0x087c,clif->pWalkToXY,2); + packet(0x087d,clif->pGetCharNameRequest,2); + packet(0x0881,clif->pReqCloseBuyingStore,0); + packet(0x088c,clif->pStoragePassword,0); + packet(0x088d,clif->pHomMenu,2,4); + packet(0x0890,clif->pItemListWindowSelected,2,4,8); + packet(0x0891,clif->pDull/*,XXX*/); + packet(0x089c,clif->pSolveCharName,2); + packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a0,clif->pTickSend,2); + packet(0x08a4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08a7,clif->pSearchStoreInfoNextPage,0); + packet(0x0917,clif->pPartyInvite2,2); + packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0933,clif->pUseSkillToId,2,4,6); + packet(0x0939,clif->pActionRequest,2,6); + packet(0x093d,clif->pMoveFromKafra,2,4); + packet(0x0944,clif->pDull/*,XXX*/); + packet(0x0945,clif->pChangeDir,2,4); + packet(0x0955,clif->pUseSkillToPos,2,4,6,8); + packet(0x0960,clif->pFriendsListAdd,2); + packet(0x0967,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x096a,clif->pDropItem,2,4); #endif // 2013-04-17aRagexe #if PACKETVER == 20130417 - packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0969,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x096a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pFriendsListAdd,2); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0875,clif->pStoragePassword,0); + packet(0x0929,clif->pChangeDir,2,4); + packet(0x0962,clif->pHomMenu,2,4); + packet(0x0969,clif->pGetCharNameRequest,2); + packet(0x096a,clif->pDull/*,XXX*/); #endif // 2013-04-24aRagexe #if PACKETVER == 20130424 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0969,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-05-02aRagexe, 2013-05-02bRagexe #if PACKETVER == 20130502 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0875,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0877,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0888,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0961,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0967,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x07ec,clif->pChangeDir,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pDull/*,XXX*/); + packet(0x0867,clif->pHomMenu,2,4); + packet(0x0870,clif->pPartyInvite2,2); + packet(0x0874,clif->pItemListWindowSelected,2,4,8); + packet(0x0875,clif->pFriendsListAdd,2); + packet(0x0877,clif->pMoveToKafra,2,4); + packet(0x087c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0888,clif->pGetCharNameRequest,2); + packet(0x0889,clif->pDull/*,XXX*/); + packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a3,clif->pDropItem,2,4); + packet(0x0961,clif->pMoveFromKafra,2,4); + packet(0x0967,clif->pTakeItem,2); #endif // 2013-05-08bRagexe, 2013-05-08cRagexe, 2013-05-08dRagexe, 2013-05-08eRagexe, 2013-05-08fRagexe #if PACKETVER == 20130508 - packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0878,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0897,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ab,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x092d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pMoveToKafra,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pFriendsListAdd,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0868,clif->pStoragePassword,0); + packet(0x0878,clif->pItemListWindowSelected,2,4,8); + packet(0x088b,clif->pTakeItem,2); + packet(0x0893,clif->pPartyBookingRegisterReq,2,4); + packet(0x0895,clif->pWantToConnection,2,6,10,14,18); + packet(0x0897,clif->pDull/*,XXX*/); + packet(0x08ab,clif->pPartyInvite2,2); + packet(0x092d,clif->pDropItem,2,4); + packet(0x0944,clif->pDull/*,XXX*/); + packet(0x094d,clif->pHomMenu,2,4); + packet(0x0957,clif->pMoveFromKafra,2,4); + packet(0x095c,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-05-15aRagexe #if PACKETVER == 20130515 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a1,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x093e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0944,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0947,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0963,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pChangeDir,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pDull/*,XXX*/); + packet(0x0887,clif->pMoveToKafra,2,4); + packet(0x08a1,clif->pTakeItem,2); + packet(0x08aa,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pMoveFromKafra,2,4); + packet(0x092d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0931,clif->pHomMenu,2,4); + packet(0x093e,clif->pStoragePassword,0); + packet(0x0943,clif->pWantToConnection,2,6,10,14,18); + packet(0x0944,clif->pDropItem,2,4); + packet(0x0947,clif->pPartyInvite2,2); + packet(0x0962,clif->pFriendsListAdd,2); + packet(0x0963,clif->pItemListWindowSelected,2,4,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-05-22aRagexe #if PACKETVER == 20130522 - packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x088e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a2,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a3,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a6,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08aa,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0965,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x0360,clif->pWalkToXY,2); + packet(0x0362,clif->pFriendsListAdd,2); + packet(0x0368,clif->pReqClickBuyingStore,2); + packet(0x0369,clif->pSolveCharName,2); + packet(0x07ec,clif->pTickSend,2); + packet(0x0811,clif->pUseSkillToPos,2,4,6,8); + packet(0x086a,clif->pItemListWindowSelected,2,4,8); + packet(0x086e,clif->pReqCloseBuyingStore,0); + packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087e,clif->pMoveFromKafra,2,4); + packet(0x088e,clif->pStoragePassword,0); + packet(0x089b,clif->pPartyBookingRegisterReq,2,4); + packet(0x089c,clif->pDropItem,2,4); + packet(0x08a2,clif->pActionRequest,2,6); + packet(0x08a3,clif->pMoveToKafra,2,4); + packet(0x08a6,clif->pGetCharNameRequest,2); + packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); + packet(0x08aa,clif->pSearchStoreInfoNextPage,0); + packet(0x08ac,clif->pDull/*,XXX*/); + packet(0x0925,clif->pChangeDir,2,4); + packet(0x0926,clif->pHomMenu,2,4); + packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0950,clif->pPartyInvite2,2); + packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095c,clif->pUseSkillToId,2,4,6); + packet(0x095e,clif->pTakeItem,2); + packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0965,clif->pDull/*,XXX*/); #endif // 2013-05-29aRagexe #if PACKETVER == 20130529 - packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0874,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0876,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0937,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0938,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 + packet(0x023b,clif->pHomMenu,2,4); + packet(0x0438,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0863,clif->pGetCharNameRequest,2); + packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0874,clif->pPartyBookingRegisterReq,2,4); + packet(0x0876,clif->pWalkToXY,2); + packet(0x0877,clif->pFriendsListAdd,2); + packet(0x0888,clif->pDull/*,XXX*/); + packet(0x088e,clif->pDull/*,XXX*/); + packet(0x0890,clif->pActionRequest,2,6); + packet(0x0892,clif->pReqClickBuyingStore,2); + packet(0x0895,clif->pTakeItem,2); + packet(0x0897,clif->pTickSend,2); + packet(0x08a7,clif->pDropItem,2,4); + packet(0x08a8,clif->pPartyInvite2,2); + packet(0x0917,clif->pUseSkillToPos,2,4,6,8); + packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0919,clif->pWantToConnection,2,6,10,14,18); + packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0937,clif->pSolveCharName,2); + packet(0x0938,clif->pMoveToKafra,2,4); + packet(0x0941,clif->pSearchStoreInfoNextPage,0); + packet(0x0951,clif->pChangeDir,2,4); + packet(0x0956,clif->pStoragePassword,0); + packet(0x0957,clif->pMoveFromKafra,2,4); + packet(0x0958,clif->pItemListWindowSelected,2,4,8); + packet(0x0964,clif->pReqCloseBuyingStore,0); #endif // 2013-06-05aRagexe, 2013-06-05bRagexe #if PACKETVER == 20130605 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0883,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0883,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-06-12aRagexe, 2013-06-12bRagexe, 2013-06-12cRagexe, 2013-06-12dRagexe, 2013-06-12eRagexe #if PACKETVER == 20130612 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0964,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087e,clif->pChangeDir,2,4); + packet(0x0919,clif->pWantToConnection,2,6,10,14,18); + packet(0x093a,clif->pHomMenu,2,4); + packet(0x0940,clif->pFriendsListAdd,2); + packet(0x0964,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-06-18#1aRagexe #if PACKETVER == 20130618 - packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0363,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0936,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0942,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0951,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x02c4,clif->pHomMenu,2,4); + packet(0x0363,clif->pSearchStoreInfoNextPage,0); + packet(0x085a,clif->pReqCloseBuyingStore,0); + packet(0x0862,clif->pReqClickBuyingStore,2); + packet(0x0864,clif->pStoragePassword,0); + packet(0x0878,clif->pDull/*,XXX*/); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x0885,clif->pMoveToKafra,2,4); + packet(0x0887,clif->pPartyInvite2,2); + packet(0x0889,clif->pActionRequest,2,6); + packet(0x088e,clif->pWalkToXY,2); + packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a6,clif->pChangeDir,2,4); + packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); + packet(0x0917,clif->pDropItem,2,4); + packet(0x0930,clif->pTickSend,2); + packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0936,clif->pMoveFromKafra,2,4); + packet(0x0942,clif->pItemListWindowSelected,2,4,8); + packet(0x0944,clif->pGetCharNameRequest,2); + packet(0x0945,clif->pSolveCharName,2); + packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0951,clif->pUseSkillToId,2,4,6); + packet(0x0953,clif->pFriendsListAdd,2); + packet(0x095b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0962,clif->pTakeItem,2); + packet(0x096a,clif->pUseSkillToPos,2,4,6,8); #endif // 2013-06-26_3cRagexe, 2013-06-26bRagexe #if PACKETVER == 20130626 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0860,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0894,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0895,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pReqCloseBuyingStore,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pMoveFromKafra,2,4); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0860,clif->pDull/*,XXX*/); + packet(0x088b,clif->pTakeItem,2); + packet(0x088c,clif->pWantToConnection,2,6,10,14,18); + packet(0x088f,clif->pDull/*,XXX*/); + packet(0x0894,clif->pPartyBookingRegisterReq,2,4); + packet(0x0895,clif->pPartyInvite2,2); + packet(0x08a5,clif->pItemListWindowSelected,2,4,8); + packet(0x08ab,clif->pFriendsListAdd,2); + packet(0x0921,clif->pMoveToKafra,2,4); + packet(0x0930,clif->pStoragePassword,0); + packet(0x094d,clif->pChangeDir,2,4); + packet(0x0952,clif->pDropItem,2,4); + packet(0x0960,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-07-03aRagexe #if PACKETVER == 20130703 - packet(0x0202,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pReqClickBuyingStore,2); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pFriendsListAdd,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0873,clif->pStoragePassword,0); + packet(0x0930,clif->pChangeDir,2,4); + packet(0x094a,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-07-10bRagexe #if PACKETVER == 20130710 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0880,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-07-17cRagexe #if PACKETVER == 20130717 - packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0863,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0882,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x088a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0897,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0898,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08aa,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0918,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0958,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0960,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 + packet(0x02c4,clif->pTickSend,2); + packet(0x0819,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pWalkToXY,2); + packet(0x0862,clif->pPartyBookingRegisterReq,2,4); + packet(0x0863,clif->pFriendsListAdd,2); + packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086c,clif->pDull/*,XXX*/); + packet(0x0882,clif->pUseSkillToPos,2,4,6,8); + packet(0x088a,clif->pHomMenu,2,4); + packet(0x088c,clif->pChangeDir,2,4); + packet(0x0897,clif->pItemListWindowSelected,2,4,8); + packet(0x0898,clif->pReqClickBuyingStore,2); + packet(0x089b,clif->pMoveToKafra,2,4); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x08a9,clif->pTakeItem,2); + packet(0x08aa,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0917,clif->pDropItem,2,4); + packet(0x0918,clif->pActionRequest,2,6); + packet(0x091d,clif->pWantToConnection,2,6,10,14,18); + packet(0x091e,clif->pUseSkillToId,2,4,6); + packet(0x092f,clif->pPartyInvite2,2); + packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0956,clif->pMoveFromKafra,2,4); + packet(0x0958,clif->pGetCharNameRequest,2); + packet(0x095b,clif->pStoragePassword,0); + packet(0x0960,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0967,clif->pSolveCharName,2); + packet(0x096a,clif->pReqCloseBuyingStore,0); #endif // 2013-07-24eRagexe #if PACKETVER == 20130724 - packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0867,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0874,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0876,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0891,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0893,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x092b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0953,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0954,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0956,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x023b,clif->pReqCloseBuyingStore,0); + packet(0x035f,clif->pTickSend,2); + packet(0x0437,clif->pDull/*,XXX*/); + packet(0x085a,clif->pPartyBookingRegisterReq,2,4); + packet(0x085e,clif->pMoveFromKafra,2,4); + packet(0x0860,clif->pStoragePassword,0); + packet(0x0867,clif->pGetCharNameRequest,2); + packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0874,clif->pHomMenu,2,4); + packet(0x0876,clif->pActionRequest,2,6); + packet(0x0890,clif->pSearchStoreInfoNextPage,0); + packet(0x0891,clif->pDropItem,2,4); + packet(0x0893,clif->pWantToConnection,2,6,10,14,18); + packet(0x089c,clif->pUseSkillToPos,2,4,6,8); + packet(0x08ab,clif->pDull/*,XXX*/); + packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0924,clif->pReqClickBuyingStore,2); + packet(0x0927,clif->pPartyInvite2,2); + packet(0x092b,clif->pFriendsListAdd,2); + packet(0x092e,clif->pItemListWindowSelected,2,4,8); + packet(0x094a,clif->pTakeItem,2); + packet(0x0953,clif->pWalkToXY,2); + packet(0x0954,clif->pSolveCharName,2); + packet(0x0956,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0958,clif->pUseSkillToId,2,4,6); + packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095d,clif->pMoveToKafra,2,4); + packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0966,clif->pChangeDir,2,4); #endif // 2013-07-31cRagexe #if PACKETVER == 20130731 - packet(0x022d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0865,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x087e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0884,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0889,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0894,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x092b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0962,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 + packet(0x022d,clif->pFriendsListAdd,2); + packet(0x0366,clif->pSearchStoreInfoNextPage,0); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pChangeDir,2,4); + packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0863,clif->pReqClickBuyingStore,2); + packet(0x0865,clif->pUseSkillToId,2,4,6); + packet(0x0878,clif->pActionRequest,2,6); + packet(0x087e,clif->pReqCloseBuyingStore,0); + packet(0x0884,clif->pStoragePassword,0); + packet(0x0889,clif->pDull/*,XXX*/); + packet(0x088b,clif->pGetCharNameRequest,2); + packet(0x0894,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0895,clif->pDull/*,XXX*/); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0923,clif->pPartyBookingRegisterReq,2,4); + packet(0x0925,clif->pUseSkillToPos,2,4,6,8); + packet(0x092b,clif->pWantToConnection,2,6,10,14,18); + packet(0x092d,clif->pHomMenu,2,4); + packet(0x0935,clif->pTakeItem,2); + packet(0x0941,clif->pMoveToKafra,2,4); + packet(0x094c,clif->pMoveFromKafra,2,4); + packet(0x0956,clif->pPartyInvite2,2); + packet(0x0957,clif->pSolveCharName,2); + packet(0x0958,clif->pItemListWindowSelected,2,4,8); + packet(0x095b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095f,clif->pTickSend,2); + packet(0x0962,clif->pDropItem,2,4); #endif // 2013-08-07aRagexe #if PACKETVER == 20130807 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0887,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-08-14aRagexe #if PACKETVER == 20130814 - packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0873,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0874,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0896,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0923,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0937,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0947,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0959,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x0202,clif->pMoveToKafra,2,4); + packet(0x0281,clif->pFriendsListAdd,2); + packet(0x0368,clif->pWantToConnection,2,6,10,14,18); + packet(0x0815,clif->pDull/*,XXX*/); + packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0873,clif->pMoveFromKafra,2,4); + packet(0x0874,clif->pActionRequest,2,6); + packet(0x0885,clif->pStoragePassword,0); + packet(0x0887,clif->pUseSkillToPos,2,4,6,8); + packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088a,clif->pTickSend,2); + packet(0x088c,clif->pChangeDir,2,4); + packet(0x0895,clif->pReqClickBuyingStore,2); + packet(0x0896,clif->pDull/*,XXX*/); + packet(0x08a4,clif->pItemListWindowSelected,2,4,8); + packet(0x0923,clif->pSolveCharName,2); + packet(0x0926,clif->pTakeItem,2); + packet(0x0927,clif->pPartyInvite2,2); + packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0937,clif->pGetCharNameRequest,2); + packet(0x093a,clif->pWalkToXY,2); + packet(0x0941,clif->pSearchStoreInfoNextPage,0); + packet(0x0947,clif->pUseSkillToId,2,4,6); + packet(0x094e,clif->pReqCloseBuyingStore,0); + packet(0x0958,clif->pHomMenu,2,4); + packet(0x0959,clif->pPartyBookingRegisterReq,2,4); + packet(0x095f,clif->pDropItem,2,4); + packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2013-08-21bRagexe #if PACKETVER == 20130821 - packet(0x0202,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0437,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0438,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x07ec,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ad,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x093e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0947,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0967,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 + packet(0x0202,clif->pUseSkillToPos,2,4,6,8); + packet(0x0360,clif->pStoragePassword,0); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0437,clif->pMoveToKafra,2,4); + packet(0x0438,clif->pDull/*,XXX*/); + packet(0x07ec,clif->pItemListWindowSelected,2,4,8); + packet(0x0815,clif->pWalkToXY,2); + packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0863,clif->pActionRequest,2,6); + packet(0x086e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x088d,clif->pTickSend,2); + packet(0x088f,clif->pFriendsListAdd,2); + packet(0x0892,clif->pReqClickBuyingStore,2); + packet(0x08a6,clif->pReqCloseBuyingStore,0); + packet(0x08ad,clif->pDull/*,XXX*/); + packet(0x091d,clif->pChangeDir,2,4); + packet(0x0923,clif->pWantToConnection,2,6,10,14,18); + packet(0x092d,clif->pGetCharNameRequest,2); + packet(0x093e,clif->pMoveFromKafra,2,4); + packet(0x0947,clif->pSearchStoreInfoNextPage,0); + packet(0x0954,clif->pUseSkillToId,2,4,6); + packet(0x095e,clif->pSolveCharName,2); + packet(0x0962,clif->pTakeItem,2); + packet(0x0964,clif->pDropItem,2,4); + packet(0x0967,clif->pPartyBookingRegisterReq,2,4); + packet(0x0969,clif->pPartyInvite2,2); #endif // 2013-08-28bRagexe, 2013-08-28cRagexe #if PACKETVER == 20130828 - packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0817,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0889,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a3,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08ac,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0917,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0919,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x091e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0923,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x095d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0364,clif->pDull/*,XXX*/); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x0817,clif->pItemListWindowSelected,2,4,8); + packet(0x0873,clif->pSearchStoreInfoNextPage,0); + packet(0x087e,clif->pDropItem,2,4); + packet(0x0889,clif->pHomMenu,2,4); + packet(0x0893,clif->pStoragePassword,0); + packet(0x089e,clif->pUseSkillToPos,2,4,6,8); + packet(0x089f,clif->pChangeDir,2,4); + packet(0x08a3,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08ac,clif->pGetCharNameRequest,2); + packet(0x0917,clif->pPartyBookingRegisterReq,2,4); + packet(0x0919,clif->pReqCloseBuyingStore,0); + packet(0x091e,clif->pTakeItem,2); + packet(0x0923,clif->pUseSkillToId,2,4,6); + packet(0x0924,clif->pTickSend,2); + packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0929,clif->pMoveFromKafra,2,4); + packet(0x0930,clif->pSolveCharName,2); + packet(0x0944,clif->pFriendsListAdd,2); + packet(0x0946,clif->pDull/*,XXX*/); + packet(0x094a,clif->pPartyInvite2,2); + packet(0x094c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x094f,clif->pActionRequest,2,6); + packet(0x095d,clif->pWalkToXY,2); + packet(0x0966,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pWantToConnection,2,6,10,14,18); #endif // 2013-09-04aRagexe #if PACKETVER == 20130904 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0838,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pChangeDir,2,4); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0838,clif->pWantToConnection,2,6,10,14,18); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0937,clif->pFriendsListAdd,2); + packet(0x093a,clif->pHomMenu,2,4); + packet(0x0940,clif->pSearchStoreInfoNextPage,0); + packet(0x0956,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-09-11aRagexe, 2013-09-11bRagexe #if PACKETVER == 20130911 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0868,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0891,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0948,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0967,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0364,clif->pGetCharNameRequest,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pWantToConnection,2,6,10,14,18); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085c,clif->pPartyInvite2,2); + packet(0x0868,clif->pPartyBookingRegisterReq,2,4); + packet(0x086b,clif->pStoragePassword,0); + packet(0x086d,clif->pMoveFromKafra,2,4); + packet(0x087b,clif->pDull/*,XXX*/); + packet(0x0889,clif->pTakeItem,2); + packet(0x0891,clif->pHomMenu,2,4); + packet(0x08a4,clif->pItemListWindowSelected,2,4,8); + packet(0x091e,clif->pChangeDir,2,4); + packet(0x093a,clif->pDull/*,XXX*/); + packet(0x0940,clif->pTickSend,2); + packet(0x0948,clif->pFriendsListAdd,2); + packet(0x0967,clif->pDropItem,2,4); + packet(0x096a,clif->pMoveToKafra,2,4); #endif // 2013-09-17aRagexe #if PACKETVER == 20130917 - packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0838,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0863,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0895,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a8,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0918,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0921,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0957,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 + packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0811,clif->pActionRequest,2,6); + packet(0x0838,clif->pReqClickBuyingStore,2); + packet(0x083c,clif->pSearchStoreInfoNextPage,0); + packet(0x0863,clif->pMoveFromKafra,2,4); + packet(0x0868,clif->pPartyInvite2,2); + packet(0x086e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086f,clif->pTickSend,2); + packet(0x087a,clif->pTakeItem,2); + packet(0x087e,clif->pUseSkillToId,2,4,6); + packet(0x088a,clif->pStoragePassword,0); + packet(0x0895,clif->pSolveCharName,2); + packet(0x089b,clif->pReqCloseBuyingStore,0); + packet(0x089d,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a0,clif->pMoveToKafra,2,4); + packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a8,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0918,clif->pChangeDir,2,4); + packet(0x091c,clif->pDropItem,2,4); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x0921,clif->pGetCharNameRequest,2); + packet(0x0923,clif->pHomMenu,2,4); + packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x094c,clif->pPartyBookingRegisterReq,2,4); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0957,clif->pUseSkillToPos,2,4,6,8); + packet(0x0959,clif->pItemListWindowSelected,2,4,8); + packet(0x095b,clif->pWalkToXY,2); + packet(0x096a,clif->pFriendsListAdd,2); #endif // 2013-09-25aRagexe, 2013-09-25bRagexe, 2013-09-25cRagexe #if PACKETVER == 20130925 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0876,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0969,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086d,clif->pStoragePassword,0); + packet(0x086e,clif->pPartyInvite2,2); + packet(0x0875,clif->pHomMenu,2,4); + packet(0x0876,clif->pMoveFromKafra,2,4); + packet(0x087d,clif->pDropItem,2,4); + packet(0x0885,clif->pChangeDir,2,4); + packet(0x0887,clif->pWantToConnection,2,6,10,14,18); + packet(0x088f,clif->pFriendsListAdd,2); + packet(0x0890,clif->pDull/*,XXX*/); + packet(0x0940,clif->pUseSkillToPos,2,4,6,8); + packet(0x0958,clif->pTakeItem,2); + packet(0x095a,clif->pPartyBookingRegisterReq,2,4); + packet(0x095b,clif->pItemListWindowSelected,2,4,8); + packet(0x095c,clif->pMoveToKafra,2,4); + packet(0x0969,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-10-02aRagexe #if PACKETVER == 20131002 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pStoragePassword,0); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pTickSend,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pWalkToXY,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-10-08aRagexe #if PACKETVER == 20131008 - packet(0x0202,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x07e4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0863,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0883,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0927,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0936,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x0202,clif->pGetCharNameRequest,2); + packet(0x0362,clif->pWantToConnection,2,6,10,14,18); + packet(0x07e4,clif->pActionRequest,2,6); + packet(0x083c,clif->pReqCloseBuyingStore,0); + packet(0x085d,clif->pDull/*,XXX*/); + packet(0x085e,clif->pWalkToXY,2); + packet(0x0863,clif->pPartyInvite2,2); + packet(0x086c,clif->pItemListWindowSelected,2,4,8); + packet(0x086d,clif->pSolveCharName,2); + packet(0x0883,clif->pMoveToKafra,2,4); + packet(0x0884,clif->pPartyBookingRegisterReq,2,4); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089c,clif->pChangeDir,2,4); + packet(0x08a9,clif->pUseSkillToId,2,4,6); + packet(0x0917,clif->pMoveFromKafra,2,4); + packet(0x091c,clif->pTakeItem,2); + packet(0x0923,clif->pSearchStoreInfoNextPage,0); + packet(0x0927,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0932,clif->pUseSkillToPos,2,4,6,8); + packet(0x0934,clif->pTickSend,2); + packet(0x0936,clif->pReqClickBuyingStore,2); + packet(0x093c,clif->pHomMenu,2,4); + packet(0x0947,clif->pStoragePassword,0); + packet(0x0952,clif->pDropItem,2,4); + packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095d,clif->pFriendsListAdd,2); + packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2013-10-16aRagexe, 2013-10-16bRagexe #if PACKETVER == 20131016 - packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0364,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0366,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x085a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0867,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0887,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0890,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0894,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0927,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0946,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0962,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x022d,clif->pMoveToKafra,2,4); + packet(0x0281,clif->pPartyInvite2,2); + packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0364,clif->pDropItem,2,4); + packet(0x0366,clif->pReqClickBuyingStore,2); + packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x085a,clif->pDull/*,XXX*/); + packet(0x085d,clif->pGetCharNameRequest,2); + packet(0x0863,clif->pUseSkillToId,2,4,6); + packet(0x0864,clif->pStoragePassword,0); + packet(0x0867,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086c,clif->pSearchStoreInfoNextPage,0); + packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0875,clif->pItemListWindowSelected,2,4,8); + packet(0x0887,clif->pTakeItem,2); + packet(0x0888,clif->pHomMenu,2,4); + packet(0x088b,clif->pFriendsListAdd,2); + packet(0x0890,clif->pSolveCharName,2); + packet(0x0894,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x091e,clif->pMoveFromKafra,2,4); + packet(0x091f,clif->pWalkToXY,2); + packet(0x0927,clif->pTickSend,2); + packet(0x0946,clif->pPartyBookingRegisterReq,2,4); + packet(0x094e,clif->pReqCloseBuyingStore,0); + packet(0x095e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0962,clif->pActionRequest,2,6); + packet(0x0966,clif->pChangeDir,2,4); #endif // 2013-10-23aRagexe #if PACKETVER == 20131023 - packet(0x0366,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0819,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0835,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0923,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0935,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0937,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0944,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 + packet(0x0366,clif->pReqCloseBuyingStore,0); + packet(0x0438,clif->pPartyInvite2,2); + packet(0x0811,clif->pUseSkillToPos,2,4,6,8); + packet(0x0819,clif->pDropItem,2,4); + packet(0x0835,clif->pDull/*,XXX*/); + packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0862,clif->pDull/*,XXX*/); + packet(0x086e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0872,clif->pPartyBookingRegisterReq,2,4); + packet(0x0876,clif->pUseSkillToId,2,4,6); + packet(0x087f,clif->pSearchStoreInfoNextPage,0); + packet(0x0885,clif->pStoragePassword,0); + packet(0x088a,clif->pItemListWindowSelected,2,4,8); + packet(0x088b,clif->pTakeItem,2); + packet(0x088f,clif->pMoveToKafra,2,4); + packet(0x08a7,clif->pHomMenu,2,4); + packet(0x08ab,clif->pChangeDir,2,4); + packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); + packet(0x0919,clif->pSolveCharName,2); + packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0923,clif->pActionRequest,2,6); + packet(0x0924,clif->pTickSend,2); + packet(0x0935,clif->pReqClickBuyingStore,2); + packet(0x0937,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0944,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x094a,clif->pFriendsListAdd,2); + packet(0x0951,clif->pGetCharNameRequest,2); + packet(0x0954,clif->pMoveFromKafra,2,4); + packet(0x095b,clif->pWalkToXY,2); #endif // 2013-10-30aRagexe #if PACKETVER == 20131030 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pHomMenu,2,4); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pWantToConnection,2,6,10,14,18); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pPartyBookingRegisterReq,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087d,clif->pFriendsListAdd,2); + packet(0x0887,clif->pStoragePassword,0); + packet(0x08a2,clif->pDull/*,XXX*/); + packet(0x0925,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-11-06aRagexe, 2013-11-07aRagexe, 2013-11-07bRagexe, 2013-11-07cRagexe, 2013-11-08aRagexe #if PACKETVER == 20131106 || \ PACKETVER == 20131107 || \ PACKETVER == 20131108 - packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0369,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0817,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0870,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0887,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0891,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0919,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0942,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0948,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0954,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 + packet(0x0281,clif->pGetCharNameRequest,2); + packet(0x0363,clif->pUseSkillToId,2,4,6); + packet(0x0369,clif->pItemListWindowSelected,2,4,8); + packet(0x0436,clif->pStoragePassword,0); + packet(0x0802,clif->pChangeDir,2,4); + packet(0x0817,clif->pDull/*,XXX*/); + packet(0x0866,clif->pWalkToXY,2); + packet(0x0867,clif->pMoveToKafra,2,4); + packet(0x0870,clif->pReqCloseBuyingStore,0); + packet(0x0875,clif->pDropItem,2,4); + packet(0x0887,clif->pTickSend,2); + packet(0x0891,clif->pSolveCharName,2); + packet(0x0893,clif->pPartyBookingRegisterReq,2,4); + packet(0x0894,clif->pHomMenu,2,4); + packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); + packet(0x0919,clif->pSearchStoreInfoNextPage,0); + packet(0x091d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0929,clif->pMoveFromKafra,2,4); + packet(0x0935,clif->pFriendsListAdd,2); + packet(0x093b,clif->pTakeItem,2); + packet(0x0942,clif->pUseSkillToPos,2,4,6,8); + packet(0x0946,clif->pReqClickBuyingStore,2); + packet(0x0947,clif->pActionRequest,2,6); + packet(0x0948,clif->pDull/*,XXX*/); + packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0954,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095d,clif->pPartyInvite2,2); + packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); #endif // 2013-11-13bRagexe #if PACKETVER == 20131113 - packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0879,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0920,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0928,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x092f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0934,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0936,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0949,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0950,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x095f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0964,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 + packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086d,clif->pReqCloseBuyingStore,0); + packet(0x0879,clif->pSearchStoreInfoNextPage,0); + packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x088f,clif->pDropItem,2,4); + packet(0x089a,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a4,clif->pItemListWindowSelected,2,4,8); + packet(0x08a8,clif->pDull/*,XXX*/); + packet(0x091c,clif->pMoveFromKafra,2,4); + packet(0x0920,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0926,clif->pHomMenu,2,4); + packet(0x0927,clif->pPartyInvite2,2); + packet(0x0928,clif->pStoragePassword,0); + packet(0x0929,clif->pTickSend,2); + packet(0x092b,clif->pTakeItem,2); + packet(0x092c,clif->pFriendsListAdd,2); + packet(0x092d,clif->pReqClickBuyingStore,2); + packet(0x092e,clif->pGetCharNameRequest,2); + packet(0x092f,clif->pSolveCharName,2); + packet(0x0934,clif->pPartyBookingRegisterReq,2,4); + packet(0x0936,clif->pWalkToXY,2); + packet(0x093c,clif->pChangeDir,2,4); + packet(0x0949,clif->pUseSkillToPos,2,4,6,8); + packet(0x0950,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095d,clif->pActionRequest,2,6); + packet(0x095f,clif->pUseSkillToId,2,4,6); + packet(0x0960,clif->pMoveToKafra,2,4); + packet(0x0964,clif->pDull/*,XXX*/); + packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); #endif // 2013-11-20dRagexe #if PACKETVER == 20131120 - packet(0x0361,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0368,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0802,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0817,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x085f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0884,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a8,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0926,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0940,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0950,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x095e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x0361,clif->pSolveCharName,2); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0368,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0802,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0811,clif->pDull/*,XXX*/); + packet(0x0817,clif->pTickSend,2); + packet(0x085a,clif->pItemListWindowSelected,2,4,8); + packet(0x085f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0862,clif->pReqCloseBuyingStore,0); + packet(0x0884,clif->pUseSkillToId,2,4,6); + packet(0x088c,clif->pWantToConnection,2,6,10,14,18); + packet(0x088d,clif->pFriendsListAdd,2); + packet(0x089e,clif->pTakeItem,2); + packet(0x08a1,clif->pHomMenu,2,4); + packet(0x08a4,clif->pStoragePassword,0); + packet(0x08a8,clif->pActionRequest,2,6); + packet(0x0917,clif->pDropItem,2,4); + packet(0x0926,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0927,clif->pMoveToKafra,2,4); + packet(0x092b,clif->pWalkToXY,2); + packet(0x092d,clif->pSearchStoreInfoNextPage,0); + packet(0x093e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0940,clif->pDull/*,XXX*/); + packet(0x0950,clif->pGetCharNameRequest,2); + packet(0x0953,clif->pPartyInvite2,2); + packet(0x0955,clif->pReqClickBuyingStore,2); + packet(0x0956,clif->pChangeDir,2,4); + packet(0x095e,clif->pPartyBookingRegisterReq,2,4); #endif // 2013-11-27bRagexe #if PACKETVER == 20131127 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0366,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0894,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0930,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x095c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0364,clif->pGetCharNameRequest,2); + packet(0x0365,clif->pWalkToXY,2); + packet(0x0366,clif->pItemListWindowSelected,2,4,8); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pMoveFromKafra,2,4); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0881,clif->pDull/*,XXX*/); + packet(0x0884,clif->pHomMenu,2,4); + packet(0x088d,clif->pChangeDir,2,4); + packet(0x0894,clif->pStoragePassword,0); + packet(0x089e,clif->pDull/*,XXX*/); + packet(0x0930,clif->pPartyBookingRegisterReq,2,4); + packet(0x093a,clif->pFriendsListAdd,2); + packet(0x0940,clif->pTickSend,2); + packet(0x094c,clif->pTakeItem,2); + packet(0x094f,clif->pDropItem,2,4); + packet(0x095c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0967,clif->pPartyInvite2,2); + packet(0x096a,clif->pMoveToKafra,2,4); #endif // 2013-12-04eRagexe #if PACKETVER == 20131204 - packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0366,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0862,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0869,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0879,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0882,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0928,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x092d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0958,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0961,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0967,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 + packet(0x0365,clif->pReqCloseBuyingStore,0); + packet(0x0366,clif->pTickSend,2); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x085a,clif->pPartyInvite2,2); + packet(0x0862,clif->pChangeDir,2,4); + packet(0x0869,clif->pUseSkillToPos,2,4,6,8); + packet(0x086c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0877,clif->pWantToConnection,2,6,10,14,18); + packet(0x0879,clif->pSolveCharName,2); + packet(0x087f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0882,clif->pFriendsListAdd,2); + packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a4,clif->pDropItem,2,4); + packet(0x08a7,clif->pTakeItem,2); + packet(0x08ad,clif->pGetCharNameRequest,2); + packet(0x091f,clif->pHomMenu,2,4); + packet(0x0928,clif->pActionRequest,2,6); + packet(0x092d,clif->pUseSkillToId,2,4,6); + packet(0x092f,clif->pWalkToXY,2); + packet(0x0932,clif->pSearchStoreInfoNextPage,0); + packet(0x093b,clif->pDull/*,XXX*/); + packet(0x0941,clif->pMoveToKafra,2,4); + packet(0x0951,clif->pItemListWindowSelected,2,4,8); + packet(0x0958,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0961,clif->pDull/*,XXX*/); + packet(0x0967,clif->pMoveFromKafra,2,4); #endif // 2013-12-11cRagexe, 2013-12-11dRagexe #if PACKETVER == 20131211 - packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a3,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ab,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x092b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0931,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pUseSkillToId,2,4,6); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0366,clif->pTakeItem,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pFriendsListAdd,2); + packet(0x0865,clif->pPartyInvite2,2); + packet(0x086e,clif->pItemListWindowSelected,2,4,8); + packet(0x0873,clif->pWantToConnection,2,6,10,14,18); + packet(0x0881,clif->pDull/*,XXX*/); + packet(0x0886,clif->pHomMenu,2,4); + packet(0x0892,clif->pMoveToKafra,2,4); + packet(0x08a3,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a4,clif->pChangeDir,2,4); + packet(0x08ab,clif->pDropItem,2,4); + packet(0x092b,clif->pStoragePassword,0); + packet(0x0931,clif->pMoveFromKafra,2,4); + packet(0x094c,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-12-18bRagexe #if PACKETVER == 20131218 - packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0947,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pHomMenu,2,4); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085c,clif->pStoragePassword,0); + packet(0x087b,clif->pDull/*,XXX*/); + packet(0x08ab,clif->pFriendsListAdd,2); + packet(0x092f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0947,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-12-23bRagexe, 2013-12-23cRagexe #if PACKETVER == 20131223 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x08a4,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-12-30aRagexe #if PACKETVER == 20131230 - packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x02c4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0369,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0871,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x087b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0926,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x093d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0943,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0968,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0969,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x096a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x022d,clif->pItemListWindowSelected,2,4,8); + packet(0x02c4,clif->pUseSkillToId,2,4,6); + packet(0x035f,clif->pWalkToXY,2); + packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0369,clif->pSearchStoreInfoNextPage,0); + packet(0x0438,clif->pTickSend,2); + packet(0x0860,clif->pDropItem,2,4); + packet(0x0871,clif->pActionRequest,2,6); + packet(0x087b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087e,clif->pDull/*,XXX*/); + packet(0x087f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0895,clif->pMoveFromKafra,2,4); + packet(0x0898,clif->pSolveCharName,2); + packet(0x089c,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a9,clif->pPartyInvite2,2); + packet(0x091d,clif->pStoragePassword,0); + packet(0x091e,clif->pUseSkillToPos,2,4,6,8); + packet(0x091f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0926,clif->pGetCharNameRequest,2); + packet(0x092a,clif->pTakeItem,2); + packet(0x093d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x093e,clif->pDull/*,XXX*/); + packet(0x0943,clif->pFriendsListAdd,2); + packet(0x0949,clif->pHomMenu,2,4); + packet(0x094a,clif->pChangeDir,2,4); + packet(0x094c,clif->pReqCloseBuyingStore,0); + packet(0x0968,clif->pMoveToKafra,2,4); + packet(0x0969,clif->pReqClickBuyingStore,2); + packet(0x096a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2014-01-08cRagexe, 2014-01-08dRagexe #if PACKETVER == 20140108 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0936,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexe, 2014-01-15eRagexe #if PACKETVER == 20140115 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0367,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pDropItem,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0367,clif->pMoveFromKafra,2,4); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pGetCharNameRequest,2); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0865,clif->pStoragePassword,0); + packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088a,clif->pDull/*,XXX*/); + packet(0x088e,clif->pMoveToKafra,2,4); + packet(0x089b,clif->pFriendsListAdd,2); + packet(0x08a7,clif->pChangeDir,2,4); + packet(0x092d,clif->pHomMenu,2,4); + packet(0x0940,clif->pTakeItem,2); + packet(0x095b,clif->pDull/*,XXX*/); + packet(0x095d,clif->pPartyInvite2,2); + packet(0x0965,clif->pItemListWindowSelected,2,4,8); + packet(0x0966,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pPartyBookingRegisterReq,2,4); #endif // 2014-01-22aRagexe #if PACKETVER == 20140122 - packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0811,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0872,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0917,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0925,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x092f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0941,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x0360,clif->pActionRequest,2,6); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x0811,clif->pReqCloseBuyingStore,0); + packet(0x0863,clif->pHomMenu,2,4); + packet(0x0870,clif->pPartyBookingRegisterReq,2,4); + packet(0x0871,clif->pWantToConnection,2,6,10,14,18); + packet(0x0872,clif->pPartyInvite2,2); + packet(0x088c,clif->pDull/*,XXX*/); + packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0893,clif->pFriendsListAdd,2); + packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089d,clif->pGetCharNameRequest,2); + packet(0x08a2,clif->pDull/*,XXX*/); + packet(0x08aa,clif->pDropItem,2,4); + packet(0x0917,clif->pTickSend,2); + packet(0x091a,clif->pChangeDir,2,4); + packet(0x0925,clif->pWalkToXY,2); + packet(0x092f,clif->pMoveToKafra,2,4); + packet(0x0940,clif->pUseSkillToId,2,4,6); + packet(0x0941,clif->pSolveCharName,2); + packet(0x0942,clif->pTakeItem,2); + packet(0x094b,clif->pSearchStoreInfoNextPage,0); + packet(0x094c,clif->pMoveFromKafra,2,4); + packet(0x0950,clif->pUseSkillToPos,2,4,6,8); + packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0955,clif->pStoragePassword,0); + packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095d,clif->pItemListWindowSelected,2,4,8); + packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2014-01-29aRagexe, 2014-01-29cRagexe #if PACKETVER == 20140129 - packet(0x0281,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0885,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0921,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0924,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x092c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0958,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pUseSkillToId,2,4,6); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pDull/*,XXX*/); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0367,clif->pDropItem,2,4); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pChangeDir,2,4); + packet(0x0802,clif->pWantToConnection,2,6,10,14,18); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pDull/*,XXX*/); + packet(0x0884,clif->pHomMenu,2,4); + packet(0x0885,clif->pTakeItem,2); + packet(0x0889,clif->pMoveFromKafra,2,4); + packet(0x0921,clif->pPartyBookingRegisterReq,2,4); + packet(0x0924,clif->pItemListWindowSelected,2,4,8); + packet(0x092c,clif->pStoragePassword,0); + packet(0x094d,clif->pMoveToKafra,2,4); + packet(0x0958,clif->pPartyInvite2,2); + packet(0x0961,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-02-05bRagexe #if PACKETVER == 20140205 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0938,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0938,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-02-12aRagexe #if PACKETVER == 20140212 - packet(0x02c4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0369,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x089d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a1,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a7,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0928,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0936,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0952,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0960,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 + packet(0x02c4,clif->pSearchStoreInfoNextPage,0); + packet(0x0369,clif->pPartyBookingRegisterReq,2,4); + packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086e,clif->pUseSkillToId,2,4,6); + packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0877,clif->pReqClickBuyingStore,2); + packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087e,clif->pWalkToXY,2); + packet(0x0888,clif->pMoveFromKafra,2,4); + packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x089d,clif->pUseSkillToPos,2,4,6,8); + packet(0x089e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a0,clif->pStoragePassword,0); + packet(0x08a1,clif->pPartyInvite2,2); + packet(0x08a7,clif->pItemListWindowSelected,2,4,8); + packet(0x08ac,clif->pMoveToKafra,2,4); + packet(0x08ad,clif->pDropItem,2,4); + packet(0x0919,clif->pChangeDir,2,4); + packet(0x091b,clif->pFriendsListAdd,2); + packet(0x0928,clif->pSolveCharName,2); + packet(0x0930,clif->pTickSend,2); + packet(0x0934,clif->pActionRequest,2,6); + packet(0x0936,clif->pDull/*,XXX*/); + packet(0x093d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0944,clif->pHomMenu,2,4); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0952,clif->pGetCharNameRequest,2); + packet(0x0953,clif->pTakeItem,2); + packet(0x0960,clif->pReqCloseBuyingStore,0); #endif // 2014-02-19aRagexe #if PACKETVER == 20140219 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x085d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0860,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0921,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0949,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0953,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x095a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0961,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 + packet(0x0202,clif->pFriendsListAdd,2); + packet(0x0360,clif->pDull/*,XXX*/); + packet(0x0364,clif->pSolveCharName,2); + packet(0x0802,clif->pTakeItem,2); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pUseSkillToId,2,4,6); + packet(0x085b,clif->pReqClickBuyingStore,2); + packet(0x085c,clif->pUseSkillToPos,2,4,6,8); + packet(0x085d,clif->pWalkToXY,2); + packet(0x085f,clif->pGetCharNameRequest,2); + packet(0x0860,clif->pHomMenu,2,4); + packet(0x0868,clif->pStoragePassword,0); + packet(0x086f,clif->pPartyInvite2,2); + packet(0x087c,clif->pMoveToKafra,2,4); + packet(0x0889,clif->pDull/*,XXX*/); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x089f,clif->pDropItem,2,4); + packet(0x08a6,clif->pChangeDir,2,4); + packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08ac,clif->pMoveFromKafra,2,4); + packet(0x0921,clif->pActionRequest,2,6); + packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0939,clif->pItemListWindowSelected,2,4,8); + packet(0x0946,clif->pWantToConnection,2,6,10,14,18); + packet(0x0949,clif->pPartyBookingRegisterReq,2,4); + packet(0x0953,clif->pSearchStoreInfoNextPage,0); + packet(0x095a,clif->pReqCloseBuyingStore,0); + packet(0x0961,clif->pTickSend,2); #endif // 2014-02-26aRagexe #if PACKETVER == 20140226 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0887,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0921,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0941,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0362,clif->pFriendsListAdd,2); + packet(0x0364,clif->pStoragePassword,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pChangeDir,2,4); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pHomMenu,2,4); + packet(0x0877,clif->pWantToConnection,2,6,10,14,18); + packet(0x0887,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0894,clif->pDropItem,2,4); + packet(0x0895,clif->pMoveFromKafra,2,4); + packet(0x091a,clif->pMoveToKafra,2,4); + packet(0x0921,clif->pPartyInvite2,2); + packet(0x0931,clif->pDull/*,XXX*/); + packet(0x0941,clif->pPartyBookingRegisterReq,2,4); + packet(0x0962,clif->pDull/*,XXX*/); + packet(0x0964,clif->pTakeItem,2); + packet(0x0969,clif->pItemListWindowSelected,2,4,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-03-05aRagexe, 2014-03-05bRagexe #if PACKETVER == 20140305 - packet(0x0202,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pTakeItem,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pUseSkillToPos,2,4,6,8); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pWantToConnection,2,6,10,14,18); + packet(0x07e4,clif->pFriendsListAdd,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pChangeDir,2,4); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0878,clif->pDull/*,XXX*/); + packet(0x0934,clif->pHomMenu,2,4); + packet(0x095e,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-03-12dRagexe #if PACKETVER == 20140312 - packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0894,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x094c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x0202,clif->pUseSkillToId,2,4,6); + packet(0x023b,clif->pDull/*,XXX*/); + packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085e,clif->pReqClickBuyingStore,2); + packet(0x086f,clif->pTickSend,2); + packet(0x0889,clif->pWantToConnection,2,6,10,14,18); + packet(0x088c,clif->pUseSkillToPos,2,4,6,8); + packet(0x088d,clif->pItemListWindowSelected,2,4,8); + packet(0x088e,clif->pActionRequest,2,6); + packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0894,clif->pWalkToXY,2); + packet(0x089b,clif->pGetCharNameRequest,2); + packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x089e,clif->pDropItem,2,4); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x08a9,clif->pFriendsListAdd,2); + packet(0x08ad,clif->pSolveCharName,2); + packet(0x091b,clif->pSearchStoreInfoNextPage,0); + packet(0x091c,clif->pPartyInvite2,2); + packet(0x091e,clif->pHomMenu,2,4); + packet(0x092a,clif->pTakeItem,2); + packet(0x0948,clif->pReqCloseBuyingStore,0); + packet(0x094a,clif->pPartyBookingRegisterReq,2,4); + packet(0x094b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x094c,clif->pChangeDir,2,4); + packet(0x0957,clif->pMoveFromKafra,2,4); + packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095e,clif->pStoragePassword,0); + packet(0x0966,clif->pMoveToKafra,2,4); #endif // 2014-03-19aRagexe #if PACKETVER == 20140319 - packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0815,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0864,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0883,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a2,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0933,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0944,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0947,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0955,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0964,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x096a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x02c4,clif->pTakeItem,2); + packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0802,clif->pSearchStoreInfoNextPage,0); + packet(0x0811,clif->pReqClickBuyingStore,2); + packet(0x0815,clif->pHomMenu,2,4); + packet(0x085a,clif->pWalkToXY,2); + packet(0x0864,clif->pActionRequest,2,6); + packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0866,clif->pChangeDir,2,4); + packet(0x086e,clif->pDull/*,XXX*/); + packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0883,clif->pDropItem,2,4); + packet(0x088e,clif->pPartyInvite2,2); + packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0893,clif->pDull/*,XXX*/); + packet(0x089f,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a2,clif->pMoveToKafra,2,4); + packet(0x091f,clif->pItemListWindowSelected,2,4,8); + packet(0x0923,clif->pWantToConnection,2,6,10,14,18); + packet(0x0933,clif->pReqCloseBuyingStore,0); + packet(0x0942,clif->pStoragePassword,0); + packet(0x0944,clif->pUseSkillToId,2,4,6); + packet(0x0947,clif->pMoveFromKafra,2,4); + packet(0x094c,clif->pGetCharNameRequest,2); + packet(0x0954,clif->pFriendsListAdd,2); + packet(0x0955,clif->pTickSend,2); + packet(0x0961,clif->pPartyBookingRegisterReq,2,4); + packet(0x0964,clif->pSolveCharName,2); + packet(0x096a,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2014-03-26aRagexe #if PACKETVER == 20140326 - packet(0x0362,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x083c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0887,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0969,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x0362,clif->pGetCharNameRequest,2); + packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x07ec,clif->pTakeItem,2); + packet(0x083c,clif->pReqClickBuyingStore,2); + packet(0x085b,clif->pReqCloseBuyingStore,0); + packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0869,clif->pPartyBookingRegisterReq,2,4); + packet(0x086b,clif->pMoveFromKafra,2,4); + packet(0x087c,clif->pWalkToXY,2); + packet(0x087e,clif->pFriendsListAdd,2); + packet(0x087f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0887,clif->pDull/*,XXX*/); + packet(0x0898,clif->pDropItem,2,4); + packet(0x08aa,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); + packet(0x0918,clif->pTickSend,2); + packet(0x0928,clif->pSearchStoreInfoNextPage,0); + packet(0x092a,clif->pStoragePassword,0); + packet(0x093d,clif->pActionRequest,2,6); + packet(0x0942,clif->pHomMenu,2,4); + packet(0x0945,clif->pItemListWindowSelected,2,4,8); + packet(0x0946,clif->pPartyInvite2,2); + packet(0x0956,clif->pChangeDir,2,4); + packet(0x0959,clif->pMoveToKafra,2,4); + packet(0x095a,clif->pSolveCharName,2); + packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0969,clif->pUseSkillToId,2,4,6); #endif // 2014-04-02fRagexe, 2014-04-02gRagexe #if PACKETVER == 20140402 - packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0364,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x085b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x085d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0867,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0868,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0882,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0890,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0896,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x093f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0944,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0946,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0950,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0965,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x023b,clif->pReqClickBuyingStore,2); + packet(0x0360,clif->pChangeDir,2,4); + packet(0x0364,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pSolveCharName,2); + packet(0x085b,clif->pMoveFromKafra,2,4); + packet(0x085d,clif->pSearchStoreInfoNextPage,0); + packet(0x0867,clif->pReqCloseBuyingStore,0); + packet(0x0868,clif->pUseSkillToId,2,4,6); + packet(0x0882,clif->pDropItem,2,4); + packet(0x0883,clif->pItemListWindowSelected,2,4,8); + packet(0x088a,clif->pGetCharNameRequest,2); + packet(0x088c,clif->pDull/*,XXX*/); + packet(0x0890,clif->pPartyInvite2,2); + packet(0x0896,clif->pHomMenu,2,4); + packet(0x089a,clif->pFriendsListAdd,2); + packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); + packet(0x091f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0920,clif->pWantToConnection,2,6,10,14,18); + packet(0x0926,clif->pStoragePassword,0); + packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x093f,clif->pWalkToXY,2); + packet(0x0944,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0946,clif->pActionRequest,2,6); + packet(0x094c,clif->pDull/*,XXX*/); + packet(0x0950,clif->pTickSend,2); + packet(0x0958,clif->pTakeItem,2); + packet(0x095c,clif->pMoveToKafra,2,4); + packet(0x0965,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2014-04-09aRagexe, 2014-04-09bRagexe #if PACKETVER == 20140409 - packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x085b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x087e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0884,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0890,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0896,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0918,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x092e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0942,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x0819,clif->pMoveFromKafra,2,4); + packet(0x085b,clif->pSolveCharName,2); + packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086a,clif->pItemListWindowSelected,2,4,8); + packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0873,clif->pReqCloseBuyingStore,0); + packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x087e,clif->pTickSend,2); + packet(0x0883,clif->pWalkToXY,2); + packet(0x0884,clif->pGetCharNameRequest,2); + packet(0x088a,clif->pDull/*,XXX*/); + packet(0x0890,clif->pTakeItem,2); + packet(0x0893,clif->pActionRequest,2,6); + packet(0x0896,clif->pUseSkillToId,2,4,6); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x08a2,clif->pDull/*,XXX*/); + packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a6,clif->pSearchStoreInfoNextPage,0); + packet(0x08a7,clif->pChangeDir,2,4); + packet(0x08a9,clif->pStoragePassword,0); + packet(0x0918,clif->pDropItem,2,4); + packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x092e,clif->pPartyInvite2,2); + packet(0x0942,clif->pMoveToKafra,2,4); + packet(0x0947,clif->pHomMenu,2,4); + packet(0x094c,clif->pPartyBookingRegisterReq,2,4); + packet(0x095a,clif->pReqClickBuyingStore,2); + packet(0x095e,clif->pWantToConnection,2,6,10,14,18); #endif // 2014-04-16aRagexe, 2014-04-16bRagexe #if PACKETVER == 20140416 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x095c,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-04-23aRagexe #if PACKETVER == 20140423 - packet(0x022d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0811,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x083c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x086f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0898,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08ad,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x022d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0360,clif->pStoragePassword,0); + packet(0x0436,clif->pFriendsListAdd,2); + packet(0x07e4,clif->pTakeItem,2); + packet(0x0811,clif->pMoveFromKafra,2,4); + packet(0x083c,clif->pChangeDir,2,4); + packet(0x085a,clif->pSearchStoreInfoNextPage,0); + packet(0x085b,clif->pWalkToXY,2); + packet(0x0862,clif->pMoveToKafra,2,4); + packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0866,clif->pWantToConnection,2,6,10,14,18); + packet(0x086b,clif->pDropItem,2,4); + packet(0x086f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0873,clif->pItemListWindowSelected,2,4,8); + packet(0x088b,clif->pSolveCharName,2); + packet(0x0890,clif->pUseSkillToId,2,4,6); + packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0896,clif->pActionRequest,2,6); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0898,clif->pUseSkillToPos,2,4,6,8); + packet(0x089b,clif->pReqClickBuyingStore,2); + packet(0x089d,clif->pGetCharNameRequest,2); + packet(0x089f,clif->pReqCloseBuyingStore,0); + packet(0x08a8,clif->pHomMenu,2,4); + packet(0x08ad,clif->pDull/*,XXX*/); + packet(0x091a,clif->pTickSend,2); + packet(0x0920,clif->pPartyInvite2,2); + packet(0x094f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095e,clif->pDull/*,XXX*/); #endif // 2014-04-30aRagexe #if PACKETVER == 20140430 - packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0860,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0871,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0899,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0940,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 + packet(0x023b,clif->pTickSend,2); + packet(0x035f,clif->pStoragePassword,0); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pUseSkillToId,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pDropItem,2,4); + packet(0x0860,clif->pFriendsListAdd,2); + packet(0x0870,clif->pPartyInvite2,2); + packet(0x0871,clif->pHomMenu,2,4); + packet(0x0875,clif->pMoveFromKafra,2,4); + packet(0x087f,clif->pTakeItem,2); + packet(0x0884,clif->pPartyBookingRegisterReq,2,4); + packet(0x0899,clif->pChangeDir,2,4); + packet(0x08a1,clif->pDull/*,XXX*/); + packet(0x093b,clif->pItemListWindowSelected,2,4,8); + packet(0x0940,clif->pGetCharNameRequest,2); + packet(0x094b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0953,clif->pDull/*,XXX*/); + packet(0x0956,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pSolveCharName,2); #endif // 2014-05-08bRagexe #if PACKETVER == 20140508 - packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x089b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0932,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0934,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x022d,clif->pSolveCharName,2); + packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pChangeDir,2,4); + packet(0x0366,clif->pPartyInvite2,2); + packet(0x0368,clif->pItemListWindowSelected,2,4,8); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pHomMenu,2,4); + packet(0x0802,clif->pGetCharNameRequest,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0861,clif->pTakeItem,2); + packet(0x0886,clif->pMoveToKafra,2,4); + packet(0x089b,clif->pWantToConnection,2,6,10,14,18); + packet(0x08ab,clif->pDull/*,XXX*/); + packet(0x0927,clif->pStoragePassword,0); + packet(0x0930,clif->pMoveFromKafra,2,4); + packet(0x0932,clif->pDropItem,2,4); + packet(0x0934,clif->pDull/*,XXX*/); + packet(0x094e,clif->pFriendsListAdd,2); + packet(0x096a,clif->pPartyBookingRegisterReq,2,4); #endif // 2014-05-14bRagexe #if PACKETVER == 20140514 - packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0817,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 + packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0817,clif->pDull/*,XXX*/); + packet(0x0865,clif->pActionRequest,2,6); + packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0876,clif->pUseSkillToId,2,4,6); + packet(0x0877,clif->pDull/*,XXX*/); + packet(0x087d,clif->pItemListWindowSelected,2,4,8); + packet(0x0885,clif->pStoragePassword,0); + packet(0x0886,clif->pTickSend,2); + packet(0x088a,clif->pChangeDir,2,4); + packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0895,clif->pTakeItem,2); + packet(0x089a,clif->pSolveCharName,2); + packet(0x089c,clif->pFriendsListAdd,2); + packet(0x08a5,clif->pGetCharNameRequest,2); + packet(0x0918,clif->pPartyBookingRegisterReq,2,4); + packet(0x091d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0921,clif->pSearchStoreInfoNextPage,0); + packet(0x0925,clif->pReqClickBuyingStore,2); + packet(0x092c,clif->pMoveToKafra,2,4); + packet(0x092f,clif->pUseSkillToPos,2,4,6,8); + packet(0x094d,clif->pReqCloseBuyingStore,0); + packet(0x094e,clif->pMoveFromKafra,2,4); + packet(0x0958,clif->pHomMenu,2,4); + packet(0x095f,clif->pWalkToXY,2); + packet(0x0962,clif->pPartyInvite2,2); + packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x096a,clif->pDropItem,2,4); #endif // 2014-05-21bRagexe #if PACKETVER == 20140521 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0869,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0968,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0869,clif->pStoragePassword,0); + packet(0x088b,clif->pDull/*,XXX*/); + packet(0x088d,clif->pChangeDir,2,4); + packet(0x089c,clif->pFriendsListAdd,2); + packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); + packet(0x0968,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-05-28aRagexe #if PACKETVER == 20140528 - packet(0x0202,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0862,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x088f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a8,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0930,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x093a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x093f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x094b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x095f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0963,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 + packet(0x0202,clif->pWalkToXY,2); + packet(0x0360,clif->pStoragePassword,0); + packet(0x085f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0862,clif->pSolveCharName,2); + packet(0x0872,clif->pHomMenu,2,4); + packet(0x0875,clif->pDropItem,2,4); + packet(0x0877,clif->pTickSend,2); + packet(0x0879,clif->pMoveFromKafra,2,4); + packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x088f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0894,clif->pDull/*,XXX*/); + packet(0x0896,clif->pItemListWindowSelected,2,4,8); + packet(0x089d,clif->pTakeItem,2); + packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a8,clif->pSearchStoreInfoNextPage,0); + packet(0x08ab,clif->pDull/*,XXX*/); + packet(0x091d,clif->pFriendsListAdd,2); + packet(0x0929,clif->pActionRequest,2,6); + packet(0x0930,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0938,clif->pReqCloseBuyingStore,0); + packet(0x093a,clif->pMoveToKafra,2,4); + packet(0x093f,clif->pPartyInvite2,2); + packet(0x094a,clif->pReqClickBuyingStore,2); + packet(0x094b,clif->pChangeDir,2,4); + packet(0x095f,clif->pGetCharNameRequest,2); + packet(0x0963,clif->pUseSkillToId,2,4,6); + packet(0x0964,clif->pWantToConnection,2,6,10,14,18); + packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); #endif // 2014-06-05aRagexe, 2014-06-05bRagexe #if PACKETVER == 20140605 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0921,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pReqCloseBuyingStore,0); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pActionRequest,2,6); + packet(0x0369,clif->pWantToConnection,2,6,10,14,18); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pChangeDir,2,4); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0921,clif->pStoragePassword,0); + packet(0x0931,clif->pHomMenu,2,4); + packet(0x0940,clif->pSolveCharName,2); + packet(0x094c,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-06-11cRagexe, 2014-06-11dRagexe, 2014-06-11hRagexe, 2014-06-12aRagexe, 2014-06-13aRagexe #if PACKETVER == 20140611 || \ PACKETVER == 20140612 || \ PACKETVER == 20140613 - packet(0x0364,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0438,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x07e4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0838,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0864,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0878,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0891,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0893,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0894,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0924,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0950,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0958,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0965,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0969,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 -#endif - -// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe, 2018-08-29aRagexe, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-19aRagexe, 2018-10-02aRagexe, 2018-10-02bRagexe, 2018-10-17_02aRagexe, 2018-10-17_03aRagexe, 2018-10-17bRagexe, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-11-07aRagexe, 2018-11-14cRagexe, 2018-11-14dRagexe + packet(0x0364,clif->pReqCloseBuyingStore,0); + packet(0x0438,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x07e4,clif->pMoveToKafra,2,4); + packet(0x0838,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0864,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0867,clif->pTickSend,2); + packet(0x086c,clif->pDull/*,XXX*/); + packet(0x0874,clif->pPartyInvite2,2); + packet(0x0878,clif->pTakeItem,2); + packet(0x088c,clif->pUseSkillToPos,2,4,6,8); + packet(0x0891,clif->pActionRequest,2,6); + packet(0x0893,clif->pWalkToXY,2); + packet(0x0894,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x089b,clif->pFriendsListAdd,2); + packet(0x08a1,clif->pUseSkillToId,2,4,6); + packet(0x08a2,clif->pDull/*,XXX*/); + packet(0x0924,clif->pGetCharNameRequest,2); + packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0941,clif->pStoragePassword,0); + packet(0x094a,clif->pItemListWindowSelected,2,4,8); + packet(0x094f,clif->pSolveCharName,2); + packet(0x0950,clif->pPartyBookingRegisterReq,2,4); + packet(0x0951,clif->pChangeDir,2,4); + packet(0x0952,clif->pMoveFromKafra,2,4); + packet(0x0957,clif->pReqClickBuyingStore,2); + packet(0x0958,clif->pWantToConnection,2,6,10,14,18); + packet(0x0963,clif->pDropItem,2,4); + packet(0x0965,clif->pHomMenu,2,4); + packet(0x0969,clif->pSearchStoreInfoNextPage,0); +#endif + +// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe, 2018-08-29aRagexe, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-19aRagexe, 2018-10-02aRagexe, 2018-10-02bRagexe, 2018-10-17_02aRagexe, 2018-10-17_03aRagexe, 2018-10-17bRagexe, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-11-07aRagexe, 2018-11-14cRagexe, 2018-11-14dRagexe, 2018-11-21bRagexe, 2018-11-28aRagexe, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-12aRagexe, 2018-12-12bRagexe, 2018-12-19bRagexe, 2018-12-26aRagexe, 2019-01-09aRagexe, 2019-01-16bRagexe, 2019-01-16cRagexe, 2019-01-23dRagexe, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-27aRagexe, 2019-02-28aRagexe, 2019-03-06bRagexe, 2019-03-06cRagexe, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-22aRagexe, 2019-03-27bRagexe, 2019-04-03aRagexe, 2019-04-17aRagexe, 2019-04-18aRagexe, 2019-05-08cRagexe, 2019-05-22bRagexe, 2019-05-22cRagexe, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29cRagexe, 2019-05-30aRagexe, 2019-06-05fRagexe, 2019-06-05KRagexe, 2019-06-19bRagexe, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-07-03aRagexe, 2019-07-17aRagexe, 2019-07-17dRagexe, 2019-07-24aRagexe, 2019-07-31bRagexe, 2019-08-02aRagexe, 2019-08-07aRagexe, 2019-08-21aRagexe, 2019-08-28aRagexe, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe, 2019-09-25aRagexe, 2019-09-25bRagexe, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-16fRagexe, 2019-10-16gRagexe, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-07aRagexe, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-20aRagexe, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04bRagexe, 2019-12-11aRagexe, 2019-12-18bRagexe, 2019-12-24aRagexe, 2019-12-24bRagexe, 2020-01-08aRagexe, 2020-01-22cRagexe, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-06aRagexe, 2020-02-12aRagexe, 2020-02-19dRagexe, 2020-03-04aRagexe, 2020-03-18bRagexe, 2020-04-01bRagexe, 2020-04-14_6aRagexe, 2020-04-14eRagexe, 2020-05-06aRagexe, 2020-05-20bRagexe, 2020-06-03aRagexe, 2020-06-17aRagexe, 2020-07-01bRagexe, 2020-07-01cRagexe #if PACKETVER == 20140611 || \ PACKETVER == 20150225 || \ PACKETVER == 20180315 || \ @@ -3376,6477 +3376,6424 @@ PACKETVER == 20181024 || \ PACKETVER == 20181031 || \ PACKETVER == 20181107 || \ - PACKETVER == 20181114 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + PACKETVER == 20181114 || \ + PACKETVER == 20181121 || \ + PACKETVER == 20181128 || \ + PACKETVER == 20181205 || \ + PACKETVER == 20181212 || \ + PACKETVER == 20181219 || \ + PACKETVER == 20181226 || \ + PACKETVER == 20190109 || \ + PACKETVER == 20190116 || \ + PACKETVER == 20190123 || \ + PACKETVER == 20190213 || \ + PACKETVER == 20190227 || \ + PACKETVER == 20190228 || \ + PACKETVER == 20190306 || \ + PACKETVER == 20190313 || \ + PACKETVER == 20190320 || \ + PACKETVER == 20190322 || \ + PACKETVER == 20190327 || \ + PACKETVER == 20190403 || \ + PACKETVER == 20190417 || \ + PACKETVER == 20190418 || \ + PACKETVER == 20190508 || \ + PACKETVER == 20190522 || \ + PACKETVER == 20190523 || \ + PACKETVER == 20190529 || \ + PACKETVER == 20190530 || \ + PACKETVER == 20190605 || \ + PACKETVER == 20190619 || \ + PACKETVER == 20190703 || \ + PACKETVER == 20190717 || \ + PACKETVER == 20190724 || \ + PACKETVER == 20190731 || \ + PACKETVER == 20190802 || \ + PACKETVER == 20190807 || \ + PACKETVER == 20190821 || \ + PACKETVER == 20190828 || \ + PACKETVER == 20190904 || \ + PACKETVER == 20190918 || \ + PACKETVER == 20190925 || \ + PACKETVER == 20191002 || \ + PACKETVER == 20191016 || \ + PACKETVER == 20191018 || \ + PACKETVER == 20191023 || \ + PACKETVER == 20191030 || \ + PACKETVER == 20191106 || \ + PACKETVER == 20191107 || \ + PACKETVER == 20191113 || \ + PACKETVER == 20191120 || \ + PACKETVER == 20191127 || \ + PACKETVER == 20191204 || \ + PACKETVER == 20191211 || \ + PACKETVER == 20191218 || \ + PACKETVER == 20191224 || \ + PACKETVER == 20200108 || \ + PACKETVER == 20200122 || \ + PACKETVER == 20200129 || \ + PACKETVER == 20200130 || \ + PACKETVER == 20200205 || \ + PACKETVER == 20200206 || \ + PACKETVER == 20200212 || \ + PACKETVER == 20200219 || \ + PACKETVER == 20200304 || \ + PACKETVER == 20200318 || \ + PACKETVER == 20200401 || \ + PACKETVER == 20200414 || \ + PACKETVER == 20200506 || \ + PACKETVER == 20200520 || \ + PACKETVER == 20200603 || \ + PACKETVER == 20200617 || \ + PACKETVER >= 20200701 + packet(0x0202,clif->pFriendsListAdd,2); + packet(0x022d,clif->pHomMenu,2,4); + packet(0x023b,clif->pStoragePassword,0); + packet(0x0281,clif->pDull/*,XXX*/); + packet(0x02c4,clif->pPartyInvite2,2); + packet(0x035f,clif->pWalkToXY,2); + packet(0x0360,clif->pTickSend,2); + packet(0x0361,clif->pChangeDir,2,4); + packet(0x0362,clif->pTakeItem,2); + packet(0x0363,clif->pDropItem,2,4); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0365,clif->pMoveFromKafra,2,4); + packet(0x0366,clif->pUseSkillToPos,2,4,6,8); + packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pGetCharNameRequest,2); + packet(0x0369,clif->pSolveCharName,2); + packet(0x0436,clif->pWantToConnection,2,6,10,14,18); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0438,clif->pUseSkillToId,2,4,6); + packet(0x07e4,clif->pItemListWindowSelected,2,4,8); + packet(0x07ec,clif->pDull/*,XXX*/); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0815,clif->pReqCloseBuyingStore,0); + packet(0x0817,clif->pReqClickBuyingStore,2); + packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2014-06-18aRagexe #if PACKETVER == 20140618 - packet(0x085d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0878,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0886,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0890,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0939,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x093b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0967,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 + packet(0x085d,clif->pMoveToKafra,2,4); + packet(0x085f,clif->pSearchStoreInfoNextPage,0); + packet(0x0860,clif->pTickSend,2); + packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0878,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087d,clif->pSolveCharName,2); + packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0885,clif->pMoveFromKafra,2,4); + packet(0x0886,clif->pPartyBookingRegisterReq,2,4); + packet(0x0890,clif->pChangeDir,2,4); + packet(0x0892,clif->pUseSkillToId,2,4,6); + packet(0x08a6,clif->pReqClickBuyingStore,2); + packet(0x08a7,clif->pWalkToXY,2); + packet(0x08ac,clif->pDull/*,XXX*/); + packet(0x0917,clif->pUseSkillToPos,2,4,6,8); + packet(0x091f,clif->pItemListWindowSelected,2,4,8); + packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0935,clif->pTakeItem,2); + packet(0x0938,clif->pPartyInvite2,2); + packet(0x0939,clif->pReqCloseBuyingStore,0); + packet(0x093b,clif->pActionRequest,2,6); + packet(0x0945,clif->pDropItem,2,4); + packet(0x0954,clif->pFriendsListAdd,2); + packet(0x0957,clif->pStoragePassword,0); + packet(0x095d,clif->pGetCharNameRequest,2); + packet(0x095e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0962,clif->pDull/*,XXX*/); + packet(0x0967,clif->pHomMenu,2,4); #endif // 2014-06-25aRagexe, 2014-06-25bRagexe #if PACKETVER == 20140625 - packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0861,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0875,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0897,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a1,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a2,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0968,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pMoveToKafra,2,4); + packet(0x023b,clif->pMoveFromKafra,2,4); + packet(0x0815,clif->pDull/*,XXX*/); + packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pWalkToXY,2); + packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0861,clif->pUseSkillToId,2,4,6); + packet(0x086b,clif->pPartyInvite2,2); + packet(0x0875,clif->pSolveCharName,2); + packet(0x087b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0885,clif->pDropItem,2,4); + packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x088a,clif->pItemListWindowSelected,2,4,8); + packet(0x088e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0897,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a1,clif->pTickSend,2); + packet(0x08a2,clif->pChangeDir,2,4); + packet(0x091a,clif->pTakeItem,2); + packet(0x0923,clif->pSearchStoreInfoNextPage,0); + packet(0x0928,clif->pReqCloseBuyingStore,0); + packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0946,clif->pHomMenu,2,4); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0959,clif->pActionRequest,2,6); + packet(0x0960,clif->pStoragePassword,0); + packet(0x0968,clif->pReqClickBuyingStore,2); + packet(0x0969,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-07-02aRagexe #if PACKETVER == 20140702 - packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0438,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x07e4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0887,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0892,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0933,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0364,clif->pItemListWindowSelected,2,4,8); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pFriendsListAdd,2); + packet(0x0438,clif->pMoveToKafra,2,4); + packet(0x07e4,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pStoragePassword,0); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pHomMenu,2,4); + packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pDropItem,2,4); + packet(0x086c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0887,clif->pWalkToXY,2); + packet(0x0892,clif->pMoveFromKafra,2,4); + packet(0x0895,clif->pDull/*,XXX*/); + packet(0x08a0,clif->pPartyInvite2,2); + packet(0x08a2,clif->pTakeItem,2); + packet(0x0925,clif->pChangeDir,2,4); + packet(0x092c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0933,clif->pDull/*,XXX*/); + packet(0x0940,clif->pSearchStoreInfoNextPage,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-07-09aRagexe #if PACKETVER == 20140709 - packet(0x0364,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0877,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0894,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0897,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0898,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x0364,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0860,clif->pStoragePassword,0); + packet(0x0866,clif->pDull/*,XXX*/); + packet(0x0869,clif->pChangeDir,2,4); + packet(0x0875,clif->pItemListWindowSelected,2,4,8); + packet(0x0877,clif->pUseSkillToId,2,4,6); + packet(0x0879,clif->pGetCharNameRequest,2); + packet(0x087a,clif->pSearchStoreInfoNextPage,0); + packet(0x0887,clif->pMoveToKafra,2,4); + packet(0x0888,clif->pDull/*,XXX*/); + packet(0x088b,clif->pPartyInvite2,2); + packet(0x0894,clif->pReqCloseBuyingStore,0); + packet(0x0897,clif->pReqClickBuyingStore,2); + packet(0x0898,clif->pWantToConnection,2,6,10,14,18); + packet(0x08ad,clif->pDropItem,2,4); + packet(0x091a,clif->pWalkToXY,2); + packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x092f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0931,clif->pSolveCharName,2); + packet(0x0934,clif->pTickSend,2); + packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094d,clif->pHomMenu,2,4); + packet(0x094e,clif->pMoveFromKafra,2,4); + packet(0x094f,clif->pFriendsListAdd,2); + packet(0x095f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0961,clif->pTakeItem,2); #endif // 2014-07-16aRagexe, 2014-07-16bRagexe, 2014-07-16cRagexe #if PACKETVER == 20140716 - packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0871,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0881,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0918,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0926,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0959,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 + packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x0811,clif->pActionRequest,2,6); + packet(0x085c,clif->pGetCharNameRequest,2); + packet(0x085f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0868,clif->pPartyInvite2,2); + packet(0x0871,clif->pMoveToKafra,2,4); + packet(0x0881,clif->pUseSkillToId,2,4,6); + packet(0x088b,clif->pSearchStoreInfoNextPage,0); + packet(0x088d,clif->pDull/*,XXX*/); + packet(0x088f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089a,clif->pSolveCharName,2); + packet(0x089f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a2,clif->pReqCloseBuyingStore,0); + packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08ac,clif->pHomMenu,2,4); + packet(0x0918,clif->pWalkToXY,2); + packet(0x091f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0926,clif->pDropItem,2,4); + packet(0x092c,clif->pFriendsListAdd,2); + packet(0x092f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0938,clif->pMoveFromKafra,2,4); + packet(0x093b,clif->pReqClickBuyingStore,2); + packet(0x0947,clif->pDull/*,XXX*/); + packet(0x0952,clif->pChangeDir,2,4); + packet(0x0958,clif->pTakeItem,2); + packet(0x0959,clif->pTickSend,2); + packet(0x0969,clif->pItemListWindowSelected,2,4,8); #endif // 2014-07-23aRagexe, 2014-07-23bRagexe #if PACKETVER == 20140723 - packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0819,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0888,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0891,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0896,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0927,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0935,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0945,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0960,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x02c4,clif->pTickSend,2); + packet(0x0364,clif->pStoragePassword,0); + packet(0x0368,clif->pGetCharNameRequest,2); + packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0819,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0838,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pSearchStoreInfoNextPage,0); + packet(0x085f,clif->pWalkToXY,2); + packet(0x0869,clif->pMoveToKafra,2,4); + packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0888,clif->pReqClickBuyingStore,2); + packet(0x0891,clif->pReqCloseBuyingStore,0); + packet(0x0896,clif->pDropItem,2,4); + packet(0x0898,clif->pDull/*,XXX*/); + packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a2,clif->pMoveFromKafra,2,4); + packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); + packet(0x0927,clif->pSolveCharName,2); + packet(0x092f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0934,clif->pFriendsListAdd,2); + packet(0x0935,clif->pPartyInvite2,2); + packet(0x0939,clif->pItemListWindowSelected,2,4,8); + packet(0x093d,clif->pTakeItem,2); + packet(0x0945,clif->pUseSkillToPos,2,4,6,8); + packet(0x0947,clif->pActionRequest,2,6); + packet(0x0948,clif->pHomMenu,2,4); + packet(0x095f,clif->pDull/*,XXX*/); + packet(0x0960,clif->pChangeDir,2,4); #endif // 2014-07-30aRagexe #if PACKETVER == 20140730 - packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0366,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0367,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0815,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x087d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x088b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a0,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a7,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a9,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0940,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 + packet(0x022d,clif->pUseSkillToPos,2,4,6,8); + packet(0x0364,clif->pGetCharNameRequest,2); + packet(0x0366,clif->pUseSkillToId,2,4,6); + packet(0x0367,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0437,clif->pWantToConnection,2,6,10,14,18); + packet(0x07ec,clif->pDull/*,XXX*/); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x0815,clif->pFriendsListAdd,2); + packet(0x0817,clif->pActionRequest,2,6); + packet(0x085e,clif->pWalkToXY,2); + packet(0x085f,clif->pReqCloseBuyingStore,0); + packet(0x087d,clif->pMoveFromKafra,2,4); + packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x087f,clif->pDropItem,2,4); + packet(0x0889,clif->pPartyBookingRegisterReq,2,4); + packet(0x088b,clif->pTickSend,2); + packet(0x088d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0892,clif->pMoveToKafra,2,4); + packet(0x08a0,clif->pItemListWindowSelected,2,4,8); + packet(0x08a6,clif->pReqClickBuyingStore,2); + packet(0x08a7,clif->pSolveCharName,2); + packet(0x08a9,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08ad,clif->pStoragePassword,0); + packet(0x091e,clif->pPartyInvite2,2); + packet(0x0924,clif->pSearchStoreInfoNextPage,0); + packet(0x092a,clif->pTakeItem,2); + packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0940,clif->pChangeDir,2,4); + packet(0x0946,clif->pHomMenu,2,4); #endif // 2014-08-06aRagexe, 2014-08-06bRagexe #if PACKETVER == 20140806 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0948,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0948,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-08-13aRagexe, 2014-08-13bRagexe, 2014-08-14aRagexe #if PACKETVER == 20140813 || \ PACKETVER == 20140814 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0882,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pStoragePassword,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0802,clif->pWantToConnection,2,6,10,14,18); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pItemListWindowSelected,2,4,8); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0868,clif->pHomMenu,2,4); + packet(0x0878,clif->pChangeDir,2,4); + packet(0x087c,clif->pPartyInvite2,2); + packet(0x0882,clif->pPartyBookingRegisterReq,2,4); + packet(0x0895,clif->pMoveFromKafra,2,4); + packet(0x0897,clif->pFriendsListAdd,2); + packet(0x0899,clif->pDropItem,2,4); + packet(0x08a3,clif->pTakeItem,2); + packet(0x08a7,clif->pDull/*,XXX*/); + packet(0x08ab,clif->pDull/*,XXX*/); + packet(0x0967,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-08-20aRagexe #if PACKETVER == 20140820 - packet(0x035f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0835,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0864,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0869,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0899,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a3,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a7,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0937,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0951,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0952,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x035f,clif->pReqCloseBuyingStore,0); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pSearchStoreInfoNextPage,0); + packet(0x0835,clif->pChangeDir,2,4); + packet(0x0861,clif->pTickSend,2); + packet(0x0864,clif->pWantToConnection,2,6,10,14,18); + packet(0x0869,clif->pDull/*,XXX*/); + packet(0x086c,clif->pItemListWindowSelected,2,4,8); + packet(0x086e,clif->pPartyInvite2,2); + packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0876,clif->pDropItem,2,4); + packet(0x0891,clif->pGetCharNameRequest,2); + packet(0x0899,clif->pUseSkillToPos,2,4,6,8); + packet(0x089a,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x089b,clif->pMoveFromKafra,2,4); + packet(0x08a3,clif->pWalkToXY,2); + packet(0x08a7,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091d,clif->pSolveCharName,2); + packet(0x092f,clif->pUseSkillToId,2,4,6); + packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0937,clif->pHomMenu,2,4); + packet(0x093a,clif->pStoragePassword,0); + packet(0x093e,clif->pReqClickBuyingStore,2); + packet(0x094a,clif->pFriendsListAdd,2); + packet(0x0951,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0952,clif->pActionRequest,2,6); + packet(0x0956,clif->pMoveToKafra,2,4); + packet(0x0958,clif->pDull/*,XXX*/); + packet(0x0961,clif->pPartyBookingRegisterReq,2,4); #endif // 2014-08-27aRagexe #if PACKETVER == 20140827 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0943,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-09-03aRagexe #if PACKETVER == 20140903 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pWantToConnection,2,6,10,14,18); + packet(0x089b,clif->pFriendsListAdd,2); + packet(0x0931,clif->pHomMenu,2,4); + packet(0x0941,clif->pStoragePassword,0); + packet(0x0943,clif->pDull/*,XXX*/); + packet(0x0945,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-09-17aRagexe #if PACKETVER == 20140917 - packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0365,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0367,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x092a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0951,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0955,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x095c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x095e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0966,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x022d,clif->pPartyInvite2,2); + packet(0x0364,clif->pSearchStoreInfoNextPage,0); + packet(0x0365,clif->pMoveToKafra,2,4); + packet(0x0366,clif->pWantToConnection,2,6,10,14,18); + packet(0x0367,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0369,clif->pSolveCharName,2); + packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0864,clif->pTakeItem,2); + packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0889,clif->pActionRequest,2,6); + packet(0x0895,clif->pHomMenu,2,4); + packet(0x0897,clif->pTickSend,2); + packet(0x0898,clif->pGetCharNameRequest,2); + packet(0x089c,clif->pReqClickBuyingStore,2); + packet(0x08a8,clif->pStoragePassword,0); + packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x091e,clif->pReqCloseBuyingStore,0); + packet(0x092a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0930,clif->pMoveFromKafra,2,4); + packet(0x0949,clif->pUseSkillToId,2,4,6); + packet(0x094f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0951,clif->pPartyBookingRegisterReq,2,4); + packet(0x0955,clif->pFriendsListAdd,2); + packet(0x0956,clif->pItemListWindowSelected,2,4,8); + packet(0x0957,clif->pDull/*,XXX*/); + packet(0x095a,clif->pDropItem,2,4); + packet(0x095c,clif->pWalkToXY,2); + packet(0x095e,clif->pChangeDir,2,4); + packet(0x0966,clif->pDull/*,XXX*/); #endif // 2014-09-24cRagexe #if PACKETVER == 20140924 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0886,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0894,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a5,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a7,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0918,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0925,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0926,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0928,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0949,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 + packet(0x0366,clif->pUseSkillToPos,2,4,6,8); + packet(0x0367,clif->pPartyInvite2,2); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x0815,clif->pWalkToXY,2); + packet(0x0862,clif->pDull/*,XXX*/); + packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x086b,clif->pReqCloseBuyingStore,0); + packet(0x086d,clif->pTakeItem,2); + packet(0x086e,clif->pHomMenu,2,4); + packet(0x0886,clif->pGetCharNameRequest,2); + packet(0x088b,clif->pItemListWindowSelected,2,4,8); + packet(0x0894,clif->pActionRequest,2,6); + packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089c,clif->pMoveToKafra,2,4); + packet(0x08a5,clif->pSolveCharName,2); + packet(0x08a7,clif->pUseSkillToId,2,4,6); + packet(0x0918,clif->pWantToConnection,2,6,10,14,18); + packet(0x091b,clif->pSearchStoreInfoNextPage,0); + packet(0x0925,clif->pDull/*,XXX*/); + packet(0x0926,clif->pTickSend,2); + packet(0x0928,clif->pMoveFromKafra,2,4); + packet(0x092b,clif->pReqClickBuyingStore,2); + packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0934,clif->pChangeDir,2,4); + packet(0x0949,clif->pDropItem,2,4); + packet(0x0952,clif->pFriendsListAdd,2); #endif // 2014-10-01aRagexe #if PACKETVER == 20141001 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0884,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0885,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pDropItem,2,4); + packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pMoveFromKafra,2,4); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087c,clif->pMoveToKafra,2,4); + packet(0x0884,clif->pPartyInvite2,2); + packet(0x0885,clif->pGetCharNameRequest,2); + packet(0x089c,clif->pPartyBookingRegisterReq,2,4); + packet(0x089d,clif->pFriendsListAdd,2); + packet(0x08ad,clif->pChangeDir,2,4); + packet(0x091c,clif->pDull/*,XXX*/); + packet(0x092a,clif->pStoragePassword,0); + packet(0x0937,clif->pItemListWindowSelected,2,4,8); + packet(0x0939,clif->pDull/*,XXX*/); + packet(0x093f,clif->pTakeItem,2); + packet(0x094b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0952,clif->pHomMenu,2,4); #endif // 2014-10-08aRagexe, 2014-10-08bRagexe, 2014-10-08cRagexe, 2014-10-08dRagexe #if PACKETVER == 20141008 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0942,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-10-15bRagexe, 2014-10-15cRagexe, 2014-10-15dRagexe, 2014-10-16aRagexe #if PACKETVER == 20141015 || \ PACKETVER == 20141016 - packet(0x022d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0922,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pMoveFromKafra,2,4); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pHomMenu,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0922,clif->pDull/*,XXX*/); + packet(0x0936,clif->pStoragePassword,0); + packet(0x094b,clif->pFriendsListAdd,2); + packet(0x0967,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-10-22bRagexe #if PACKETVER == 20141022 - packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0878,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0896,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pStoragePassword,0); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0878,clif->pMoveToKafra,2,4); + packet(0x087d,clif->pDropItem,2,4); + packet(0x0896,clif->pPartyInvite2,2); + packet(0x0899,clif->pHomMenu,2,4); + packet(0x08aa,clif->pMoveFromKafra,2,4); + packet(0x08ab,clif->pDull/*,XXX*/); + packet(0x08ad,clif->pChangeDir,2,4); + packet(0x091a,clif->pFriendsListAdd,2); + packet(0x092b,clif->pDull/*,XXX*/); + packet(0x093b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0940,clif->pSearchStoreInfoNextPage,0); + packet(0x094e,clif->pTakeItem,2); + packet(0x0955,clif->pPartyBookingRegisterReq,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-10-29aRagexe #if PACKETVER == 20141029 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pWalkToXY,2); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pStoragePassword,0); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pActionRequest,2,6); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-11-05aRagexe, 2014-11-05bRagexe #if PACKETVER == 20141105 - packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x035f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0864,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0871,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0874,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0875,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0892,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0898,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a0,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0948,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0957,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x095f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0968,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x022d,clif->pDull/*,XXX*/); + packet(0x035f,clif->pUseSkillToId,2,4,6); + packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x085c,clif->pUseSkillToPos,2,4,6,8); + packet(0x0863,clif->pGetCharNameRequest,2); + packet(0x0864,clif->pTickSend,2); + packet(0x0865,clif->pFriendsListAdd,2); + packet(0x0871,clif->pStoragePassword,0); + packet(0x0874,clif->pDull/*,XXX*/); + packet(0x0875,clif->pActionRequest,2,6); + packet(0x0877,clif->pItemListWindowSelected,2,4,8); + packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0892,clif->pDropItem,2,4); + packet(0x0898,clif->pMoveFromKafra,2,4); + packet(0x08a0,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a5,clif->pChangeDir,2,4); + packet(0x08a7,clif->pReqCloseBuyingStore,0); + packet(0x08ad,clif->pMoveToKafra,2,4); + packet(0x091d,clif->pSolveCharName,2); + packet(0x091e,clif->pReqClickBuyingStore,2); + packet(0x092b,clif->pTakeItem,2); + packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0944,clif->pHomMenu,2,4); + packet(0x0948,clif->pSearchStoreInfoNextPage,0); + packet(0x0950,clif->pPartyInvite2,2); + packet(0x0957,clif->pWalkToXY,2); + packet(0x095f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0968,clif->pPartyBookingRegisterReq,2,4); #endif // 2014-11-12cRagexe, 2014-11-12dRagexe #if PACKETVER == 20141112 - packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0438,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x07e4,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0869,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0871,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08a0,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a1,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0962,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x0362,clif->pFriendsListAdd,2); + packet(0x0438,clif->pSolveCharName,2); + packet(0x07e4,clif->pReqCloseBuyingStore,0); + packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0838,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pMoveToKafra,2,4); + packet(0x085f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0863,clif->pUseSkillToId,2,4,6); + packet(0x0869,clif->pGetCharNameRequest,2); + packet(0x086c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0871,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0885,clif->pChangeDir,2,4); + packet(0x0886,clif->pItemListWindowSelected,2,4,8); + packet(0x0887,clif->pPartyInvite2,2); + packet(0x088d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08a0,clif->pWalkToXY,2); + packet(0x08a1,clif->pReqClickBuyingStore,2); + packet(0x08ab,clif->pStoragePassword,0); + packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0926,clif->pHomMenu,2,4); + packet(0x0929,clif->pActionRequest,2,6); + packet(0x0943,clif->pDropItem,2,4); + packet(0x094b,clif->pWantToConnection,2,6,10,14,18); + packet(0x094c,clif->pDull/*,XXX*/); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x0955,clif->pMoveFromKafra,2,4); + packet(0x095d,clif->pTickSend,2); + packet(0x0960,clif->pTakeItem,2); + packet(0x0962,clif->pUseSkillToPos,2,4,6,8); #endif // 2014-11-19dRagexe #if PACKETVER == 20141119 - packet(0x0202,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0866,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0872,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0875,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x088d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a8,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0918,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0933,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0938,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0948,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0963,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x0202,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085a,clif->pReqClickBuyingStore,2); + packet(0x0861,clif->pFriendsListAdd,2); + packet(0x0865,clif->pPartyInvite2,2); + packet(0x0866,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0872,clif->pActionRequest,2,6); + packet(0x0873,clif->pUseSkillToId,2,4,6); + packet(0x0875,clif->pGetCharNameRequest,2); + packet(0x087c,clif->pSolveCharName,2); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x0887,clif->pReqCloseBuyingStore,0); + packet(0x0888,clif->pPartyBookingRegisterReq,2,4); + packet(0x088d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0895,clif->pItemListWindowSelected,2,4,8); + packet(0x08a8,clif->pTakeItem,2); + packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0918,clif->pUseSkillToPos,2,4,6,8); + packet(0x0920,clif->pChangeDir,2,4); + packet(0x0921,clif->pWantToConnection,2,6,10,14,18); + packet(0x0929,clif->pMoveFromKafra,2,4); + packet(0x092f,clif->pDull/*,XXX*/); + packet(0x0933,clif->pStoragePassword,0); + packet(0x0938,clif->pTickSend,2); + packet(0x0940,clif->pSearchStoreInfoNextPage,0); + packet(0x0941,clif->pMoveToKafra,2,4); + packet(0x0942,clif->pHomMenu,2,4); + packet(0x0948,clif->pWalkToXY,2); + packet(0x094c,clif->pDropItem,2,4); + packet(0x0963,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2014-11-26aRagexe, 2014-11-26bRagexe, 2014-11-26cRagexe, 2014-11-26dRagexe #if PACKETVER == 20141126 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0367,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0871,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0367,clif->pDull/*,XXX*/); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pPartyBookingRegisterReq,2,4); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0871,clif->pMoveFromKafra,2,4); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x0896,clif->pItemListWindowSelected,2,4,8); + packet(0x08a4,clif->pChangeDir,2,4); + packet(0x08ad,clif->pStoragePassword,0); + packet(0x0920,clif->pDropItem,2,4); + packet(0x0942,clif->pFriendsListAdd,2); + packet(0x095a,clif->pTakeItem,2); + packet(0x095b,clif->pHomMenu,2,4); + packet(0x095f,clif->pMoveToKafra,2,4); + packet(0x0965,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-12-03aRagexe #if PACKETVER == 20141203 - packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0281,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0861,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x086e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0889,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a5,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0928,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x0202,clif->pSolveCharName,2); + packet(0x0281,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0367,clif->pGetCharNameRequest,2); + packet(0x0368,clif->pDull/*,XXX*/); + packet(0x0802,clif->pWantToConnection,2,6,10,14,18); + packet(0x0861,clif->pMoveToKafra,2,4); + packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086d,clif->pMoveFromKafra,2,4); + packet(0x086e,clif->pTakeItem,2); + packet(0x087b,clif->pWalkToXY,2); + packet(0x087e,clif->pItemListWindowSelected,2,4,8); + packet(0x0880,clif->pChangeDir,2,4); + packet(0x0889,clif->pFriendsListAdd,2); + packet(0x0898,clif->pStoragePassword,0); + packet(0x089c,clif->pUseSkillToPos,2,4,6,8); + packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a5,clif->pActionRequest,2,6); + packet(0x08aa,clif->pDropItem,2,4); + packet(0x0917,clif->pSearchStoreInfoNextPage,0); + packet(0x091c,clif->pPartyBookingRegisterReq,2,4); + packet(0x091d,clif->pPartyInvite2,2); + packet(0x0928,clif->pTickSend,2); + packet(0x092a,clif->pDull/*,XXX*/); + packet(0x0936,clif->pHomMenu,2,4); + packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0957,clif->pReqCloseBuyingStore,0); + packet(0x095c,clif->pReqClickBuyingStore,2); + packet(0x0962,clif->pUseSkillToId,2,4,6); #endif // 2014-12-10bRagexe, 2014-12-10cRagexe #if PACKETVER == 20141210 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0885,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x092b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0954,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0958,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0963,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pHomMenu,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pChangeDir,2,4); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087b,clif->pTakeItem,2); + packet(0x0885,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08ac,clif->pItemListWindowSelected,2,4,8); + packet(0x0917,clif->pPartyInvite2,2); + packet(0x0927,clif->pDull/*,XXX*/); + packet(0x092b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0947,clif->pDull/*,XXX*/); + packet(0x0954,clif->pWantToConnection,2,6,10,14,18); + packet(0x0955,clif->pMoveFromKafra,2,4); + packet(0x0958,clif->pDropItem,2,4); + packet(0x0961,clif->pFriendsListAdd,2); + packet(0x0963,clif->pStoragePassword,0); + packet(0x0967,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-12-17aRagexe #if PACKETVER == 20141217 - packet(0x0360,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0879,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0889,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x088e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08ab,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0924,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0930,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0933,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0939,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0944,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0948,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x0360,clif->pMoveToKafra,2,4); + packet(0x085b,clif->pSearchStoreInfoNextPage,0); + packet(0x0860,clif->pStoragePassword,0); + packet(0x086c,clif->pItemListWindowSelected,2,4,8); + packet(0x0875,clif->pMoveFromKafra,2,4); + packet(0x0878,clif->pWalkToXY,2); + packet(0x0879,clif->pHomMenu,2,4); + packet(0x0883,clif->pTakeItem,2); + packet(0x0889,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x088e,clif->pPartyBookingRegisterReq,2,4); + packet(0x089f,clif->pDropItem,2,4); + packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a2,clif->pDull/*,XXX*/); + packet(0x08a8,clif->pPartyInvite2,2); + packet(0x08ab,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08ac,clif->pTickSend,2); + packet(0x0919,clif->pChangeDir,2,4); + packet(0x091f,clif->pUseSkillToId,2,4,6); + packet(0x0924,clif->pActionRequest,2,6); + packet(0x0930,clif->pReqCloseBuyingStore,0); + packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0933,clif->pFriendsListAdd,2); + packet(0x0936,clif->pGetCharNameRequest,2); + packet(0x0939,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0940,clif->pWantToConnection,2,6,10,14,18); + packet(0x0944,clif->pReqClickBuyingStore,2); + packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0948,clif->pSolveCharName,2); + packet(0x0960,clif->pDull/*,XXX*/); #endif // 2014-12-24aRagexe #if PACKETVER == 20141224 - packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0438,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a3,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08ac,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0932,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0949,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0950,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0956,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x0361,clif->pMoveToKafra,2,4); + packet(0x0438,clif->pFriendsListAdd,2); + packet(0x0835,clif->pItemListWindowSelected,2,4,8); + packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085e,clif->pReqCloseBuyingStore,0); + packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0867,clif->pHomMenu,2,4); + packet(0x086c,clif->pReqClickBuyingStore,2); + packet(0x0870,clif->pChangeDir,2,4); + packet(0x087a,clif->pTakeItem,2); + packet(0x087b,clif->pDull/*,XXX*/); + packet(0x089a,clif->pWalkToXY,2); + packet(0x089b,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a3,clif->pPartyInvite2,2); + packet(0x08a4,clif->pStoragePassword,0); + packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08ac,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0930,clif->pDropItem,2,4); + packet(0x0932,clif->pDull/*,XXX*/); + packet(0x093a,clif->pSearchStoreInfoNextPage,0); + packet(0x0945,clif->pTickSend,2); + packet(0x0946,clif->pGetCharNameRequest,2); + packet(0x0949,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x094f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0950,clif->pSolveCharName,2); + packet(0x0953,clif->pMoveFromKafra,2,4); + packet(0x0956,clif->pUseSkillToPos,2,4,6,8); + packet(0x095b,clif->pUseSkillToId,2,4,6); + packet(0x095f,clif->pActionRequest,2,6); #endif // 2014-12-31aRagexe #if PACKETVER == 20141231 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086d,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-01-07aRagexe #if PACKETVER == 20150107 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0895,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0943,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087c,clif->pFriendsListAdd,2); + packet(0x0895,clif->pStoragePassword,0); + packet(0x092d,clif->pHomMenu,2,4); + packet(0x0943,clif->pChangeDir,2,4); + packet(0x0947,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-01-14aRagexe, 2015-01-14bRagexe, 2015-01-14cRagexe, 2015-01-14dRagexe #if PACKETVER == 20150114 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0868,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0955,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pUseSkillToId,2,4,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0868,clif->pFriendsListAdd,2); + packet(0x0899,clif->pHomMenu,2,4); + packet(0x0946,clif->pStoragePassword,0); + packet(0x0955,clif->pDull/*,XXX*/); + packet(0x0957,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-01-21aRagexe #if PACKETVER == 20150121 - packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0919,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0959,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pPartyBookingRegisterReq,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pItemListWindowSelected,2,4,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087c,clif->pDull/*,XXX*/); + packet(0x088b,clif->pFriendsListAdd,2); + packet(0x089d,clif->pHomMenu,2,4); + packet(0x089e,clif->pChangeDir,2,4); + packet(0x08ab,clif->pStoragePassword,0); + packet(0x0918,clif->pDull/*,XXX*/); + packet(0x0919,clif->pDropItem,2,4); + packet(0x091d,clif->pTakeItem,2); + packet(0x0955,clif->pMoveToKafra,2,4); + packet(0x0959,clif->pWantToConnection,2,6,10,14,18); + packet(0x0963,clif->pMoveFromKafra,2,4); + packet(0x0967,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-01-28aRagexe, 2015-01-29aRagexe, 2015-01-30aRagexe #if PACKETVER == 20150128 || \ PACKETVER == 20150129 || \ PACKETVER == 20150130 - packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x023b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0838,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0864,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0870,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0874,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0888,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x093a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0968,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 + packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x023b,clif->pChangeDir,2,4); + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0368,clif->pDull/*,XXX*/); + packet(0x0838,clif->pActionRequest,2,6); + packet(0x085a,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0864,clif->pUseSkillToPos,2,4,6,8); + packet(0x086d,clif->pMoveToKafra,2,4); + packet(0x0870,clif->pWalkToXY,2); + packet(0x0874,clif->pGetCharNameRequest,2); + packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0876,clif->pHomMenu,2,4); + packet(0x087d,clif->pSolveCharName,2); + packet(0x0888,clif->pItemListWindowSelected,2,4,8); + packet(0x089a,clif->pPartyBookingRegisterReq,2,4); + packet(0x08ab,clif->pTakeItem,2); + packet(0x091f,clif->pTickSend,2); + packet(0x0927,clif->pPartyInvite2,2); + packet(0x0929,clif->pStoragePassword,0); + packet(0x092d,clif->pSearchStoreInfoNextPage,0); + packet(0x0938,clif->pDull/*,XXX*/); + packet(0x093a,clif->pUseSkillToId,2,4,6); + packet(0x0944,clif->pWantToConnection,2,6,10,14,18); + packet(0x094d,clif->pReqCloseBuyingStore,0); + packet(0x094e,clif->pMoveFromKafra,2,4); + packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0963,clif->pFriendsListAdd,2); + packet(0x0968,clif->pDropItem,2,4); #endif // 2015-02-04aRagexe #if PACKETVER == 20150204 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0966,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0966,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-02-11aRagexe #if PACKETVER == 20150211 - packet(0x023b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0862,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0870,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0873,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0882,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0883,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0886,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0919,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x023b,clif->pDull/*,XXX*/); + packet(0x0368,clif->pHomMenu,2,4); + packet(0x0369,clif->pChangeDir,2,4); + packet(0x0436,clif->pSearchStoreInfoNextPage,0); + packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x07e4,clif->pDropItem,2,4); + packet(0x0817,clif->pUseSkillToPos,2,4,6,8); + packet(0x0819,clif->pReqCloseBuyingStore,0); + packet(0x0835,clif->pDull/*,XXX*/); + packet(0x0862,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0863,clif->pUseSkillToId,2,4,6); + packet(0x0870,clif->pTakeItem,2); + packet(0x0873,clif->pWalkToXY,2); + packet(0x087b,clif->pGetCharNameRequest,2); + packet(0x087f,clif->pStoragePassword,0); + packet(0x0882,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0883,clif->pMoveFromKafra,2,4); + packet(0x0885,clif->pTickSend,2); + packet(0x0886,clif->pReqClickBuyingStore,2); + packet(0x089c,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a0,clif->pFriendsListAdd,2); + packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); + packet(0x08aa,clif->pActionRequest,2,6); + packet(0x0919,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0920,clif->pSolveCharName,2); + packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0951,clif->pItemListWindowSelected,2,4,8); + packet(0x0957,clif->pPartyInvite2,2); + packet(0x0958,clif->pMoveToKafra,2,4); #endif // 2015-02-17aRagexe #if PACKETVER == 20150217 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085b,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-02-25eRagexe, 2015-02-25fRagexe, 2015-02-25gRagexe, 2015-02-25iRagexe, 2015-02-25jRagexe, 2015-02-26aRagexe #if PACKETVER == 20150225 || \ PACKETVER == 20150226 - packet(0x02c4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0948,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0955,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x02c4,clif->pReqClickBuyingStore,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pPartyInvite2,2); + packet(0x0362,clif->pReqCloseBuyingStore,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pGetCharNameRequest,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pTakeItem,2); + packet(0x0819,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pPartyBookingRegisterReq,2,4); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x0896,clif->pItemListWindowSelected,2,4,8); + packet(0x089b,clif->pDull/*,XXX*/); + packet(0x089c,clif->pMoveToKafra,2,4); + packet(0x08a4,clif->pStoragePassword,0); + packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0946,clif->pFriendsListAdd,2); + packet(0x0948,clif->pDropItem,2,4); + packet(0x094f,clif->pHomMenu,2,4); + packet(0x0952,clif->pMoveFromKafra,2,4); + packet(0x0955,clif->pChangeDir,2,4); + packet(0x096a,clif->pWantToConnection,2,6,10,14,18); #endif // 2015-03-04aRagexe #if PACKETVER == 20150304 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x086d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pTakeItem,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pMoveFromKafra,2,4); + packet(0x086d,clif->pItemListWindowSelected,2,4,8); + packet(0x0879,clif->pChangeDir,2,4); + packet(0x087e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0892,clif->pStoragePassword,0); + packet(0x089a,clif->pPartyInvite2,2); + packet(0x093a,clif->pPartyBookingRegisterReq,2,4); + packet(0x0947,clif->pMoveToKafra,2,4); + packet(0x095d,clif->pDull/*,XXX*/); + packet(0x0960,clif->pFriendsListAdd,2); + packet(0x0961,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-03-11aRagexe, 2015-03-11bRagexe #if PACKETVER == 20150311 - packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0438,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a5,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x092e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0943,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0958,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x095b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0964,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x023b,clif->pHomMenu,2,4); + packet(0x0360,clif->pReqCloseBuyingStore,0); + packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0438,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pWantToConnection,2,6,10,14,18); + packet(0x0838,clif->pUseSkillToPos,2,4,6,8); + packet(0x086a,clif->pGetCharNameRequest,2); + packet(0x086c,clif->pStoragePassword,0); + packet(0x087b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0883,clif->pItemListWindowSelected,2,4,8); + packet(0x0886,clif->pWalkToXY,2); + packet(0x0888,clif->pSearchStoreInfoNextPage,0); + packet(0x0896,clif->pActionRequest,2,6); + packet(0x08a1,clif->pUseSkillToId,2,4,6); + packet(0x08a3,clif->pTakeItem,2); + packet(0x08a5,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a6,clif->pFriendsListAdd,2); + packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0928,clif->pChangeDir,2,4); + packet(0x092a,clif->pDull/*,XXX*/); + packet(0x092e,clif->pMoveFromKafra,2,4); + packet(0x093b,clif->pPartyInvite2,2); + packet(0x0943,clif->pSolveCharName,2); + packet(0x0946,clif->pDull/*,XXX*/); + packet(0x0957,clif->pReqClickBuyingStore,2); + packet(0x0958,clif->pTickSend,2); + packet(0x095b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0963,clif->pDropItem,2,4); + packet(0x0964,clif->pMoveToKafra,2,4); #endif // 2015-03-18aRagexe, 2015-03-18bRagexe #if PACKETVER == 20150318 - packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0862,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0885,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x088c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0959,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x0202,clif->pDull/*,XXX*/); + packet(0x023b,clif->pTickSend,2); + packet(0x0281,clif->pDull/*,XXX*/); + packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x07e4,clif->pFriendsListAdd,2); + packet(0x0802,clif->pItemListWindowSelected,2,4,8); + packet(0x0811,clif->pWantToConnection,2,6,10,14,18); + packet(0x0862,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0863,clif->pReqClickBuyingStore,2); + packet(0x0873,clif->pStoragePassword,0); + packet(0x0885,clif->pReqCloseBuyingStore,0); + packet(0x0889,clif->pActionRequest,2,6); + packet(0x088c,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x089c,clif->pMoveToKafra,2,4); + packet(0x08a4,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x091d,clif->pMoveFromKafra,2,4); + packet(0x0920,clif->pDropItem,2,4); + packet(0x0927,clif->pChangeDir,2,4); + packet(0x0928,clif->pTakeItem,2); + packet(0x0936,clif->pUseSkillToId,2,4,6); + packet(0x0937,clif->pUseSkillToPos,2,4,6,8); + packet(0x0938,clif->pPartyInvite2,2); + packet(0x093a,clif->pWalkToXY,2); + packet(0x093c,clif->pSolveCharName,2); + packet(0x094c,clif->pHomMenu,2,4); + packet(0x0951,clif->pGetCharNameRequest,2); + packet(0x0958,clif->pSearchStoreInfoNextPage,0); + packet(0x0959,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0960,clif->pPartyBookingRegisterReq,2,4); #endif // 2015-03-25aRagexe #if PACKETVER == 20150325 - packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0365,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0438,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0883,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0885,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0899,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a7,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0931,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0950,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0954,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0969,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 + packet(0x0202,clif->pPartyInvite2,2); + packet(0x0363,clif->pDropItem,2,4); + packet(0x0365,clif->pUseSkillToId,2,4,6); + packet(0x0438,clif->pSearchStoreInfoNextPage,0); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x0819,clif->pReqClickBuyingStore,2); + packet(0x085d,clif->pSolveCharName,2); + packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087c,clif->pMoveToKafra,2,4); + packet(0x087e,clif->pChangeDir,2,4); + packet(0x0883,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0885,clif->pUseSkillToPos,2,4,6,8); + packet(0x0891,clif->pGetCharNameRequest,2); + packet(0x0893,clif->pDull/*,XXX*/); + packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0899,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a1,clif->pActionRequest,2,6); + packet(0x08a7,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0919,clif->pStoragePassword,0); + packet(0x092c,clif->pTakeItem,2); + packet(0x0931,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0932,clif->pWalkToXY,2); + packet(0x0938,clif->pHomMenu,2,4); + packet(0x0940,clif->pFriendsListAdd,2); + packet(0x0947,clif->pReqCloseBuyingStore,0); + packet(0x094a,clif->pWantToConnection,2,6,10,14,18); + packet(0x0950,clif->pItemListWindowSelected,2,4,8); + packet(0x0954,clif->pTickSend,2); + packet(0x0969,clif->pMoveFromKafra,2,4); #endif // 2015-04-01aRagexe #if PACKETVER == 20150401 - packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0437,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x087e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0898,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0924,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x093a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x093e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0949,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x0362,clif->pActionRequest,2,6); + packet(0x0367,clif->pGetCharNameRequest,2); + packet(0x0437,clif->pReqClickBuyingStore,2); + packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086f,clif->pWalkToXY,2); + packet(0x0875,clif->pItemListWindowSelected,2,4,8); + packet(0x087e,clif->pDull/*,XXX*/); + packet(0x088c,clif->pDropItem,2,4); + packet(0x088f,clif->pTickSend,2); + packet(0x0895,clif->pMoveFromKafra,2,4); + packet(0x0898,clif->pHomMenu,2,4); + packet(0x089c,clif->pStoragePassword,0); + packet(0x08a5,clif->pMoveToKafra,2,4); + packet(0x091b,clif->pPartyInvite2,2); + packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0924,clif->pPartyBookingRegisterReq,2,4); + packet(0x0938,clif->pReqCloseBuyingStore,0); + packet(0x0939,clif->pWantToConnection,2,6,10,14,18); + packet(0x093a,clif->pUseSkillToPos,2,4,6,8); + packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x093e,clif->pSearchStoreInfoNextPage,0); + packet(0x0946,clif->pDull/*,XXX*/); + packet(0x0949,clif->pTakeItem,2); + packet(0x094b,clif->pUseSkillToId,2,4,6); + packet(0x0953,clif->pFriendsListAdd,2); + packet(0x095f,clif->pSolveCharName,2); + packet(0x0964,clif->pChangeDir,2,4); #endif // 2015-04-08aRagexe #if PACKETVER == 20150408 - packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0888,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0957,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0963,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x0819,clif->pMoveFromKafra,2,4); + packet(0x085a,clif->pTickSend,2); + packet(0x085c,clif->pUseSkillToId,2,4,6); + packet(0x085e,clif->pHomMenu,2,4); + packet(0x0865,clif->pActionRequest,2,6); + packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x086e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0878,clif->pPartyInvite2,2); + packet(0x087e,clif->pGetCharNameRequest,2); + packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0888,clif->pMoveToKafra,2,4); + packet(0x0889,clif->pStoragePassword,0); + packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0898,clif->pDropItem,2,4); + packet(0x089c,clif->pWalkToXY,2); + packet(0x08a2,clif->pSolveCharName,2); + packet(0x08a4,clif->pFriendsListAdd,2); + packet(0x091b,clif->pDull/*,XXX*/); + packet(0x091e,clif->pItemListWindowSelected,2,4,8); + packet(0x0922,clif->pChangeDir,2,4); + packet(0x092a,clif->pDull/*,XXX*/); + packet(0x0946,clif->pReqCloseBuyingStore,0); + packet(0x094f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0955,clif->pReqClickBuyingStore,2); + packet(0x0957,clif->pWantToConnection,2,6,10,14,18); + packet(0x0959,clif->pTakeItem,2); + packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0963,clif->pSearchStoreInfoNextPage,0); #endif // 2015-04-15aRagexe #if PACKETVER == 20150415 - packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0366,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0868,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0869,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0880,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0898,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x093c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0941,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0953,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x0361,clif->pMoveToKafra,2,4); + packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0366,clif->pWalkToXY,2); + packet(0x0368,clif->pReqClickBuyingStore,2); + packet(0x0802,clif->pSearchStoreInfoNextPage,0); + packet(0x0817,clif->pTakeItem,2); + packet(0x0835,clif->pDropItem,2,4); + packet(0x085e,clif->pDull/*,XXX*/); + packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0867,clif->pPartyInvite2,2); + packet(0x0868,clif->pUseSkillToPos,2,4,6,8); + packet(0x0869,clif->pHomMenu,2,4); + packet(0x086c,clif->pActionRequest,2,6); + packet(0x0880,clif->pDull/*,XXX*/); + packet(0x088e,clif->pUseSkillToId,2,4,6); + packet(0x0891,clif->pGetCharNameRequest,2); + packet(0x0898,clif->pItemListWindowSelected,2,4,8); + packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0922,clif->pMoveFromKafra,2,4); + packet(0x092e,clif->pSolveCharName,2); + packet(0x093c,clif->pTickSend,2); + packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0941,clif->pWantToConnection,2,6,10,14,18); + packet(0x0946,clif->pReqCloseBuyingStore,0); + packet(0x094d,clif->pChangeDir,2,4); + packet(0x0953,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095c,clif->pFriendsListAdd,2); + packet(0x0960,clif->pStoragePassword,0); + packet(0x0961,clif->pPartyBookingRegisterReq,2,4); #endif // 2015-04-22aRagexe #if PACKETVER == 20150422 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0955,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-04-29aRagexe #if PACKETVER == 20150429 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0886,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0899,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pChangeDir,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pStoragePassword,0); + packet(0x086a,clif->pWantToConnection,2,6,10,14,18); + packet(0x0886,clif->pPartyInvite2,2); + packet(0x088f,clif->pHomMenu,2,4); + packet(0x0894,clif->pDropItem,2,4); + packet(0x0899,clif->pMoveToKafra,2,4); + packet(0x089f,clif->pItemListWindowSelected,2,4,8); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x08a8,clif->pDull/*,XXX*/); + packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); + packet(0x0929,clif->pMoveFromKafra,2,4); + packet(0x093d,clif->pFriendsListAdd,2); + packet(0x0943,clif->pTakeItem,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-05-07bRagexe, 2015-05-07cRagexe #if PACKETVER == 20150507 - packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0924,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0942,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0955,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pHomMenu,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pReqCloseBuyingStore,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pTakeItem,2); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pMoveToKafra,2,4); + packet(0x0864,clif->pPartyInvite2,2); + packet(0x0887,clif->pDull/*,XXX*/); + packet(0x0889,clif->pPartyBookingRegisterReq,2,4); + packet(0x0924,clif->pWantToConnection,2,6,10,14,18); + packet(0x092e,clif->pItemListWindowSelected,2,4,8); + packet(0x093b,clif->pChangeDir,2,4); + packet(0x0941,clif->pMoveFromKafra,2,4); + packet(0x0942,clif->pDull/*,XXX*/); + packet(0x0953,clif->pStoragePassword,0); + packet(0x0955,clif->pDropItem,2,4); + packet(0x0958,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-05-13aRagexe #if PACKETVER == 20150513 - packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x02c4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0883,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a8,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0924,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0927,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0960,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pReqCloseBuyingStore,0); + packet(0x02c4,clif->pDull/*,XXX*/); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pWantToConnection,2,6,10,14,18); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pHomMenu,2,4); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0864,clif->pMoveFromKafra,2,4); + packet(0x0879,clif->pMoveToKafra,2,4); + packet(0x0883,clif->pPartyBookingRegisterReq,2,4); + packet(0x0885,clif->pDropItem,2,4); + packet(0x08a8,clif->pFriendsListAdd,2); + packet(0x0923,clif->pStoragePassword,0); + packet(0x0924,clif->pChangeDir,2,4); + packet(0x0927,clif->pDull/*,XXX*/); + packet(0x094a,clif->pPartyInvite2,2); + packet(0x0958,clif->pTakeItem,2); + packet(0x0960,clif->pItemListWindowSelected,2,4,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-05-20aRagexe #if PACKETVER == 20150520 - packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0880,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0882,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a2,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0924,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0931,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x0202,clif->pTickSend,2); + packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pReqCloseBuyingStore,0); + packet(0x085e,clif->pReqClickBuyingStore,2); + packet(0x0865,clif->pWantToConnection,2,6,10,14,18); + packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0880,clif->pPartyInvite2,2); + packet(0x0882,clif->pItemListWindowSelected,2,4,8); + packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089c,clif->pStoragePassword,0); + packet(0x089e,clif->pDropItem,2,4); + packet(0x08a2,clif->pGetCharNameRequest,2); + packet(0x08ad,clif->pChangeDir,2,4); + packet(0x091c,clif->pTakeItem,2); + packet(0x091d,clif->pActionRequest,2,6); + packet(0x0924,clif->pMoveFromKafra,2,4); + packet(0x092b,clif->pWalkToXY,2); + packet(0x0931,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0936,clif->pUseSkillToId,2,4,6); + packet(0x093d,clif->pFriendsListAdd,2); + packet(0x0940,clif->pDull/*,XXX*/); + packet(0x0945,clif->pSolveCharName,2); + packet(0x094e,clif->pUseSkillToPos,2,4,6,8); + packet(0x095b,clif->pHomMenu,2,4); + packet(0x095f,clif->pSearchStoreInfoNextPage,0); + packet(0x0960,clif->pDull/*,XXX*/); + packet(0x0961,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pPartyBookingRegisterReq,2,4); #endif // 2015-05-27aRagexe #if PACKETVER == 20150527 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x083c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pUseSkillToId,2,4,6); + packet(0x083c,clif->pStoragePassword,0); + packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-06-03aRagexe #if PACKETVER == 20150603 - packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0860,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0864,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0873,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x089e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x093b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0955,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0956,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0960,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0969,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x096a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 + packet(0x0361,clif->pPartyInvite2,2); + packet(0x0437,clif->pDull/*,XXX*/); + packet(0x0811,clif->pChangeDir,2,4); + packet(0x0819,clif->pReqClickBuyingStore,2); + packet(0x0860,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0864,clif->pFriendsListAdd,2); + packet(0x0867,clif->pMoveToKafra,2,4); + packet(0x086a,clif->pMoveFromKafra,2,4); + packet(0x0873,clif->pActionRequest,2,6); + packet(0x0877,clif->pItemListWindowSelected,2,4,8); + packet(0x0881,clif->pGetCharNameRequest,2); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x088b,clif->pDropItem,2,4); + packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x089e,clif->pTickSend,2); + packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); + packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); + packet(0x091b,clif->pSolveCharName,2); + packet(0x0922,clif->pStoragePassword,0); + packet(0x092d,clif->pTakeItem,2); + packet(0x093b,clif->pSearchStoreInfoNextPage,0); + packet(0x093f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0955,clif->pHomMenu,2,4); + packet(0x0956,clif->pReqCloseBuyingStore,0); + packet(0x0960,clif->pUseSkillToId,2,4,6); + packet(0x0969,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x096a,clif->pWalkToXY,2); #endif // 2015-06-10aRagexe #if PACKETVER == 20150610 - packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0438,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0872,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0925,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0957,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x022d,clif->pReqCloseBuyingStore,0); + packet(0x0438,clif->pItemListWindowSelected,2,4,8); + packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pDull/*,XXX*/); + packet(0x0870,clif->pPartyInvite2,2); + packet(0x0872,clif->pSolveCharName,2); + packet(0x0877,clif->pReqClickBuyingStore,2); + packet(0x087e,clif->pGetCharNameRequest,2); + packet(0x0884,clif->pMoveFromKafra,2,4); + packet(0x0885,clif->pHomMenu,2,4); + packet(0x0888,clif->pWantToConnection,2,6,10,14,18); + packet(0x088c,clif->pMoveToKafra,2,4); + packet(0x088d,clif->pPartyBookingRegisterReq,2,4); + packet(0x088f,clif->pWalkToXY,2); + packet(0x0897,clif->pFriendsListAdd,2); + packet(0x08a0,clif->pStoragePassword,0); + packet(0x08ac,clif->pDropItem,2,4); + packet(0x0925,clif->pTakeItem,2); + packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x092e,clif->pDull/*,XXX*/); + packet(0x0932,clif->pSearchStoreInfoNextPage,0); + packet(0x093e,clif->pActionRequest,2,6); + packet(0x0940,clif->pUseSkillToPos,2,4,6,8); + packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0949,clif->pUseSkillToId,2,4,6); + packet(0x0957,clif->pTickSend,2); + packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0964,clif->pChangeDir,2,4); #endif // 2015-06-17aRagexe, 2015-06-18aRagexe #if PACKETVER == 20150617 || \ PACKETVER == 20150618 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0362,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0869,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pTakeItem,2); + packet(0x0362,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pStoragePassword,0); + packet(0x0365,clif->pItemListWindowSelected,2,4,8); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pWantToConnection,2,6,10,14,18); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0811,clif->pDull/*,XXX*/); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0869,clif->pMoveFromKafra,2,4); + packet(0x086a,clif->pPartyBookingRegisterReq,2,4); + packet(0x086b,clif->pChangeDir,2,4); + packet(0x0870,clif->pPartyInvite2,2); + packet(0x087a,clif->pMoveToKafra,2,4); + packet(0x0886,clif->pHomMenu,2,4); + packet(0x0894,clif->pDull/*,XXX*/); + packet(0x0940,clif->pDropItem,2,4); + packet(0x094e,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-06-24aRagexe #if PACKETVER == 20150624 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0870,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0940,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pPartyBookingRegisterReq,2,4); + packet(0x0365,clif->pHomMenu,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0870,clif->pStoragePassword,0); + packet(0x0940,clif->pMoveFromKafra,2,4); + packet(0x0941,clif->pFriendsListAdd,2); + packet(0x0966,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-07-01bRagexe, 2015-07-02aRagexe #if PACKETVER == 20150701 || \ PACKETVER == 20150702 - packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0281,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0893,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a0,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a6,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08ad,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0923,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0928,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0946,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0954,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0958,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x095f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x023b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0281,clif->pSearchStoreInfoNextPage,0); + packet(0x07e4,clif->pMoveFromKafra,2,4); + packet(0x0802,clif->pGetCharNameRequest,2); + packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x087d,clif->pTickSend,2); + packet(0x087e,clif->pItemListWindowSelected,2,4,8); + packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088e,clif->pReqCloseBuyingStore,0); + packet(0x0893,clif->pDull/*,XXX*/); + packet(0x08a0,clif->pDropItem,2,4); + packet(0x08a4,clif->pReqClickBuyingStore,2); + packet(0x08a5,clif->pPartyInvite2,2); + packet(0x08a6,clif->pUseSkillToId,2,4,6); + packet(0x08ad,clif->pUseSkillToPos,2,4,6,8); + packet(0x0919,clif->pStoragePassword,0); + packet(0x0923,clif->pDull/*,XXX*/); + packet(0x0928,clif->pMoveToKafra,2,4); + packet(0x092c,clif->pWalkToXY,2); + packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0946,clif->pTakeItem,2); + packet(0x094e,clif->pSolveCharName,2); + packet(0x0954,clif->pHomMenu,2,4); + packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0958,clif->pActionRequest,2,6); + packet(0x095f,clif->pFriendsListAdd,2); + packet(0x0960,clif->pPartyBookingRegisterReq,2,4); + packet(0x0968,clif->pChangeDir,2,4); #endif // 2015-07-08cRagexe #if PACKETVER == 20150708 - packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0872,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x092a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pSolveCharName,2); + packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pPartyInvite2,2); + packet(0x0368,clif->pHomMenu,2,4); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pWantToConnection,2,6,10,14,18); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085e,clif->pMoveToKafra,2,4); + packet(0x0872,clif->pTakeItem,2); + packet(0x087f,clif->pDull/*,XXX*/); + packet(0x0884,clif->pWalkToXY,2); + packet(0x089d,clif->pChangeDir,2,4); + packet(0x08a5,clif->pItemListWindowSelected,2,4,8); + packet(0x08ad,clif->pStoragePassword,0); + packet(0x091f,clif->pPartyBookingRegisterReq,2,4); + packet(0x092a,clif->pMoveFromKafra,2,4); + packet(0x093c,clif->pFriendsListAdd,2); + packet(0x095b,clif->pDropItem,2,4); + packet(0x0962,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-07-15aRagexe #if PACKETVER == 20150715 - packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0362,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0436,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0873,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0879,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x087c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0897,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0899,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x089a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0917,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0950,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0965,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0362,clif->pUseSkillToPos,2,4,6,8); + packet(0x0364,clif->pItemListWindowSelected,2,4,8); + packet(0x0436,clif->pSolveCharName,2); + packet(0x0437,clif->pUseSkillToId,2,4,6); + packet(0x0438,clif->pWalkToXY,2); + packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x083c,clif->pActionRequest,2,6); + packet(0x085c,clif->pGetCharNameRequest,2); + packet(0x086f,clif->pMoveFromKafra,2,4); + packet(0x0873,clif->pTickSend,2); + packet(0x0879,clif->pWantToConnection,2,6,10,14,18); + packet(0x087c,clif->pDropItem,2,4); + packet(0x087f,clif->pSearchStoreInfoNextPage,0); + packet(0x0886,clif->pDull/*,XXX*/); + packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0897,clif->pPartyInvite2,2); + packet(0x0899,clif->pReqCloseBuyingStore,0); + packet(0x089a,clif->pTakeItem,2); + packet(0x08a4,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pChangeDir,2,4); + packet(0x0917,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093e,clif->pHomMenu,2,4); + packet(0x0944,clif->pFriendsListAdd,2); + packet(0x0950,clif->pReqClickBuyingStore,2); + packet(0x0956,clif->pStoragePassword,0); + packet(0x0961,clif->pMoveToKafra,2,4); + packet(0x0965,clif->pPartyBookingRegisterReq,2,4); #endif // 2015-07-22bRagexe #if PACKETVER == 20150722 - packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0368,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0811,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0878,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0880,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a8,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0919,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x092e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x093d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x094c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0281,clif->pGetCharNameRequest,2); + packet(0x0360,clif->pActionRequest,2,6); + packet(0x0361,clif->pDropItem,2,4); + packet(0x0368,clif->pPartyInvite2,2); + packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0811,clif->pSearchStoreInfoNextPage,0); + packet(0x0815,clif->pReqCloseBuyingStore,0); + packet(0x0817,clif->pWantToConnection,2,6,10,14,18); + packet(0x0869,clif->pTakeItem,2); + packet(0x0878,clif->pUseSkillToPos,2,4,6,8); + packet(0x087b,clif->pPartyBookingRegisterReq,2,4); + packet(0x087d,clif->pWalkToXY,2); + packet(0x087e,clif->pSolveCharName,2); + packet(0x0880,clif->pReqClickBuyingStore,2); + packet(0x0884,clif->pHomMenu,2,4); + packet(0x088d,clif->pTickSend,2); + packet(0x0899,clif->pMoveFromKafra,2,4); + packet(0x08a8,clif->pChangeDir,2,4); + packet(0x0919,clif->pDull/*,XXX*/); + packet(0x0921,clif->pMoveToKafra,2,4); + packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x092e,clif->pFriendsListAdd,2); + packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x093d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x094c,clif->pUseSkillToId,2,4,6); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x0951,clif->pItemListWindowSelected,2,4,8); + packet(0x0958,clif->pStoragePassword,0); #endif // 2015-07-29aRagexe #if PACKETVER == 20150729 - packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0870,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0886,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ac,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08ad,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x093a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0955,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0961,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 + packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0438,clif->pHomMenu,2,4); + packet(0x085b,clif->pDull/*,XXX*/); + packet(0x0860,clif->pTakeItem,2); + packet(0x086c,clif->pMoveToKafra,2,4); + packet(0x086d,clif->pPartyBookingRegisterReq,2,4); + packet(0x086e,clif->pWalkToXY,2); + packet(0x086f,clif->pMoveFromKafra,2,4); + packet(0x0870,clif->pGetCharNameRequest,2); + packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0881,clif->pActionRequest,2,6); + packet(0x0886,clif->pSolveCharName,2); + packet(0x089a,clif->pUseSkillToPos,2,4,6,8); + packet(0x089b,clif->pFriendsListAdd,2); + packet(0x08a3,clif->pDull/*,XXX*/); + packet(0x08a4,clif->pChangeDir,2,4); + packet(0x08ac,clif->pPartyInvite2,2); + packet(0x08ad,clif->pReqClickBuyingStore,2); + packet(0x0920,clif->pSearchStoreInfoNextPage,0); + packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x092f,clif->pUseSkillToId,2,4,6); + packet(0x093a,clif->pTickSend,2); + packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0940,clif->pDropItem,2,4); + packet(0x094f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0955,clif->pItemListWindowSelected,2,4,8); + packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0961,clif->pStoragePassword,0); + packet(0x096a,clif->pReqCloseBuyingStore,0); #endif // 2015-08-05aRagexe #if PACKETVER == 20150805 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x088a,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-08-12aRagexe #if PACKETVER == 20150812 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087f,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-08-19aRagexe #if PACKETVER == 20150819 - packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x022d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0281,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0871,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0919,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0961,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pItemListWindowSelected,2,4,8); + packet(0x022d,clif->pUseSkillToId,2,4,6); + packet(0x0281,clif->pTakeItem,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x085d,clif->pMoveFromKafra,2,4); + packet(0x0862,clif->pDull/*,XXX*/); + packet(0x0865,clif->pFriendsListAdd,2); + packet(0x0871,clif->pPartyBookingRegisterReq,2,4); + packet(0x0888,clif->pHomMenu,2,4); + packet(0x0919,clif->pMoveToKafra,2,4); + packet(0x091e,clif->pStoragePassword,0); + packet(0x0927,clif->pWantToConnection,2,6,10,14,18); + packet(0x0940,clif->pDropItem,2,4); + packet(0x0961,clif->pPartyInvite2,2); + packet(0x0967,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-08-26aRagexe, 2015-08-26bRagexe #if PACKETVER == 20150826 - packet(0x0362,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x07ec,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0861,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x086b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a1,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0968,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 + packet(0x0362,clif->pStoragePassword,0); + packet(0x0368,clif->pMoveFromKafra,2,4); + packet(0x0436,clif->pPartyBookingRegisterReq,2,4); + packet(0x07ec,clif->pActionRequest,2,6); + packet(0x0819,clif->pReqClickBuyingStore,2); + packet(0x0861,clif->pDull/*,XXX*/); + packet(0x0865,clif->pWalkToXY,2); + packet(0x086b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087b,clif->pSolveCharName,2); + packet(0x088b,clif->pPartyInvite2,2); + packet(0x088d,clif->pFriendsListAdd,2); + packet(0x0890,clif->pSearchStoreInfoNextPage,0); + packet(0x0891,clif->pUseSkillToId,2,4,6); + packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a1,clif->pMoveToKafra,2,4); + packet(0x08a4,clif->pTakeItem,2); + packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0924,clif->pDropItem,2,4); + packet(0x0928,clif->pReqCloseBuyingStore,0); + packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093b,clif->pGetCharNameRequest,2); + packet(0x0945,clif->pHomMenu,2,4); + packet(0x094f,clif->pChangeDir,2,4); + packet(0x0951,clif->pTickSend,2); + packet(0x0959,clif->pItemListWindowSelected,2,4,8); + packet(0x0964,clif->pWantToConnection,2,6,10,14,18); + packet(0x0968,clif->pDull/*,XXX*/); + packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); #endif // 2015-09-02aRagexe #if PACKETVER == 20150902 - packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0367,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0886,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0889,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0899,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0923,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0941,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0947,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x023b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0367,clif->pTickSend,2); + packet(0x0802,clif->pStoragePassword,0); + packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085b,clif->pActionRequest,2,6); + packet(0x085d,clif->pSolveCharName,2); + packet(0x0863,clif->pUseSkillToId,2,4,6); + packet(0x086f,clif->pUseSkillToPos,2,4,6,8); + packet(0x087b,clif->pWalkToXY,2); + packet(0x087f,clif->pDull/*,XXX*/); + packet(0x0886,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0887,clif->pDull/*,XXX*/); + packet(0x0889,clif->pReqCloseBuyingStore,0); + packet(0x088d,clif->pMoveFromKafra,2,4); + packet(0x0892,clif->pItemListWindowSelected,2,4,8); + packet(0x0897,clif->pMoveToKafra,2,4); + packet(0x0899,clif->pGetCharNameRequest,2); + packet(0x08a9,clif->pDropItem,2,4); + packet(0x0923,clif->pFriendsListAdd,2); + packet(0x0928,clif->pTakeItem,2); + packet(0x092a,clif->pHomMenu,2,4); + packet(0x092d,clif->pPartyInvite2,2); + packet(0x0941,clif->pChangeDir,2,4); + packet(0x0947,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x094f,clif->pReqClickBuyingStore,2); + packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0960,clif->pSearchStoreInfoNextPage,0); #endif // 2015-09-09aRagexe #if PACKETVER == 20150909 - packet(0x023b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0361,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0861,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0871,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0886,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0928,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0941,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0962,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x023b,clif->pActionRequest,2,6); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqCloseBuyingStore,0); + packet(0x0361,clif->pGetCharNameRequest,2); + packet(0x0365,clif->pWalkToXY,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pStoragePassword,0); + packet(0x0437,clif->pMoveFromKafra,2,4); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0861,clif->pDull/*,XXX*/); + packet(0x0871,clif->pItemListWindowSelected,2,4,8); + packet(0x087b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0883,clif->pTakeItem,2); + packet(0x0886,clif->pWantToConnection,2,6,10,14,18); + packet(0x088f,clif->pPartyInvite2,2); + packet(0x0895,clif->pFriendsListAdd,2); + packet(0x0928,clif->pDull/*,XXX*/); + packet(0x0940,clif->pReqClickBuyingStore,2); + packet(0x0941,clif->pHomMenu,2,4); + packet(0x095e,clif->pDropItem,2,4); + packet(0x0962,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pChangeDir,2,4); #endif // 2015-09-16aRagexe, 2015-09-16cRagexe #if PACKETVER == 20150916 - packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0817,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0835,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0869,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0873,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0920,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0924,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x092f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0934,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x093e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0942,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0948,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0969,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x022d,clif->pUseSkillToPos,2,4,6,8); + packet(0x0817,clif->pSearchStoreInfoNextPage,0); + packet(0x0835,clif->pReqClickBuyingStore,2); + packet(0x085e,clif->pMoveFromKafra,2,4); + packet(0x0869,clif->pActionRequest,2,6); + packet(0x0873,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0877,clif->pWalkToXY,2); + packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x089b,clif->pPartyBookingRegisterReq,2,4); + packet(0x089c,clif->pTakeItem,2); + packet(0x089e,clif->pFriendsListAdd,2); + packet(0x08ac,clif->pTickSend,2); + packet(0x0920,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0924,clif->pPartyInvite2,2); + packet(0x092e,clif->pReqCloseBuyingStore,0); + packet(0x092f,clif->pDropItem,2,4); + packet(0x0934,clif->pMoveToKafra,2,4); + packet(0x0936,clif->pChangeDir,2,4); + packet(0x0938,clif->pDull/*,XXX*/); + packet(0x093e,clif->pUseSkillToId,2,4,6); + packet(0x0941,clif->pStoragePassword,0); + packet(0x0942,clif->pSolveCharName,2); + packet(0x0948,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x095a,clif->pGetCharNameRequest,2); + packet(0x0960,clif->pHomMenu,2,4); + packet(0x0961,clif->pItemListWindowSelected,2,4,8); + packet(0x0969,clif->pWantToConnection,2,6,10,14,18); #endif // 2015-09-23bRagexe, 2015-09-23cRagexe, 2015-09-23dRagexe, 2015-09-23eRagexe, 2015-09-23fRagexe #if PACKETVER == 20150923 - packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x085c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x085d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0864,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x086f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a6,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0936,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0951,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 + packet(0x0361,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x085c,clif->pSolveCharName,2); + packet(0x085d,clif->pFriendsListAdd,2); + packet(0x0864,clif->pHomMenu,2,4); + packet(0x086e,clif->pReqCloseBuyingStore,0); + packet(0x086f,clif->pUseSkillToId,2,4,6); + packet(0x0870,clif->pChangeDir,2,4); + packet(0x0879,clif->pMoveFromKafra,2,4); + packet(0x087f,clif->pSearchStoreInfoNextPage,0); + packet(0x0886,clif->pWalkToXY,2); + packet(0x088e,clif->pReqClickBuyingStore,2); + packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0895,clif->pDull/*,XXX*/); + packet(0x089b,clif->pUseSkillToPos,2,4,6,8); + packet(0x089f,clif->pMoveToKafra,2,4); + packet(0x08a0,clif->pTickSend,2); + packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a5,clif->pGetCharNameRequest,2); + packet(0x08a6,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x092b,clif->pTakeItem,2); + packet(0x0930,clif->pDropItem,2,4); + packet(0x0936,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093b,clif->pPartyInvite2,2); + packet(0x0951,clif->pActionRequest,2,6); + packet(0x0961,clif->pItemListWindowSelected,2,4,8); #endif // 2015-10-01aRagexe #if PACKETVER == 20151001 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0960,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-10-07aRagexe #if PACKETVER == 20151007 - packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pFriendsListAdd,2); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pDull/*,XXX*/); + packet(0x093f,clif->pHomMenu,2,4); + packet(0x095f,clif->pChangeDir,2,4); + packet(0x0961,clif->pWantToConnection,2,6,10,14,18); + packet(0x0967,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-10-14bRagexe #if PACKETVER == 20151014 - packet(0x0202,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0838,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0863,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0874,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0881,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0883,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0889,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08aa,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0930,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0944,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x094f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0956,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0961,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x0202,clif->pPartyBookingRegisterReq,2,4); + packet(0x0817,clif->pFriendsListAdd,2); + packet(0x0838,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085a,clif->pUseSkillToId,2,4,6); + packet(0x085c,clif->pActionRequest,2,6); + packet(0x0860,clif->pDropItem,2,4); + packet(0x0863,clif->pChangeDir,2,4); + packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0872,clif->pHomMenu,2,4); + packet(0x0874,clif->pUseSkillToPos,2,4,6,8); + packet(0x0881,clif->pMoveFromKafra,2,4); + packet(0x0883,clif->pTickSend,2); + packet(0x0884,clif->pItemListWindowSelected,2,4,8); + packet(0x0889,clif->pReqClickBuyingStore,2); + packet(0x088e,clif->pDull/*,XXX*/); + packet(0x089a,clif->pDull/*,XXX*/); + packet(0x089b,clif->pReqCloseBuyingStore,0); + packet(0x089f,clif->pWalkToXY,2); + packet(0x08aa,clif->pTakeItem,2); + packet(0x091c,clif->pPartyInvite2,2); + packet(0x091d,clif->pStoragePassword,0); + packet(0x0930,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0944,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x094f,clif->pSearchStoreInfoNextPage,0); + packet(0x0956,clif->pSolveCharName,2); + packet(0x095e,clif->pMoveToKafra,2,4); + packet(0x0961,clif->pGetCharNameRequest,2); + packet(0x0964,clif->pWantToConnection,2,6,10,14,18); #endif // 2015-10-21aRagexe, 2015-10-22aRagexe #if PACKETVER == 20151021 || \ PACKETVER == 20151022 - packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x02c4,clif->pStoragePassword,0); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pMoveToKafra,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pChangeDir,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086a,clif->pFriendsListAdd,2); + packet(0x091d,clif->pHomMenu,2,4); + packet(0x0940,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-10-28cRagexe, 2015-10-28dRagexe, 2015-10-29aRagexe #if PACKETVER == 20151028 || \ PACKETVER == 20151029 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0860,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-11-04aRagexe #if PACKETVER == 20151104 - packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0363,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0811,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093a,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0940,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0360,clif->pWantToConnection,2,6,10,14,18); + packet(0x0363,clif->pWalkToXY,2); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pReqClickBuyingStore,2); + packet(0x0437,clif->pDropItem,2,4); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pFriendsListAdd,2); + packet(0x0811,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0886,clif->pTickSend,2); + packet(0x0887,clif->pGetCharNameRequest,2); + packet(0x088b,clif->pMoveToKafra,2,4); + packet(0x088d,clif->pHomMenu,2,4); + packet(0x08a3,clif->pDull/*,XXX*/); + packet(0x08a5,clif->pPartyInvite2,2); + packet(0x0928,clif->pChangeDir,2,4); + packet(0x0939,clif->pDull/*,XXX*/); + packet(0x093a,clif->pItemListWindowSelected,2,4,8,12); + packet(0x0940,clif->pStoragePassword,2,4,20); + packet(0x0964,clif->pTakeItem,2); #endif // 2015-11-11aRagexe, 2015-11-11bRagexe #if PACKETVER == 20151111 - packet(0x02c4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0862,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0942,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0958,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0967,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0969,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x02c4,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pMoveToKafra,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pPartyInvite2,2); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pItemListWindowSelected,2,4,8,12); + packet(0x0862,clif->pDropItem,2,4); + packet(0x0871,clif->pFriendsListAdd,2); + packet(0x0885,clif->pActionRequest,2,6); + packet(0x089c,clif->pChangeDir,2,4); + packet(0x0942,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x094a,clif->pTakeItem,2); + packet(0x0958,clif->pDull/*,XXX*/); + packet(0x0966,clif->pMoveFromKafra,2,4); + packet(0x0967,clif->pWantToConnection,2,6,10,14,18); + packet(0x0969,clif->pStoragePassword,2,4,20); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-11-18aRagexe #if PACKETVER == 20151118 - packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x088b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0921,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0946,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0957,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pTickSend,2); + packet(0x035f,clif->pHomMenu,2,4); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pPartyInvite2,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086b,clif->pMoveToKafra,2,4); + packet(0x088b,clif->pStoragePassword,2,4,20); + packet(0x08ab,clif->pMoveFromKafra,2,4); + packet(0x0921,clif->pFriendsListAdd,2); + packet(0x0925,clif->pWantToConnection,2,6,10,14,18); + packet(0x092e,clif->pChangeDir,2,4); + packet(0x092f,clif->pDull/*,XXX*/); + packet(0x093c,clif->pDropItem,2,4); + packet(0x0943,clif->pTakeItem,2); + packet(0x0946,clif->pItemListWindowSelected,2,4,8,12); + packet(0x0957,clif->pDull/*,XXX*/); + packet(0x095c,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-11-25bRagexe, 2015-11-25dRagexe #if PACKETVER == 20151125 - packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0368,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0438,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0802,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0863,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0883,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0884,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x0361,clif->pSearchStoreInfoNextPage,0); + packet(0x0365,clif->pWalkToXY,2); + packet(0x0366,clif->pMoveFromKafra,2,4); + packet(0x0368,clif->pItemListWindowSelected,2,4,8,12); + packet(0x0438,clif->pTakeItem,2); + packet(0x0802,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x085e,clif->pGetCharNameRequest,2); + packet(0x085f,clif->pMoveToKafra,2,4); + packet(0x0863,clif->pReqCloseBuyingStore,0); + packet(0x0883,clif->pChangeDir,2,4); + packet(0x0884,clif->pStoragePassword,2,4,20); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x088c,clif->pTickSend,2); + packet(0x088d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x089c,clif->pActionRequest,2,6); + packet(0x089f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a9,clif->pDropItem,2,4); + packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0920,clif->pSolveCharName,2); + packet(0x092a,clif->pUseSkillToId,2,4,6); + packet(0x092e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0939,clif->pReqClickBuyingStore,2); + packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0951,clif->pHomMenu,2,4); + packet(0x0956,clif->pPartyInvite2,2); + packet(0x0957,clif->pDull/*,XXX*/); + packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2015-12-02aRagexe #if PACKETVER == 20151202 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0870,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8,12); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0870,clif->pStoragePassword,2,4,20); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-12-09aRagexe #if PACKETVER == 20151209 - packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x07e4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0861,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0894,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0932,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0948,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0961,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 + packet(0x0365,clif->pWalkToXY,2); + packet(0x0369,clif->pSolveCharName,2); + packet(0x07e4,clif->pPartyInvite2,2); + packet(0x07ec,clif->pTakeItem,2); + packet(0x0811,clif->pTickSend,2); + packet(0x0819,clif->pReqCloseBuyingStore,0); + packet(0x085b,clif->pStoragePassword,2,4,20); + packet(0x085d,clif->pGetCharNameRequest,2); + packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0861,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0866,clif->pChangeDir,2,4); + packet(0x0875,clif->pSearchStoreInfoNextPage,0); + packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087f,clif->pReqClickBuyingStore,2); + packet(0x088e,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pDull/*,XXX*/); + packet(0x0894,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a1,clif->pHomMenu,2,4); + packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092d,clif->pMoveFromKafra,2,4); + packet(0x0930,clif->pDropItem,2,4); + packet(0x0932,clif->pItemListWindowSelected,2,4,8,12); + packet(0x093b,clif->pMoveToKafra,2,4); + packet(0x0948,clif->pWantToConnection,2,6,10,14,18); + packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095c,clif->pDull/*,XXX*/); + packet(0x0961,clif->pActionRequest,2,6); + packet(0x0964,clif->pFriendsListAdd,2); #endif // 2015-12-16aRagexe #if PACKETVER == 20151216 - packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0361,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0364,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0865,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0874,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a2,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0966,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0968,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x022d,clif->pChangeDir,2,4); + packet(0x0361,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0364,clif->pDull/*,XXX*/); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pReqCloseBuyingStore,0); + packet(0x085b,clif->pTickSend,2); + packet(0x0864,clif->pMoveFromKafra,2,4); + packet(0x0865,clif->pUseSkillToPos,2,4,6,8); + packet(0x086a,clif->pDull/*,XXX*/); + packet(0x086e,clif->pPartyInvite2,2); + packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0874,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0885,clif->pStoragePassword,0); + packet(0x088b,clif->pGetCharNameRequest,2); + packet(0x089d,clif->pActionRequest,2,6); + packet(0x089e,clif->pSolveCharName,2); + packet(0x08a2,clif->pWalkToXY,2); + packet(0x08a9,clif->pTakeItem,2); + packet(0x08ac,clif->pMoveToKafra,2,4); + packet(0x091d,clif->pFriendsListAdd,2); + packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0947,clif->pWantToConnection,2,6,10,14,18); + packet(0x0949,clif->pItemListWindowSelected,2,4,8); + packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0960,clif->pSearchStoreInfoNextPage,0); + packet(0x0966,clif->pDropItem,2,4); + packet(0x0968,clif->pUseSkillToId,2,4,6); #endif // 2015-12-23bRagexe #if PACKETVER == 20151223 - packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0362,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0815,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0864,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0875,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0886,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08aa,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0920,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0923,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0965,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0967,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x02c4,clif->pMoveToKafra,2,4); + packet(0x0362,clif->pDull/*,XXX*/); + packet(0x0364,clif->pTakeItem,2); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x0815,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0864,clif->pGetCharNameRequest,2); + packet(0x0866,clif->pWantToConnection,2,6,10,14,18); + packet(0x086e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0872,clif->pPartyBookingRegisterReq,2,4); + packet(0x0875,clif->pUseSkillToId,2,4,6); + packet(0x0876,clif->pDropItem,2,4); + packet(0x0881,clif->pActionRequest,2,6); + packet(0x0884,clif->pMoveFromKafra,2,4); + packet(0x0886,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088d,clif->pHomMenu,2,4); + packet(0x0890,clif->pItemListWindowSelected,2,4,8); + packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08aa,clif->pPartyInvite2,2); + packet(0x0918,clif->pSearchStoreInfoNextPage,0); + packet(0x091a,clif->pReqClickBuyingStore,2); + packet(0x091b,clif->pFriendsListAdd,2); + packet(0x0920,clif->pWalkToXY,2); + packet(0x0923,clif->pChangeDir,2,4); + packet(0x0924,clif->pTickSend,2); + packet(0x095e,clif->pSolveCharName,2); + packet(0x095f,clif->pReqCloseBuyingStore,0); + packet(0x0965,clif->pStoragePassword,0); + packet(0x0967,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2015-12-30aRagexe #if PACKETVER == 20151230 - packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x07ec,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0861,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0886,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x088e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x02c4,clif->pMoveToKafra,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pDull/*,XXX*/); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0437,clif->pWalkToXY,2); + packet(0x07ec,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pWantToConnection,2,6,10,14,18); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085b,clif->pItemListWindowSelected,2,4,8); + packet(0x0861,clif->pPartyInvite2,2); + packet(0x0869,clif->pChangeDir,2,4); + packet(0x0886,clif->pUseSkillToPos,2,4,6,8); + packet(0x088e,clif->pFriendsListAdd,2); + packet(0x0897,clif->pDropItem,2,4); + packet(0x091d,clif->pMoveFromKafra,2,4); + packet(0x0923,clif->pStoragePassword,0); + packet(0x093a,clif->pDull/*,XXX*/); + packet(0x0949,clif->pHomMenu,2,4); + packet(0x094e,clif->pTakeItem,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-01-06aRagexe #if PACKETVER == 20160106 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x087f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pHomMenu,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0861,clif->pTakeItem,2); + packet(0x086a,clif->pDropItem,2,4); + packet(0x086c,clif->pDull/*,XXX*/); + packet(0x0878,clif->pStoragePassword,0); + packet(0x087a,clif->pPartyBookingRegisterReq,2,4); + packet(0x087f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0885,clif->pMoveToKafra,2,4); + packet(0x0889,clif->pChangeDir,2,4); + packet(0x088a,clif->pPartyInvite2,2); + packet(0x0891,clif->pMoveFromKafra,2,4); + packet(0x08a0,clif->pFriendsListAdd,2); + packet(0x091d,clif->pItemListWindowSelected,2,4,8); + packet(0x0940,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-01-13aRagexe, 2016-01-13bRagexe, 2016-01-13bRagexe_2 #if PACKETVER == 20160113 - packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x085b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0864,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0893,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08aa,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0932,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x093c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0941,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0967,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x022d,clif->pUseSkillToPos,2,4,6,8); + packet(0x023b,clif->pWalkToXY,2); + packet(0x035f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0815,clif->pStoragePassword,0); + packet(0x085b,clif->pChangeDir,2,4); + packet(0x0864,clif->pReqClickBuyingStore,2); + packet(0x086d,clif->pHomMenu,2,4); + packet(0x0873,clif->pDull/*,XXX*/); + packet(0x0875,clif->pSearchStoreInfoNextPage,0); + packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x088b,clif->pPartyInvite2,2); + packet(0x088c,clif->pReqCloseBuyingStore,0); + packet(0x0892,clif->pUseSkillToId,2,4,6); + packet(0x0893,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x089a,clif->pActionRequest,2,6); + packet(0x08a0,clif->pTickSend,2); + packet(0x08a6,clif->pTakeItem,2); + packet(0x08aa,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091b,clif->pGetCharNameRequest,2); + packet(0x0924,clif->pDropItem,2,4); + packet(0x0930,clif->pSolveCharName,2); + packet(0x0932,clif->pMoveToKafra,2,4); + packet(0x093c,clif->pMoveFromKafra,2,4); + packet(0x0941,clif->pItemListWindowSelected,2,4,8); + packet(0x094d,clif->pWantToConnection,2,6,10,14,18); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x0967,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2016-01-20aRagexe #if PACKETVER == 20160120 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0865,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-01-27cRagexe, 2016-01-27dRagexe #if PACKETVER == 20160127 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085e,clif->pChangeDir,2,4); + packet(0x0922,clif->pHomMenu,2,4); + packet(0x095a,clif->pStoragePassword,0); + packet(0x0961,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-02-03aRagexe #if PACKETVER == 20160203 - packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0947,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pFriendsListAdd,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0437,clif->pTickSend,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pSearchStoreInfoNextPage,0); + packet(0x0811,clif->pChangeDir,2,4); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pWantToConnection,2,6,10,14,18); + packet(0x0835,clif->pItemListWindowSelected,2,4,8); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0872,clif->pHomMenu,2,4); + packet(0x0873,clif->pStoragePassword,0); + packet(0x088c,clif->pDull/*,XXX*/); + packet(0x0918,clif->pDull/*,XXX*/); + packet(0x093e,clif->pPartyInvite2,2); + packet(0x0940,clif->pWalkToXY,2); + packet(0x0947,clif->pDropItem,2,4); + packet(0x0954,clif->pMoveFromKafra,2,4); + packet(0x095a,clif->pTakeItem,2); + packet(0x095d,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-02-11aRagexe #if PACKETVER == 20160211 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pStoragePassword,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086c,clif->pChangeDir,2,4); + packet(0x0870,clif->pFriendsListAdd,2); + packet(0x0886,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-02-17aRagexe #if PACKETVER == 20160217 - packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0864,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0873,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x087a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08ad,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0920,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0926,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0941,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0966,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x023b,clif->pReqCloseBuyingStore,0); + packet(0x0362,clif->pChangeDir,2,4); + packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0864,clif->pMoveToKafra,2,4); + packet(0x0870,clif->pFriendsListAdd,2); + packet(0x0873,clif->pHomMenu,2,4); + packet(0x087a,clif->pWantToConnection,2,6,10,14,18); + packet(0x0888,clif->pTickSend,2); + packet(0x088d,clif->pReqClickBuyingStore,2); + packet(0x088f,clif->pDropItem,2,4); + packet(0x0899,clif->pDull/*,XXX*/); + packet(0x08a0,clif->pMoveFromKafra,2,4); + packet(0x08a9,clif->pPartyInvite2,2); + packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); + packet(0x08ad,clif->pSearchStoreInfoNextPage,0); + packet(0x091d,clif->pWalkToXY,2); + packet(0x0920,clif->pActionRequest,2,6); + packet(0x0926,clif->pUseSkillToId,2,4,6); + packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093b,clif->pItemListWindowSelected,2,4,8); + packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0941,clif->pTakeItem,2); + packet(0x094a,clif->pUseSkillToPos,2,4,6,8); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x095e,clif->pStoragePassword,0); + packet(0x0966,clif->pGetCharNameRequest,2); + packet(0x0967,clif->pSolveCharName,2); + packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2016-02-24aRagexe #if PACKETVER == 20160224 - packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0364,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0436,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0885,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0888,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0938,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pPartyInvite2,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0364,clif->pUseSkillToId,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pMoveFromKafra,2,4); + packet(0x0436,clif->pDropItem,2,4); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pMoveToKafra,2,4); + packet(0x0861,clif->pWantToConnection,2,6,10,14,18); + packet(0x086b,clif->pDull/*,XXX*/); + packet(0x0884,clif->pActionRequest,2,6); + packet(0x0885,clif->pReqClickBuyingStore,2); + packet(0x0888,clif->pWalkToXY,2); + packet(0x08a9,clif->pFriendsListAdd,2); + packet(0x0920,clif->pDull/*,XXX*/); + packet(0x0929,clif->pChangeDir,2,4); + packet(0x092f,clif->pItemListWindowSelected,2,4,8); + packet(0x0936,clif->pStoragePassword,0); + packet(0x0938,clif->pTakeItem,2); + packet(0x094c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0961,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-03-02bRagexe #if PACKETVER == 20160302 - packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0819,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0873,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0883,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a9,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0927,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x094e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0957,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0968,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x022d,clif->pChangeDir,2,4); + packet(0x0367,clif->pReqClickBuyingStore,2); + packet(0x0802,clif->pWantToConnection,2,6,10,14,18); + packet(0x0819,clif->pWalkToXY,2); + packet(0x085b,clif->pFriendsListAdd,2); + packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0868,clif->pHomMenu,2,4); + packet(0x0873,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0875,clif->pSearchStoreInfoNextPage,0); + packet(0x087a,clif->pUseSkillToPos,2,4,6,8); + packet(0x087d,clif->pPartyInvite2,2); + packet(0x0883,clif->pUseSkillToId,2,4,6); + packet(0x08a6,clif->pReqCloseBuyingStore,0); + packet(0x08a9,clif->pMoveFromKafra,2,4); + packet(0x091a,clif->pDropItem,2,4); + packet(0x0927,clif->pTakeItem,2); + packet(0x092d,clif->pDull/*,XXX*/); + packet(0x092f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0945,clif->pGetCharNameRequest,2); + packet(0x094e,clif->pStoragePassword,0); + packet(0x0950,clif->pDull/*,XXX*/); + packet(0x0957,clif->pItemListWindowSelected,2,4,8); + packet(0x095a,clif->pTickSend,2); + packet(0x0960,clif->pMoveToKafra,2,4); + packet(0x0961,clif->pPartyBookingRegisterReq,2,4); + packet(0x0967,clif->pSolveCharName,2); + packet(0x0968,clif->pActionRequest,2,6); #endif // 2016-03-09cRagexe #if PACKETVER == 20160309 - packet(0x023b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0281,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x083c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x087e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0920,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0932,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0956,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x096a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x023b,clif->pDropItem,2,4); + packet(0x0281,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pFriendsListAdd,2); + packet(0x0364,clif->pStoragePassword,0); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0819,clif->pUseSkillToPos,2,4,6,8); + packet(0x0838,clif->pWalkToXY,2); + packet(0x083c,clif->pPartyInvite2,2); + packet(0x085a,clif->pMoveToKafra,2,4); + packet(0x085f,clif->pUseSkillToId,2,4,6); + packet(0x0866,clif->pSearchStoreInfoNextPage,0); + packet(0x086a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0873,clif->pDull/*,XXX*/); + packet(0x087c,clif->pWantToConnection,2,6,10,14,18); + packet(0x087e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089b,clif->pItemListWindowSelected,2,4,8); + packet(0x089d,clif->pChangeDir,2,4); + packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); + packet(0x091d,clif->pGetCharNameRequest,2); + packet(0x0920,clif->pMoveFromKafra,2,4); + packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0929,clif->pDull/*,XXX*/); + packet(0x092a,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092e,clif->pReqCloseBuyingStore,0); + packet(0x0932,clif->pHomMenu,2,4); + packet(0x094f,clif->pActionRequest,2,6); + packet(0x0956,clif->pTickSend,2); + packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x096a,clif->pTakeItem,2); #endif // 2016-03-16aRagexe, 2016-03-18aRagexe #if PACKETVER == 20160316 || \ PACKETVER == 20160318 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0922,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-03-23aRagexe, 2016-03-23bRagexe #if PACKETVER == 20160323 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0872,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0878,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0883,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pFriendsListAdd,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pDull/*,XXX*/); + packet(0x0869,clif->pTakeItem,2); + packet(0x086a,clif->pMoveFromKafra,2,4); + packet(0x0872,clif->pStoragePassword,0); + packet(0x0878,clif->pWantToConnection,2,6,10,14,18); + packet(0x0883,clif->pPartyInvite2,2); + packet(0x0896,clif->pItemListWindowSelected,2,4,8); + packet(0x089a,clif->pHomMenu,2,4); + packet(0x091b,clif->pDull/*,XXX*/); + packet(0x0926,clif->pMoveToKafra,2,4); + packet(0x0927,clif->pPartyBookingRegisterReq,2,4); + packet(0x0933,clif->pChangeDir,2,4); + packet(0x093c,clif->pDropItem,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-03-30aRagexe, 2016-03-30bRagexe #if PACKETVER == 20160330 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0878,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0918,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0939,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x093b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pStoragePassword,0); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pPartyInvite2,2); + packet(0x086d,clif->pTakeItem,2); + packet(0x0878,clif->pDull/*,XXX*/); + packet(0x087f,clif->pMoveFromKafra,2,4); + packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x088b,clif->pHomMenu,2,4); + packet(0x088d,clif->pDull/*,XXX*/); + packet(0x0918,clif->pMoveToKafra,2,4); + packet(0x0925,clif->pWantToConnection,2,6,10,14,18); + packet(0x092a,clif->pItemListWindowSelected,2,4,8); + packet(0x092c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0930,clif->pChangeDir,2,4); + packet(0x0939,clif->pDropItem,2,4); + packet(0x093b,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-04-06aRagexe, 2016-04-06bRagexe #if PACKETVER == 20160406 - packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0869,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0877,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0879,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0898,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ac,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x0364,clif->pSolveCharName,2); + packet(0x07e4,clif->pDropItem,2,4); + packet(0x0819,clif->pSearchStoreInfoNextPage,0); + packet(0x085a,clif->pPartyBookingRegisterReq,2,4); + packet(0x085c,clif->pUseSkillToPos,2,4,6,8); + packet(0x0869,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0877,clif->pTakeItem,2); + packet(0x0878,clif->pFriendsListAdd,2); + packet(0x0879,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0895,clif->pWantToConnection,2,6,10,14,18); + packet(0x0898,clif->pPartyInvite2,2); + packet(0x089b,clif->pGetCharNameRequest,2); + packet(0x089e,clif->pMoveFromKafra,2,4); + packet(0x08a1,clif->pActionRequest,2,6); + packet(0x08a9,clif->pReqCloseBuyingStore,0); + packet(0x08ac,clif->pDull/*,XXX*/); + packet(0x0927,clif->pMoveToKafra,2,4); + packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0933,clif->pChangeDir,2,4); + packet(0x0934,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pTickSend,2); + packet(0x0949,clif->pItemListWindowSelected,2,4,8); + packet(0x094d,clif->pReqClickBuyingStore,2); + packet(0x0953,clif->pStoragePassword,0); + packet(0x095d,clif->pHomMenu,2,4); + packet(0x095f,clif->pWalkToXY,2); + packet(0x0962,clif->pDull/*,XXX*/); #endif // 2016-04-14aRagexe, 2016-04-14bRagexe, 2016-04-14bRagexe_2, 2016-04-14cRagexe #if PACKETVER == 20160414 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0880,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0918,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0931,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0945,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0953,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pItemListWindowSelected,2,4,8); + packet(0x0363,clif->pTakeItem,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pWantToConnection,2,6,10,14,18); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x0880,clif->pPartyBookingRegisterReq,2,4); + packet(0x0885,clif->pMoveFromKafra,2,4); + packet(0x089e,clif->pPartyInvite2,2); + packet(0x0918,clif->pDull/*,XXX*/); + packet(0x0922,clif->pChangeDir,2,4); + packet(0x0927,clif->pStoragePassword,0); + packet(0x0931,clif->pDropItem,2,4); + packet(0x0934,clif->pHomMenu,2,4); + packet(0x0945,clif->pFriendsListAdd,2); + packet(0x0953,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-04-20cRagexe #if PACKETVER == 20160420 - packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0872,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0884,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x094e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x02c4,clif->pTickSend,2); + packet(0x035f,clif->pPartyInvite2,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pHomMenu,2,4); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0864,clif->pTakeItem,2); + packet(0x0870,clif->pDull/*,XXX*/); + packet(0x0872,clif->pChangeDir,2,4); + packet(0x0874,clif->pMoveToKafra,2,4); + packet(0x0884,clif->pDropItem,2,4); + packet(0x0888,clif->pWantToConnection,2,6,10,14,18); + packet(0x088b,clif->pMoveFromKafra,2,4); + packet(0x08a5,clif->pStoragePassword,0); + packet(0x092f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0935,clif->pFriendsListAdd,2); + packet(0x094e,clif->pItemListWindowSelected,2,4,8); + packet(0x095c,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-04-27aRagexe #if PACKETVER == 20160427 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0835,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfoNextPage,0); + packet(0x0835,clif->pStoragePassword,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-05-04aRagexe #if PACKETVER == 20160504 - packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0365,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x087f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0884,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0922,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0924,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0948,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x0202,clif->pHomMenu,2,4); + packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0365,clif->pDull/*,XXX*/); + packet(0x083c,clif->pSearchStoreInfoNextPage,0); + packet(0x085f,clif->pActionRequest,2,6); + packet(0x086b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x087f,clif->pReqCloseBuyingStore,0); + packet(0x0884,clif->pUseSkillToPos,2,4,6,8); + packet(0x0886,clif->pMoveToKafra,2,4); + packet(0x0887,clif->pPartyInvite2,2); + packet(0x088a,clif->pTakeItem,2); + packet(0x088d,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pItemListWindowSelected,2,4,8); + packet(0x0890,clif->pDropItem,2,4); + packet(0x0893,clif->pPartyBookingRegisterReq,2,4); + packet(0x0898,clif->pDull/*,XXX*/); + packet(0x089d,clif->pSolveCharName,2); + packet(0x08ad,clif->pChangeDir,2,4); + packet(0x0918,clif->pTickSend,2); + packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0922,clif->pGetCharNameRequest,2); + packet(0x0924,clif->pWalkToXY,2); + packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0940,clif->pWantToConnection,2,6,10,14,18); + packet(0x0941,clif->pMoveFromKafra,2,4); + packet(0x0948,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0952,clif->pFriendsListAdd,2); + packet(0x095b,clif->pReqClickBuyingStore,2); + packet(0x0969,clif->pStoragePassword,0); #endif // 2016-05-11aRagexe #if PACKETVER == 20160511 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0918,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0940,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085e,clif->pChangeDir,2,4); + packet(0x0894,clif->pFriendsListAdd,2); + packet(0x089b,clif->pDull/*,XXX*/); + packet(0x0918,clif->pHomMenu,2,4); + packet(0x0920,clif->pWantToConnection,2,6,10,14,18); + packet(0x0940,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-05-18aRagexe #if PACKETVER == 20160518 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0874,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0928,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086c,clif->pChangeDir,2,4); + packet(0x0874,clif->pWantToConnection,2,6,10,14,18); + packet(0x089a,clif->pStoragePassword,0); + packet(0x08a9,clif->pFriendsListAdd,2); + packet(0x0928,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-05-25aRagexe, 2016-05-26aRagexe #if PACKETVER == 20160525 || \ PACKETVER == 20160526 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0945,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0951,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pDull/*,XXX*/); + packet(0x085e,clif->pDropItem,2,4); + packet(0x0867,clif->pHomMenu,2,4); + packet(0x086a,clif->pWantToConnection,2,6,10,14,18); + packet(0x0899,clif->pTakeItem,2); + packet(0x089c,clif->pChangeDir,2,4); + packet(0x091d,clif->pStoragePassword,0); + packet(0x092c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0937,clif->pItemListWindowSelected,2,4,8); + packet(0x0945,clif->pPartyInvite2,2); + packet(0x094a,clif->pMoveToKafra,2,4); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0951,clif->pFriendsListAdd,2); + packet(0x0956,clif->pMoveFromKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-06-01aRagexe #if PACKETVER == 20160601 - packet(0x0202,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0863,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0870,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0924,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x095f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pReqCloseBuyingStore,0); + packet(0x02c4,clif->pPartyInvite2,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pFriendsListAdd,2); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0863,clif->pTakeItem,2); + packet(0x0870,clif->pMoveFromKafra,2,4); + packet(0x087d,clif->pItemListWindowSelected,2,4,8); + packet(0x088d,clif->pDropItem,2,4); + packet(0x088f,clif->pMoveToKafra,2,4); + packet(0x0895,clif->pHomMenu,2,4); + packet(0x08a7,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); + packet(0x0924,clif->pDull/*,XXX*/); + packet(0x095b,clif->pChangeDir,2,4); + packet(0x095f,clif->pStoragePassword,0); + packet(0x0961,clif->pPartyBookingRegisterReq,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-06-08aRagexe, 2016-06-08bRagexe, 2016-06-09aRagexe #if PACKETVER == 20160608 || \ PACKETVER == 20160609 - packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0802,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0889,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pItemListWindowSelected,2,4,8); + packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); + packet(0x035f,clif->pPartyInvite2,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pWalkToXY,2); + packet(0x0437,clif->pWantToConnection,2,6,10,14,18); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pChangeDir,2,4); + packet(0x0802,clif->pTickSend,2); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085c,clif->pDull/*,XXX*/); + packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0889,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0899,clif->pTakeItem,2); + packet(0x089b,clif->pHomMenu,2,4); + packet(0x08a6,clif->pMoveFromKafra,2,4); + packet(0x093b,clif->pDull/*,XXX*/); + packet(0x094d,clif->pDropItem,2,4); + packet(0x0958,clif->pStoragePassword,0); + packet(0x095b,clif->pMoveToKafra,2,4); + packet(0x0969,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-06-15aRagexe #if PACKETVER == 20160615 - packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x083c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x092f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0948,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x094b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0957,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0958,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0961,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x0281,clif->pFriendsListAdd,2); + packet(0x0363,clif->pWantToConnection,2,6,10,14,18); + packet(0x0364,clif->pStoragePassword,0); + packet(0x0369,clif->pHomMenu,2,4); + packet(0x083c,clif->pGetCharNameRequest,2); + packet(0x0866,clif->pWalkToXY,2); + packet(0x0870,clif->pDull/*,XXX*/); + packet(0x087d,clif->pSolveCharName,2); + packet(0x087e,clif->pTakeItem,2); + packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0888,clif->pUseSkillToId,2,4,6); + packet(0x088a,clif->pTickSend,2); + packet(0x088d,clif->pItemListWindowSelected,2,4,8); + packet(0x0891,clif->pUseSkillToPos,2,4,6,8); + packet(0x0898,clif->pDropItem,2,4); + packet(0x092f,clif->pSearchStoreInfoNextPage,0); + packet(0x093e,clif->pPartyInvite2,2); + packet(0x0947,clif->pReqCloseBuyingStore,0); + packet(0x0948,clif->pActionRequest,2,6); + packet(0x094a,clif->pReqClickBuyingStore,2); + packet(0x094b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0954,clif->pChangeDir,2,4); + packet(0x0957,clif->pMoveToKafra,2,4); + packet(0x0958,clif->pMoveFromKafra,2,4); + packet(0x095c,clif->pPartyBookingRegisterReq,2,4); + packet(0x095e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0961,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2016-06-22aRagexe #if PACKETVER == 20160622 - packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x035f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0890,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0892,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0936,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0959,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 + packet(0x023b,clif->pUseSkillToPos,2,4,6,8); + packet(0x035f,clif->pMoveFromKafra,2,4); + packet(0x0361,clif->pPartyInvite2,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0437,clif->pWalkToXY,2); + packet(0x07e4,clif->pHomMenu,2,4); + packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0865,clif->pDull/*,XXX*/); + packet(0x0867,clif->pDull/*,XXX*/); + packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0887,clif->pReqCloseBuyingStore,0); + packet(0x0890,clif->pFriendsListAdd,2); + packet(0x0891,clif->pReqClickBuyingStore,2); + packet(0x0892,clif->pSearchStoreInfoNextPage,0); + packet(0x089a,clif->pPartyBookingRegisterReq,2,4); + packet(0x089e,clif->pActionRequest,2,6); + packet(0x08a2,clif->pSolveCharName,2); + packet(0x08a8,clif->pStoragePassword,0); + packet(0x091c,clif->pTakeItem,2); + packet(0x092d,clif->pTickSend,2); + packet(0x092f,clif->pUseSkillToId,2,4,6); + packet(0x0936,clif->pWantToConnection,2,6,10,14,18); + packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093b,clif->pMoveToKafra,2,4); + packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0946,clif->pItemListWindowSelected,2,4,8); + packet(0x0959,clif->pGetCharNameRequest,2); + packet(0x0965,clif->pChangeDir,2,4); + packet(0x0969,clif->pDropItem,2,4); #endif // 2016-06-29aRagexe, 2016-06-30aRagexe #if PACKETVER == 20160629 || \ PACKETVER == 20160630 - packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x022d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0363,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x085e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0860,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0861,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0863,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0881,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0893,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0925,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0946,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0948,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0968,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0969,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x022d,clif->pWalkToXY,2); + packet(0x035f,clif->pDull/*,XXX*/); + packet(0x0363,clif->pReqClickBuyingStore,2); + packet(0x0368,clif->pItemListWindowSelected,2,4,8); + packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x085e,clif->pDull/*,XXX*/); + packet(0x0860,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0861,clif->pDropItem,2,4); + packet(0x0863,clif->pSolveCharName,2); + packet(0x0867,clif->pStoragePassword,0); + packet(0x086b,clif->pSearchStoreInfoNextPage,0); + packet(0x0881,clif->pWantToConnection,2,6,10,14,18); + packet(0x0885,clif->pHomMenu,2,4); + packet(0x088e,clif->pGetCharNameRequest,2); + packet(0x0893,clif->pTickSend,2); + packet(0x091e,clif->pPartyBookingRegisterReq,2,4); + packet(0x0922,clif->pMoveFromKafra,2,4); + packet(0x0925,clif->pUseSkillToId,2,4,6); + packet(0x0926,clif->pPartyInvite2,2); + packet(0x093e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0946,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0948,clif->pChangeDir,2,4); + packet(0x094a,clif->pFriendsListAdd,2); + packet(0x0957,clif->pReqCloseBuyingStore,0); + packet(0x095a,clif->pActionRequest,2,6); + packet(0x0968,clif->pUseSkillToPos,2,4,6,8); + packet(0x0969,clif->pTakeItem,2); + packet(0x096a,clif->pMoveToKafra,2,4); #endif // 2016-07-06bRagexe #if PACKETVER == 20160706 - packet(0x0362,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0860,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0869,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0884,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0886,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0892,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0899,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a8,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0918,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x091b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0927,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0939,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x093d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0944,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x0362,clif->pSolveCharName,2); + packet(0x0436,clif->pReqClickBuyingStore,2); + packet(0x085f,clif->pPartyInvite2,2); + packet(0x0860,clif->pActionRequest,2,6); + packet(0x0869,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0884,clif->pFriendsListAdd,2); + packet(0x0886,clif->pDull/*,XXX*/); + packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0892,clif->pHomMenu,2,4); + packet(0x0899,clif->pUseSkillToId,2,4,6); + packet(0x08a4,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a8,clif->pTickSend,2); + packet(0x0918,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x091b,clif->pItemListWindowSelected,2,4,8); + packet(0x0924,clif->pUseSkillToPos,2,4,6,8); + packet(0x0926,clif->pChangeDir,2,4); + packet(0x0927,clif->pSearchStoreInfoNextPage,0); + packet(0x0929,clif->pMoveFromKafra,2,4); + packet(0x092d,clif->pWalkToXY,2); + packet(0x0939,clif->pMoveToKafra,2,4); + packet(0x093d,clif->pDropItem,2,4); + packet(0x0944,clif->pDull/*,XXX*/); + packet(0x0945,clif->pGetCharNameRequest,2); + packet(0x094c,clif->pStoragePassword,0); + packet(0x0952,clif->pReqCloseBuyingStore,0); + packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0958,clif->pTakeItem,2); #endif // 2016-07-13aRagexe, 2016-07-13bRagexe, 2016-07-13cRagexe, 2016-07-13dRagexe #if PACKETVER == 20160713 - packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0838,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0865,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0877,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0892,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0931,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0944,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0957,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x095b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x022d,clif->pStoragePassword,0); + packet(0x0363,clif->pChangeDir,2,4); + packet(0x0364,clif->pItemListWindowSelected,2,4,8); + packet(0x0838,clif->pTakeItem,2); + packet(0x0860,clif->pReqClickBuyingStore,2); + packet(0x0865,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0875,clif->pSearchStoreInfoNextPage,0); + packet(0x0877,clif->pUseSkillToPos,2,4,6,8); + packet(0x087b,clif->pTickSend,2); + packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0892,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x089a,clif->pPartyInvite2,2); + packet(0x089f,clif->pDull/*,XXX*/); + packet(0x08a2,clif->pMoveFromKafra,2,4); + packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); + packet(0x091c,clif->pWalkToXY,2); + packet(0x091d,clif->pSolveCharName,2); + packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0922,clif->pHomMenu,2,4); + packet(0x092c,clif->pGetCharNameRequest,2); + packet(0x0931,clif->pUseSkillToId,2,4,6); + packet(0x0939,clif->pFriendsListAdd,2); + packet(0x0944,clif->pReqCloseBuyingStore,0); + packet(0x0945,clif->pActionRequest,2,6); + packet(0x0947,clif->pMoveToKafra,2,4); + packet(0x0957,clif->pDropItem,2,4); + packet(0x095b,clif->pDull/*,XXX*/); #endif // 2016-07-20aRagexe, 2016-07-20bRagexe #if PACKETVER == 20160720 - packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0365,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0883,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08aa,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0917,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0946,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 + packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0363,clif->pUseSkillToId,2,4,6); + packet(0x0365,clif->pActionRequest,2,6); + packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); + packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0838,clif->pWalkToXY,2); + packet(0x085b,clif->pReqCloseBuyingStore,0); + packet(0x086a,clif->pSearchStoreInfoNextPage,0); + packet(0x086d,clif->pReqClickBuyingStore,2); + packet(0x087f,clif->pDropItem,2,4); + packet(0x0883,clif->pUseSkillToPos,2,4,6,8); + packet(0x0887,clif->pGetCharNameRequest,2); + packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089a,clif->pStoragePassword,0); + packet(0x089c,clif->pHomMenu,2,4); + packet(0x089e,clif->pMoveFromKafra,2,4); + packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08aa,clif->pItemListWindowSelected,2,4,8); + packet(0x0917,clif->pDull/*,XXX*/); + packet(0x091c,clif->pTakeItem,2); + packet(0x092a,clif->pFriendsListAdd,2); + packet(0x093b,clif->pChangeDir,2,4); + packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0946,clif->pTickSend,2); + packet(0x094d,clif->pSolveCharName,2); + packet(0x0953,clif->pDull/*,XXX*/); + packet(0x095b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0960,clif->pMoveToKafra,2,4); + packet(0x0969,clif->pPartyInvite2,2); #endif // 2016-07-27aRagexe, 2016-07-27bRagexe #if PACKETVER == 20160727 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0436,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x07ec,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0869,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0883,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0951,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0966,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x023b,clif->pDull/*,XXX*/); + packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0363,clif->pFriendsListAdd,2); + packet(0x0436,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0438,clif->pTickSend,2); + packet(0x07ec,clif->pDropItem,2,4); + packet(0x0866,clif->pDull/*,XXX*/); + packet(0x0868,clif->pPartyInvite2,2); + packet(0x0869,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0874,clif->pReqClickBuyingStore,2); + packet(0x0877,clif->pPartyBookingRegisterReq,2,4); + packet(0x0883,clif->pActionRequest,2,6); + packet(0x0887,clif->pWantToConnection,2,6,10,14,18); + packet(0x088e,clif->pUseSkillToId,2,4,6); + packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x089f,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a2,clif->pStoragePassword,0); + packet(0x08a4,clif->pSolveCharName,2); + packet(0x08a7,clif->pTakeItem,2); + packet(0x092e,clif->pWalkToXY,2); + packet(0x0936,clif->pHomMenu,2,4); + packet(0x0941,clif->pSearchStoreInfoNextPage,0); + packet(0x0946,clif->pGetCharNameRequest,2); + packet(0x0949,clif->pMoveFromKafra,2,4); + packet(0x0951,clif->pMoveToKafra,2,4); + packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0966,clif->pReqCloseBuyingStore,0); + packet(0x0969,clif->pItemListWindowSelected,2,4,8); #endif // 2016-08-03bRagexe #if PACKETVER == 20160803 - packet(0x0364,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x085d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x088b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08a1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0930,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0932,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0959,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 + packet(0x0364,clif->pWantToConnection,2,6,10,14,18); + packet(0x085d,clif->pReqClickBuyingStore,2); + packet(0x0878,clif->pDull/*,XXX*/); + packet(0x087f,clif->pWalkToXY,2); + packet(0x0881,clif->pPartyBookingRegisterReq,2,4); + packet(0x0886,clif->pMoveToKafra,2,4); + packet(0x0887,clif->pGetCharNameRequest,2); + packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x088b,clif->pReqCloseBuyingStore,0); + packet(0x0891,clif->pChangeDir,2,4); + packet(0x0895,clif->pFriendsListAdd,2); + packet(0x089c,clif->pDropItem,2,4); + packet(0x089e,clif->pSearchStoreInfoNextPage,0); + packet(0x08a1,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091b,clif->pTakeItem,2); + packet(0x0929,clif->pStoragePassword,0); + packet(0x0930,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0932,clif->pUseSkillToId,2,4,6); + packet(0x0934,clif->pActionRequest,2,6); + packet(0x0937,clif->pUseSkillToPos,2,4,6,8); + packet(0x093a,clif->pDull/*,XXX*/); + packet(0x093e,clif->pTickSend,2); + packet(0x093f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0952,clif->pHomMenu,2,4); + packet(0x0955,clif->pMoveFromKafra,2,4); + packet(0x0956,clif->pItemListWindowSelected,2,4,8); + packet(0x0959,clif->pSolveCharName,2); + packet(0x095a,clif->pPartyInvite2,2); + packet(0x096a,clif->pReqTradeBuyingStore,2,4,8,12); #endif // 2016-08-10aRagexe #if PACKETVER == 20160810 - packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0860,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0885,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0888,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0890,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0926,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0959,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x0361,clif->pStoragePassword,0); + packet(0x0819,clif->pUseSkillToPos,2,4,6,8); + packet(0x0838,clif->pPartyInvite2,2); + packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x085e,clif->pDropItem,2,4); + packet(0x085f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0860,clif->pSolveCharName,2); + packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0875,clif->pHomMenu,2,4); + packet(0x0879,clif->pReqClickBuyingStore,2); + packet(0x087a,clif->pWalkToXY,2); + packet(0x0885,clif->pWantToConnection,2,6,10,14,18); + packet(0x0888,clif->pFriendsListAdd,2); + packet(0x0890,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089d,clif->pChangeDir,2,4); + packet(0x089f,clif->pItemListWindowSelected,2,4,8); + packet(0x08a9,clif->pMoveToKafra,2,4); + packet(0x091a,clif->pTakeItem,2); + packet(0x091b,clif->pGetCharNameRequest,2); + packet(0x091c,clif->pUseSkillToId,2,4,6); + packet(0x0926,clif->pDull/*,XXX*/); + packet(0x092b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092d,clif->pMoveFromKafra,2,4); + packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0943,clif->pTickSend,2); + packet(0x094b,clif->pSearchStoreInfoNextPage,0); + packet(0x0959,clif->pReqCloseBuyingStore,0); + packet(0x095b,clif->pActionRequest,2,6); + packet(0x0967,clif->pDull/*,XXX*/); #endif // 2016-08-17aRagexe #if PACKETVER == 20160817 - packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0811,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x083c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x085c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0875,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a6,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08ab,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08ac,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0929,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0939,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0957,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0963,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x0364,clif->pReqClickBuyingStore,2); + packet(0x0437,clif->pFriendsListAdd,2); + packet(0x07e4,clif->pGetCharNameRequest,2); + packet(0x0811,clif->pDull/*,XXX*/); + packet(0x0819,clif->pTickSend,2); + packet(0x083c,clif->pItemListWindowSelected,2,4,8); + packet(0x085c,clif->pTakeItem,2); + packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086b,clif->pSolveCharName,2); + packet(0x0875,clif->pWantToConnection,2,6,10,14,18); + packet(0x087f,clif->pDropItem,2,4); + packet(0x0886,clif->pActionRequest,2,6); + packet(0x0891,clif->pUseSkillToId,2,4,6); + packet(0x089c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a5,clif->pStoragePassword,0); + packet(0x08a6,clif->pPartyInvite2,2); + packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08ab,clif->pHomMenu,2,4); + packet(0x08ac,clif->pUseSkillToPos,2,4,6,8); + packet(0x08ad,clif->pMoveToKafra,2,4); + packet(0x091b,clif->pReqCloseBuyingStore,0); + packet(0x0929,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0930,clif->pWalkToXY,2); + packet(0x0939,clif->pMoveFromKafra,2,4); + packet(0x093c,clif->pDull/*,XXX*/); + packet(0x0957,clif->pPartyBookingRegisterReq,2,4); + packet(0x0960,clif->pSearchStoreInfoNextPage,0); + packet(0x0963,clif->pChangeDir,2,4); #endif // 2016-08-24aRagexe #if PACKETVER == 20160824 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0934,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-08-31aRagexe, 2016-08-31bRagexe #if PACKETVER == 20160831 - packet(0x022d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0366,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0876,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x087c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0938,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0946,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0954,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0957,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0964,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x022d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0366,clif->pDropItem,2,4); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x0835,clif->pWantToConnection,2,6,10,14,18); + packet(0x0865,clif->pWalkToXY,2); + packet(0x086d,clif->pReqCloseBuyingStore,0); + packet(0x0870,clif->pPartyBookingRegisterReq,2,4); + packet(0x0874,clif->pPartyInvite2,2); + packet(0x0876,clif->pDull/*,XXX*/); + packet(0x0878,clif->pActionRequest,2,6); + packet(0x087c,clif->pGetCharNameRequest,2); + packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a9,clif->pTickSend,2); + packet(0x0917,clif->pStoragePassword,0); + packet(0x091b,clif->pDull/*,XXX*/); + packet(0x092c,clif->pFriendsListAdd,2); + packet(0x092e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0938,clif->pSearchStoreInfoNextPage,0); + packet(0x093a,clif->pHomMenu,2,4); + packet(0x0946,clif->pSolveCharName,2); + packet(0x094a,clif->pChangeDir,2,4); + packet(0x094f,clif->pMoveToKafra,2,4); + packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0954,clif->pItemListWindowSelected,2,4,8); + packet(0x0957,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095e,clif->pMoveFromKafra,2,4); + packet(0x0960,clif->pTakeItem,2); + packet(0x0964,clif->pUseSkillToPos,2,4,6,8); + packet(0x0967,clif->pUseSkillToId,2,4,6); #endif // 2016-09-07aRagexe #if PACKETVER == 20160907 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x091c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x091c,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-09-13aRagexe #if PACKETVER == 20160913 - packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0865,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0875,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0879,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0892,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0935,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0949,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0950,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0952,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0954,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0968,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 + packet(0x0361,clif->pPartyBookingRegisterReq,2,4); + packet(0x0817,clif->pMoveToKafra,2,4); + packet(0x085b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0865,clif->pGetCharNameRequest,2); + packet(0x0874,clif->pReqClickBuyingStore,2); + packet(0x0875,clif->pTickSend,2); + packet(0x0879,clif->pDropItem,2,4); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x087b,clif->pSearchStoreInfoNextPage,0); + packet(0x0887,clif->pItemListWindowSelected,2,4,8); + packet(0x0889,clif->pTakeItem,2); + packet(0x088e,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0892,clif->pUseSkillToPos,2,4,6,8); + packet(0x089b,clif->pMoveFromKafra,2,4); + packet(0x089c,clif->pStoragePassword,0); + packet(0x08a5,clif->pChangeDir,2,4); + packet(0x0928,clif->pFriendsListAdd,2); + packet(0x0935,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x093a,clif->pHomMenu,2,4); + packet(0x0949,clif->pPartyInvite2,2); + packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0950,clif->pActionRequest,2,6); + packet(0x0952,clif->pWantToConnection,2,6,10,14,18); + packet(0x0954,clif->pWalkToXY,2); + packet(0x0962,clif->pDull/*,XXX*/); + packet(0x0963,clif->pSolveCharName,2); + packet(0x0968,clif->pReqCloseBuyingStore,0); #endif // 2016-09-21aRagexe #if PACKETVER == 20160921 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x094a,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-09-28cRagexe #if PACKETVER == 20160928 - packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0366,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0878,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0897,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0919,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0927,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0957,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x0202,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pGetCharNameRequest,2); + packet(0x0366,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0436,clif->pReqClickBuyingStore,2); + packet(0x0811,clif->pDull/*,XXX*/); + packet(0x0838,clif->pPartyInvite2,2); + packet(0x0864,clif->pMoveFromKafra,2,4); + packet(0x0866,clif->pSearchStoreInfoNextPage,0); + packet(0x086d,clif->pDropItem,2,4); + packet(0x0872,clif->pHomMenu,2,4); + packet(0x0878,clif->pSolveCharName,2); + packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0889,clif->pWantToConnection,2,6,10,14,18); + packet(0x088e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0897,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089a,clif->pActionRequest,2,6); + packet(0x08a2,clif->pStoragePassword,0); + packet(0x08a9,clif->pMoveToKafra,2,4); + packet(0x0919,clif->pWalkToXY,2); + packet(0x091e,clif->pTickSend,2); + packet(0x0927,clif->pUseSkillToId,2,4,6); + packet(0x092d,clif->pUseSkillToPos,2,4,6,8); + packet(0x0944,clif->pChangeDir,2,4); + packet(0x094d,clif->pReqCloseBuyingStore,0); + packet(0x094e,clif->pFriendsListAdd,2); + packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0955,clif->pPartyBookingRegisterReq,2,4); + packet(0x0957,clif->pTakeItem,2); + packet(0x095a,clif->pDull/*,XXX*/); #endif // 2016-10-05aRagexe #if PACKETVER == 20161005 - packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0838,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0892,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08ac,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0931,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0932,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0942,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0945,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x094a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0952,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pActionRequest,2,6); + packet(0x0838,clif->pStoragePassword,0); + packet(0x0863,clif->pGetCharNameRequest,2); + packet(0x0886,clif->pItemListWindowSelected,2,4,8); + packet(0x088e,clif->pMoveFromKafra,2,4); + packet(0x0891,clif->pChangeDir,2,4); + packet(0x0892,clif->pPartyBookingRegisterReq,2,4); + packet(0x089b,clif->pPartyInvite2,2); + packet(0x089c,clif->pTakeItem,2); + packet(0x08a0,clif->pMoveToKafra,2,4); + packet(0x08ac,clif->pReqCloseBuyingStore,0); + packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0918,clif->pSearchStoreInfoNextPage,0); + packet(0x0919,clif->pSolveCharName,2); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x092b,clif->pTickSend,2); + packet(0x0931,clif->pFriendsListAdd,2); + packet(0x0932,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0942,clif->pDropItem,2,4); + packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0945,clif->pWalkToXY,2); + packet(0x094a,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094d,clif->pHomMenu,2,4); + packet(0x0952,clif->pDull/*,XXX*/); + packet(0x095a,clif->pReqClickBuyingStore,2); + packet(0x095b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0967,clif->pUseSkillToId,2,4,6); #endif // 2016-10-12aRagexe #if PACKETVER == 20161012 - packet(0x023b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x07ec,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0819,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x085b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0880,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0893,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0937,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0951,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0966,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x023b,clif->pSearchStoreInfoNextPage,0); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0364,clif->pItemListWindowSelected,2,4,8); + packet(0x0365,clif->pTickSend,2); + packet(0x0369,clif->pPartyInvite2,2); + packet(0x07ec,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0819,clif->pFriendsListAdd,2); + packet(0x085b,clif->pDull/*,XXX*/); + packet(0x085e,clif->pReqCloseBuyingStore,0); + packet(0x0863,clif->pActionRequest,2,6); + packet(0x0868,clif->pTakeItem,2); + packet(0x086d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0880,clif->pUseSkillToPos,2,4,6,8); + packet(0x0893,clif->pMoveToKafra,2,4); + packet(0x08a0,clif->pChangeDir,2,4); + packet(0x092d,clif->pSolveCharName,2); + packet(0x0936,clif->pGetCharNameRequest,2); + packet(0x0937,clif->pReqClickBuyingStore,2); + packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0943,clif->pPartyBookingRegisterReq,2,4); + packet(0x0944,clif->pMoveFromKafra,2,4); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x0951,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095c,clif->pHomMenu,2,4); + packet(0x0962,clif->pUseSkillToId,2,4,6); + packet(0x0966,clif->pWalkToXY,2); + packet(0x0967,clif->pStoragePassword,0); #endif // 2016-10-19aRagexe #if PACKETVER == 20161019 - packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0892,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pReqClickBuyingStore,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pHomMenu,2,4); + packet(0x0361,clif->pWalkToXY,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pChangeDir,2,4); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0889,clif->pStoragePassword,0); + packet(0x0892,clif->pDull/*,XXX*/); + packet(0x0946,clif->pWantToConnection,2,6,10,14,18); + packet(0x0963,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-10-26bRagexe, 2016-10-26cRagexe #if PACKETVER == 20161026 - packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0862,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0894,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0898,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0926,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x092e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0930,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x094b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x095c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0962,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x0363,clif->pStoragePassword,0); + packet(0x0438,clif->pWalkToXY,2); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x085a,clif->pMoveToKafra,2,4); + packet(0x085f,clif->pActionRequest,2,6); + packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0862,clif->pTickSend,2); + packet(0x086a,clif->pSearchStoreInfoNextPage,0); + packet(0x086c,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086e,clif->pDull/*,XXX*/); + packet(0x087a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x087c,clif->pDull/*,XXX*/); + packet(0x087f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0886,clif->pDropItem,2,4); + packet(0x0891,clif->pReqClickBuyingStore,2); + packet(0x0894,clif->pUseSkillToId,2,4,6); + packet(0x0898,clif->pFriendsListAdd,2); + packet(0x091a,clif->pWantToConnection,2,6,10,14,18); + packet(0x091b,clif->pTakeItem,2); + packet(0x0926,clif->pSolveCharName,2); + packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x092e,clif->pHomMenu,2,4); + packet(0x092f,clif->pReqCloseBuyingStore,0); + packet(0x0930,clif->pGetCharNameRequest,2); + packet(0x094b,clif->pMoveFromKafra,2,4); + packet(0x0953,clif->pPartyInvite2,2); + packet(0x095c,clif->pItemListWindowSelected,2,4,8); + packet(0x095e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0962,clif->pChangeDir,2,4); #endif // 2016-11-02aRagexe, 2016-11-03aRagexe #if PACKETVER == 20161102 || \ PACKETVER == 20161103 - packet(0x0361,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0367,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x083c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0874,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a2,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08aa,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0925,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0936,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0949,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0964,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0965,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0966,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 + packet(0x0361,clif->pMoveFromKafra,2,4); + packet(0x0367,clif->pDull/*,XXX*/); + packet(0x0436,clif->pActionRequest,2,6); + packet(0x0802,clif->pTakeItem,2); + packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x083c,clif->pPartyBookingRegisterReq,2,4); + packet(0x085f,clif->pUseSkillToId,2,4,6); + packet(0x0869,clif->pMoveToKafra,2,4); + packet(0x086c,clif->pSearchStoreInfoNextPage,0); + packet(0x086f,clif->pDull/*,XXX*/); + packet(0x0874,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x088f,clif->pHomMenu,2,4); + packet(0x0890,clif->pDropItem,2,4); + packet(0x089f,clif->pPartyInvite2,2); + packet(0x08a2,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08aa,clif->pWalkToXY,2); + packet(0x091b,clif->pStoragePassword,0); + packet(0x0922,clif->pReqClickBuyingStore,2); + packet(0x0925,clif->pSolveCharName,2); + packet(0x0928,clif->pFriendsListAdd,2); + packet(0x092f,clif->pGetCharNameRequest,2); + packet(0x0936,clif->pReqCloseBuyingStore,0); + packet(0x0946,clif->pWantToConnection,2,6,10,14,18); + packet(0x0949,clif->pChangeDir,2,4); + packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0964,clif->pItemListWindowSelected,2,4,8); + packet(0x0965,clif->pUseSkillToPos,2,4,6,8); + packet(0x0966,clif->pTickSend,2); #endif // 2016-11-09aRagexe, 2016-11-09bRagexe #if PACKETVER == 20161109 - packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0362,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x085d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x086a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0876,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x088e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0891,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0898,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); + packet(0x0361,clif->pSearchStoreInfoNextPage,0); + packet(0x0362,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pTickSend,2); + packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSolveCharName,2); + packet(0x085d,clif->pReqCloseBuyingStore,0); + packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0865,clif->pWalkToXY,2); + packet(0x086a,clif->pActionRequest,2,6); + packet(0x086d,clif->pUseSkillToPos,2,4,6,8); + packet(0x0870,clif->pWantToConnection,2,6,10,14,18); + packet(0x0876,clif->pReqClickBuyingStore,2); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x0881,clif->pMoveToKafra,2,4); + packet(0x088e,clif->pItemListWindowSelected,2,4,8); + packet(0x0891,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0898,clif->pTakeItem,2); + packet(0x089a,clif->pDropItem,2,4); + packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x089f,clif->pDull/*,XXX*/); + packet(0x08a7,clif->pHomMenu,2,4); + packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0927,clif->pPartyInvite2,2); + packet(0x0937,clif->pFriendsListAdd,2); + packet(0x093c,clif->pStoragePassword,0); + packet(0x093f,clif->pGetCharNameRequest,2); + packet(0x0954,clif->pUseSkillToId,2,4,6); + packet(0x0956,clif->pChangeDir,2,4); #endif // 2016-11-16aRagexe #if PACKETVER == 20161116 - packet(0x0368,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0835,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0885,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0890,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a2,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0931,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x094a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x0368,clif->pTickSend,2); + packet(0x0369,clif->pMoveToKafra,2,4); + packet(0x0835,clif->pFriendsListAdd,2); + packet(0x085f,clif->pDropItem,2,4); + packet(0x0864,clif->pPartyInvite2,2); + packet(0x086f,clif->pTakeItem,2); + packet(0x0885,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088b,clif->pHomMenu,2,4); + packet(0x088d,clif->pReqClickBuyingStore,2); + packet(0x088f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0890,clif->pWalkToXY,2); + packet(0x0892,clif->pItemListWindowSelected,2,4,8); + packet(0x0893,clif->pActionRequest,2,6); + packet(0x08a1,clif->pChangeDir,2,4); + packet(0x08a2,clif->pPartyBookingRegisterReq,2,4); + packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08ac,clif->pMoveFromKafra,2,4); + packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0925,clif->pUseSkillToPos,2,4,6,8); + packet(0x092a,clif->pUseSkillToId,2,4,6); + packet(0x0931,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x094a,clif->pGetCharNameRequest,2); + packet(0x0952,clif->pReqCloseBuyingStore,0); + packet(0x0957,clif->pSolveCharName,2); + packet(0x095b,clif->pStoragePassword,0); + packet(0x095d,clif->pDull/*,XXX*/); + packet(0x095f,clif->pSearchStoreInfoNextPage,0); + packet(0x0967,clif->pDull/*,XXX*/); #endif // 2016-11-23aRagexe #if PACKETVER == 20161123 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0861,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a9,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0926,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x094d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0437,clif->pTickSend,2); + packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0861,clif->pWalkToXY,2); + packet(0x0862,clif->pReqCloseBuyingStore,0); + packet(0x0866,clif->pSearchStoreInfoNextPage,0); + packet(0x086f,clif->pDropItem,2,4); + packet(0x0871,clif->pDull/*,XXX*/); + packet(0x087f,clif->pPartyInvite2,2); + packet(0x0880,clif->pStoragePassword,0); + packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088b,clif->pGetCharNameRequest,2); + packet(0x089c,clif->pChangeDir,2,4); + packet(0x08a9,clif->pUseSkillToPos,2,4,6,8); + packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091a,clif->pMoveToKafra,2,4); + packet(0x0926,clif->pWantToConnection,2,6,10,14,18); + packet(0x092a,clif->pReqClickBuyingStore,2); + packet(0x092f,clif->pTakeItem,2); + packet(0x0930,clif->pHomMenu,2,4); + packet(0x0941,clif->pFriendsListAdd,2); + packet(0x094d,clif->pUseSkillToId,2,4,6); + packet(0x094f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x095a,clif->pDull/*,XXX*/); + packet(0x095b,clif->pActionRequest,2,6); + packet(0x0962,clif->pMoveFromKafra,2,4); + packet(0x096a,clif->pSolveCharName,2); #endif // 2016-11-30aRagexe, 2016-11-30bRagexe #if PACKETVER == 20161130 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pChangeDir,2,4); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pTickSend,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pDull/*,XXX*/); + packet(0x0931,clif->pHomMenu,2,4); + packet(0x0943,clif->pWantToConnection,2,6,10,14,18); + packet(0x0954,clif->pStoragePassword,0); + packet(0x0959,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-12-07cRagexe, 2016-12-07eRagexe #if PACKETVER == 20161207 - packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pHomMenu,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pWantToConnection,2,6,10,14,18); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pFriendsListAdd,2); + packet(0x0868,clif->pDull/*,XXX*/); + packet(0x0875,clif->pMoveToKafra,2,4); + packet(0x087e,clif->pItemListWindowSelected,2,4,8); + packet(0x0886,clif->pActionRequest,2,6); + packet(0x08a1,clif->pChangeDir,2,4); + packet(0x08a2,clif->pTakeItem,2); + packet(0x08ad,clif->pDropItem,2,4); + packet(0x0918,clif->pPartyBookingRegisterReq,2,4); + packet(0x091d,clif->pMoveFromKafra,2,4); + packet(0x0943,clif->pDull/*,XXX*/); + packet(0x095d,clif->pStoragePassword,0); + packet(0x0965,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-12-14bRagexe, 2016-12-14cRagexe #if PACKETVER == 20161214 - packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x02c4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0862,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0887,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x092e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x093d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pReqClickBuyingStore,2); + packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x02c4,clif->pMoveFromKafra,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pHomMenu,2,4); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pWantToConnection,2,6,10,14,18); + packet(0x0436,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pDull/*,XXX*/); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pItemListWindowSelected,2,4,8); + packet(0x0862,clif->pFriendsListAdd,2); + packet(0x086d,clif->pPartyInvite2,2); + packet(0x0887,clif->pDropItem,2,4); + packet(0x0895,clif->pDull/*,XXX*/); + packet(0x0899,clif->pStoragePassword,0); + packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); + packet(0x092e,clif->pTakeItem,2); + packet(0x093d,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-12-21aRagexe, 2016-12-21bRagexe #if PACKETVER == 20161221 - packet(0x035f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0366,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0876,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08aa,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x092e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x035f,clif->pTakeItem,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0366,clif->pSolveCharName,2); + packet(0x0438,clif->pWalkToXY,2); + packet(0x0817,clif->pMoveToKafra,2,4); + packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0876,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0881,clif->pGetCharNameRequest,2); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x0885,clif->pItemListWindowSelected,2,4,8); + packet(0x088c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0890,clif->pStoragePassword,0); + packet(0x0899,clif->pDull/*,XXX*/); + packet(0x089a,clif->pMoveFromKafra,2,4); + packet(0x089b,clif->pActionRequest,2,6); + packet(0x08aa,clif->pTickSend,2); + packet(0x091e,clif->pSearchStoreInfoNextPage,0); + packet(0x0926,clif->pPartyInvite2,2); + packet(0x0928,clif->pFriendsListAdd,2); + packet(0x092c,clif->pReqCloseBuyingStore,0); + packet(0x092e,clif->pPartyBookingRegisterReq,2,4); + packet(0x0930,clif->pHomMenu,2,4); + packet(0x0943,clif->pUseSkillToId,2,4,6); + packet(0x0946,clif->pUseSkillToPos,2,4,6,8); + packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x095a,clif->pReqClickBuyingStore,2); + packet(0x0964,clif->pWantToConnection,2,6,10,14,18); + packet(0x0965,clif->pChangeDir,2,4); #endif // 2016-12-28aRagexe #if PACKETVER == 20161228 - packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x085a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x086c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0870,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0875,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0893,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a3,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a5,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08ac,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0929,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x092c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0934,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0935,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0944,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 + packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x085a,clif->pGetCharNameRequest,2); + packet(0x085e,clif->pHomMenu,2,4); + packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x086c,clif->pTakeItem,2); + packet(0x086d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0870,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0871,clif->pChangeDir,2,4); + packet(0x0875,clif->pReqCloseBuyingStore,0); + packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0886,clif->pWalkToXY,2); + packet(0x0889,clif->pItemListWindowSelected,2,4,8); + packet(0x0893,clif->pDropItem,2,4); + packet(0x089f,clif->pMoveToKafra,2,4); + packet(0x08a2,clif->pUseSkillToId,2,4,6); + packet(0x08a3,clif->pReqClickBuyingStore,2); + packet(0x08a5,clif->pPartyBookingRegisterReq,2,4); + packet(0x08ab,clif->pMoveFromKafra,2,4); + packet(0x08ac,clif->pSolveCharName,2); + packet(0x08ad,clif->pStoragePassword,0); + packet(0x091c,clif->pFriendsListAdd,2); + packet(0x0929,clif->pUseSkillToPos,2,4,6,8); + packet(0x092c,clif->pSearchStoreInfoNextPage,0); + packet(0x0934,clif->pPartyInvite2,2); + packet(0x0935,clif->pDull/*,XXX*/); + packet(0x0938,clif->pDull/*,XXX*/); + packet(0x093d,clif->pActionRequest,2,6); + packet(0x0944,clif->pTickSend,2); #endif // 2017-01-04aRagexe #if PACKETVER == 20170104 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0896,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pWantToConnection,2,6,10,14,18); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToPos,2,4,6,8); + packet(0x085a,clif->pFriendsListAdd,2); + packet(0x087f,clif->pStoragePassword,0); + packet(0x0896,clif->pChangeDir,2,4); + packet(0x091b,clif->pHomMenu,2,4); + packet(0x0940,clif->pUseSkillToId,2,4,6); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-01-11aRagexe #if PACKETVER == 20170111 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pHomMenu,2,4); + packet(0x0877,clif->pFriendsListAdd,2); + packet(0x087f,clif->pDull/*,XXX*/); + packet(0x088a,clif->pMoveToKafra,2,4); + packet(0x08a1,clif->pChangeDir,2,4); + packet(0x08a3,clif->pTakeItem,2); + packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); + packet(0x091a,clif->pStoragePassword,0); + packet(0x091b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0940,clif->pDropItem,2,4); + packet(0x094c,clif->pMoveFromKafra,2,4); + packet(0x0961,clif->pItemListWindowSelected,2,4,8); + packet(0x0969,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-01-18aRagexe #if PACKETVER == 20170118 - packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0933,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x022d,clif->pUseSkillToPos,2,4,6,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0364,clif->pGetCharNameRequest,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pHomMenu,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pWantToConnection,2,6,10,14,18); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pMoveFromKafra,2,4); + packet(0x0865,clif->pChangeDir,2,4); + packet(0x086f,clif->pTakeItem,2); + packet(0x0873,clif->pDull/*,XXX*/); + packet(0x089e,clif->pPartyInvite2,2); + packet(0x08ad,clif->pItemListWindowSelected,2,4,8); + packet(0x091f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0927,clif->pDull/*,XXX*/); + packet(0x0933,clif->pDropItem,2,4); + packet(0x0958,clif->pStoragePassword,0); + packet(0x0962,clif->pFriendsListAdd,2); + packet(0x096a,clif->pMoveToKafra,2,4); #endif // 2017-01-25aRagexe #if PACKETVER == 20170125 - packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0877,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0879,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0881,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x091c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x092b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0944,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0965,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0968,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x0438,clif->pActionRequest,2,6); + packet(0x0811,clif->pWantToConnection,2,6,10,14,18); + packet(0x086e,clif->pPartyInvite2,2); + packet(0x0876,clif->pHomMenu,2,4); + packet(0x0877,clif->pDropItem,2,4); + packet(0x0879,clif->pUseSkillToId,2,4,6); + packet(0x087b,clif->pTakeItem,2); + packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0881,clif->pChangeDir,2,4); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x0893,clif->pStoragePassword,0); + packet(0x0894,clif->pDull/*,XXX*/); + packet(0x0895,clif->pItemListWindowSelected,2,4,8); + packet(0x0898,clif->pSolveCharName,2); + packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091b,clif->pReqClickBuyingStore,2); + packet(0x091c,clif->pMoveToKafra,2,4); + packet(0x091d,clif->pReqCloseBuyingStore,0); + packet(0x0920,clif->pFriendsListAdd,2); + packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x092b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0930,clif->pWalkToXY,2); + packet(0x093c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0943,clif->pTickSend,2); + packet(0x0944,clif->pPartyBookingRegisterReq,2,4); + packet(0x095c,clif->pMoveFromKafra,2,4); + packet(0x0965,clif->pGetCharNameRequest,2); + packet(0x0968,clif->pSearchStoreInfoNextPage,0); #endif // 2017-02-01aRagexe #if PACKETVER == 20170201 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0886,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pPartyBookingRegisterReq,2,4); + packet(0x085e,clif->pChangeDir,2,4); + packet(0x0875,clif->pTakeItem,2); + packet(0x0879,clif->pDull/*,XXX*/); + packet(0x0881,clif->pMoveToKafra,2,4); + packet(0x0884,clif->pWalkToXY,2); + packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0886,clif->pStoragePassword,0); + packet(0x088b,clif->pDropItem,2,4); + packet(0x08a4,clif->pDull/*,XXX*/); + packet(0x0919,clif->pFriendsListAdd,2); + packet(0x0920,clif->pPartyInvite2,2); + packet(0x0938,clif->pHomMenu,2,4); + packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0966,clif->pMoveFromKafra,2,4); + packet(0x0969,clif->pItemListWindowSelected,2,4,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-02-08bRagexe #if PACKETVER == 20170208 - packet(0x02c4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0367,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0892,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0921,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0932,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0937,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x02c4,clif->pDull/*,XXX*/); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0367,clif->pItemListWindowSelected,2,4,8); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085c,clif->pPartyInvite2,2); + packet(0x0860,clif->pChangeDir,2,4); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x088c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0892,clif->pFriendsListAdd,2); + packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); + packet(0x08ac,clif->pMoveToKafra,2,4); + packet(0x0921,clif->pDropItem,2,4); + packet(0x0923,clif->pTakeItem,2); + packet(0x092d,clif->pHomMenu,2,4); + packet(0x0932,clif->pMoveFromKafra,2,4); + packet(0x0937,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-02-15aRagexe #if PACKETVER == 20170215 - packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0876,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x087d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0883,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a8,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x095f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0969,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 + packet(0x02c4,clif->pStoragePassword,0); + packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0360,clif->pTickSend,2); + packet(0x0811,clif->pWantToConnection,2,6,10,14,18); + packet(0x083c,clif->pActionRequest,2,6); + packet(0x085c,clif->pDropItem,2,4); + packet(0x0876,clif->pFriendsListAdd,2); + packet(0x087c,clif->pItemListWindowSelected,2,4,8); + packet(0x087d,clif->pChangeDir,2,4); + packet(0x087e,clif->pUseSkillToId,2,4,6); + packet(0x0883,clif->pSolveCharName,2); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x088a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x088b,clif->pPartyInvite2,2); + packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0890,clif->pUseSkillToPos,2,4,6,8); + packet(0x0896,clif->pDull/*,XXX*/); + packet(0x089b,clif->pMoveToKafra,2,4); + packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a8,clif->pPartyBookingRegisterReq,2,4); + packet(0x091c,clif->pReqCloseBuyingStore,0); + packet(0x0925,clif->pMoveFromKafra,2,4); + packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x092d,clif->pSearchStoreInfoNextPage,0); + packet(0x0942,clif->pTakeItem,2); + packet(0x094e,clif->pGetCharNameRequest,2); + packet(0x095f,clif->pReqClickBuyingStore,2); + packet(0x0962,clif->pHomMenu,2,4); + packet(0x0969,clif->pWalkToXY,2); #endif // 2017-02-22aRagexe #if PACKETVER == 20170222 - packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0866,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0894,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a3,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pHomMenu,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085f,clif->pFriendsListAdd,2); + packet(0x0866,clif->pDropItem,2,4); + packet(0x0870,clif->pPartyBookingRegisterReq,2,4); + packet(0x0871,clif->pDull/*,XXX*/); + packet(0x0877,clif->pDull/*,XXX*/); + packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0894,clif->pTakeItem,2); + packet(0x08a3,clif->pChangeDir,2,4); + packet(0x08a8,clif->pPartyInvite2,2); + packet(0x0937,clif->pItemListWindowSelected,2,4,8); + packet(0x0939,clif->pWantToConnection,2,6,10,14,18); + packet(0x0943,clif->pStoragePassword,0); + packet(0x095d,clif->pMoveToKafra,2,4); + packet(0x0962,clif->pMoveFromKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-02-28aRagexe, 2017-02-28bRagexe #if PACKETVER == 20170228 - packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0876,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0883,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0893,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a7,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0937,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0947,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0952,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x022d,clif->pDropItem,2,4); + packet(0x0360,clif->pActionRequest,2,6); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0873,clif->pItemListWindowSelected,2,4,8); + packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0876,clif->pReqCloseBuyingStore,0); + packet(0x0883,clif->pSearchStoreInfoNextPage,0); + packet(0x0884,clif->pWalkToXY,2); + packet(0x0889,clif->pChangeDir,2,4); + packet(0x0893,clif->pGetCharNameRequest,2); + packet(0x089e,clif->pMoveToKafra,2,4); + packet(0x08a0,clif->pFriendsListAdd,2); + packet(0x08a2,clif->pStoragePassword,0); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x08a7,clif->pReqClickBuyingStore,2); + packet(0x091f,clif->pUseSkillToId,2,4,6); + packet(0x092a,clif->pTakeItem,2); + packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0937,clif->pTickSend,2); + packet(0x093e,clif->pDull/*,XXX*/); + packet(0x0944,clif->pMoveFromKafra,2,4); + packet(0x0947,clif->pSolveCharName,2); + packet(0x0948,clif->pPartyInvite2,2); + packet(0x0952,clif->pUseSkillToPos,2,4,6,8); + packet(0x0955,clif->pPartyBookingRegisterReq,2,4); #endif // 2017-03-08aRagexe #if PACKETVER == 20170308 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087d,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-03-15cRagexe #if PACKETVER == 20170315 - packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x088b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0922,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x094e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0950,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0952,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); + packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0360,clif->pChangeDir,2,4); + packet(0x0366,clif->pTakeItem,2); + packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x07ec,clif->pTickSend,2); + packet(0x085c,clif->pDull/*,XXX*/); + packet(0x0863,clif->pHomMenu,2,4); + packet(0x086a,clif->pMoveFromKafra,2,4); + packet(0x0872,clif->pFriendsListAdd,2); + packet(0x087b,clif->pPartyInvite2,2); + packet(0x0884,clif->pActionRequest,2,6); + packet(0x088b,clif->pPartyBookingRegisterReq,2,4); + packet(0x088d,clif->pDull/*,XXX*/); + packet(0x088f,clif->pWalkToXY,2); + packet(0x0892,clif->pUseSkillToId,2,4,6); + packet(0x089c,clif->pReqCloseBuyingStore,0); + packet(0x08aa,clif->pMoveToKafra,2,4); + packet(0x091a,clif->pDropItem,2,4); + packet(0x091b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0920,clif->pSolveCharName,2); + packet(0x0922,clif->pItemListWindowSelected,2,4,8); + packet(0x0944,clif->pGetCharNameRequest,2); + packet(0x094a,clif->pReqClickBuyingStore,2); + packet(0x094e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0950,clif->pSearchStoreInfoNextPage,0); + packet(0x0952,clif->pStoragePassword,0); #endif // 2017-03-22aRagexe, 2017-03-22bRagexe #if PACKETVER == 20170322 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x091a,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-03-29bRagexe, 2017-03-29cRagexe #if PACKETVER == 20170329 - packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0363,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0888,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a8,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0917,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0929,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pPartyInvite2,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0363,clif->pMoveToKafra,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pStoragePassword,0); + packet(0x087a,clif->pPartyBookingRegisterReq,2,4); + packet(0x0888,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a8,clif->pDropItem,2,4); + packet(0x0917,clif->pDull/*,XXX*/); + packet(0x0926,clif->pChangeDir,2,4); + packet(0x0929,clif->pTakeItem,2); + packet(0x092e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0937,clif->pItemListWindowSelected,2,4,8); + packet(0x0939,clif->pFriendsListAdd,2); + packet(0x0949,clif->pMoveFromKafra,2,4); + packet(0x095f,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-04-05bRagexe, 2017-04-05cRagexe #if PACKETVER == 20170405 - packet(0x022d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0860,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pSearchStoreInfoNextPage,0); + packet(0x0281,clif->pPartyBookingRegisterReq,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pActionRequest,2,6); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pTakeItem,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pHomMenu,2,4); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085f,clif->pMoveToKafra,2,4); + packet(0x0860,clif->pItemListWindowSelected,2,4,8); + packet(0x0864,clif->pPartyInvite2,2); + packet(0x0865,clif->pChangeDir,2,4); + packet(0x086f,clif->pFriendsListAdd,2); + packet(0x0893,clif->pMoveFromKafra,2,4); + packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); + packet(0x094c,clif->pStoragePassword,0); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x0964,clif->pDropItem,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-04-12aRagexe #if PACKETVER == 20170412 - packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0365,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0893,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0945,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0949,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x094f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x095c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x023b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0365,clif->pReqClickBuyingStore,2); + packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0869,clif->pPartyBookingRegisterReq,2,4); + packet(0x086d,clif->pMoveFromKafra,2,4); + packet(0x0878,clif->pWalkToXY,2); + packet(0x0879,clif->pDull/*,XXX*/); + packet(0x087b,clif->pUseSkillToId,2,4,6); + packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0890,clif->pItemListWindowSelected,2,4,8); + packet(0x0893,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0898,clif->pSolveCharName,2); + packet(0x089a,clif->pHomMenu,2,4); + packet(0x089c,clif->pDropItem,2,4); + packet(0x08a1,clif->pActionRequest,2,6); + packet(0x091a,clif->pChangeDir,2,4); + packet(0x091e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0929,clif->pTickSend,2); + packet(0x092e,clif->pDull/*,XXX*/); + packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0942,clif->pFriendsListAdd,2); + packet(0x0945,clif->pMoveToKafra,2,4); + packet(0x0949,clif->pSearchStoreInfoNextPage,0); + packet(0x094f,clif->pPartyInvite2,2); + packet(0x0952,clif->pReqCloseBuyingStore,0); + packet(0x0959,clif->pTakeItem,2); + packet(0x095b,clif->pGetCharNameRequest,2); + packet(0x095c,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095d,clif->pStoragePassword,0); #endif // 2017-04-19aRagexe #if PACKETVER == 20170419 - packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0868,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0872,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0881,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0898,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0920,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0922,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0931,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0942,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x095c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0965,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 + packet(0x0811,clif->pChangeDir,2,4); + packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0838,clif->pGetCharNameRequest,2); + packet(0x085a,clif->pActionRequest,2,6); + packet(0x085e,clif->pWalkToXY,2); + packet(0x0862,clif->pPartyInvite2,2); + packet(0x0868,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086a,clif->pPartyBookingRegisterReq,2,4); + packet(0x0872,clif->pDull/*,XXX*/); + packet(0x0881,clif->pStoragePassword,0); + packet(0x088d,clif->pItemListWindowSelected,2,4,8); + packet(0x088f,clif->pHomMenu,2,4); + packet(0x0897,clif->pDropItem,2,4); + packet(0x0898,clif->pTickSend,2); + packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08aa,clif->pMoveToKafra,2,4); + packet(0x091b,clif->pSolveCharName,2); + packet(0x0920,clif->pUseSkillToId,2,4,6); + packet(0x0922,clif->pWantToConnection,2,6,10,14,18); + packet(0x0930,clif->pMoveFromKafra,2,4); + packet(0x0931,clif->pReqCloseBuyingStore,0); + packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093a,clif->pFriendsListAdd,2); + packet(0x093f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0942,clif->pSearchStoreInfoNextPage,0); + packet(0x095c,clif->pTakeItem,2); + packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0963,clif->pDull/*,XXX*/); + packet(0x0965,clif->pReqClickBuyingStore,2); #endif // 2017-04-26bRagexe #if PACKETVER == 20170426 - packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0887,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0963,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pStoragePassword,0); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0866,clif->pItemListWindowSelected,2,4,8); + packet(0x086f,clif->pDull/*,XXX*/); + packet(0x087a,clif->pPartyBookingRegisterReq,2,4); + packet(0x0887,clif->pSolveCharName,2); + packet(0x0899,clif->pMoveFromKafra,2,4); + packet(0x089c,clif->pHomMenu,2,4); + packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a4,clif->pTakeItem,2); + packet(0x091f,clif->pDull/*,XXX*/); + packet(0x0927,clif->pChangeDir,2,4); + packet(0x0940,clif->pDropItem,2,4); + packet(0x0958,clif->pFriendsListAdd,2); + packet(0x0963,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-05-02aRagexe, 2017-05-02bRagexe #if PACKETVER == 20170502 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0894,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0875,clif->pStoragePassword,0); + packet(0x0894,clif->pChangeDir,2,4); + packet(0x089c,clif->pWantToConnection,2,6,10,14,18); + packet(0x093c,clif->pFriendsListAdd,2); + packet(0x0950,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-05-17aRagexe #if PACKETVER == 20170517 - packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0367,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0815,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0868,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0894,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0896,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a2,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a8,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x093b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x0364,clif->pDull/*,XXX*/); + packet(0x0367,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x0815,clif->pUseSkillToId,2,4,6); + packet(0x0817,clif->pUseSkillToPos,2,4,6,8); + packet(0x0868,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0875,clif->pSearchStoreInfoNextPage,0); + packet(0x087b,clif->pSolveCharName,2); + packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088c,clif->pMoveFromKafra,2,4); + packet(0x088d,clif->pChangeDir,2,4); + packet(0x0894,clif->pGetCharNameRequest,2); + packet(0x0896,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0899,clif->pPartyInvite2,2); + packet(0x089e,clif->pDull/*,XXX*/); + packet(0x089f,clif->pReqCloseBuyingStore,0); + packet(0x08a2,clif->pTickSend,2); + packet(0x08a8,clif->pWalkToXY,2); + packet(0x08aa,clif->pMoveToKafra,2,4); + packet(0x091b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0923,clif->pWantToConnection,2,6,10,14,18); + packet(0x093b,clif->pDropItem,2,4); + packet(0x0945,clif->pItemListWindowSelected,2,4,8); + packet(0x0946,clif->pReqClickBuyingStore,2); + packet(0x0947,clif->pStoragePassword,0); + packet(0x0958,clif->pHomMenu,2,4); + packet(0x0960,clif->pFriendsListAdd,2); + packet(0x0964,clif->pTakeItem,2); #endif // 2017-05-24aRagexe, 2017-05-24bRagexe #if PACKETVER == 20170524 - packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0368,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0868,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0874,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0894,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a1,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0923,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0967,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0968,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 + packet(0x0364,clif->pPartyInvite2,2); + packet(0x0368,clif->pStoragePassword,0); + packet(0x0802,clif->pDropItem,2,4); + packet(0x085e,clif->pActionRequest,2,6); + packet(0x085f,clif->pReqClickBuyingStore,2); + packet(0x0860,clif->pTickSend,2); + packet(0x0864,clif->pTakeItem,2); + packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0868,clif->pMoveToKafra,2,4); + packet(0x086d,clif->pHomMenu,2,4); + packet(0x0873,clif->pWantToConnection,2,6,10,14,18); + packet(0x0874,clif->pSearchStoreInfoNextPage,0); + packet(0x087d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088d,clif->pUseSkillToId,2,4,6); + packet(0x0894,clif->pMoveFromKafra,2,4); + packet(0x089c,clif->pWalkToXY,2); + packet(0x08a1,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x0923,clif->pItemListWindowSelected,2,4,8); + packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0934,clif->pChangeDir,2,4); + packet(0x0946,clif->pUseSkillToPos,2,4,6,8); + packet(0x0958,clif->pDull/*,XXX*/); + packet(0x095a,clif->pGetCharNameRequest,2); + packet(0x095b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0964,clif->pReqCloseBuyingStore,0); + packet(0x0967,clif->pFriendsListAdd,2); + packet(0x0968,clif->pSolveCharName,2); #endif // 2017-05-31aRagexe #if PACKETVER == 20170531 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x085f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0875,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0894,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0933,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0945,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0963,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0968,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 + packet(0x0361,clif->pChangeDir,2,4); + packet(0x0369,clif->pUseSkillToId,2,4,6); + packet(0x07e4,clif->pWalkToXY,2); + packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0819,clif->pTickSend,2); + packet(0x085b,clif->pDull/*,XXX*/); + packet(0x085f,clif->pSolveCharName,2); + packet(0x0861,clif->pFriendsListAdd,2); + packet(0x0868,clif->pDull/*,XXX*/); + packet(0x0873,clif->pReqCloseBuyingStore,0); + packet(0x0875,clif->pUseSkillToPos,2,4,6,8); + packet(0x0878,clif->pPartyInvite2,2); + packet(0x087b,clif->pActionRequest,2,6); + packet(0x0885,clif->pItemListWindowSelected,2,4,8); + packet(0x088b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x088d,clif->pDropItem,2,4); + packet(0x0894,clif->pWantToConnection,2,6,10,14,18); + packet(0x089a,clif->pStoragePassword,0); + packet(0x089c,clif->pHomMenu,2,4); + packet(0x08a2,clif->pSearchStoreInfoNextPage,0); + packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08ad,clif->pMoveToKafra,2,4); + packet(0x092d,clif->pGetCharNameRequest,2); + packet(0x0933,clif->pMoveFromKafra,2,4); + packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0940,clif->pPartyBookingRegisterReq,2,4); + packet(0x0945,clif->pReqClickBuyingStore,2); + packet(0x0963,clif->pTakeItem,2); + packet(0x0968,clif->pSearchStoreInfo,2,4,5,9,13,14,15); #endif // 2017-06-07cRagexe #if PACKETVER == 20170607 - packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x085e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0862,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0864,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0885,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x088a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08ab,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0925,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0927,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0934,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0938,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0944,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0949,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x0361,clif->pItemListWindowSelected,2,4,8); + packet(0x0364,clif->pStoragePassword,0); + packet(0x07e4,clif->pTickSend,2); + packet(0x085a,clif->pChangeDir,2,4); + packet(0x085e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0862,clif->pGetCharNameRequest,2); + packet(0x0863,clif->pReqClickBuyingStore,2); + packet(0x0864,clif->pDropItem,2,4); + packet(0x0871,clif->pWantToConnection,2,6,10,14,18); + packet(0x0873,clif->pDull/*,XXX*/); + packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0885,clif->pFriendsListAdd,2); + packet(0x088a,clif->pMoveFromKafra,2,4); + packet(0x0897,clif->pTakeItem,2); + packet(0x089d,clif->pMoveToKafra,2,4); + packet(0x08a9,clif->pUseSkillToId,2,4,6); + packet(0x08ab,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0917,clif->pSearchStoreInfoNextPage,0); + packet(0x0918,clif->pPartyBookingRegisterReq,2,4); + packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0925,clif->pPartyInvite2,2); + packet(0x0927,clif->pUseSkillToPos,2,4,6,8); + packet(0x0931,clif->pDull/*,XXX*/); + packet(0x0934,clif->pWalkToXY,2); + packet(0x0938,clif->pActionRequest,2,6); + packet(0x093d,clif->pReqCloseBuyingStore,0); + packet(0x0942,clif->pHomMenu,2,4); + packet(0x0944,clif->pSolveCharName,2); + packet(0x0949,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2017-06-14bRagexe #if PACKETVER == 20170614 - packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0866,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0963,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x023b,clif->pMoveFromKafra,2,4); + packet(0x0361,clif->pWalkToXY,2); + packet(0x0364,clif->pHomMenu,2,4); + packet(0x0367,clif->pDropItem,2,4); + packet(0x0437,clif->pStoragePassword,0); + packet(0x0838,clif->pUseSkillToPos,2,4,6,8); + packet(0x083c,clif->pActionRequest,2,6); + packet(0x0860,clif->pReqClickBuyingStore,2); + packet(0x0865,clif->pDull/*,XXX*/); + packet(0x0866,clif->pTickSend,2); + packet(0x0867,clif->pFriendsListAdd,2); + packet(0x086b,clif->pReqCloseBuyingStore,0); + packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0877,clif->pPartyBookingRegisterReq,2,4); + packet(0x0879,clif->pMoveToKafra,2,4); + packet(0x087d,clif->pSolveCharName,2); + packet(0x087e,clif->pChangeDir,2,4); + packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0899,clif->pPartyInvite2,2); + packet(0x089d,clif->pItemListWindowSelected,2,4,8); + packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08ad,clif->pTakeItem,2); + packet(0x091b,clif->pUseSkillToId,2,4,6); + packet(0x0928,clif->pSearchStoreInfoNextPage,0); + packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0936,clif->pGetCharNameRequest,2); + packet(0x0944,clif->pWantToConnection,2,6,10,14,18); + packet(0x0957,clif->pDull/*,XXX*/); + packet(0x0963,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2017-06-21bRagexe #if PACKETVER == 20170621 - packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0366,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0885,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pTakeItem,2); + packet(0x0365,clif->pItemListWindowSelected,2,4,8); + packet(0x0366,clif->pPartyBookingRegisterReq,2,4); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pFriendsListAdd,2); + packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pChangeDir,2,4); + packet(0x087d,clif->pDropItem,2,4); + packet(0x0885,clif->pPartyInvite2,2); + packet(0x0889,clif->pMoveFromKafra,2,4); + packet(0x08a8,clif->pHomMenu,2,4); + packet(0x0956,clif->pDull/*,XXX*/); + packet(0x0957,clif->pStoragePassword,0); + packet(0x095b,clif->pDull/*,XXX*/); + packet(0x095c,clif->pMoveToKafra,2,4); + packet(0x0961,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-06-28bRagexe #if PACKETVER == 20170628 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0863,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0863,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-07-05aRagexe #if PACKETVER == 20170705 - packet(0x0202,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0886,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0930,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0932,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0934,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pStoragePassword,0); + packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0879,clif->pMoveToKafra,2,4); + packet(0x0886,clif->pFriendsListAdd,2); + packet(0x088d,clif->pDull/*,XXX*/); + packet(0x088e,clif->pPartyInvite2,2); + packet(0x089a,clif->pWantToConnection,2,6,10,14,18); + packet(0x089d,clif->pDropItem,2,4); + packet(0x091a,clif->pChangeDir,2,4); + packet(0x092f,clif->pDull/*,XXX*/); + packet(0x0930,clif->pItemListWindowSelected,2,4,8); + packet(0x0932,clif->pTakeItem,2); + packet(0x0934,clif->pMoveFromKafra,2,4); + packet(0x094c,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-07-12bRagexe #if PACKETVER == 20170712 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0944,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-07-19aRagexe #if PACKETVER == 20170719 - packet(0x022d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0368,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0881,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0898,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x092c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x093d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x022d,clif->pActionRequest,2,6); + packet(0x0367,clif->pReqCloseBuyingStore,0); + packet(0x0368,clif->pDull/*,XXX*/); + packet(0x0369,clif->pHomMenu,2,4); + packet(0x07e4,clif->pGetCharNameRequest,2); + packet(0x085a,clif->pTickSend,2); + packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0863,clif->pReqClickBuyingStore,2); + packet(0x086e,clif->pPartyInvite2,2); + packet(0x087d,clif->pTakeItem,2); + packet(0x0881,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0885,clif->pItemListWindowSelected,2,4,8); + packet(0x0891,clif->pUseSkillToPos,2,4,6,8); + packet(0x0898,clif->pUseSkillToId,2,4,6); + packet(0x089a,clif->pStoragePassword,0); + packet(0x089d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a6,clif->pMoveFromKafra,2,4); + packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); + packet(0x091b,clif->pDropItem,2,4); + packet(0x091f,clif->pSolveCharName,2); + packet(0x092c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092e,clif->pSearchStoreInfoNextPage,0); + packet(0x092f,clif->pPartyBookingRegisterReq,2,4); + packet(0x093d,clif->pWalkToXY,2); + packet(0x093e,clif->pDull/*,XXX*/); + packet(0x0944,clif->pChangeDir,2,4); + packet(0x0946,clif->pFriendsListAdd,2); + packet(0x0966,clif->pMoveToKafra,2,4); #endif // 2017-07-26aRagexe #if PACKETVER == 20170726 - packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0873,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a3,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a7,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08aa,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0923,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0954,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0963,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 + packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0366,clif->pWantToConnection,2,6,10,14,18); + packet(0x0369,clif->pUseSkillToId,2,4,6); + packet(0x0438,clif->pPartyInvite2,2); + packet(0x0838,clif->pReqCloseBuyingStore,0); + packet(0x0873,clif->pReqClickBuyingStore,2); + packet(0x0874,clif->pItemListWindowSelected,2,4,8); + packet(0x0878,clif->pActionRequest,2,6); + packet(0x0881,clif->pDull/*,XXX*/); + packet(0x0888,clif->pSearchStoreInfoNextPage,0); + packet(0x088e,clif->pWalkToXY,2); + packet(0x08a3,clif->pDull/*,XXX*/); + packet(0x08a7,clif->pStoragePassword,0); + packet(0x08aa,clif->pGetCharNameRequest,2); + packet(0x08ab,clif->pTakeItem,2); + packet(0x08ac,clif->pTickSend,2); + packet(0x091d,clif->pFriendsListAdd,2); + packet(0x091e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091f,clif->pHomMenu,2,4); + packet(0x0921,clif->pSolveCharName,2); + packet(0x0923,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0943,clif->pDropItem,2,4); + packet(0x094f,clif->pMoveFromKafra,2,4); + packet(0x0950,clif->pUseSkillToPos,2,4,6,8); + packet(0x0952,clif->pChangeDir,2,4); + packet(0x0954,clif->pPartyBookingRegisterReq,2,4); + packet(0x095a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0963,clif->pSearchStoreInfo,2,4,5,9,13,14,15); #endif // 2017-08-01aRagexe, 2017-08-01bRagexe #if PACKETVER == 20170801 - packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pDropItem,2,4); + packet(0x0281,clif->pChangeDir,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pItemListWindowSelected,2,4,8); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087d,clif->pStoragePassword,0); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x094f,clif->pFriendsListAdd,2); + packet(0x095a,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-08-09cRagexe #if PACKETVER == 20170809 - packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0281,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0366,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0876,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0895,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0899,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a3,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0918,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x022d,clif->pDull/*,XXX*/); + packet(0x0281,clif->pMoveFromKafra,2,4); + packet(0x0364,clif->pPartyInvite2,2); + packet(0x0366,clif->pFriendsListAdd,2); + packet(0x0367,clif->pReqCloseBuyingStore,0); + packet(0x07e4,clif->pSearchStoreInfoNextPage,0); + packet(0x0802,clif->pItemListWindowSelected,2,4,8); + packet(0x0835,clif->pDropItem,2,4); + packet(0x0868,clif->pActionRequest,2,6); + packet(0x086e,clif->pChangeDir,2,4); + packet(0x086f,clif->pHomMenu,2,4); + packet(0x0876,clif->pUseSkillToPos,2,4,6,8); + packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088c,clif->pUseSkillToId,2,4,6); + packet(0x0890,clif->pStoragePassword,0); + packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0895,clif->pWalkToXY,2); + packet(0x0899,clif->pDull/*,XXX*/); + packet(0x08a3,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); + packet(0x0918,clif->pTakeItem,2); + packet(0x0921,clif->pMoveToKafra,2,4); + packet(0x092a,clif->pGetCharNameRequest,2); + packet(0x092b,clif->pTickSend,2); + packet(0x0931,clif->pSolveCharName,2); + packet(0x0939,clif->pReqClickBuyingStore,2); + packet(0x093b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0940,clif->pPartyBookingRegisterReq,2,4); #endif // 2017-08-16cRagexe, 2017-08-16dRagexe #if PACKETVER == 20170816 - packet(0x022d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x035f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0862,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0864,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a9,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x091c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0921,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x093a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0941,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0950,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0960,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 + packet(0x022d,clif->pGetCharNameRequest,2); + packet(0x035f,clif->pSearchStoreInfoNextPage,0); + packet(0x0361,clif->pItemListWindowSelected,2,4,8); + packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0438,clif->pActionRequest,2,6); + packet(0x085a,clif->pSolveCharName,2); + packet(0x0862,clif->pUseSkillToPos,2,4,6,8); + packet(0x0864,clif->pReqCloseBuyingStore,0); + packet(0x087e,clif->pTakeItem,2); + packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0882,clif->pStoragePassword,0); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x0888,clif->pPartyBookingRegisterReq,2,4); + packet(0x0889,clif->pTickSend,2); + packet(0x08a3,clif->pFriendsListAdd,2); + packet(0x08a7,clif->pDull/*,XXX*/); + packet(0x08a9,clif->pWalkToXY,2); + packet(0x08ac,clif->pHomMenu,2,4); + packet(0x091c,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0921,clif->pReqClickBuyingStore,2); + packet(0x0925,clif->pMoveFromKafra,2,4); + packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x093a,clif->pPartyInvite2,2); + packet(0x093d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0940,clif->pUseSkillToId,2,4,6); + packet(0x0941,clif->pDropItem,2,4); + packet(0x0950,clif->pChangeDir,2,4); + packet(0x0959,clif->pMoveToKafra,2,4); + packet(0x0960,clif->pSearchStoreInfo,2,4,5,9,13,14,15); #endif // 2017-08-23aRagexe #if PACKETVER == 20170823 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08ac,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pPartyInvite2,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pChangeDir,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086c,clif->pWantToConnection,2,6,10,14,18); + packet(0x086d,clif->pStoragePassword,0); + packet(0x08ac,clif->pFriendsListAdd,2); + packet(0x095b,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-08-30aRagexe, 2017-08-30bRagexe #if PACKETVER == 20170830 - packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0860,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0921,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0942,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0943,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0947,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0951,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x0281,clif->pChangeDir,2,4); + packet(0x02c4,clif->pTakeItem,2); + packet(0x0363,clif->pPartyBookingRegisterReq,2,4); + packet(0x0364,clif->pDull/*,XXX*/); + packet(0x0860,clif->pReqCloseBuyingStore,0); + packet(0x0865,clif->pWalkToXY,2); + packet(0x086a,clif->pPartyInvite2,2); + packet(0x0875,clif->pDull/*,XXX*/); + packet(0x0884,clif->pWantToConnection,2,6,10,14,18); + packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0888,clif->pUseSkillToId,2,4,6); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0899,clif->pDropItem,2,4); + packet(0x089a,clif->pItemListWindowSelected,2,4,8); + packet(0x089e,clif->pMoveToKafra,2,4); + packet(0x08a2,clif->pStoragePassword,0); + packet(0x08a8,clif->pMoveFromKafra,2,4); + packet(0x091e,clif->pTickSend,2); + packet(0x0921,clif->pHomMenu,2,4); + packet(0x0925,clif->pReqClickBuyingStore,2); + packet(0x092e,clif->pGetCharNameRequest,2); + packet(0x0939,clif->pFriendsListAdd,2); + packet(0x093e,clif->pActionRequest,2,6); + packet(0x0940,clif->pSolveCharName,2); + packet(0x0942,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0943,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0947,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0951,clif->pSearchStoreInfoNextPage,0); + packet(0x0959,clif->pUseSkillToPos,2,4,6,8); #endif // 2017-09-06cRagexe #if PACKETVER == 20170906 - packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0953,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pDull/*,XXX*/); + packet(0x0281,clif->pStoragePassword,0); + packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pPartyInvite2,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pChangeDir,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0860,clif->pDropItem,2,4); + packet(0x0866,clif->pItemListWindowSelected,2,4,8); + packet(0x086c,clif->pDull/*,XXX*/); + packet(0x087b,clif->pMoveToKafra,2,4); + packet(0x08a2,clif->pMoveFromKafra,2,4); + packet(0x08a3,clif->pFriendsListAdd,2); + packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); + packet(0x091a,clif->pTakeItem,2); + packet(0x091e,clif->pHomMenu,2,4); + packet(0x0953,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-09-13cRagexe #if PACKETVER == 20170913 - packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x035f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x088c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08aa,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08ab,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0923,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0927,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 + packet(0x0281,clif->pGetCharNameRequest,2); + packet(0x035f,clif->pFriendsListAdd,2); + packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x07e4,clif->pMoveFromKafra,2,4); + packet(0x0817,clif->pActionRequest,2,6); + packet(0x0835,clif->pWantToConnection,2,6,10,14,18); + packet(0x085a,clif->pReqCloseBuyingStore,0); + packet(0x0860,clif->pTakeItem,2); + packet(0x0865,clif->pPartyInvite2,2); + packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x088c,clif->pHomMenu,2,4); + packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0891,clif->pMoveToKafra,2,4); + packet(0x0892,clif->pStoragePassword,0); + packet(0x08a6,clif->pReqClickBuyingStore,2); + packet(0x08a7,clif->pDull/*,XXX*/); + packet(0x08aa,clif->pUseSkillToId,2,4,6); + packet(0x08ab,clif->pPartyBookingRegisterReq,2,4); + packet(0x08ac,clif->pChangeDir,2,4); + packet(0x08ad,clif->pItemListWindowSelected,2,4,8); + packet(0x091b,clif->pTickSend,2); + packet(0x091d,clif->pDropItem,2,4); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x0920,clif->pSearchStoreInfoNextPage,0); + packet(0x0923,clif->pWalkToXY,2); + packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0927,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095a,clif->pUseSkillToPos,2,4,6,8); + packet(0x095c,clif->pSolveCharName,2); #endif // 2017-09-20aRagexe #if PACKETVER == 20170920 - packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0436,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0862,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0874,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0889,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0919,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0939,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0945,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0961,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0966,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x096a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x0369,clif->pTakeItem,2); + packet(0x0436,clif->pItemListWindowSelected,2,4,8); + packet(0x07ec,clif->pMoveFromKafra,2,4); + packet(0x085a,clif->pWalkToXY,2); + packet(0x0861,clif->pFriendsListAdd,2); + packet(0x0862,clif->pUseSkillToId,2,4,6); + packet(0x0864,clif->pStoragePassword,0); + packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x086a,clif->pPartyInvite2,2); + packet(0x086c,clif->pDropItem,2,4); + packet(0x0874,clif->pReqCloseBuyingStore,0); + packet(0x0875,clif->pDull/*,XXX*/); + packet(0x0889,clif->pGetCharNameRequest,2); + packet(0x088e,clif->pTickSend,2); + packet(0x089b,clif->pActionRequest,2,6); + packet(0x0919,clif->pUseSkillToPos,2,4,6,8); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x0921,clif->pSolveCharName,2); + packet(0x0923,clif->pWantToConnection,2,6,10,14,18); + packet(0x0926,clif->pMoveToKafra,2,4); + packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0939,clif->pChangeDir,2,4); + packet(0x0945,clif->pPartyBookingRegisterReq,2,4); + packet(0x094c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095d,clif->pHomMenu,2,4); + packet(0x0961,clif->pReqClickBuyingStore,2); + packet(0x0966,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x096a,clif->pSearchStoreInfoNextPage,0); #endif // 2017-09-27bRagexe, 2017-09-27cRagexe, 2017-09-27dRagexe #if PACKETVER == 20170927 - packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0361,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0873,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0899,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a3,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ad,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0922,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0923,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0927,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0942,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x02c4,clif->pHomMenu,2,4); + packet(0x035f,clif->pGetCharNameRequest,2); + packet(0x0361,clif->pDull/*,XXX*/); + packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0366,clif->pWantToConnection,2,6,10,14,18); + packet(0x085c,clif->pUseSkillToId,2,4,6); + packet(0x0873,clif->pSolveCharName,2); + packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x087e,clif->pChangeDir,2,4); + packet(0x088b,clif->pSearchStoreInfoNextPage,0); + packet(0x0899,clif->pActionRequest,2,6); + packet(0x089a,clif->pStoragePassword,0); + packet(0x089b,clif->pMoveFromKafra,2,4); + packet(0x08a3,clif->pReqCloseBuyingStore,0); + packet(0x08a5,clif->pItemListWindowSelected,2,4,8); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x08ad,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x091e,clif->pReqClickBuyingStore,2); + packet(0x0922,clif->pPartyInvite2,2); + packet(0x0923,clif->pDropItem,2,4); + packet(0x0927,clif->pWalkToXY,2); + packet(0x093b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0942,clif->pPartyBookingRegisterReq,2,4); + packet(0x0945,clif->pTickSend,2); + packet(0x094b,clif->pFriendsListAdd,2); + packet(0x094d,clif->pTakeItem,2); + packet(0x0959,clif->pMoveToKafra,2,4); + packet(0x095a,clif->pUseSkillToPos,2,4,6,8); #endif // 2017-10-02cRagexe #if PACKETVER == 20171002 - packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0928,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0943,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pDropItem,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pUseSkillToPos,2,4,6,8); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pHomMenu,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0885,clif->pMoveToKafra,2,4); + packet(0x0897,clif->pChangeDir,2,4); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x089d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0928,clif->pItemListWindowSelected,2,4,8); + packet(0x092d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0934,clif->pStoragePassword,0); + packet(0x093b,clif->pMoveFromKafra,2,4); + packet(0x093d,clif->pTakeItem,2); + packet(0x093e,clif->pDull/*,XXX*/); + packet(0x0943,clif->pPartyInvite2,2); + packet(0x095f,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-10-11aRagexe, 2017-10-11bRagexe #if PACKETVER == 20171011 - packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0882,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0950,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pWalkToXY,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pStoragePassword,0); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087b,clif->pFriendsListAdd,2); + packet(0x0882,clif->pHomMenu,2,4); + packet(0x0950,clif->pWantToConnection,2,6,10,14,18); + packet(0x0954,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-10-18aRagexe #if PACKETVER == 20171018 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0938,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pWantToConnection,2,6,10,14,18); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pTakeItem,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086a,clif->pDull/*,XXX*/); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x087e,clif->pHomMenu,2,4); + packet(0x0889,clif->pMoveFromKafra,2,4); + packet(0x089a,clif->pDropItem,2,4); + packet(0x089f,clif->pPartyInvite2,2); + packet(0x08a6,clif->pChangeDir,2,4); + packet(0x0938,clif->pItemListWindowSelected,2,4,8); + packet(0x0944,clif->pStoragePassword,0); + packet(0x094a,clif->pFriendsListAdd,2); + packet(0x094f,clif->pPartyBookingRegisterReq,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-10-25bRagexe, 2017-10-25cRagexe, 2017-10-25dRagexe, 2017-10-25eRagexe #if PACKETVER == 20171025 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x08a2,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-11-01aRagexe #if PACKETVER == 20171101 - packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0860,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0876,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08ab,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08ad,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0939,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x094a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0957,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x095a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0966,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x022d,clif->pStoragePassword,0); + packet(0x0368,clif->pWantToConnection,2,6,10,14,18); + packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0438,clif->pTickSend,2); + packet(0x0835,clif->pDropItem,2,4); + packet(0x085b,clif->pHomMenu,2,4); + packet(0x0860,clif->pGetCharNameRequest,2); + packet(0x086c,clif->pUseSkillToId,2,4,6); + packet(0x0872,clif->pFriendsListAdd,2); + packet(0x0876,clif->pChangeDir,2,4); + packet(0x0886,clif->pDull/*,XXX*/); + packet(0x088e,clif->pReqClickBuyingStore,2); + packet(0x0890,clif->pSearchStoreInfoNextPage,0); + packet(0x0895,clif->pDull/*,XXX*/); + packet(0x0899,clif->pPartyInvite2,2); + packet(0x089b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x089c,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a0,clif->pMoveFromKafra,2,4); + packet(0x08ab,clif->pItemListWindowSelected,2,4,8); + packet(0x08ad,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091b,clif->pMoveToKafra,2,4); + packet(0x0939,clif->pWalkToXY,2); + packet(0x094a,clif->pReqCloseBuyingStore,0); + packet(0x094d,clif->pSolveCharName,2); + packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0957,clif->pActionRequest,2,6); + packet(0x095a,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0962,clif->pTakeItem,2); + packet(0x0966,clif->pUseSkillToPos,2,4,6,8); #endif // 2017-11-08aRagexe #if PACKETVER == 20171108 - packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x07e4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0863,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a9,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x091f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0945,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0947,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0949,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0958,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0963,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0965,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0967,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x0202,clif->pTickSend,2); + packet(0x0361,clif->pSearchStoreInfoNextPage,0); + packet(0x07e4,clif->pSolveCharName,2); + packet(0x0815,clif->pStoragePassword,0); + packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0863,clif->pWalkToXY,2); + packet(0x0878,clif->pFriendsListAdd,2); + packet(0x087e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0884,clif->pItemListWindowSelected,2,4,8); + packet(0x0896,clif->pDull/*,XXX*/); + packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a2,clif->pUseSkillToId,2,4,6); + packet(0x08a9,clif->pHomMenu,2,4); + packet(0x08ad,clif->pGetCharNameRequest,2); + packet(0x091d,clif->pReqCloseBuyingStore,0); + packet(0x091f,clif->pChangeDir,2,4); + packet(0x0940,clif->pReqClickBuyingStore,2); + packet(0x0941,clif->pMoveToKafra,2,4); + packet(0x0945,clif->pTakeItem,2); + packet(0x0947,clif->pDull/*,XXX*/); + packet(0x0949,clif->pWantToConnection,2,6,10,14,18); + packet(0x094e,clif->pPartyInvite2,2); + packet(0x0958,clif->pPartyBookingRegisterReq,2,4); + packet(0x095a,clif->pMoveFromKafra,2,4); + packet(0x0963,clif->pActionRequest,2,6); + packet(0x0965,clif->pDropItem,2,4); + packet(0x0967,clif->pUseSkillToPos,2,4,6,8); #endif // 2017-11-15aRagexe #if PACKETVER == 20171115 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x086f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0883,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0890,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pWantToConnection,2,6,10,14,18); + packet(0x0365,clif->pDropItem,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pReqClickBuyingStore,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pFriendsListAdd,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086d,clif->pDull/*,XXX*/); + packet(0x086f,clif->pItemListWindowSelected,2,4,8); + packet(0x087e,clif->pMoveFromKafra,2,4); + packet(0x0883,clif->pDull/*,XXX*/); + packet(0x088b,clif->pMoveToKafra,2,4); + packet(0x0890,clif->pPartyBookingRegisterReq,2,4); + packet(0x0898,clif->pStoragePassword,0); + packet(0x08a4,clif->pChangeDir,2,4); + packet(0x0926,clif->pTakeItem,2); + packet(0x0958,clif->pHomMenu,2,4); + packet(0x095a,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-11-22aRagexe #if PACKETVER == 20171122 - packet(0x0281,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x02c4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0838,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x083c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x085b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0862,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0867,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0877,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0890,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0891,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0893,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a6,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a9,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x091e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0920,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0945,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0947,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0968,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x0281,clif->pSolveCharName,2); + packet(0x02c4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x035f,clif->pDull/*,XXX*/); + packet(0x0838,clif->pMoveToKafra,2,4); + packet(0x083c,clif->pHomMenu,2,4); + packet(0x085b,clif->pGetCharNameRequest,2); + packet(0x0862,clif->pItemListWindowSelected,2,4,8); + packet(0x0867,clif->pWantToConnection,2,6,10,14,18); + packet(0x0877,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x0890,clif->pTickSend,2); + packet(0x0891,clif->pTakeItem,2); + packet(0x0893,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0897,clif->pChangeDir,2,4); + packet(0x0898,clif->pDropItem,2,4); + packet(0x089a,clif->pMoveFromKafra,2,4); + packet(0x089e,clif->pActionRequest,2,6); + packet(0x08a6,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a9,clif->pReqClickBuyingStore,2); + packet(0x091e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0920,clif->pReqCloseBuyingStore,0); + packet(0x0923,clif->pPartyBookingRegisterReq,2,4); + packet(0x0934,clif->pStoragePassword,0); + packet(0x093b,clif->pUseSkillToId,2,4,6); + packet(0x0945,clif->pSearchStoreInfoNextPage,0); + packet(0x0946,clif->pFriendsListAdd,2); + packet(0x0947,clif->pWalkToXY,2); + packet(0x0962,clif->pPartyInvite2,2); + packet(0x0968,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2017-11-29aRagexe #if PACKETVER == 20171129 - packet(0x02c4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x02c4,clif->pChangeDir,2,4); + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0363,clif->pFriendsListAdd,2); + packet(0x0365,clif->pDropItem,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pPartyInvite2,2); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pTakeItem,2); + packet(0x086d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0876,clif->pDull/*,XXX*/); + packet(0x0878,clif->pStoragePassword,0); + packet(0x088a,clif->pItemListWindowSelected,2,4,8); + packet(0x089c,clif->pHomMenu,2,4); + packet(0x08a5,clif->pMoveToKafra,2,4); + packet(0x0940,clif->pTickSend,2); + packet(0x094b,clif->pDull/*,XXX*/); + packet(0x0953,clif->pMoveFromKafra,2,4); + packet(0x0966,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-12-06bRagexe, 2017-12-06cRagexe #if PACKETVER == 20171206 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x086e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a2,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0923,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pDropItem,2,4); + packet(0x086a,clif->pDull/*,XXX*/); + packet(0x086e,clif->pPartyBookingRegisterReq,2,4); + packet(0x0885,clif->pTickSend,2); + packet(0x0888,clif->pSearchStoreInfoNextPage,0); + packet(0x0897,clif->pWantToConnection,2,6,10,14,18); + packet(0x089d,clif->pStoragePassword,0); + packet(0x08a2,clif->pPartyInvite2,2); + packet(0x08a4,clif->pMoveFromKafra,2,4); + packet(0x091d,clif->pFriendsListAdd,2); + packet(0x0923,clif->pMoveToKafra,2,4); + packet(0x092e,clif->pDull/*,XXX*/); + packet(0x0936,clif->pChangeDir,2,4); + packet(0x0942,clif->pHomMenu,2,4); + packet(0x0958,clif->pItemListWindowSelected,2,4,8); + packet(0x0961,clif->pTakeItem,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-12-13bRagexe #if PACKETVER == 20171213 - packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0957,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pPartyInvite2,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pFriendsListAdd,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0860,clif->pWantToConnection,2,6,10,14,18); + packet(0x0881,clif->pDull/*,XXX*/); + packet(0x0890,clif->pStoragePassword,0); + packet(0x091a,clif->pChangeDir,2,4); + packet(0x0957,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-12-20aRagexe #if PACKETVER == 20171220 - packet(0x0281,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0437,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0873,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0882,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0924,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0929,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0941,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0957,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0964,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 + packet(0x0281,clif->pWantToConnection,2,6,10,14,18); + packet(0x0366,clif->pMoveFromKafra,2,4); + packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0436,clif->pSearchStoreInfoNextPage,0); + packet(0x0437,clif->pPartyBookingRegisterReq,2,4); + packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0872,clif->pUseSkillToId,2,4,6); + packet(0x0873,clif->pGetCharNameRequest,2); + packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0882,clif->pTickSend,2); + packet(0x0885,clif->pItemListWindowSelected,2,4,8); + packet(0x088c,clif->pUseSkillToPos,2,4,6,8); + packet(0x0899,clif->pStoragePassword,0); + packet(0x089e,clif->pWalkToXY,2); + packet(0x08a7,clif->pReqCloseBuyingStore,0); + packet(0x091b,clif->pTakeItem,2); + packet(0x091e,clif->pSolveCharName,2); + packet(0x0924,clif->pMoveToKafra,2,4); + packet(0x0929,clif->pDropItem,2,4); + packet(0x0933,clif->pChangeDir,2,4); + packet(0x093e,clif->pActionRequest,2,6); + packet(0x0941,clif->pReqClickBuyingStore,2); + packet(0x0946,clif->pDull/*,XXX*/); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0951,clif->pHomMenu,2,4); + packet(0x0957,clif->pFriendsListAdd,2); + packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0964,clif->pPartyInvite2,2); #endif // 2017-12-27aRagexe #if PACKETVER == 20171227 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a5,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pActionRequest,2,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pChangeDir,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pGetCharNameRequest,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087d,clif->pStoragePassword,0); + packet(0x0888,clif->pMoveFromKafra,2,4); + packet(0x088a,clif->pDull/*,XXX*/); + packet(0x088d,clif->pTakeItem,2); + packet(0x08a0,clif->pMoveToKafra,2,4); + packet(0x08a5,clif->pHomMenu,2,4); + packet(0x092c,clif->pWantToConnection,2,6,10,14,18); + packet(0x092e,clif->pDull/*,XXX*/); + packet(0x0938,clif->pPartyInvite2,2); + packet(0x0945,clif->pItemListWindowSelected,2,4,8); + packet(0x0946,clif->pFriendsListAdd,2); + packet(0x0969,clif->pDropItem,2,4); + packet(0x096a,clif->pPartyBookingRegisterReq,2,4); #endif // 2018-01-03aRagexe, 2018-01-03bRagexe #if PACKETVER == 20180103 - packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0363,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0876,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0879,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a9,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ab,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0922,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x092c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0938,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0941,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x095d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x02c4,clif->pMoveToKafra,2,4); + packet(0x0363,clif->pPartyInvite2,2); + packet(0x0811,clif->pWantToConnection,2,6,10,14,18); + packet(0x0865,clif->pDull/*,XXX*/); + packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0872,clif->pReqClickBuyingStore,2); + packet(0x0876,clif->pTickSend,2); + packet(0x0879,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088e,clif->pReqCloseBuyingStore,0); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x089f,clif->pSolveCharName,2); + packet(0x08a9,clif->pChangeDir,2,4); + packet(0x08ab,clif->pGetCharNameRequest,2); + packet(0x08ac,clif->pItemListWindowSelected,2,4,8); + packet(0x091d,clif->pActionRequest,2,6); + packet(0x0922,clif->pSearchStoreInfoNextPage,0); + packet(0x0926,clif->pDull/*,XXX*/); + packet(0x0927,clif->pPartyBookingRegisterReq,2,4); + packet(0x092c,clif->pMoveFromKafra,2,4); + packet(0x0935,clif->pTakeItem,2); + packet(0x0938,clif->pUseSkillToId,2,4,6); + packet(0x0941,clif->pWalkToXY,2); + packet(0x0946,clif->pStoragePassword,0); + packet(0x0948,clif->pHomMenu,2,4); + packet(0x094e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x095d,clif->pUseSkillToPos,2,4,6,8); + packet(0x095f,clif->pDropItem,2,4); + packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2018-01-17aRagexe #if PACKETVER == 20180117 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0875,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2018-01-24bRagexe, 2018-01-31Ragexe #if PACKETVER == 20180124 || \ PACKETVER == 20180131 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0890,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0958,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pMoveToKafra,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pDropItem,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085f,clif->pStoragePassword,0); + packet(0x0868,clif->pDull/*,XXX*/); + packet(0x086a,clif->pPartyBookingRegisterReq,2,4); + packet(0x086f,clif->pDull/*,XXX*/); + packet(0x087a,clif->pPartyInvite2,2); + packet(0x0888,clif->pWantToConnection,2,6,10,14,18); + packet(0x0890,clif->pMoveFromKafra,2,4); + packet(0x0919,clif->pFriendsListAdd,2); + packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0946,clif->pItemListWindowSelected,2,4,8); + packet(0x094d,clif->pTakeItem,2); + packet(0x0958,clif->pChangeDir,2,4); + packet(0x0961,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2018-02-07bRagexe, 2018-02-07cRagexe #if PACKETVER == 20180207 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0881,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0360,clif->pDull/*,XXX*/); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0870,clif->pWantToConnection,2,6,10,14,18); + packet(0x0881,clif->pFriendsListAdd,2); + packet(0x092c,clif->pHomMenu,2,4); + packet(0x092e,clif->pChangeDir,2,4); + packet(0x0940,clif->pTickSend,2); + packet(0x0950,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2018-02-13aRagexe, 2018-02-13bRagexe #if PACKETVER == 20180213 - packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0817,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0874,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0882,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0892,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x089c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0917,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0922,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0933,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 + packet(0x0369,clif->pStoragePassword,0); + packet(0x0802,clif->pDropItem,2,4); + packet(0x0817,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086f,clif->pPartyInvite2,2); + packet(0x0874,clif->pTickSend,2); + packet(0x0875,clif->pMoveFromKafra,2,4); + packet(0x0878,clif->pChangeDir,2,4); + packet(0x087b,clif->pReqClickBuyingStore,2); + packet(0x0882,clif->pUseSkillToId,2,4,6); + packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0892,clif->pTakeItem,2); + packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x089c,clif->pDull/*,XXX*/); + packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a9,clif->pReqCloseBuyingStore,0); + packet(0x08ad,clif->pSolveCharName,2); + packet(0x0917,clif->pFriendsListAdd,2); + packet(0x0922,clif->pWalkToXY,2); + packet(0x0924,clif->pUseSkillToPos,2,4,6,8); + packet(0x0926,clif->pDull/*,XXX*/); + packet(0x0933,clif->pActionRequest,2,6); + packet(0x0936,clif->pSearchStoreInfoNextPage,0); + packet(0x093c,clif->pGetCharNameRequest,2); + packet(0x0943,clif->pPartyBookingRegisterReq,2,4); + packet(0x0955,clif->pMoveToKafra,2,4); + packet(0x095a,clif->pItemListWindowSelected,2,4,8); + packet(0x0962,clif->pHomMenu,2,4); #endif // 2018-02-21bRagexe #if PACKETVER == 20180221 - packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0838,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0867,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0871,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0880,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0883,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0891,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0899,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x089d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0929,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x093d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0957,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x096a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0366,clif->pDull/*,XXX*/); + packet(0x0436,clif->pFriendsListAdd,2); + packet(0x0838,clif->pChangeDir,2,4); + packet(0x0867,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086c,clif->pReqClickBuyingStore,2); + packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0871,clif->pDropItem,2,4); + packet(0x0876,clif->pHomMenu,2,4); + packet(0x0879,clif->pMoveToKafra,2,4); + packet(0x087d,clif->pWalkToXY,2); + packet(0x0880,clif->pItemListWindowSelected,2,4,8); + packet(0x0881,clif->pPartyBookingRegisterReq,2,4); + packet(0x0883,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088f,clif->pSolveCharName,2); + packet(0x0891,clif->pDull/*,XXX*/); + packet(0x0897,clif->pWantToConnection,2,6,10,14,18); + packet(0x0899,clif->pSearchStoreInfoNextPage,0); + packet(0x089d,clif->pTickSend,2); + packet(0x0917,clif->pStoragePassword,0); + packet(0x091e,clif->pMoveFromKafra,2,4); + packet(0x0929,clif->pReqCloseBuyingStore,0); + packet(0x093d,clif->pPartyInvite2,2); + packet(0x094b,clif->pUseSkillToId,2,4,6); + packet(0x094d,clif->pUseSkillToPos,2,4,6,8); + packet(0x094e,clif->pTakeItem,2); + packet(0x0957,clif->pGetCharNameRequest,2); + packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x096a,clif->pActionRequest,2,6); #endif // 2018-03-07bRagexe, 2018-03-09aRagexe #if PACKETVER == 20180307 || \ PACKETVER == 20180309 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x035f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0864,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0870,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0893,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08aa,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0920,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0937,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0939,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0941,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0954,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0969,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x0281,clif->pDull/*,XXX*/); + packet(0x035f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0437,clif->pDropItem,2,4); + packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); + packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0862,clif->pReqClickBuyingStore,2); + packet(0x0864,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086c,clif->pTickSend,2); + packet(0x0870,clif->pItemListWindowSelected,2,4,8); + packet(0x0872,clif->pPartyBookingRegisterReq,2,4); + packet(0x0877,clif->pWalkToXY,2); + packet(0x088d,clif->pMoveFromKafra,2,4); + packet(0x0893,clif->pUseSkillToId,2,4,6); + packet(0x089b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a6,clif->pSearchStoreInfoNextPage,0); + packet(0x08aa,clif->pFriendsListAdd,2); + packet(0x08ab,clif->pChangeDir,2,4); + packet(0x0917,clif->pUseSkillToPos,2,4,6,8); + packet(0x0920,clif->pMoveToKafra,2,4); + packet(0x0937,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0939,clif->pStoragePassword,0); + packet(0x093d,clif->pReqCloseBuyingStore,0); + packet(0x0941,clif->pGetCharNameRequest,2); + packet(0x0944,clif->pHomMenu,2,4); + packet(0x0948,clif->pPartyInvite2,2); + packet(0x0951,clif->pDull/*,XXX*/); + packet(0x0954,clif->pTakeItem,2); + packet(0x0957,clif->pSolveCharName,2); + packet(0x0969,clif->pActionRequest,2,6); #endif // 2018-03-14nRagexe #if PACKETVER == 20180314 - packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0366,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0436,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0863,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x087a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x088d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0894,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0921,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0927,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0933,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0935,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0945,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0956,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0959,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 -#endif - -// 2018-11-21bRagexe, 2018-11-28aRagexe, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-12aRagexe, 2018-12-12bRagexe, 2018-12-19bRagexe, 2018-12-26aRagexe, 2019-01-09aRagexe, 2019-01-16bRagexe, 2019-01-16cRagexe, 2019-01-23dRagexe, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-27aRagexe, 2019-02-28aRagexe, 2019-03-06bRagexe, 2019-03-06cRagexe, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-22aRagexe, 2019-03-27bRagexe, 2019-04-03aRagexe, 2019-04-17aRagexe, 2019-04-18aRagexe, 2019-05-08cRagexe, 2019-05-22bRagexe, 2019-05-22cRagexe, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29cRagexe, 2019-05-30aRagexe, 2019-06-05fRagexe, 2019-06-05KRagexe, 2019-06-19bRagexe, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-07-03aRagexe, 2019-07-17aRagexe, 2019-07-17dRagexe, 2019-07-24aRagexe, 2019-07-31bRagexe, 2019-08-02aRagexe, 2019-08-07aRagexe, 2019-08-21aRagexe, 2019-08-28aRagexe -#if PACKETVER == 20181121 || \ - PACKETVER == 20181128 || \ - PACKETVER == 20181205 || \ - PACKETVER == 20181212 || \ - PACKETVER == 20181219 || \ - PACKETVER == 20181226 || \ - PACKETVER == 20190109 || \ - PACKETVER == 20190116 || \ - PACKETVER == 20190123 || \ - PACKETVER == 20190213 || \ - PACKETVER == 20190227 || \ - PACKETVER == 20190228 || \ - PACKETVER == 20190306 || \ - PACKETVER == 20190313 || \ - PACKETVER == 20190320 || \ - PACKETVER == 20190322 || \ - PACKETVER == 20190327 || \ - PACKETVER == 20190403 || \ - PACKETVER == 20190417 || \ - PACKETVER == 20190418 || \ - PACKETVER == 20190508 || \ - PACKETVER == 20190522 || \ - PACKETVER == 20190523 || \ - PACKETVER == 20190529 || \ - PACKETVER == 20190530 || \ - PACKETVER == 20190605 || \ - PACKETVER == 20190619 || \ - PACKETVER == 20190703 || \ - PACKETVER == 20190717 || \ - PACKETVER == 20190724 || \ - PACKETVER == 20190731 || \ - PACKETVER == 20190802 || \ - PACKETVER == 20190807 || \ - PACKETVER == 20190821 || \ - PACKETVER >= 20190828 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14 -#endif - -// 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe, 2019-09-25aRagexe, 2019-09-25bRagexe, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-16fRagexe, 2019-10-16gRagexe, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-07aRagexe, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-20aRagexe, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04bRagexe, 2019-12-11aRagexe, 2019-12-18bRagexe, 2019-12-24aRagexe, 2019-12-24bRagexe, 2020-01-08aRagexe, 2020-01-22cRagexe, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-06aRagexe -#if PACKETVER == 20190904 || \ - PACKETVER == 20190918 || \ - PACKETVER == 20190925 || \ - PACKETVER == 20191002 || \ - PACKETVER == 20191016 || \ - PACKETVER == 20191018 || \ - PACKETVER == 20191023 || \ - PACKETVER == 20191030 || \ - PACKETVER == 20191106 || \ - PACKETVER == 20191107 || \ - PACKETVER == 20191113 || \ - PACKETVER == 20191120 || \ - PACKETVER == 20191127 || \ - PACKETVER == 20191204 || \ - PACKETVER == 20191211 || \ - PACKETVER == 20191218 || \ - PACKETVER == 20191224 || \ - PACKETVER == 20200108 || \ - PACKETVER == 20200122 || \ - PACKETVER == 20200129 || \ - PACKETVER == 20200130 || \ - PACKETVER == 20200205 || \ - PACKETVER == 20200206 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 31 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14 + packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0366,clif->pUseSkillToId,2,4,6); + packet(0x0369,clif->pHomMenu,2,4); + packet(0x0436,clif->pDropItem,2,4); + packet(0x085a,clif->pGetCharNameRequest,2); + packet(0x0862,clif->pTakeItem,2); + packet(0x0863,clif->pItemListWindowSelected,2,4,8); + packet(0x0868,clif->pDull/*,XXX*/); + packet(0x086e,clif->pMoveFromKafra,2,4); + packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x087a,clif->pWantToConnection,2,6,10,14,18); + packet(0x0888,clif->pChangeDir,2,4); + packet(0x088a,clif->pUseSkillToPos,2,4,6,8); + packet(0x088d,clif->pStoragePassword,0); + packet(0x0894,clif->pReqCloseBuyingStore,0); + packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0921,clif->pActionRequest,2,6); + packet(0x0927,clif->pSearchStoreInfoNextPage,0); + packet(0x092f,clif->pWalkToXY,2); + packet(0x0933,clif->pMoveToKafra,2,4); + packet(0x0935,clif->pPartyInvite2,2); + packet(0x0945,clif->pPartyBookingRegisterReq,2,4); + packet(0x094d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094e,clif->pFriendsListAdd,2); + packet(0x0956,clif->pDull/*,XXX*/); + packet(0x0959,clif->pReqClickBuyingStore,2); + packet(0x095f,clif->pTickSend,2); + packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0967,clif->pSolveCharName,2); #endif diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h index 757cfee55..e7ed71a3b 100644 --- a/src/map/packets_shuffle_re.h +++ b/src/map/packets_shuffle_re.h @@ -2,8 +2,8 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2020 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2013-2020 Hercules Dev Team + * Copyright (C) 2018-2020 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,9585 +40,9585 @@ // 2012-07-10aRagexeRE, 2012-07-12aRagexeRE #if PACKETVER == 20120710 || \ PACKETVER == 20120712 - packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0362,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0367,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0877,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0878,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a6,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0936,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0956,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x0202,clif->pSolveCharName,2); + packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); + packet(0x0362,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0365,clif->pFriendsListAdd,2); + packet(0x0367,clif->pMoveToKafra,2,4); + packet(0x0436,clif->pActionRequest,2,6); + packet(0x07e4,clif->pTickSend,2); + packet(0x0811,clif->pReqClickBuyingStore,2); + packet(0x085b,clif->pUseSkillToId,2,4,6); + packet(0x0877,clif->pGetCharNameRequest,2); + packet(0x0878,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x087f,clif->pWalkToXY,2); + packet(0x088d,clif->pChangeDir,2,4); + packet(0x0893,clif->pStoragePassword,0); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0899,clif->pTakeItem,2); + packet(0x08a3,clif->pDropItem,2,4); + packet(0x08a6,clif->pItemListWindowSelected,2,4,8); + packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); + packet(0x08aa,clif->pMoveFromKafra,2,4); + packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0936,clif->pDull/*,XXX*/); + packet(0x0948,clif->pReqCloseBuyingStore,0); + packet(0x094b,clif->pHomMenu,2,4); + packet(0x094e,clif->pPartyInvite2,2); + packet(0x0953,clif->pDull/*,XXX*/); + packet(0x0956,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0958,clif->pSearchStoreInfoNextPage,0); + packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2012-07-16aRagexeRE #if PACKETVER == 20120716 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x089f,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-07-24aRagexeRE #if PACKETVER == 20120724 - packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0815,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0835,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0865,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0872,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0935,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0938,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0965,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 + packet(0x035f,clif->pDull/*,XXX*/); + packet(0x0364,clif->pReqClickBuyingStore,2); + packet(0x0815,clif->pItemListWindowSelected,2,4,8); + packet(0x0835,clif->pPartyInvite2,2); + packet(0x0865,clif->pReqCloseBuyingStore,0); + packet(0x0866,clif->pDull/*,XXX*/); + packet(0x0872,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087c,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0887,clif->pChangeDir,2,4); + packet(0x0888,clif->pHomMenu,2,4); + packet(0x088e,clif->pUseSkillToId,2,4,6); + packet(0x08a1,clif->pGetCharNameRequest,2); + packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); + packet(0x08ab,clif->pTakeItem,2); + packet(0x091c,clif->pWalkToXY,2); + packet(0x091f,clif->pTickSend,2); + packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0935,clif->pSearchStoreInfoNextPage,0); + packet(0x0938,clif->pUseSkillToPos,2,4,6,8); + packet(0x093c,clif->pMoveToKafra,2,4); + packet(0x0945,clif->pActionRequest,2,6); + packet(0x0957,clif->pStoragePassword,0); + packet(0x0959,clif->pFriendsListAdd,2); + packet(0x0963,clif->pDropItem,2,4); + packet(0x0965,clif->pSolveCharName,2); + packet(0x0966,clif->pMoveFromKafra,2,4); #endif // 2012-08-01aRagexeRE, 2012-08-01bRagexeRE #if PACKETVER == 20120801 - packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0438,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a2,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0934,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x093c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0946,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0438,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x085d,clif->pSolveCharName,2); + packet(0x086a,clif->pItemListWindowSelected,2,4,8); + packet(0x086b,clif->pGetCharNameRequest,2); + packet(0x086f,clif->pReqCloseBuyingStore,0); + packet(0x0873,clif->pUseSkillToId,2,4,6); + packet(0x0875,clif->pTakeItem,2); + packet(0x087b,clif->pSearchStoreInfoNextPage,0); + packet(0x088b,clif->pHomMenu,2,4); + packet(0x0890,clif->pActionRequest,2,6); + packet(0x0895,clif->pWantToConnection,2,6,10,14,18); + packet(0x089c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089d,clif->pDropItem,2,4); + packet(0x089f,clif->pWalkToXY,2); + packet(0x08a2,clif->pFriendsListAdd,2); + packet(0x08aa,clif->pChangeDir,2,4); + packet(0x08ab,clif->pMoveFromKafra,2,4); + packet(0x0917,clif->pStoragePassword,0); + packet(0x091d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092a,clif->pDull/*,XXX*/); + packet(0x092e,clif->pReqClickBuyingStore,2); + packet(0x0930,clif->pTickSend,2); + packet(0x0934,clif->pUseSkillToPos,2,4,6,8); + packet(0x093c,clif->pPartyInvite2,2); + packet(0x0941,clif->pMoveToKafra,2,4); + packet(0x0946,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2012-08-08aRagexeRE, 2012-08-08bRagexeRE, 2012-08-08cRagexeRE, 2012-08-08dRagexeRE #if PACKETVER == 20120808 - packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x093d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pWantToConnection,2,6,10,14,18); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pFriendsListAdd,2); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085f,clif->pStoragePassword,0); + packet(0x088f,clif->pChangeDir,2,4); + packet(0x093d,clif->pHomMenu,2,4); + packet(0x0940,clif->pUseSkillToPos,2,4,6,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-08-14aRagexeRE, 2012-08-14bRagexeRE #if PACKETVER == 20120814 - packet(0x0281,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0365,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x07ec,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0815,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0861,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0865,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0875,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0882,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x088d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0895,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0920,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0929,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0941,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0969,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x0281,clif->pHomMenu,2,4); + packet(0x0361,clif->pItemListWindowSelected,2,4,8); + packet(0x0365,clif->pSolveCharName,2); + packet(0x0366,clif->pSearchStoreInfoNextPage,0); + packet(0x0438,clif->pTickSend,2); + packet(0x07ec,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0815,clif->pDropItem,2,4); + packet(0x0838,clif->pReqCloseBuyingStore,0); + packet(0x085e,clif->pMoveToKafra,2,4); + packet(0x0861,clif->pReqClickBuyingStore,2); + packet(0x0862,clif->pTakeItem,2); + packet(0x0865,clif->pMoveFromKafra,2,4); + packet(0x0868,clif->pActionRequest,2,6); + packet(0x086f,clif->pStoragePassword,0); + packet(0x0875,clif->pWalkToXY,2); + packet(0x087f,clif->pPartyInvite2,2); + packet(0x0882,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x088b,clif->pFriendsListAdd,2); + packet(0x088d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0895,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a8,clif->pDull/*,XXX*/); + packet(0x091f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0920,clif->pGetCharNameRequest,2); + packet(0x0929,clif->pDull/*,XXX*/); + packet(0x0932,clif->pUseSkillToPos,2,4,6,8); + packet(0x0934,clif->pUseSkillToId,2,4,6); + packet(0x0941,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0969,clif->pChangeDir,2,4); #endif // 2012-08-22aRagexeRE, 2012-08-22bRagexeRE, 2012-08-22cRagexeRE #if PACKETVER == 20120822 - packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x085d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a5,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ab,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0917,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0927,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0935,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0943,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0953,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0955,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0958,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 + packet(0x0365,clif->pFriendsListAdd,2); + packet(0x0437,clif->pTakeItem,2); + packet(0x085a,clif->pWalkToXY,2); + packet(0x085c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x085d,clif->pUseSkillToId,2,4,6); + packet(0x086b,clif->pSolveCharName,2); + packet(0x086e,clif->pChangeDir,2,4); + packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x087d,clif->pTickSend,2); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x088a,clif->pMoveToKafra,2,4); + packet(0x0899,clif->pPartyInvite2,2); + packet(0x089f,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a5,clif->pDull/*,XXX*/); + packet(0x08ab,clif->pActionRequest,2,6); + packet(0x0917,clif->pItemListWindowSelected,2,4,8); + packet(0x0924,clif->pSearchStoreInfoNextPage,0); + packet(0x0927,clif->pGetCharNameRequest,2); + packet(0x0935,clif->pHomMenu,2,4); + packet(0x0937,clif->pUseSkillToPos,2,4,6,8); + packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0943,clif->pMoveFromKafra,2,4); + packet(0x094d,clif->pStoragePassword,0); + packet(0x094e,clif->pDropItem,2,4); + packet(0x0953,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0955,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0958,clif->pReqCloseBuyingStore,0); + packet(0x095b,clif->pReqClickBuyingStore,2); #endif // 2012-08-30aRagexeRE, 2012-08-30bRagexeRE #if PACKETVER == 20120830 - packet(0x022d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0838,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0926,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0364,clif->pSearchStoreInfoNextPage,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pPartyInvite2,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0802,clif->pStoragePassword,0); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pMoveToKafra,2,4); + packet(0x0838,clif->pHomMenu,2,4); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0861,clif->pWantToConnection,2,6,10,14,18); + packet(0x0872,clif->pFriendsListAdd,2); + packet(0x0887,clif->pUseSkillToPos,2,4,6,8); + packet(0x0888,clif->pDull/*,XXX*/); + packet(0x0890,clif->pDull/*,XXX*/); + packet(0x091d,clif->pItemListWindowSelected,2,4,8); + packet(0x0926,clif->pMoveFromKafra,2,4); + packet(0x0934,clif->pChangeDir,2,4); + packet(0x0945,clif->pDropItem,2,4); + packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0964,clif->pTakeItem,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-09-05aRagexeRE #if PACKETVER == 20120905 - packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0895,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a0,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0918,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0927,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x093c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0944,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0945,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0950,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0959,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x022d,clif->pMoveToKafra,2,4); + packet(0x0365,clif->pDull/*,XXX*/); + packet(0x0817,clif->pStoragePassword,0); + packet(0x085a,clif->pSearchStoreInfoNextPage,0); + packet(0x085d,clif->pUseSkillToPos,2,4,6,8); + packet(0x086f,clif->pSolveCharName,2); + packet(0x0876,clif->pHomMenu,2,4); + packet(0x0877,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0878,clif->pWalkToXY,2); + packet(0x087a,clif->pUseSkillToId,2,4,6); + packet(0x087b,clif->pTickSend,2); + packet(0x087e,clif->pMoveFromKafra,2,4); + packet(0x0887,clif->pWantToConnection,2,6,10,14,18); + packet(0x0895,clif->pChangeDir,2,4); + packet(0x0897,clif->pTakeItem,2); + packet(0x08a0,clif->pDull/*,XXX*/); + packet(0x08a6,clif->pFriendsListAdd,2); + packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0918,clif->pItemListWindowSelected,2,4,8); + packet(0x091a,clif->pGetCharNameRequest,2); + packet(0x0927,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x093c,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0944,clif->pPartyInvite2,2); + packet(0x0945,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0950,clif->pDropItem,2,4); + packet(0x0954,clif->pReqCloseBuyingStore,0); + packet(0x0959,clif->pReqClickBuyingStore,2); + packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0967,clif->pActionRequest,2,6); #endif // 2012-09-11aRagexeRE #if PACKETVER == 20120911 - packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0877,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a4,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0930,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0935,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0948,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0949,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0962,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x0438,clif->pTickSend,2); + packet(0x0819,clif->pMoveFromKafra,2,4); + packet(0x0868,clif->pTakeItem,2); + packet(0x086f,clif->pWalkToXY,2); + packet(0x0876,clif->pHomMenu,2,4); + packet(0x0877,clif->pPartyInvite2,2); + packet(0x0879,clif->pReqClickBuyingStore,2); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x088a,clif->pGetCharNameRequest,2); + packet(0x088f,clif->pFriendsListAdd,2); + packet(0x08a4,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a7,clif->pDropItem,2,4); + packet(0x08ad,clif->pItemListWindowSelected,2,4,8); + packet(0x0930,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0935,clif->pReqCloseBuyingStore,0); + packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0948,clif->pUseSkillToPos,2,4,6,8); + packet(0x0949,clif->pDull/*,XXX*/); + packet(0x094b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0958,clif->pUseSkillToId,2,4,6); + packet(0x0959,clif->pActionRequest,2,6); + packet(0x0962,clif->pSearchStoreInfoNextPage,0); + packet(0x0963,clif->pSolveCharName,2); + packet(0x0966,clif->pMoveToKafra,2,4); + packet(0x0968,clif->pChangeDir,2,4); + packet(0x096a,clif->pStoragePassword,0); #endif // 2012-09-19aRagexeRE #if PACKETVER == 20120919 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0956,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-09-25aRagexeRE, 2012-09-26aRagexeRE #if PACKETVER == 20120925 || \ PACKETVER == 20120926 - packet(0x07e4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0815,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0835,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0873,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x091c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0927,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0932,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0948,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0950,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0958,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 + packet(0x07e4,clif->pDull/*,XXX*/); + packet(0x0815,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0819,clif->pWantToConnection,2,6,10,14,18); + packet(0x0835,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0838,clif->pGetCharNameRequest,2); + packet(0x085d,clif->pHomMenu,2,4); + packet(0x0869,clif->pMoveToKafra,2,4); + packet(0x0873,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087a,clif->pDropItem,2,4); + packet(0x087e,clif->pFriendsListAdd,2); + packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088a,clif->pPartyInvite2,2); + packet(0x088d,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089d,clif->pItemListWindowSelected,2,4,8); + packet(0x08a4,clif->pActionRequest,2,6); + packet(0x091c,clif->pSearchStoreInfoNextPage,0); + packet(0x091e,clif->pReqCloseBuyingStore,0); + packet(0x0923,clif->pTakeItem,2); + packet(0x0927,clif->pReqClickBuyingStore,2); + packet(0x0932,clif->pTickSend,2); + packet(0x0942,clif->pStoragePassword,0); + packet(0x0948,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0950,clif->pWalkToXY,2); + packet(0x0956,clif->pDull/*,XXX*/); + packet(0x0957,clif->pChangeDir,2,4); + packet(0x0958,clif->pSolveCharName,2); + packet(0x095e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0963,clif->pMoveFromKafra,2,4); #endif // 2012-10-10aRagexeRE, 2012-10-10bRagexeRE, 2012-10-11aRagexeRE #if PACKETVER == 20121010 || \ PACKETVER == 20121011 - packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0817,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0896,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0942,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0947,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0959,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0969,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x0202,clif->pItemListWindowSelected,2,4,8); + packet(0x0817,clif->pGetCharNameRequest,2); + packet(0x085a,clif->pReqCloseBuyingStore,0); + packet(0x0869,clif->pTakeItem,2); + packet(0x086c,clif->pDull/*,XXX*/); + packet(0x0874,clif->pMoveFromKafra,2,4); + packet(0x087d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0883,clif->pWalkToXY,2); + packet(0x0888,clif->pDull/*,XXX*/); + packet(0x088f,clif->pPartyInvite2,2); + packet(0x0891,clif->pUseSkillToId,2,4,6); + packet(0x0896,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0898,clif->pStoragePassword,0); + packet(0x08a1,clif->pActionRequest,2,6); + packet(0x08a6,clif->pSolveCharName,2); + packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0934,clif->pTickSend,2); + packet(0x093c,clif->pMoveToKafra,2,4); + packet(0x0942,clif->pReqClickBuyingStore,2); + packet(0x0946,clif->pWantToConnection,2,6,10,14,18); + packet(0x0947,clif->pUseSkillToPos,2,4,6,8); + packet(0x094c,clif->pDropItem,2,4); + packet(0x0957,clif->pChangeDir,2,4); + packet(0x0958,clif->pSearchStoreInfoNextPage,0); + packet(0x0959,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095c,clif->pHomMenu,2,4); + packet(0x0964,clif->pFriendsListAdd,2); + packet(0x0969,clif->pPartyBookingRegisterReq,2,4,6); #endif // 2012-10-17aRagexeRE, 2012-10-17bRagexeRE #if PACKETVER == 20121017 - packet(0x023b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0888,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0918,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pPartyInvite2,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pMoveFromKafra,2,4); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0868,clif->pDull/*,XXX*/); + packet(0x086b,clif->pDropItem,2,4); + packet(0x0887,clif->pItemListWindowSelected,2,4,8); + packet(0x0888,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0897,clif->pMoveToKafra,2,4); + packet(0x089a,clif->pFriendsListAdd,2); + packet(0x08a6,clif->pChangeDir,2,4); + packet(0x0918,clif->pStoragePassword,0); + packet(0x0920,clif->pDull/*,XXX*/); + packet(0x0960,clif->pHomMenu,2,4); + packet(0x0962,clif->pTakeItem,2); + packet(0x0965,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-10-24aRagexeRE #if PACKETVER == 20121024 - packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0438,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x087e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x089c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a9,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08aa,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0931,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0942,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0947,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0954,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0955,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0965,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x0436,clif->pWalkToXY,2); + packet(0x0437,clif->pUseSkillToId,2,4,6); + packet(0x0438,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0817,clif->pActionRequest,2,6); + packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x085a,clif->pMoveFromKafra,2,4); + packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0872,clif->pGetCharNameRequest,2); + packet(0x0875,clif->pDull/*,XXX*/); + packet(0x087a,clif->pMoveToKafra,2,4); + packet(0x087b,clif->pItemListWindowSelected,2,4,8); + packet(0x087e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0882,clif->pStoragePassword,0); + packet(0x0888,clif->pHomMenu,2,4); + packet(0x0889,clif->pDropItem,2,4); + packet(0x088a,clif->pReqClickBuyingStore,2); + packet(0x089c,clif->pPartyInvite2,2); + packet(0x08a9,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08aa,clif->pChangeDir,2,4); + packet(0x0931,clif->pTakeItem,2); + packet(0x0938,clif->pReqCloseBuyingStore,0); + packet(0x093a,clif->pDull/*,XXX*/); + packet(0x0942,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0947,clif->pTickSend,2); + packet(0x0954,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0955,clif->pSearchStoreInfoNextPage,0); + packet(0x095d,clif->pFriendsListAdd,2); + packet(0x095e,clif->pSolveCharName,2); + packet(0x0965,clif->pWantToConnection,2,6,10,14,18); #endif // 2012-10-31aRagexeRE #if PACKETVER == 20121031 - packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pTickSend,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pHomMenu,2,4); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pFriendsListAdd,2); + packet(0x0871,clif->pChangeDir,2,4); + packet(0x0877,clif->pWantToConnection,2,6,10,14,18); + packet(0x0898,clif->pStoragePassword,0); + packet(0x092b,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-11-07aRagexeRE #if PACKETVER == 20121107 - packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x085c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0871,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0873,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0896,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0922,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x094d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0966,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 + packet(0x0360,clif->pTakeItem,2); + packet(0x0361,clif->pStoragePassword,0); + packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x085c,clif->pItemListWindowSelected,2,4,8); + packet(0x0861,clif->pTickSend,2); + packet(0x0865,clif->pWantToConnection,2,6,10,14,18); + packet(0x086c,clif->pHomMenu,2,4); + packet(0x086d,clif->pSolveCharName,2); + packet(0x0871,clif->pSearchStoreInfoNextPage,0); + packet(0x0873,clif->pMoveToKafra,2,4); + packet(0x0878,clif->pPartyInvite2,2); + packet(0x087f,clif->pChangeDir,2,4); + packet(0x088f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0890,clif->pUseSkillToId,2,4,6); + packet(0x0891,clif->pMoveFromKafra,2,4); + packet(0x0896,clif->pReqClickBuyingStore,2); + packet(0x089a,clif->pActionRequest,2,6); + packet(0x089b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a2,clif->pReqCloseBuyingStore,0); + packet(0x08ad,clif->pGetCharNameRequest,2); + packet(0x0922,clif->pDull/*,XXX*/); + packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x094d,clif->pWalkToXY,2); + packet(0x0960,clif->pDropItem,2,4); + packet(0x0963,clif->pDull/*,XXX*/); + packet(0x0966,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x096a,clif->pFriendsListAdd,2); #endif // 2012-11-14aRagexeRE #if PACKETVER == 20121114 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0815,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0876,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0881,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0899,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08aa,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0930,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0935,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0938,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0944,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0949,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x095c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0965,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x0364,clif->pStoragePassword,0); + packet(0x0365,clif->pHomMenu,2,4); + packet(0x0437,clif->pDropItem,2,4); + packet(0x0815,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0838,clif->pPartyInvite2,2); + packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0876,clif->pSolveCharName,2); + packet(0x0879,clif->pGetCharNameRequest,2); + packet(0x0881,clif->pSearchStoreInfoNextPage,0); + packet(0x0898,clif->pActionRequest,2,6); + packet(0x0899,clif->pWalkToXY,2); + packet(0x08a9,clif->pTickSend,2); + packet(0x08aa,clif->pReqCloseBuyingStore,0); + packet(0x08ab,clif->pChangeDir,2,4); + packet(0x091a,clif->pMoveFromKafra,2,4); + packet(0x0930,clif->pDull/*,XXX*/); + packet(0x0935,clif->pUseSkillToId,2,4,6); + packet(0x0938,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093c,clif->pMoveToKafra,2,4); + packet(0x0941,clif->pFriendsListAdd,2); + packet(0x0944,clif->pItemListWindowSelected,2,4,8); + packet(0x0949,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x094a,clif->pUseSkillToPos,2,4,6,8); + packet(0x094b,clif->pWantToConnection,2,6,10,14,18); + packet(0x094f,clif->pReqClickBuyingStore,2); + packet(0x095c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0965,clif->pTakeItem,2); + packet(0x096a,clif->pDull/*,XXX*/); #endif // 2012-11-21aRagexeRE #if PACKETVER == 20121121 - packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0863,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0872,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a7,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0921,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0938,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0946,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x094d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0958,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 + packet(0x0202,clif->pUseSkillToId,2,4,6); + packet(0x0362,clif->pReqCloseBuyingStore,0); + packet(0x0437,clif->pTakeItem,2); + packet(0x0863,clif->pItemListWindowSelected,2,4,8); + packet(0x086a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086d,clif->pSolveCharName,2); + packet(0x086f,clif->pMoveFromKafra,2,4); + packet(0x0872,clif->pGetCharNameRequest,2); + packet(0x0875,clif->pMoveToKafra,2,4); + packet(0x087e,clif->pSearchStoreInfoNextPage,0); + packet(0x0880,clif->pChangeDir,2,4); + packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x089a,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x08a7,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08aa,clif->pActionRequest,2,6); + packet(0x091a,clif->pTickSend,2); + packet(0x0921,clif->pUseSkillToPos,2,4,6,8); + packet(0x0927,clif->pWantToConnection,2,6,10,14,18); + packet(0x0929,clif->pDull/*,XXX*/); + packet(0x0938,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0946,clif->pWalkToXY,2); + packet(0x094d,clif->pDull/*,XXX*/); + packet(0x0950,clif->pHomMenu,2,4); + packet(0x0952,clif->pDropItem,2,4); + packet(0x0954,clif->pStoragePassword,0); + packet(0x0957,clif->pPartyInvite2,2); + packet(0x0958,clif->pReqClickBuyingStore,2); #endif // 2012-11-28aRagexeRE #if PACKETVER == 20121128 - packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x07ec,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0861,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x086c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a8,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08ad,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0931,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0950,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0953,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0960,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 + packet(0x0362,clif->pWantToConnection,2,6,10,14,18); + packet(0x0363,clif->pFriendsListAdd,2); + packet(0x07ec,clif->pPartyInvite2,2); + packet(0x0802,clif->pStoragePassword,0); + packet(0x0861,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0867,clif->pTickSend,2); + packet(0x086c,clif->pUseSkillToPos,2,4,6,8); + packet(0x086e,clif->pDull/*,XXX*/); + packet(0x0872,clif->pUseSkillToId,2,4,6); + packet(0x0888,clif->pChangeDir,2,4); + packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0894,clif->pDull/*,XXX*/); + packet(0x0895,clif->pTakeItem,2); + packet(0x08a8,clif->pItemListWindowSelected,2,4,8); + packet(0x08ad,clif->pWalkToXY,2); + packet(0x091b,clif->pSolveCharName,2); + packet(0x091c,clif->pGetCharNameRequest,2); + packet(0x091e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0921,clif->pSearchStoreInfoNextPage,0); + packet(0x0922,clif->pMoveFromKafra,2,4); + packet(0x092f,clif->pReqClickBuyingStore,2); + packet(0x0931,clif->pActionRequest,2,6); + packet(0x0945,clif->pHomMenu,2,4); + packet(0x0947,clif->pReqCloseBuyingStore,0); + packet(0x0950,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0953,clif->pDropItem,2,4); + packet(0x0954,clif->pMoveToKafra,2,4); + packet(0x0960,clif->pReqTradeBuyingStore,2,4,8,12); #endif // 2012-12-05aRagexeRE, 2012-12-05bRagexeRE #if PACKETVER == 20121205 - packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0815,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0863,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0864,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0878,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0888,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0889,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x093a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0954,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0959,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0360,clif->pWalkToXY,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0815,clif->pTakeItem,2); + packet(0x0863,clif->pTickSend,2); + packet(0x0864,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x086c,clif->pItemListWindowSelected,2,4,8); + packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0873,clif->pSearchStoreInfoNextPage,0); + packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0878,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0888,clif->pStoragePassword,0); + packet(0x0889,clif->pDropItem,2,4); + packet(0x088b,clif->pDull/*,XXX*/); + packet(0x089a,clif->pFriendsListAdd,2); + packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08ad,clif->pSolveCharName,2); + packet(0x091a,clif->pReqCloseBuyingStore,0); + packet(0x091c,clif->pMoveFromKafra,2,4); + packet(0x0921,clif->pWantToConnection,2,6,10,14,18); + packet(0x093a,clif->pReqClickBuyingStore,2); + packet(0x093e,clif->pDull/*,XXX*/); + packet(0x093f,clif->pUseSkillToId,2,4,6); + packet(0x0946,clif->pUseSkillToPos,2,4,6,8); + packet(0x094b,clif->pGetCharNameRequest,2); + packet(0x0954,clif->pActionRequest,2,6); + packet(0x0959,clif->pPartyInvite2,2); + packet(0x0966,clif->pMoveToKafra,2,4); + packet(0x0968,clif->pChangeDir,2,4); #endif // 2012-12-12aRagexeRE, 2012-12-12bRagexeRE, 2012-12-12cRagexeRE #if PACKETVER == 20121212 - packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0368,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0438,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x087d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0893,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0932,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0957,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0368,clif->pFriendsListAdd,2); + packet(0x0369,clif->pPartyInvite2,2); + packet(0x0436,clif->pSearchStoreInfoNextPage,0); + packet(0x0438,clif->pReqCloseBuyingStore,0); + packet(0x0817,clif->pUseSkillToPos,2,4,6,8); + packet(0x085c,clif->pActionRequest,2,6); + packet(0x0877,clif->pTickSend,2); + packet(0x087d,clif->pUseSkillToId,2,4,6); + packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0893,clif->pSolveCharName,2); + packet(0x0895,clif->pReqClickBuyingStore,2); + packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a7,clif->pWalkToXY,2); + packet(0x08a9,clif->pStoragePassword,0); + packet(0x08aa,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pDropItem,2,4); + packet(0x0917,clif->pMoveFromKafra,2,4); + packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0920,clif->pChangeDir,2,4); + packet(0x0932,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0947,clif->pHomMenu,2,4); + packet(0x0951,clif->pDull/*,XXX*/); + packet(0x0953,clif->pTakeItem,2); + packet(0x0957,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095b,clif->pMoveToKafra,2,4); + packet(0x0965,clif->pItemListWindowSelected,2,4,8); + packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-12-18aRagexeRE, 2012-12-18bRagexeRE #if PACKETVER == 20121218 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0872,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x091a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0957,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pUseSkillToId,2,4,6); + packet(0x0363,clif->pTakeItem,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pDropItem,2,4); + packet(0x0867,clif->pHomMenu,2,4); + packet(0x0872,clif->pDull/*,XXX*/); + packet(0x087a,clif->pChangeDir,2,4); + packet(0x087b,clif->pPartyInvite2,2); + packet(0x0886,clif->pMoveToKafra,2,4); + packet(0x0889,clif->pItemListWindowSelected,2,4,8); + packet(0x0890,clif->pDull/*,XXX*/); + packet(0x091a,clif->pMoveFromKafra,2,4); + packet(0x091c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0935,clif->pFriendsListAdd,2); + packet(0x0946,clif->pStoragePassword,0); + packet(0x0957,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2012-12-27aRagexeRE #if PACKETVER == 20121227 - packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x02c4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0860,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0870,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0886,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0896,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08aa,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0917,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0943,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0947,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 + packet(0x0202,clif->pHomMenu,2,4); + packet(0x02c4,clif->pWantToConnection,2,6,10,14,18); + packet(0x0361,clif->pStoragePassword,0); + packet(0x0368,clif->pItemListWindowSelected,2,4,8); + packet(0x0437,clif->pDropItem,2,4); + packet(0x0860,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0870,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0872,clif->pReqClickBuyingStore,2); + packet(0x087a,clif->pActionRequest,2,6); + packet(0x0886,clif->pMoveFromKafra,2,4); + packet(0x0888,clif->pTickSend,2); + packet(0x088e,clif->pChangeDir,2,4); + packet(0x0890,clif->pUseSkillToPos,2,4,6,8); + packet(0x0894,clif->pFriendsListAdd,2); + packet(0x0896,clif->pSolveCharName,2); + packet(0x08a6,clif->pTakeItem,2); + packet(0x08aa,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0917,clif->pReqCloseBuyingStore,0); + packet(0x091f,clif->pDull/*,XXX*/); + packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0932,clif->pWalkToXY,2); + packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0940,clif->pUseSkillToId,2,4,6); + packet(0x0943,clif->pSearchStoreInfoNextPage,0); + packet(0x0947,clif->pGetCharNameRequest,2); + packet(0x0953,clif->pDull/*,XXX*/); + packet(0x0958,clif->pMoveToKafra,2,4); + packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0962,clif->pPartyInvite2,2); #endif // 2013-01-03aRagexeRE #if PACKETVER == 20130103 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pDull/*,XXX*/); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pStoragePassword,0); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-01-09aRagexeRE #if PACKETVER == 20130109 - packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0365,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0368,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0888,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08aa,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ac,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0918,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0928,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0931,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093e,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0955,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x0281,clif->pGetCharNameRequest,2); + packet(0x0365,clif->pDull/*,XXX*/); + packet(0x0368,clif->pUseSkillToPos,2,4,6,8); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0838,clif->pMoveFromKafra,2,4); + packet(0x0866,clif->pWalkToXY,2); + packet(0x0886,clif->pMoveToKafra,2,4); + packet(0x0888,clif->pChangeDir,2,4); + packet(0x088a,clif->pWantToConnection,2,6,10,14,18); + packet(0x088e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0892,clif->pUseSkillToId,2,4,6); + packet(0x08a2,clif->pSolveCharName,2); + packet(0x08aa,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pSearchStoreInfoNextPage,0); + packet(0x0918,clif->pFriendsListAdd,2); + packet(0x091b,clif->pDropItem,2,4); + packet(0x0922,clif->pReqClickBuyingStore,2); + packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0928,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0930,clif->pHomMenu,2,4); + packet(0x0931,clif->pItemListWindowSelected,2,4,8); + packet(0x0938,clif->pPartyInvite2,2); + packet(0x093e,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0950,clif->pStoragePassword,0); + packet(0x0951,clif->pTickSend,2); + packet(0x0955,clif->pReqCloseBuyingStore,0); + packet(0x095e,clif->pTakeItem,2); #endif // 2013-01-15aRagexeRE, 2013-01-16aRagexeRE #if PACKETVER == 20130115 || \ PACKETVER == 20130116 - packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0817,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0861,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0895,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0918,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x092d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0939,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x0361,clif->pDull/*,XXX*/); + packet(0x07ec,clif->pDull/*,XXX*/); + packet(0x0817,clif->pWalkToXY,2); + packet(0x085e,clif->pReqCloseBuyingStore,0); + packet(0x0861,clif->pMoveFromKafra,2,4); + packet(0x0863,clif->pActionRequest,2,6); + packet(0x086b,clif->pSearchStoreInfoNextPage,0); + packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0871,clif->pFriendsListAdd,2); + packet(0x0877,clif->pReqClickBuyingStore,2); + packet(0x0879,clif->pChangeDir,2,4); + packet(0x087c,clif->pSolveCharName,2); + packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0894,clif->pHomMenu,2,4); + packet(0x0895,clif->pTickSend,2); + packet(0x08a0,clif->pPartyInvite2,2); + packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); + packet(0x08ac,clif->pMoveToKafra,2,4); + packet(0x0918,clif->pUseSkillToId,2,4,6); + packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x092d,clif->pWantToConnection,2,6,10,14,18); + packet(0x092e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0939,clif->pGetCharNameRequest,2); + packet(0x0946,clif->pItemListWindowSelected,2,4,8); + packet(0x094b,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x094c,clif->pTakeItem,2); + packet(0x094e,clif->pDropItem,2,4); + packet(0x095a,clif->pStoragePassword,0); #endif // 2013-01-21aRagexeRE #if PACKETVER == 20130121 - packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x035f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0802,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0817,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x095b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pReqCloseBuyingStore,0); + packet(0x035f,clif->pDull/*,XXX*/); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pTickSend,2); + packet(0x0802,clif->pActionRequest,2,6); + packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0817,clif->pStoragePassword,0); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pDull/*,XXX*/); + packet(0x085d,clif->pHomMenu,2,4); + packet(0x086c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0874,clif->pMoveToKafra,2,4); + packet(0x0884,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0893,clif->pFriendsListAdd,2); + packet(0x091f,clif->pTakeItem,2); + packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094f,clif->pDropItem,2,4); + packet(0x0956,clif->pChangeDir,2,4); + packet(0x095b,clif->pPartyInvite2,2); + packet(0x0963,clif->pMoveFromKafra,2,4); + packet(0x0969,clif->pItemListWindowSelected,2,4,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-01-30aRagexeRE #if PACKETVER == 20130130 - packet(0x035f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0368,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0437,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x086b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0886,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a0,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a9,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x091a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0956,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095b,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x035f,clif->pMoveToKafra,2,4); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0367,clif->pGetCharNameRequest,2); + packet(0x0368,clif->pChangeDir,2,4); + packet(0x0437,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0862,clif->pReqCloseBuyingStore,0); + packet(0x086b,clif->pDull/*,XXX*/); + packet(0x087d,clif->pWalkToXY,2); + packet(0x087f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0885,clif->pActionRequest,2,6); + packet(0x0886,clif->pTakeItem,2); + packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0889,clif->pTickSend,2); + packet(0x089a,clif->pPartyInvite2,2); + packet(0x089f,clif->pDropItem,2,4); + packet(0x08a0,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a4,clif->pUseSkillToId,2,4,6); + packet(0x08a9,clif->pDull/*,XXX*/); + packet(0x091a,clif->pSolveCharName,2); + packet(0x0920,clif->pFriendsListAdd,2); + packet(0x0924,clif->pReqClickBuyingStore,2); + packet(0x093a,clif->pStoragePassword,0); + packet(0x093d,clif->pItemListWindowSelected,2,4,8); + packet(0x0956,clif->pWantToConnection,2,6,10,14,18); + packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095b,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x095c,clif->pMoveFromKafra,2,4); + packet(0x095d,clif->pSearchStoreInfoNextPage,0); #endif // 2013-02-06aRagexeRE #if PACKETVER == 20130206 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0811,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0883,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0899,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0925,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x0811,clif->pTakeItem,2); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pMoveFromKafra,2,4); + packet(0x0876,clif->pDull/*,XXX*/); + packet(0x0883,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0885,clif->pMoveToKafra,2,4); + packet(0x0899,clif->pItemListWindowSelected,2,4,8); + packet(0x08a0,clif->pChangeDir,2,4); + packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); + packet(0x0920,clif->pPartyInvite2,2); + packet(0x0925,clif->pDropItem,2,4); + packet(0x093a,clif->pHomMenu,2,4); + packet(0x093c,clif->pFriendsListAdd,2); + packet(0x0950,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-02-15aRagexeRE #if PACKETVER == 20130215 - packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x095d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pReqClickBuyingStore,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pStoragePassword,0); + packet(0x0366,clif->pWantToConnection,2,6,10,14,18); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0869,clif->pMoveToKafra,2,4); + packet(0x086f,clif->pDull/*,XXX*/); + packet(0x0886,clif->pDropItem,2,4); + packet(0x089e,clif->pItemListWindowSelected,2,4,8); + packet(0x089f,clif->pDull/*,XXX*/); + packet(0x08ad,clif->pTakeItem,2); + packet(0x0923,clif->pHomMenu,2,4); + packet(0x0941,clif->pFriendsListAdd,2); + packet(0x0956,clif->pPartyInvite2,2); + packet(0x095d,clif->pChangeDir,2,4); + packet(0x0962,clif->pMoveFromKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-02-20bRagexeRE #if PACKETVER == 20130220 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x094b,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-02-27aRagexeRE #if PACKETVER == 20130227 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0815,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0867,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0898,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a0,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0924,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x092b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0946,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0951,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0967,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x035f,clif->pHomMenu,2,4); + packet(0x0360,clif->pWantToConnection,2,6,10,14,18); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0811,clif->pTickSend,2); + packet(0x0815,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0817,clif->pReqClickBuyingStore,2); + packet(0x085a,clif->pUseSkillToId,2,4,6); + packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0867,clif->pTakeItem,2); + packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x086e,clif->pDull/*,XXX*/); + packet(0x087b,clif->pPartyInvite2,2); + packet(0x0893,clif->pMoveFromKafra,2,4); + packet(0x0898,clif->pChangeDir,2,4); + packet(0x08a0,clif->pReqCloseBuyingStore,0); + packet(0x08a1,clif->pDull/*,XXX*/); + packet(0x091b,clif->pGetCharNameRequest,2); + packet(0x091f,clif->pDropItem,2,4); + packet(0x0924,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x092b,clif->pItemListWindowSelected,2,4,8); + packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0946,clif->pMoveToKafra,2,4); + packet(0x0951,clif->pUseSkillToPos,2,4,6,8); + packet(0x095b,clif->pSolveCharName,2); + packet(0x095e,clif->pStoragePassword,0); + packet(0x095f,clif->pSearchStoreInfoNextPage,0); + packet(0x0967,clif->pActionRequest,2,6); #endif // 2013-03-06aRagexeRE, 2013-03-06bRagexeRE #if PACKETVER == 20130306 - packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0367,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0368,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0802,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0898,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0945,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0951,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x022d,clif->pItemListWindowSelected,2,4,8); + packet(0x0367,clif->pSolveCharName,2); + packet(0x0368,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0802,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0817,clif->pHomMenu,2,4); + packet(0x085b,clif->pWalkToXY,2); + packet(0x085c,clif->pReqClickBuyingStore,2); + packet(0x0860,clif->pChangeDir,2,4); + packet(0x086d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0890,clif->pDull/*,XXX*/); + packet(0x0898,clif->pActionRequest,2,6); + packet(0x089f,clif->pTickSend,2); + packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); + packet(0x08ac,clif->pDull/*,XXX*/); + packet(0x0917,clif->pMoveFromKafra,2,4); + packet(0x091e,clif->pMoveToKafra,2,4); + packet(0x0926,clif->pStoragePassword,0); + packet(0x0934,clif->pFriendsListAdd,2); + packet(0x0936,clif->pSearchStoreInfoNextPage,0); + packet(0x0943,clif->pUseSkillToId,2,4,6); + packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0945,clif->pReqCloseBuyingStore,0); + packet(0x0946,clif->pPartyInvite2,2); + packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x094e,clif->pGetCharNameRequest,2); + packet(0x0951,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0960,clif->pDropItem,2,4); + packet(0x0962,clif->pTakeItem,2); #endif // 2013-03-13aRagexeRE, 2013-03-13bRagexeRE, 2013-03-13cRagexeRE #if PACKETVER == 20130313 - packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0920,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pPartyInvite2,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pFriendsListAdd,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0887,clif->pChangeDir,2,4); + packet(0x0920,clif->pStoragePassword,0); + packet(0x092d,clif->pHomMenu,2,4); + packet(0x0947,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-03-20bRagexeRE, 2013-03-20cRagexeRE #if PACKETVER == 20130320 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0438,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0868,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0874,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0881,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0890,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0933,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pTickSend,2); + packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0438,clif->pDropItem,2,4); + packet(0x085a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x085d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0868,clif->pItemListWindowSelected,2,4,8); + packet(0x086d,clif->pPartyInvite2,2); + packet(0x086f,clif->pFriendsListAdd,2); + packet(0x0874,clif->pMoveFromKafra,2,4); + packet(0x0881,clif->pWalkToXY,2); + packet(0x0886,clif->pReqCloseBuyingStore,0); + packet(0x0888,clif->pWantToConnection,2,6,10,14,18); + packet(0x088e,clif->pActionRequest,2,6); + packet(0x0890,clif->pDull/*,XXX*/); + packet(0x0897,clif->pChangeDir,2,4); + packet(0x0898,clif->pGetCharNameRequest,2); + packet(0x089b,clif->pUseSkillToId,2,4,6); + packet(0x08ac,clif->pMoveToKafra,2,4); + packet(0x0922,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092e,clif->pSearchStoreInfoNextPage,0); + packet(0x0933,clif->pTakeItem,2); + packet(0x0938,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x093f,clif->pHomMenu,2,4); + packet(0x0947,clif->pStoragePassword,0); + packet(0x094c,clif->pSolveCharName,2); + packet(0x094e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0959,clif->pUseSkillToPos,2,4,6,8); + packet(0x095a,clif->pDull/*,XXX*/); #endif // 2013-03-27bRagexeRE #if PACKETVER == 20130327 - packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0893,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a1,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0933,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0939,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0955,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0960,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0961,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0967,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 + packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x0835,clif->pHomMenu,2,4); + packet(0x086d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0873,clif->pWantToConnection,2,6,10,14,18); + packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087a,clif->pSearchStoreInfoNextPage,0); + packet(0x0885,clif->pDropItem,2,4); + packet(0x088f,clif->pUseSkillToId,2,4,6); + packet(0x0891,clif->pMoveToKafra,2,4); + packet(0x0893,clif->pReqCloseBuyingStore,0); + packet(0x0899,clif->pTakeItem,2); + packet(0x08a1,clif->pGetCharNameRequest,2); + packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x092b,clif->pWalkToXY,2); + packet(0x092d,clif->pPartyInvite2,2); + packet(0x092e,clif->pDull/*,XXX*/); + packet(0x092f,clif->pDull/*,XXX*/); + packet(0x0933,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0938,clif->pMoveFromKafra,2,4); + packet(0x0939,clif->pTickSend,2); + packet(0x094a,clif->pChangeDir,2,4); + packet(0x094b,clif->pStoragePassword,0); + packet(0x094f,clif->pFriendsListAdd,2); + packet(0x0955,clif->pActionRequest,2,6); + packet(0x0960,clif->pUseSkillToPos,2,4,6,8); + packet(0x0961,clif->pSolveCharName,2); + packet(0x0967,clif->pItemListWindowSelected,2,4,8); #endif // 2013-04-03aRagexeRE #if PACKETVER == 20130403 - packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a5,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0942,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0950,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pReqClickBuyingStore,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pStoragePassword,0); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0884,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a5,clif->pDull/*,XXX*/); + packet(0x0926,clif->pHomMenu,2,4); + packet(0x0942,clif->pChangeDir,2,4); + packet(0x0950,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-04-10aRagexeRE #if PACKETVER == 20130410 - packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0437,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0865,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0881,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x088c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0891,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08a7,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0933,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0939,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x093d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0955,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0967,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 + packet(0x0367,clif->pReqClickBuyingStore,2); + packet(0x0437,clif->pTakeItem,2); + packet(0x0860,clif->pWantToConnection,2,6,10,14,18); + packet(0x0865,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0879,clif->pMoveToKafra,2,4); + packet(0x087c,clif->pWalkToXY,2); + packet(0x087d,clif->pGetCharNameRequest,2); + packet(0x0881,clif->pReqCloseBuyingStore,0); + packet(0x088c,clif->pStoragePassword,0); + packet(0x088d,clif->pHomMenu,2,4); + packet(0x0890,clif->pItemListWindowSelected,2,4,8); + packet(0x0891,clif->pDull/*,XXX*/); + packet(0x089c,clif->pSolveCharName,2); + packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a0,clif->pTickSend,2); + packet(0x08a4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08a7,clif->pSearchStoreInfoNextPage,0); + packet(0x0917,clif->pPartyInvite2,2); + packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0933,clif->pUseSkillToId,2,4,6); + packet(0x0939,clif->pActionRequest,2,6); + packet(0x093d,clif->pMoveFromKafra,2,4); + packet(0x0944,clif->pDull/*,XXX*/); + packet(0x0945,clif->pChangeDir,2,4); + packet(0x0955,clif->pUseSkillToPos,2,4,6,8); + packet(0x0960,clif->pFriendsListAdd,2); + packet(0x0967,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x096a,clif->pDropItem,2,4); #endif // 2013-04-17aRagexeRE #if PACKETVER == 20130417 - packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0969,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x096a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pFriendsListAdd,2); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0875,clif->pStoragePassword,0); + packet(0x0929,clif->pChangeDir,2,4); + packet(0x0962,clif->pHomMenu,2,4); + packet(0x0969,clif->pGetCharNameRequest,2); + packet(0x096a,clif->pDull/*,XXX*/); #endif // 2013-04-24aRagexeRE #if PACKETVER == 20130424 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0969,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-05-02aRagexeRE #if PACKETVER == 20130502 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0875,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0877,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0888,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a3,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0961,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0967,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x07ec,clif->pChangeDir,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pDull/*,XXX*/); + packet(0x0867,clif->pHomMenu,2,4); + packet(0x0870,clif->pPartyInvite2,2); + packet(0x0874,clif->pItemListWindowSelected,2,4,8); + packet(0x0875,clif->pFriendsListAdd,2); + packet(0x0877,clif->pMoveToKafra,2,4); + packet(0x087c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0888,clif->pGetCharNameRequest,2); + packet(0x0889,clif->pDull/*,XXX*/); + packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a3,clif->pDropItem,2,4); + packet(0x0961,clif->pMoveFromKafra,2,4); + packet(0x0967,clif->pTakeItem,2); #endif // 2013-05-08bRagexeRE #if PACKETVER == 20130508 - packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0878,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0897,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ab,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x092d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0944,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pMoveToKafra,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pFriendsListAdd,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0868,clif->pStoragePassword,0); + packet(0x0878,clif->pItemListWindowSelected,2,4,8); + packet(0x088b,clif->pTakeItem,2); + packet(0x0893,clif->pPartyBookingRegisterReq,2,4); + packet(0x0895,clif->pWantToConnection,2,6,10,14,18); + packet(0x0897,clif->pDull/*,XXX*/); + packet(0x08ab,clif->pPartyInvite2,2); + packet(0x092d,clif->pDropItem,2,4); + packet(0x0944,clif->pDull/*,XXX*/); + packet(0x094d,clif->pHomMenu,2,4); + packet(0x0957,clif->pMoveFromKafra,2,4); + packet(0x095c,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-05-15aRagexeRE #if PACKETVER == 20130515 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a1,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x093e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0944,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0947,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0963,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pChangeDir,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pDull/*,XXX*/); + packet(0x0887,clif->pMoveToKafra,2,4); + packet(0x08a1,clif->pTakeItem,2); + packet(0x08aa,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pMoveFromKafra,2,4); + packet(0x092d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0931,clif->pHomMenu,2,4); + packet(0x093e,clif->pStoragePassword,0); + packet(0x0943,clif->pWantToConnection,2,6,10,14,18); + packet(0x0944,clif->pDropItem,2,4); + packet(0x0947,clif->pPartyInvite2,2); + packet(0x0962,clif->pFriendsListAdd,2); + packet(0x0963,clif->pItemListWindowSelected,2,4,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-05-22aRagexeRE #if PACKETVER == 20130522 - packet(0x0360,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x088e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a2,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a3,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a6,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08aa,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0965,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x0360,clif->pWalkToXY,2); + packet(0x0362,clif->pFriendsListAdd,2); + packet(0x0368,clif->pReqClickBuyingStore,2); + packet(0x0369,clif->pSolveCharName,2); + packet(0x07ec,clif->pTickSend,2); + packet(0x0811,clif->pUseSkillToPos,2,4,6,8); + packet(0x086a,clif->pItemListWindowSelected,2,4,8); + packet(0x086e,clif->pReqCloseBuyingStore,0); + packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087e,clif->pMoveFromKafra,2,4); + packet(0x088e,clif->pStoragePassword,0); + packet(0x089b,clif->pPartyBookingRegisterReq,2,4); + packet(0x089c,clif->pDropItem,2,4); + packet(0x08a2,clif->pActionRequest,2,6); + packet(0x08a3,clif->pMoveToKafra,2,4); + packet(0x08a6,clif->pGetCharNameRequest,2); + packet(0x08a9,clif->pWantToConnection,2,6,10,14,18); + packet(0x08aa,clif->pSearchStoreInfoNextPage,0); + packet(0x08ac,clif->pDull/*,XXX*/); + packet(0x0925,clif->pChangeDir,2,4); + packet(0x0926,clif->pHomMenu,2,4); + packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0950,clif->pPartyInvite2,2); + packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095c,clif->pUseSkillToId,2,4,6); + packet(0x095e,clif->pTakeItem,2); + packet(0x0964,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0965,clif->pDull/*,XXX*/); #endif // 2013-05-29aRagexeRE #if PACKETVER == 20130529 - packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0874,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0876,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0888,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0890,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a7,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0937,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0938,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 + packet(0x023b,clif->pHomMenu,2,4); + packet(0x0438,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0863,clif->pGetCharNameRequest,2); + packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0874,clif->pPartyBookingRegisterReq,2,4); + packet(0x0876,clif->pWalkToXY,2); + packet(0x0877,clif->pFriendsListAdd,2); + packet(0x0888,clif->pDull/*,XXX*/); + packet(0x088e,clif->pDull/*,XXX*/); + packet(0x0890,clif->pActionRequest,2,6); + packet(0x0892,clif->pReqClickBuyingStore,2); + packet(0x0895,clif->pTakeItem,2); + packet(0x0897,clif->pTickSend,2); + packet(0x08a7,clif->pDropItem,2,4); + packet(0x08a8,clif->pPartyInvite2,2); + packet(0x0917,clif->pUseSkillToPos,2,4,6,8); + packet(0x0918,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0919,clif->pWantToConnection,2,6,10,14,18); + packet(0x0936,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0937,clif->pSolveCharName,2); + packet(0x0938,clif->pMoveToKafra,2,4); + packet(0x0941,clif->pSearchStoreInfoNextPage,0); + packet(0x0951,clif->pChangeDir,2,4); + packet(0x0956,clif->pStoragePassword,0); + packet(0x0957,clif->pMoveFromKafra,2,4); + packet(0x0958,clif->pItemListWindowSelected,2,4,8); + packet(0x0964,clif->pReqCloseBuyingStore,0); #endif // 2013-06-05cRagexeRE #if PACKETVER == 20130605 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0883,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0883,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-06-12bRagexeRE #if PACKETVER == 20130612 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0919,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0964,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087e,clif->pChangeDir,2,4); + packet(0x0919,clif->pWantToConnection,2,6,10,14,18); + packet(0x093a,clif->pHomMenu,2,4); + packet(0x0940,clif->pFriendsListAdd,2); + packet(0x0964,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-06-18#1aRagexeRE #if PACKETVER == 20130618 - packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0363,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0936,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0942,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0951,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x02c4,clif->pHomMenu,2,4); + packet(0x0363,clif->pSearchStoreInfoNextPage,0); + packet(0x085a,clif->pReqCloseBuyingStore,0); + packet(0x0862,clif->pReqClickBuyingStore,2); + packet(0x0864,clif->pStoragePassword,0); + packet(0x0878,clif->pDull/*,XXX*/); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x0885,clif->pMoveToKafra,2,4); + packet(0x0887,clif->pPartyInvite2,2); + packet(0x0889,clif->pActionRequest,2,6); + packet(0x088e,clif->pWalkToXY,2); + packet(0x0890,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a6,clif->pChangeDir,2,4); + packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); + packet(0x0917,clif->pDropItem,2,4); + packet(0x0930,clif->pTickSend,2); + packet(0x0932,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0936,clif->pMoveFromKafra,2,4); + packet(0x0942,clif->pItemListWindowSelected,2,4,8); + packet(0x0944,clif->pGetCharNameRequest,2); + packet(0x0945,clif->pSolveCharName,2); + packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0951,clif->pUseSkillToId,2,4,6); + packet(0x0953,clif->pFriendsListAdd,2); + packet(0x095b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0962,clif->pTakeItem,2); + packet(0x096a,clif->pUseSkillToPos,2,4,6,8); #endif // 2013-06-26_3bRagexeRE, 2013-06-26aRagexeRE #if PACKETVER == 20130626 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0860,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0894,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0895,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pReqCloseBuyingStore,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pMoveFromKafra,2,4); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0860,clif->pDull/*,XXX*/); + packet(0x088b,clif->pTakeItem,2); + packet(0x088c,clif->pWantToConnection,2,6,10,14,18); + packet(0x088f,clif->pDull/*,XXX*/); + packet(0x0894,clif->pPartyBookingRegisterReq,2,4); + packet(0x0895,clif->pPartyInvite2,2); + packet(0x08a5,clif->pItemListWindowSelected,2,4,8); + packet(0x08ab,clif->pFriendsListAdd,2); + packet(0x0921,clif->pMoveToKafra,2,4); + packet(0x0930,clif->pStoragePassword,0); + packet(0x094d,clif->pChangeDir,2,4); + packet(0x0952,clif->pDropItem,2,4); + packet(0x0960,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-07-03bRagexeRE #if PACKETVER == 20130703 - packet(0x0202,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pReqClickBuyingStore,2); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pFriendsListAdd,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0873,clif->pStoragePassword,0); + packet(0x0930,clif->pChangeDir,2,4); + packet(0x094a,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-07-10aRagexeRE, 2013-07-10bRagexeRE, 2013-07-10cRagexeRE, 2013-07-10dRagexeRE, 2013-07-10eRagexeRE #if PACKETVER == 20130710 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0880,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-07-17cRagexeRE, 2013-07-17dRagexeRE, 2013-07-17eRagexeRE #if PACKETVER == 20130717 - packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0863,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0882,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x088a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0897,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0898,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08aa,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0918,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0958,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0960,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 + packet(0x02c4,clif->pTickSend,2); + packet(0x0819,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pWalkToXY,2); + packet(0x0862,clif->pPartyBookingRegisterReq,2,4); + packet(0x0863,clif->pFriendsListAdd,2); + packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086c,clif->pDull/*,XXX*/); + packet(0x0882,clif->pUseSkillToPos,2,4,6,8); + packet(0x088a,clif->pHomMenu,2,4); + packet(0x088c,clif->pChangeDir,2,4); + packet(0x0897,clif->pItemListWindowSelected,2,4,8); + packet(0x0898,clif->pReqClickBuyingStore,2); + packet(0x089b,clif->pMoveToKafra,2,4); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x08a9,clif->pTakeItem,2); + packet(0x08aa,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0917,clif->pDropItem,2,4); + packet(0x0918,clif->pActionRequest,2,6); + packet(0x091d,clif->pWantToConnection,2,6,10,14,18); + packet(0x091e,clif->pUseSkillToId,2,4,6); + packet(0x092f,clif->pPartyInvite2,2); + packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0956,clif->pMoveFromKafra,2,4); + packet(0x0958,clif->pGetCharNameRequest,2); + packet(0x095b,clif->pStoragePassword,0); + packet(0x0960,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0967,clif->pSolveCharName,2); + packet(0x096a,clif->pReqCloseBuyingStore,0); #endif // 2013-07-24eRagexeRE, 2013-07-24fRagexeRE #if PACKETVER == 20130724 - packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0867,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0874,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0876,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0891,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0893,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0924,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x092b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0953,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0954,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0956,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0958,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x023b,clif->pReqCloseBuyingStore,0); + packet(0x035f,clif->pTickSend,2); + packet(0x0437,clif->pDull/*,XXX*/); + packet(0x085a,clif->pPartyBookingRegisterReq,2,4); + packet(0x085e,clif->pMoveFromKafra,2,4); + packet(0x0860,clif->pStoragePassword,0); + packet(0x0867,clif->pGetCharNameRequest,2); + packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0874,clif->pHomMenu,2,4); + packet(0x0876,clif->pActionRequest,2,6); + packet(0x0890,clif->pSearchStoreInfoNextPage,0); + packet(0x0891,clif->pDropItem,2,4); + packet(0x0893,clif->pWantToConnection,2,6,10,14,18); + packet(0x089c,clif->pUseSkillToPos,2,4,6,8); + packet(0x08ab,clif->pDull/*,XXX*/); + packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0924,clif->pReqClickBuyingStore,2); + packet(0x0927,clif->pPartyInvite2,2); + packet(0x092b,clif->pFriendsListAdd,2); + packet(0x092e,clif->pItemListWindowSelected,2,4,8); + packet(0x094a,clif->pTakeItem,2); + packet(0x0953,clif->pWalkToXY,2); + packet(0x0954,clif->pSolveCharName,2); + packet(0x0956,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0958,clif->pUseSkillToId,2,4,6); + packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095d,clif->pMoveToKafra,2,4); + packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0966,clif->pChangeDir,2,4); #endif // 2013-07-31cRagexeRE #if PACKETVER == 20130731 - packet(0x022d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0366,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0865,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x087e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0884,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0889,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0894,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x092b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0962,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 + packet(0x022d,clif->pFriendsListAdd,2); + packet(0x0366,clif->pSearchStoreInfoNextPage,0); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pChangeDir,2,4); + packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0863,clif->pReqClickBuyingStore,2); + packet(0x0865,clif->pUseSkillToId,2,4,6); + packet(0x0878,clif->pActionRequest,2,6); + packet(0x087e,clif->pReqCloseBuyingStore,0); + packet(0x0884,clif->pStoragePassword,0); + packet(0x0889,clif->pDull/*,XXX*/); + packet(0x088b,clif->pGetCharNameRequest,2); + packet(0x0894,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0895,clif->pDull/*,XXX*/); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0923,clif->pPartyBookingRegisterReq,2,4); + packet(0x0925,clif->pUseSkillToPos,2,4,6,8); + packet(0x092b,clif->pWantToConnection,2,6,10,14,18); + packet(0x092d,clif->pHomMenu,2,4); + packet(0x0935,clif->pTakeItem,2); + packet(0x0941,clif->pMoveToKafra,2,4); + packet(0x094c,clif->pMoveFromKafra,2,4); + packet(0x0956,clif->pPartyInvite2,2); + packet(0x0957,clif->pSolveCharName,2); + packet(0x0958,clif->pItemListWindowSelected,2,4,8); + packet(0x095b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095f,clif->pTickSend,2); + packet(0x0962,clif->pDropItem,2,4); #endif // 2013-08-07aRagexeRE #if PACKETVER == 20130807 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0887,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-08-14aRagexeRE #if PACKETVER == 20130814 - packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0873,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0874,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0887,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0896,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0923,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0937,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0947,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0959,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x0202,clif->pMoveToKafra,2,4); + packet(0x0281,clif->pFriendsListAdd,2); + packet(0x0368,clif->pWantToConnection,2,6,10,14,18); + packet(0x0815,clif->pDull/*,XXX*/); + packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0873,clif->pMoveFromKafra,2,4); + packet(0x0874,clif->pActionRequest,2,6); + packet(0x0885,clif->pStoragePassword,0); + packet(0x0887,clif->pUseSkillToPos,2,4,6,8); + packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088a,clif->pTickSend,2); + packet(0x088c,clif->pChangeDir,2,4); + packet(0x0895,clif->pReqClickBuyingStore,2); + packet(0x0896,clif->pDull/*,XXX*/); + packet(0x08a4,clif->pItemListWindowSelected,2,4,8); + packet(0x0923,clif->pSolveCharName,2); + packet(0x0926,clif->pTakeItem,2); + packet(0x0927,clif->pPartyInvite2,2); + packet(0x0936,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0937,clif->pGetCharNameRequest,2); + packet(0x093a,clif->pWalkToXY,2); + packet(0x0941,clif->pSearchStoreInfoNextPage,0); + packet(0x0947,clif->pUseSkillToId,2,4,6); + packet(0x094e,clif->pReqCloseBuyingStore,0); + packet(0x0958,clif->pHomMenu,2,4); + packet(0x0959,clif->pPartyBookingRegisterReq,2,4); + packet(0x095f,clif->pDropItem,2,4); + packet(0x0962,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2013-08-21dRagexeRE #if PACKETVER == 20130821 - packet(0x0202,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0437,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0438,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x07ec,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0892,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ad,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x093e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0947,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0967,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 + packet(0x0202,clif->pUseSkillToPos,2,4,6,8); + packet(0x0360,clif->pStoragePassword,0); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0437,clif->pMoveToKafra,2,4); + packet(0x0438,clif->pDull/*,XXX*/); + packet(0x07ec,clif->pItemListWindowSelected,2,4,8); + packet(0x0815,clif->pWalkToXY,2); + packet(0x0862,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0863,clif->pActionRequest,2,6); + packet(0x086e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0881,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x088d,clif->pTickSend,2); + packet(0x088f,clif->pFriendsListAdd,2); + packet(0x0892,clif->pReqClickBuyingStore,2); + packet(0x08a6,clif->pReqCloseBuyingStore,0); + packet(0x08ad,clif->pDull/*,XXX*/); + packet(0x091d,clif->pChangeDir,2,4); + packet(0x0923,clif->pWantToConnection,2,6,10,14,18); + packet(0x092d,clif->pGetCharNameRequest,2); + packet(0x093e,clif->pMoveFromKafra,2,4); + packet(0x0947,clif->pSearchStoreInfoNextPage,0); + packet(0x0954,clif->pUseSkillToId,2,4,6); + packet(0x095e,clif->pSolveCharName,2); + packet(0x0962,clif->pTakeItem,2); + packet(0x0964,clif->pDropItem,2,4); + packet(0x0967,clif->pPartyBookingRegisterReq,2,4); + packet(0x0969,clif->pPartyInvite2,2); #endif // 2013-08-28bRagexeRE, 2013-08-28cRagexeRE #if PACKETVER == 20130828 - packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0817,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0873,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0889,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a3,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08ac,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0917,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0919,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x091e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0923,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x095d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0364,clif->pDull/*,XXX*/); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x0817,clif->pItemListWindowSelected,2,4,8); + packet(0x0873,clif->pSearchStoreInfoNextPage,0); + packet(0x087e,clif->pDropItem,2,4); + packet(0x0889,clif->pHomMenu,2,4); + packet(0x0893,clif->pStoragePassword,0); + packet(0x089e,clif->pUseSkillToPos,2,4,6,8); + packet(0x089f,clif->pChangeDir,2,4); + packet(0x08a3,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08ac,clif->pGetCharNameRequest,2); + packet(0x0917,clif->pPartyBookingRegisterReq,2,4); + packet(0x0919,clif->pReqCloseBuyingStore,0); + packet(0x091e,clif->pTakeItem,2); + packet(0x0923,clif->pUseSkillToId,2,4,6); + packet(0x0924,clif->pTickSend,2); + packet(0x0928,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0929,clif->pMoveFromKafra,2,4); + packet(0x0930,clif->pSolveCharName,2); + packet(0x0944,clif->pFriendsListAdd,2); + packet(0x0946,clif->pDull/*,XXX*/); + packet(0x094a,clif->pPartyInvite2,2); + packet(0x094c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x094f,clif->pActionRequest,2,6); + packet(0x095d,clif->pWalkToXY,2); + packet(0x0966,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pWantToConnection,2,6,10,14,18); #endif // 2013-09-04bRagexeRE #if PACKETVER == 20130904 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0838,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pChangeDir,2,4); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0838,clif->pWantToConnection,2,6,10,14,18); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0937,clif->pFriendsListAdd,2); + packet(0x093a,clif->pHomMenu,2,4); + packet(0x0940,clif->pSearchStoreInfoNextPage,0); + packet(0x0956,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-09-11aRagexeRE, 2013-09-11bRagexeRE #if PACKETVER == 20130911 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0868,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0891,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0948,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0967,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0364,clif->pGetCharNameRequest,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pWantToConnection,2,6,10,14,18); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085c,clif->pPartyInvite2,2); + packet(0x0868,clif->pPartyBookingRegisterReq,2,4); + packet(0x086b,clif->pStoragePassword,0); + packet(0x086d,clif->pMoveFromKafra,2,4); + packet(0x087b,clif->pDull/*,XXX*/); + packet(0x0889,clif->pTakeItem,2); + packet(0x0891,clif->pHomMenu,2,4); + packet(0x08a4,clif->pItemListWindowSelected,2,4,8); + packet(0x091e,clif->pChangeDir,2,4); + packet(0x093a,clif->pDull/*,XXX*/); + packet(0x0940,clif->pTickSend,2); + packet(0x0948,clif->pFriendsListAdd,2); + packet(0x0967,clif->pDropItem,2,4); + packet(0x096a,clif->pMoveToKafra,2,4); #endif // 2013-09-17aRagexeRE #if PACKETVER == 20130917 - packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0838,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0863,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0895,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a8,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0918,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0921,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0957,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x096a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 + packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0811,clif->pActionRequest,2,6); + packet(0x0838,clif->pReqClickBuyingStore,2); + packet(0x083c,clif->pSearchStoreInfoNextPage,0); + packet(0x0863,clif->pMoveFromKafra,2,4); + packet(0x0868,clif->pPartyInvite2,2); + packet(0x086e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086f,clif->pTickSend,2); + packet(0x087a,clif->pTakeItem,2); + packet(0x087e,clif->pUseSkillToId,2,4,6); + packet(0x088a,clif->pStoragePassword,0); + packet(0x0895,clif->pSolveCharName,2); + packet(0x089b,clif->pReqCloseBuyingStore,0); + packet(0x089d,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a0,clif->pMoveToKafra,2,4); + packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a8,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0918,clif->pChangeDir,2,4); + packet(0x091c,clif->pDropItem,2,4); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x0921,clif->pGetCharNameRequest,2); + packet(0x0923,clif->pHomMenu,2,4); + packet(0x0934,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x094c,clif->pPartyBookingRegisterReq,2,4); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0957,clif->pUseSkillToPos,2,4,6,8); + packet(0x0959,clif->pItemListWindowSelected,2,4,8); + packet(0x095b,clif->pWalkToXY,2); + packet(0x096a,clif->pFriendsListAdd,2); #endif // 2013-09-25aRagexeRE, 2013-09-25bRagexeRE #if PACKETVER == 20130925 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0876,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0890,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0969,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086d,clif->pStoragePassword,0); + packet(0x086e,clif->pPartyInvite2,2); + packet(0x0875,clif->pHomMenu,2,4); + packet(0x0876,clif->pMoveFromKafra,2,4); + packet(0x087d,clif->pDropItem,2,4); + packet(0x0885,clif->pChangeDir,2,4); + packet(0x0887,clif->pWantToConnection,2,6,10,14,18); + packet(0x088f,clif->pFriendsListAdd,2); + packet(0x0890,clif->pDull/*,XXX*/); + packet(0x0940,clif->pUseSkillToPos,2,4,6,8); + packet(0x0958,clif->pTakeItem,2); + packet(0x095a,clif->pPartyBookingRegisterReq,2,4); + packet(0x095b,clif->pItemListWindowSelected,2,4,8); + packet(0x095c,clif->pMoveToKafra,2,4); + packet(0x0969,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-10-02aRagexeRE #if PACKETVER == 20131002 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pStoragePassword,0); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pTickSend,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pWalkToXY,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-10-08bRagexeRE #if PACKETVER == 20131008 - packet(0x0202,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0362,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x07e4,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0863,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0883,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0927,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0932,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0936,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0952,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x0202,clif->pGetCharNameRequest,2); + packet(0x0362,clif->pWantToConnection,2,6,10,14,18); + packet(0x07e4,clif->pActionRequest,2,6); + packet(0x083c,clif->pReqCloseBuyingStore,0); + packet(0x085d,clif->pDull/*,XXX*/); + packet(0x085e,clif->pWalkToXY,2); + packet(0x0863,clif->pPartyInvite2,2); + packet(0x086c,clif->pItemListWindowSelected,2,4,8); + packet(0x086d,clif->pSolveCharName,2); + packet(0x0883,clif->pMoveToKafra,2,4); + packet(0x0884,clif->pPartyBookingRegisterReq,2,4); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089c,clif->pChangeDir,2,4); + packet(0x08a9,clif->pUseSkillToId,2,4,6); + packet(0x0917,clif->pMoveFromKafra,2,4); + packet(0x091c,clif->pTakeItem,2); + packet(0x0923,clif->pSearchStoreInfoNextPage,0); + packet(0x0927,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0932,clif->pUseSkillToPos,2,4,6,8); + packet(0x0934,clif->pTickSend,2); + packet(0x0936,clif->pReqClickBuyingStore,2); + packet(0x093c,clif->pHomMenu,2,4); + packet(0x0947,clif->pStoragePassword,0); + packet(0x0952,clif->pDropItem,2,4); + packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095d,clif->pFriendsListAdd,2); + packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2013-10-16aRagexeRE, 2013-10-16bRagexeRE #if PACKETVER == 20131016 - packet(0x022d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0364,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0366,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x085a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0867,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0887,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0890,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0894,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0927,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0946,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0962,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x022d,clif->pMoveToKafra,2,4); + packet(0x0281,clif->pPartyInvite2,2); + packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0364,clif->pDropItem,2,4); + packet(0x0366,clif->pReqClickBuyingStore,2); + packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x085a,clif->pDull/*,XXX*/); + packet(0x085d,clif->pGetCharNameRequest,2); + packet(0x0863,clif->pUseSkillToId,2,4,6); + packet(0x0864,clif->pStoragePassword,0); + packet(0x0867,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086c,clif->pSearchStoreInfoNextPage,0); + packet(0x0870,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0875,clif->pItemListWindowSelected,2,4,8); + packet(0x0887,clif->pTakeItem,2); + packet(0x0888,clif->pHomMenu,2,4); + packet(0x088b,clif->pFriendsListAdd,2); + packet(0x0890,clif->pSolveCharName,2); + packet(0x0894,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x091e,clif->pMoveFromKafra,2,4); + packet(0x091f,clif->pWalkToXY,2); + packet(0x0927,clif->pTickSend,2); + packet(0x0946,clif->pPartyBookingRegisterReq,2,4); + packet(0x094e,clif->pReqCloseBuyingStore,0); + packet(0x095e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0962,clif->pActionRequest,2,6); + packet(0x0966,clif->pChangeDir,2,4); #endif // 2013-10-23aRagexeRE #if PACKETVER == 20131023 - packet(0x0366,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0819,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0835,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0923,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0935,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0937,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0944,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 + packet(0x0366,clif->pReqCloseBuyingStore,0); + packet(0x0438,clif->pPartyInvite2,2); + packet(0x0811,clif->pUseSkillToPos,2,4,6,8); + packet(0x0819,clif->pDropItem,2,4); + packet(0x0835,clif->pDull/*,XXX*/); + packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0862,clif->pDull/*,XXX*/); + packet(0x086e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0872,clif->pPartyBookingRegisterReq,2,4); + packet(0x0876,clif->pUseSkillToId,2,4,6); + packet(0x087f,clif->pSearchStoreInfoNextPage,0); + packet(0x0885,clif->pStoragePassword,0); + packet(0x088a,clif->pItemListWindowSelected,2,4,8); + packet(0x088b,clif->pTakeItem,2); + packet(0x088f,clif->pMoveToKafra,2,4); + packet(0x08a7,clif->pHomMenu,2,4); + packet(0x08ab,clif->pChangeDir,2,4); + packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); + packet(0x0919,clif->pSolveCharName,2); + packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0923,clif->pActionRequest,2,6); + packet(0x0924,clif->pTickSend,2); + packet(0x0935,clif->pReqClickBuyingStore,2); + packet(0x0937,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0944,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x094a,clif->pFriendsListAdd,2); + packet(0x0951,clif->pGetCharNameRequest,2); + packet(0x0954,clif->pMoveFromKafra,2,4); + packet(0x095b,clif->pWalkToXY,2); #endif // 2013-10-30aRagexeRE #if PACKETVER == 20131030 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pHomMenu,2,4); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pWantToConnection,2,6,10,14,18); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pPartyBookingRegisterReq,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087d,clif->pFriendsListAdd,2); + packet(0x0887,clif->pStoragePassword,0); + packet(0x08a2,clif->pDull/*,XXX*/); + packet(0x0925,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-11-06aRagexeRE #if PACKETVER == 20131106 - packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0369,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0436,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0817,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0870,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0887,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0891,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0894,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0919,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0942,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0948,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0954,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 + packet(0x0281,clif->pGetCharNameRequest,2); + packet(0x0363,clif->pUseSkillToId,2,4,6); + packet(0x0369,clif->pItemListWindowSelected,2,4,8); + packet(0x0436,clif->pStoragePassword,0); + packet(0x0802,clif->pChangeDir,2,4); + packet(0x0817,clif->pDull/*,XXX*/); + packet(0x0866,clif->pWalkToXY,2); + packet(0x0867,clif->pMoveToKafra,2,4); + packet(0x0870,clif->pReqCloseBuyingStore,0); + packet(0x0875,clif->pDropItem,2,4); + packet(0x0887,clif->pTickSend,2); + packet(0x0891,clif->pSolveCharName,2); + packet(0x0893,clif->pPartyBookingRegisterReq,2,4); + packet(0x0894,clif->pHomMenu,2,4); + packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); + packet(0x0919,clif->pSearchStoreInfoNextPage,0); + packet(0x091d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0929,clif->pMoveFromKafra,2,4); + packet(0x0935,clif->pFriendsListAdd,2); + packet(0x093b,clif->pTakeItem,2); + packet(0x0942,clif->pUseSkillToPos,2,4,6,8); + packet(0x0946,clif->pReqClickBuyingStore,2); + packet(0x0947,clif->pActionRequest,2,6); + packet(0x0948,clif->pDull/*,XXX*/); + packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0954,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095d,clif->pPartyInvite2,2); + packet(0x0962,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0967,clif->pReqTradeBuyingStore,2,4,8,12); #endif // 2013-11-13aRagexeRE #if PACKETVER == 20131113 - packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0879,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0920,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0928,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x092f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0934,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0936,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0949,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0950,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x095f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0964,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 + packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086d,clif->pReqCloseBuyingStore,0); + packet(0x0879,clif->pSearchStoreInfoNextPage,0); + packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x088f,clif->pDropItem,2,4); + packet(0x089a,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a4,clif->pItemListWindowSelected,2,4,8); + packet(0x08a8,clif->pDull/*,XXX*/); + packet(0x091c,clif->pMoveFromKafra,2,4); + packet(0x0920,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0926,clif->pHomMenu,2,4); + packet(0x0927,clif->pPartyInvite2,2); + packet(0x0928,clif->pStoragePassword,0); + packet(0x0929,clif->pTickSend,2); + packet(0x092b,clif->pTakeItem,2); + packet(0x092c,clif->pFriendsListAdd,2); + packet(0x092d,clif->pReqClickBuyingStore,2); + packet(0x092e,clif->pGetCharNameRequest,2); + packet(0x092f,clif->pSolveCharName,2); + packet(0x0934,clif->pPartyBookingRegisterReq,2,4); + packet(0x0936,clif->pWalkToXY,2); + packet(0x093c,clif->pChangeDir,2,4); + packet(0x0949,clif->pUseSkillToPos,2,4,6,8); + packet(0x0950,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095d,clif->pActionRequest,2,6); + packet(0x095f,clif->pUseSkillToId,2,4,6); + packet(0x0960,clif->pMoveToKafra,2,4); + packet(0x0964,clif->pDull/*,XXX*/); + packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); #endif // 2013-11-20eRagexeRE #if PACKETVER == 20131120 - packet(0x0361,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0368,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0802,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0817,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x085f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0884,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a8,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0917,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0926,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0940,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0950,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x095e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x0361,clif->pSolveCharName,2); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0368,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0802,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0811,clif->pDull/*,XXX*/); + packet(0x0817,clif->pTickSend,2); + packet(0x085a,clif->pItemListWindowSelected,2,4,8); + packet(0x085f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0862,clif->pReqCloseBuyingStore,0); + packet(0x0884,clif->pUseSkillToId,2,4,6); + packet(0x088c,clif->pWantToConnection,2,6,10,14,18); + packet(0x088d,clif->pFriendsListAdd,2); + packet(0x089e,clif->pTakeItem,2); + packet(0x08a1,clif->pHomMenu,2,4); + packet(0x08a4,clif->pStoragePassword,0); + packet(0x08a8,clif->pActionRequest,2,6); + packet(0x0917,clif->pDropItem,2,4); + packet(0x0926,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0927,clif->pMoveToKafra,2,4); + packet(0x092b,clif->pWalkToXY,2); + packet(0x092d,clif->pSearchStoreInfoNextPage,0); + packet(0x093e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0940,clif->pDull/*,XXX*/); + packet(0x0950,clif->pGetCharNameRequest,2); + packet(0x0953,clif->pPartyInvite2,2); + packet(0x0955,clif->pReqClickBuyingStore,2); + packet(0x0956,clif->pChangeDir,2,4); + packet(0x095e,clif->pPartyBookingRegisterReq,2,4); #endif // 2013-11-27aRagexeRE, 2013-11-27bRagexeRE #if PACKETVER == 20131127 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0366,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0894,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0930,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x095c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0364,clif->pGetCharNameRequest,2); + packet(0x0365,clif->pWalkToXY,2); + packet(0x0366,clif->pItemListWindowSelected,2,4,8); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pMoveFromKafra,2,4); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0881,clif->pDull/*,XXX*/); + packet(0x0884,clif->pHomMenu,2,4); + packet(0x088d,clif->pChangeDir,2,4); + packet(0x0894,clif->pStoragePassword,0); + packet(0x089e,clif->pDull/*,XXX*/); + packet(0x0930,clif->pPartyBookingRegisterReq,2,4); + packet(0x093a,clif->pFriendsListAdd,2); + packet(0x0940,clif->pTickSend,2); + packet(0x094c,clif->pTakeItem,2); + packet(0x094f,clif->pDropItem,2,4); + packet(0x095c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0967,clif->pPartyInvite2,2); + packet(0x096a,clif->pMoveToKafra,2,4); #endif // 2013-12-04dRagexeRE, 2013-12-04eRagexeRE #if PACKETVER == 20131204 - packet(0x0365,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0366,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0862,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0869,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0879,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0882,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0928,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x092d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0958,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0961,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0967,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 + packet(0x0365,clif->pReqCloseBuyingStore,0); + packet(0x0366,clif->pTickSend,2); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x085a,clif->pPartyInvite2,2); + packet(0x0862,clif->pChangeDir,2,4); + packet(0x0869,clif->pUseSkillToPos,2,4,6,8); + packet(0x086c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0877,clif->pWantToConnection,2,6,10,14,18); + packet(0x0879,clif->pSolveCharName,2); + packet(0x087f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0882,clif->pFriendsListAdd,2); + packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a4,clif->pDropItem,2,4); + packet(0x08a7,clif->pTakeItem,2); + packet(0x08ad,clif->pGetCharNameRequest,2); + packet(0x091f,clif->pHomMenu,2,4); + packet(0x0928,clif->pActionRequest,2,6); + packet(0x092d,clif->pUseSkillToId,2,4,6); + packet(0x092f,clif->pWalkToXY,2); + packet(0x0932,clif->pSearchStoreInfoNextPage,0); + packet(0x093b,clif->pDull/*,XXX*/); + packet(0x0941,clif->pMoveToKafra,2,4); + packet(0x0951,clif->pItemListWindowSelected,2,4,8); + packet(0x0958,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0961,clif->pDull/*,XXX*/); + packet(0x0967,clif->pMoveFromKafra,2,4); #endif // 2013-12-11cRagexeRE, 2013-12-11eRagexeRE #if PACKETVER == 20131211 - packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a3,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ab,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x092b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0931,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pUseSkillToId,2,4,6); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0366,clif->pTakeItem,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pFriendsListAdd,2); + packet(0x0865,clif->pPartyInvite2,2); + packet(0x086e,clif->pItemListWindowSelected,2,4,8); + packet(0x0873,clif->pWantToConnection,2,6,10,14,18); + packet(0x0881,clif->pDull/*,XXX*/); + packet(0x0886,clif->pHomMenu,2,4); + packet(0x0892,clif->pMoveToKafra,2,4); + packet(0x08a3,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a4,clif->pChangeDir,2,4); + packet(0x08ab,clif->pDropItem,2,4); + packet(0x092b,clif->pStoragePassword,0); + packet(0x0931,clif->pMoveFromKafra,2,4); + packet(0x094c,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-12-18aRagexeRE #if PACKETVER == 20131218 - packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ab,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0947,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pHomMenu,2,4); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085c,clif->pStoragePassword,0); + packet(0x087b,clif->pDull/*,XXX*/); + packet(0x08ab,clif->pFriendsListAdd,2); + packet(0x092f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0947,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-12-23bRagexeRE, 2013-12-23xRagexeRE #if PACKETVER == 20131223 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x08a4,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2013-12-30aRagexeRE #if PACKETVER == 20131230 - packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x02c4,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0369,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0871,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x087b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0926,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x093d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0943,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0968,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0969,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x096a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x022d,clif->pItemListWindowSelected,2,4,8); + packet(0x02c4,clif->pUseSkillToId,2,4,6); + packet(0x035f,clif->pWalkToXY,2); + packet(0x0365,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0369,clif->pSearchStoreInfoNextPage,0); + packet(0x0438,clif->pTickSend,2); + packet(0x0860,clif->pDropItem,2,4); + packet(0x0871,clif->pActionRequest,2,6); + packet(0x087b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087e,clif->pDull/*,XXX*/); + packet(0x087f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0895,clif->pMoveFromKafra,2,4); + packet(0x0898,clif->pSolveCharName,2); + packet(0x089c,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a9,clif->pPartyInvite2,2); + packet(0x091d,clif->pStoragePassword,0); + packet(0x091e,clif->pUseSkillToPos,2,4,6,8); + packet(0x091f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0926,clif->pGetCharNameRequest,2); + packet(0x092a,clif->pTakeItem,2); + packet(0x093d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x093e,clif->pDull/*,XXX*/); + packet(0x0943,clif->pFriendsListAdd,2); + packet(0x0949,clif->pHomMenu,2,4); + packet(0x094a,clif->pChangeDir,2,4); + packet(0x094c,clif->pReqCloseBuyingStore,0); + packet(0x0968,clif->pMoveToKafra,2,4); + packet(0x0969,clif->pReqClickBuyingStore,2); + packet(0x096a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2014-01-08bRagexeRE, 2014-01-08cRagexeRE #if PACKETVER == 20140108 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0936,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexeRE #if PACKETVER == 20140115 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0367,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0965,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pDropItem,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0367,clif->pMoveFromKafra,2,4); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pGetCharNameRequest,2); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0865,clif->pStoragePassword,0); + packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088a,clif->pDull/*,XXX*/); + packet(0x088e,clif->pMoveToKafra,2,4); + packet(0x089b,clif->pFriendsListAdd,2); + packet(0x08a7,clif->pChangeDir,2,4); + packet(0x092d,clif->pHomMenu,2,4); + packet(0x0940,clif->pTakeItem,2); + packet(0x095b,clif->pDull/*,XXX*/); + packet(0x095d,clif->pPartyInvite2,2); + packet(0x0965,clif->pItemListWindowSelected,2,4,8); + packet(0x0966,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pPartyBookingRegisterReq,2,4); #endif // 2014-01-22aRagexeRE #if PACKETVER == 20140122 - packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0811,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0872,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0917,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0925,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x092f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0941,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x0360,clif->pActionRequest,2,6); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x0811,clif->pReqCloseBuyingStore,0); + packet(0x0863,clif->pHomMenu,2,4); + packet(0x0870,clif->pPartyBookingRegisterReq,2,4); + packet(0x0871,clif->pWantToConnection,2,6,10,14,18); + packet(0x0872,clif->pPartyInvite2,2); + packet(0x088c,clif->pDull/*,XXX*/); + packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0893,clif->pFriendsListAdd,2); + packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089d,clif->pGetCharNameRequest,2); + packet(0x08a2,clif->pDull/*,XXX*/); + packet(0x08aa,clif->pDropItem,2,4); + packet(0x0917,clif->pTickSend,2); + packet(0x091a,clif->pChangeDir,2,4); + packet(0x0925,clif->pWalkToXY,2); + packet(0x092f,clif->pMoveToKafra,2,4); + packet(0x0940,clif->pUseSkillToId,2,4,6); + packet(0x0941,clif->pSolveCharName,2); + packet(0x0942,clif->pTakeItem,2); + packet(0x094b,clif->pSearchStoreInfoNextPage,0); + packet(0x094c,clif->pMoveFromKafra,2,4); + packet(0x0950,clif->pUseSkillToPos,2,4,6,8); + packet(0x0952,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0955,clif->pStoragePassword,0); + packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095d,clif->pItemListWindowSelected,2,4,8); + packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2014-01-29bRagexeRE #if PACKETVER == 20140129 - packet(0x0281,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0885,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0921,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0924,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x092c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0958,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pUseSkillToId,2,4,6); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pDull/*,XXX*/); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0367,clif->pDropItem,2,4); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pChangeDir,2,4); + packet(0x0802,clif->pWantToConnection,2,6,10,14,18); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pDull/*,XXX*/); + packet(0x0884,clif->pHomMenu,2,4); + packet(0x0885,clif->pTakeItem,2); + packet(0x0889,clif->pMoveFromKafra,2,4); + packet(0x0921,clif->pPartyBookingRegisterReq,2,4); + packet(0x0924,clif->pItemListWindowSelected,2,4,8); + packet(0x092c,clif->pStoragePassword,0); + packet(0x094d,clif->pMoveToKafra,2,4); + packet(0x0958,clif->pPartyInvite2,2); + packet(0x0961,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-02-05bRagexeRE #if PACKETVER == 20140205 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0938,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0938,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-02-12aRagexeRE #if PACKETVER == 20140212 - packet(0x02c4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0369,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x089d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a1,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a7,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0928,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0930,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0936,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0952,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0953,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0960,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 + packet(0x02c4,clif->pSearchStoreInfoNextPage,0); + packet(0x0369,clif->pPartyBookingRegisterReq,2,4); + packet(0x0438,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086e,clif->pUseSkillToId,2,4,6); + packet(0x0874,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0877,clif->pReqClickBuyingStore,2); + packet(0x0878,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087e,clif->pWalkToXY,2); + packet(0x0888,clif->pMoveFromKafra,2,4); + packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x089d,clif->pUseSkillToPos,2,4,6,8); + packet(0x089e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a0,clif->pStoragePassword,0); + packet(0x08a1,clif->pPartyInvite2,2); + packet(0x08a7,clif->pItemListWindowSelected,2,4,8); + packet(0x08ac,clif->pMoveToKafra,2,4); + packet(0x08ad,clif->pDropItem,2,4); + packet(0x0919,clif->pChangeDir,2,4); + packet(0x091b,clif->pFriendsListAdd,2); + packet(0x0928,clif->pSolveCharName,2); + packet(0x0930,clif->pTickSend,2); + packet(0x0934,clif->pActionRequest,2,6); + packet(0x0936,clif->pDull/*,XXX*/); + packet(0x093d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0944,clif->pHomMenu,2,4); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0952,clif->pGetCharNameRequest,2); + packet(0x0953,clif->pTakeItem,2); + packet(0x0960,clif->pReqCloseBuyingStore,0); #endif // 2014-02-19aRagexeRE, 2014-02-19bRagexeRE #if PACKETVER == 20140219 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x085d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0860,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0868,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0889,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0921,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0949,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0953,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x095a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0961,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 + packet(0x0202,clif->pFriendsListAdd,2); + packet(0x0360,clif->pDull/*,XXX*/); + packet(0x0364,clif->pSolveCharName,2); + packet(0x0802,clif->pTakeItem,2); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pUseSkillToId,2,4,6); + packet(0x085b,clif->pReqClickBuyingStore,2); + packet(0x085c,clif->pUseSkillToPos,2,4,6,8); + packet(0x085d,clif->pWalkToXY,2); + packet(0x085f,clif->pGetCharNameRequest,2); + packet(0x0860,clif->pHomMenu,2,4); + packet(0x0868,clif->pStoragePassword,0); + packet(0x086f,clif->pPartyInvite2,2); + packet(0x087c,clif->pMoveToKafra,2,4); + packet(0x0889,clif->pDull/*,XXX*/); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x089f,clif->pDropItem,2,4); + packet(0x08a6,clif->pChangeDir,2,4); + packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08ac,clif->pMoveFromKafra,2,4); + packet(0x0921,clif->pActionRequest,2,6); + packet(0x0927,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0939,clif->pItemListWindowSelected,2,4,8); + packet(0x0946,clif->pWantToConnection,2,6,10,14,18); + packet(0x0949,clif->pPartyBookingRegisterReq,2,4); + packet(0x0953,clif->pSearchStoreInfoNextPage,0); + packet(0x095a,clif->pReqCloseBuyingStore,0); + packet(0x0961,clif->pTickSend,2); #endif // 2014-02-26aRagexeRE, 2014-02-26bRagexeRE #if PACKETVER == 20140226 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0877,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0887,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0921,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0941,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0362,clif->pFriendsListAdd,2); + packet(0x0364,clif->pStoragePassword,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pChangeDir,2,4); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pHomMenu,2,4); + packet(0x0877,clif->pWantToConnection,2,6,10,14,18); + packet(0x0887,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0894,clif->pDropItem,2,4); + packet(0x0895,clif->pMoveFromKafra,2,4); + packet(0x091a,clif->pMoveToKafra,2,4); + packet(0x0921,clif->pPartyInvite2,2); + packet(0x0931,clif->pDull/*,XXX*/); + packet(0x0941,clif->pPartyBookingRegisterReq,2,4); + packet(0x0962,clif->pDull/*,XXX*/); + packet(0x0964,clif->pTakeItem,2); + packet(0x0969,clif->pItemListWindowSelected,2,4,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-03-05aRagexeRE, 2014-03-05bRagexeRE #if PACKETVER == 20140305 - packet(0x0202,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pTakeItem,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pUseSkillToPos,2,4,6,8); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pWantToConnection,2,6,10,14,18); + packet(0x07e4,clif->pFriendsListAdd,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pChangeDir,2,4); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0878,clif->pDull/*,XXX*/); + packet(0x0934,clif->pHomMenu,2,4); + packet(0x095e,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-03-12bRagexeRE #if PACKETVER == 20140312 - packet(0x0202,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x086f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0894,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0948,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x094c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0957,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x0202,clif->pUseSkillToId,2,4,6); + packet(0x023b,clif->pDull/*,XXX*/); + packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085e,clif->pReqClickBuyingStore,2); + packet(0x086f,clif->pTickSend,2); + packet(0x0889,clif->pWantToConnection,2,6,10,14,18); + packet(0x088c,clif->pUseSkillToPos,2,4,6,8); + packet(0x088d,clif->pItemListWindowSelected,2,4,8); + packet(0x088e,clif->pActionRequest,2,6); + packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0894,clif->pWalkToXY,2); + packet(0x089b,clif->pGetCharNameRequest,2); + packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x089e,clif->pDropItem,2,4); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x08a9,clif->pFriendsListAdd,2); + packet(0x08ad,clif->pSolveCharName,2); + packet(0x091b,clif->pSearchStoreInfoNextPage,0); + packet(0x091c,clif->pPartyInvite2,2); + packet(0x091e,clif->pHomMenu,2,4); + packet(0x092a,clif->pTakeItem,2); + packet(0x0948,clif->pReqCloseBuyingStore,0); + packet(0x094a,clif->pPartyBookingRegisterReq,2,4); + packet(0x094b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x094c,clif->pChangeDir,2,4); + packet(0x0957,clif->pMoveFromKafra,2,4); + packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095e,clif->pStoragePassword,0); + packet(0x0966,clif->pMoveToKafra,2,4); #endif // 2014-03-19aRagexeRE #if PACKETVER == 20140319 - packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0811,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0815,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0864,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0883,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a2,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0933,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0944,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0947,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0955,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0964,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x096a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x02c4,clif->pTakeItem,2); + packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0802,clif->pSearchStoreInfoNextPage,0); + packet(0x0811,clif->pReqClickBuyingStore,2); + packet(0x0815,clif->pHomMenu,2,4); + packet(0x085a,clif->pWalkToXY,2); + packet(0x0864,clif->pActionRequest,2,6); + packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0866,clif->pChangeDir,2,4); + packet(0x086e,clif->pDull/*,XXX*/); + packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0883,clif->pDropItem,2,4); + packet(0x088e,clif->pPartyInvite2,2); + packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0893,clif->pDull/*,XXX*/); + packet(0x089f,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a2,clif->pMoveToKafra,2,4); + packet(0x091f,clif->pItemListWindowSelected,2,4,8); + packet(0x0923,clif->pWantToConnection,2,6,10,14,18); + packet(0x0933,clif->pReqCloseBuyingStore,0); + packet(0x0942,clif->pStoragePassword,0); + packet(0x0944,clif->pUseSkillToId,2,4,6); + packet(0x0947,clif->pMoveFromKafra,2,4); + packet(0x094c,clif->pGetCharNameRequest,2); + packet(0x0954,clif->pFriendsListAdd,2); + packet(0x0955,clif->pTickSend,2); + packet(0x0961,clif->pPartyBookingRegisterReq,2,4); + packet(0x0964,clif->pSolveCharName,2); + packet(0x096a,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2014-03-26cRagexeRE #if PACKETVER == 20140326 - packet(0x0362,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x083c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0887,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08aa,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0946,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0969,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x0362,clif->pGetCharNameRequest,2); + packet(0x0365,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x07ec,clif->pTakeItem,2); + packet(0x083c,clif->pReqClickBuyingStore,2); + packet(0x085b,clif->pReqCloseBuyingStore,0); + packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0869,clif->pPartyBookingRegisterReq,2,4); + packet(0x086b,clif->pMoveFromKafra,2,4); + packet(0x087c,clif->pWalkToXY,2); + packet(0x087e,clif->pFriendsListAdd,2); + packet(0x087f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0887,clif->pDull/*,XXX*/); + packet(0x0898,clif->pDropItem,2,4); + packet(0x08aa,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); + packet(0x0918,clif->pTickSend,2); + packet(0x0928,clif->pSearchStoreInfoNextPage,0); + packet(0x092a,clif->pStoragePassword,0); + packet(0x093d,clif->pActionRequest,2,6); + packet(0x0942,clif->pHomMenu,2,4); + packet(0x0945,clif->pItemListWindowSelected,2,4,8); + packet(0x0946,clif->pPartyInvite2,2); + packet(0x0956,clif->pChangeDir,2,4); + packet(0x0959,clif->pMoveToKafra,2,4); + packet(0x095a,clif->pSolveCharName,2); + packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0969,clif->pUseSkillToId,2,4,6); #endif // 2014-04-02eRagexeRE, 2014-04-02fRagexeRE #if PACKETVER == 20140402 - packet(0x023b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0364,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x085b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x085d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0867,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0868,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0882,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0890,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0896,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0926,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x093f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0944,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0946,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x094c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0950,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0965,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x023b,clif->pReqClickBuyingStore,2); + packet(0x0360,clif->pChangeDir,2,4); + packet(0x0364,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pSolveCharName,2); + packet(0x085b,clif->pMoveFromKafra,2,4); + packet(0x085d,clif->pSearchStoreInfoNextPage,0); + packet(0x0867,clif->pReqCloseBuyingStore,0); + packet(0x0868,clif->pUseSkillToId,2,4,6); + packet(0x0882,clif->pDropItem,2,4); + packet(0x0883,clif->pItemListWindowSelected,2,4,8); + packet(0x088a,clif->pGetCharNameRequest,2); + packet(0x088c,clif->pDull/*,XXX*/); + packet(0x0890,clif->pPartyInvite2,2); + packet(0x0896,clif->pHomMenu,2,4); + packet(0x089a,clif->pFriendsListAdd,2); + packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); + packet(0x091f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0920,clif->pWantToConnection,2,6,10,14,18); + packet(0x0926,clif->pStoragePassword,0); + packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0933,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x093f,clif->pWalkToXY,2); + packet(0x0944,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0946,clif->pActionRequest,2,6); + packet(0x094c,clif->pDull/*,XXX*/); + packet(0x0950,clif->pTickSend,2); + packet(0x0958,clif->pTakeItem,2); + packet(0x095c,clif->pMoveToKafra,2,4); + packet(0x0965,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2014-04-09aRagexeRE #if PACKETVER == 20140409 - packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x085b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x087e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0883,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0884,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0890,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0896,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a2,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08a7,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a9,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0918,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x092e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0942,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0947,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x0819,clif->pMoveFromKafra,2,4); + packet(0x085b,clif->pSolveCharName,2); + packet(0x0868,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086a,clif->pItemListWindowSelected,2,4,8); + packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0873,clif->pReqCloseBuyingStore,0); + packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x087e,clif->pTickSend,2); + packet(0x0883,clif->pWalkToXY,2); + packet(0x0884,clif->pGetCharNameRequest,2); + packet(0x088a,clif->pDull/*,XXX*/); + packet(0x0890,clif->pTakeItem,2); + packet(0x0893,clif->pActionRequest,2,6); + packet(0x0896,clif->pUseSkillToId,2,4,6); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x08a2,clif->pDull/*,XXX*/); + packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a6,clif->pSearchStoreInfoNextPage,0); + packet(0x08a7,clif->pChangeDir,2,4); + packet(0x08a9,clif->pStoragePassword,0); + packet(0x0918,clif->pDropItem,2,4); + packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x092e,clif->pPartyInvite2,2); + packet(0x0942,clif->pMoveToKafra,2,4); + packet(0x0947,clif->pHomMenu,2,4); + packet(0x094c,clif->pPartyBookingRegisterReq,2,4); + packet(0x095a,clif->pReqClickBuyingStore,2); + packet(0x095e,clif->pWantToConnection,2,6,10,14,18); #endif // 2014-04-16aRagexeRE #if PACKETVER == 20140416 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x095c,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-04-23aRagexeRE #if PACKETVER == 20140423 - packet(0x022d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0811,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x083c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x086f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0890,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0898,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x089d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08ad,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x091a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x022d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0360,clif->pStoragePassword,0); + packet(0x0436,clif->pFriendsListAdd,2); + packet(0x07e4,clif->pTakeItem,2); + packet(0x0811,clif->pMoveFromKafra,2,4); + packet(0x083c,clif->pChangeDir,2,4); + packet(0x085a,clif->pSearchStoreInfoNextPage,0); + packet(0x085b,clif->pWalkToXY,2); + packet(0x0862,clif->pMoveToKafra,2,4); + packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0866,clif->pWantToConnection,2,6,10,14,18); + packet(0x086b,clif->pDropItem,2,4); + packet(0x086f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0873,clif->pItemListWindowSelected,2,4,8); + packet(0x088b,clif->pSolveCharName,2); + packet(0x0890,clif->pUseSkillToId,2,4,6); + packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0896,clif->pActionRequest,2,6); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0898,clif->pUseSkillToPos,2,4,6,8); + packet(0x089b,clif->pReqClickBuyingStore,2); + packet(0x089d,clif->pGetCharNameRequest,2); + packet(0x089f,clif->pReqCloseBuyingStore,0); + packet(0x08a8,clif->pHomMenu,2,4); + packet(0x08ad,clif->pDull/*,XXX*/); + packet(0x091a,clif->pTickSend,2); + packet(0x0920,clif->pPartyInvite2,2); + packet(0x094f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095e,clif->pDull/*,XXX*/); #endif // 2014-04-30aRagexeRE #if PACKETVER == 20140430 - packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x035f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0860,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0871,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0884,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0899,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a1,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0940,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0953,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 + packet(0x023b,clif->pTickSend,2); + packet(0x035f,clif->pStoragePassword,0); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pUseSkillToId,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pDropItem,2,4); + packet(0x0860,clif->pFriendsListAdd,2); + packet(0x0870,clif->pPartyInvite2,2); + packet(0x0871,clif->pHomMenu,2,4); + packet(0x0875,clif->pMoveFromKafra,2,4); + packet(0x087f,clif->pTakeItem,2); + packet(0x0884,clif->pPartyBookingRegisterReq,2,4); + packet(0x0899,clif->pChangeDir,2,4); + packet(0x08a1,clif->pDull/*,XXX*/); + packet(0x093b,clif->pItemListWindowSelected,2,4,8); + packet(0x0940,clif->pGetCharNameRequest,2); + packet(0x094b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0953,clif->pDull/*,XXX*/); + packet(0x0956,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pSolveCharName,2); #endif // 2014-05-08bRagexeRE #if PACKETVER == 20140508 - packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x089b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0932,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0934,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x022d,clif->pSolveCharName,2); + packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pChangeDir,2,4); + packet(0x0366,clif->pPartyInvite2,2); + packet(0x0368,clif->pItemListWindowSelected,2,4,8); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pHomMenu,2,4); + packet(0x0802,clif->pGetCharNameRequest,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0861,clif->pTakeItem,2); + packet(0x0886,clif->pMoveToKafra,2,4); + packet(0x089b,clif->pWantToConnection,2,6,10,14,18); + packet(0x08ab,clif->pDull/*,XXX*/); + packet(0x0927,clif->pStoragePassword,0); + packet(0x0930,clif->pMoveFromKafra,2,4); + packet(0x0932,clif->pDropItem,2,4); + packet(0x0934,clif->pDull/*,XXX*/); + packet(0x094e,clif->pFriendsListAdd,2); + packet(0x096a,clif->pPartyBookingRegisterReq,2,4); #endif // 2014-05-14bRagexeRE, 2014-05-14cRagexeRE #if PACKETVER == 20140514 - packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0817,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0876,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0895,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0921,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x096a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 + packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0817,clif->pDull/*,XXX*/); + packet(0x0865,clif->pActionRequest,2,6); + packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0876,clif->pUseSkillToId,2,4,6); + packet(0x0877,clif->pDull/*,XXX*/); + packet(0x087d,clif->pItemListWindowSelected,2,4,8); + packet(0x0885,clif->pStoragePassword,0); + packet(0x0886,clif->pTickSend,2); + packet(0x088a,clif->pChangeDir,2,4); + packet(0x088b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0895,clif->pTakeItem,2); + packet(0x089a,clif->pSolveCharName,2); + packet(0x089c,clif->pFriendsListAdd,2); + packet(0x08a5,clif->pGetCharNameRequest,2); + packet(0x0918,clif->pPartyBookingRegisterReq,2,4); + packet(0x091d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0921,clif->pSearchStoreInfoNextPage,0); + packet(0x0925,clif->pReqClickBuyingStore,2); + packet(0x092c,clif->pMoveToKafra,2,4); + packet(0x092f,clif->pUseSkillToPos,2,4,6,8); + packet(0x094d,clif->pReqCloseBuyingStore,0); + packet(0x094e,clif->pMoveFromKafra,2,4); + packet(0x0958,clif->pHomMenu,2,4); + packet(0x095f,clif->pWalkToXY,2); + packet(0x0962,clif->pPartyInvite2,2); + packet(0x0965,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x096a,clif->pDropItem,2,4); #endif // 2014-05-21aRagexeRE #if PACKETVER == 20140521 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0869,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x089c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0968,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0869,clif->pStoragePassword,0); + packet(0x088b,clif->pDull/*,XXX*/); + packet(0x088d,clif->pChangeDir,2,4); + packet(0x089c,clif->pFriendsListAdd,2); + packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); + packet(0x0968,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-05-28aRagexeRE #if PACKETVER == 20140528 - packet(0x0202,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0862,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0875,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0877,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x088f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0894,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a8,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0930,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x093a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x093f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x094b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x095f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0963,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 + packet(0x0202,clif->pWalkToXY,2); + packet(0x0360,clif->pStoragePassword,0); + packet(0x085f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0862,clif->pSolveCharName,2); + packet(0x0872,clif->pHomMenu,2,4); + packet(0x0875,clif->pDropItem,2,4); + packet(0x0877,clif->pTickSend,2); + packet(0x0879,clif->pMoveFromKafra,2,4); + packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x088f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0894,clif->pDull/*,XXX*/); + packet(0x0896,clif->pItemListWindowSelected,2,4,8); + packet(0x089d,clif->pTakeItem,2); + packet(0x08a4,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a8,clif->pSearchStoreInfoNextPage,0); + packet(0x08ab,clif->pDull/*,XXX*/); + packet(0x091d,clif->pFriendsListAdd,2); + packet(0x0929,clif->pActionRequest,2,6); + packet(0x0930,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0938,clif->pReqCloseBuyingStore,0); + packet(0x093a,clif->pMoveToKafra,2,4); + packet(0x093f,clif->pPartyInvite2,2); + packet(0x094a,clif->pReqClickBuyingStore,2); + packet(0x094b,clif->pChangeDir,2,4); + packet(0x095f,clif->pGetCharNameRequest,2); + packet(0x0963,clif->pUseSkillToId,2,4,6); + packet(0x0964,clif->pWantToConnection,2,6,10,14,18); + packet(0x0966,clif->pReqTradeBuyingStore,2,4,8,12); #endif // 2014-06-05aRagexeRE #if PACKETVER == 20140605 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0921,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pReqCloseBuyingStore,0); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pActionRequest,2,6); + packet(0x0369,clif->pWantToConnection,2,6,10,14,18); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pChangeDir,2,4); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0921,clif->pStoragePassword,0); + packet(0x0931,clif->pHomMenu,2,4); + packet(0x0940,clif->pSolveCharName,2); + packet(0x094c,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-06-11bRagexeRE #if PACKETVER == 20140611 - packet(0x0364,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0438,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x07e4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0838,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0864,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0867,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0878,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0891,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0893,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0894,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0924,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0950,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0951,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0958,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0965,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0969,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x0364,clif->pReqCloseBuyingStore,0); + packet(0x0438,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x07e4,clif->pMoveToKafra,2,4); + packet(0x0838,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0864,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0867,clif->pTickSend,2); + packet(0x086c,clif->pDull/*,XXX*/); + packet(0x0874,clif->pPartyInvite2,2); + packet(0x0878,clif->pTakeItem,2); + packet(0x088c,clif->pUseSkillToPos,2,4,6,8); + packet(0x0891,clif->pActionRequest,2,6); + packet(0x0893,clif->pWalkToXY,2); + packet(0x0894,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x089b,clif->pFriendsListAdd,2); + packet(0x08a1,clif->pUseSkillToId,2,4,6); + packet(0x08a2,clif->pDull/*,XXX*/); + packet(0x0924,clif->pGetCharNameRequest,2); + packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0941,clif->pStoragePassword,0); + packet(0x094a,clif->pItemListWindowSelected,2,4,8); + packet(0x094f,clif->pSolveCharName,2); + packet(0x0950,clif->pPartyBookingRegisterReq,2,4); + packet(0x0951,clif->pChangeDir,2,4); + packet(0x0952,clif->pMoveFromKafra,2,4); + packet(0x0957,clif->pReqClickBuyingStore,2); + packet(0x0958,clif->pWantToConnection,2,6,10,14,18); + packet(0x0963,clif->pDropItem,2,4); + packet(0x0965,clif->pHomMenu,2,4); + packet(0x0969,clif->pSearchStoreInfoNextPage,0); #endif // 2014-06-18cRagexeRE #if PACKETVER == 20140618 - packet(0x085d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0878,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0886,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0890,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a7,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08ac,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x091f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0939,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x093b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0945,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x095e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0967,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 + packet(0x085d,clif->pMoveToKafra,2,4); + packet(0x085f,clif->pSearchStoreInfoNextPage,0); + packet(0x0860,clif->pTickSend,2); + packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0878,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087d,clif->pSolveCharName,2); + packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0885,clif->pMoveFromKafra,2,4); + packet(0x0886,clif->pPartyBookingRegisterReq,2,4); + packet(0x0890,clif->pChangeDir,2,4); + packet(0x0892,clif->pUseSkillToId,2,4,6); + packet(0x08a6,clif->pReqClickBuyingStore,2); + packet(0x08a7,clif->pWalkToXY,2); + packet(0x08ac,clif->pDull/*,XXX*/); + packet(0x0917,clif->pUseSkillToPos,2,4,6,8); + packet(0x091f,clif->pItemListWindowSelected,2,4,8); + packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0935,clif->pTakeItem,2); + packet(0x0938,clif->pPartyInvite2,2); + packet(0x0939,clif->pReqCloseBuyingStore,0); + packet(0x093b,clif->pActionRequest,2,6); + packet(0x0945,clif->pDropItem,2,4); + packet(0x0954,clif->pFriendsListAdd,2); + packet(0x0957,clif->pStoragePassword,0); + packet(0x095d,clif->pGetCharNameRequest,2); + packet(0x095e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0962,clif->pDull/*,XXX*/); + packet(0x0967,clif->pHomMenu,2,4); #endif // 2014-06-25aRagexeRE #if PACKETVER == 20140625 - packet(0x0202,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0815,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0861,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0875,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0897,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a1,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a2,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0923,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0959,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0968,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pMoveToKafra,2,4); + packet(0x023b,clif->pMoveFromKafra,2,4); + packet(0x0815,clif->pDull/*,XXX*/); + packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pWalkToXY,2); + packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0861,clif->pUseSkillToId,2,4,6); + packet(0x086b,clif->pPartyInvite2,2); + packet(0x0875,clif->pSolveCharName,2); + packet(0x087b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0885,clif->pDropItem,2,4); + packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0888,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x088a,clif->pItemListWindowSelected,2,4,8); + packet(0x088e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0897,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a1,clif->pTickSend,2); + packet(0x08a2,clif->pChangeDir,2,4); + packet(0x091a,clif->pTakeItem,2); + packet(0x0923,clif->pSearchStoreInfoNextPage,0); + packet(0x0928,clif->pReqCloseBuyingStore,0); + packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0946,clif->pHomMenu,2,4); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0959,clif->pActionRequest,2,6); + packet(0x0960,clif->pStoragePassword,0); + packet(0x0968,clif->pReqClickBuyingStore,2); + packet(0x0969,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-07-02aRagexeRE #if PACKETVER == 20140702 - packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0438,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x07e4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0887,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0892,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a0,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0925,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0933,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0364,clif->pItemListWindowSelected,2,4,8); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pFriendsListAdd,2); + packet(0x0438,clif->pMoveToKafra,2,4); + packet(0x07e4,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pStoragePassword,0); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pHomMenu,2,4); + packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pDropItem,2,4); + packet(0x086c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0887,clif->pWalkToXY,2); + packet(0x0892,clif->pMoveFromKafra,2,4); + packet(0x0895,clif->pDull/*,XXX*/); + packet(0x08a0,clif->pPartyInvite2,2); + packet(0x08a2,clif->pTakeItem,2); + packet(0x0925,clif->pChangeDir,2,4); + packet(0x092c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0933,clif->pDull/*,XXX*/); + packet(0x0940,clif->pSearchStoreInfoNextPage,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-07-09aRagexeRE #if PACKETVER == 20140709 - packet(0x0364,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0877,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0879,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x087a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0887,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0888,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0894,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0897,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0898,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x092f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0934,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x0364,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0860,clif->pStoragePassword,0); + packet(0x0866,clif->pDull/*,XXX*/); + packet(0x0869,clif->pChangeDir,2,4); + packet(0x0875,clif->pItemListWindowSelected,2,4,8); + packet(0x0877,clif->pUseSkillToId,2,4,6); + packet(0x0879,clif->pGetCharNameRequest,2); + packet(0x087a,clif->pSearchStoreInfoNextPage,0); + packet(0x0887,clif->pMoveToKafra,2,4); + packet(0x0888,clif->pDull/*,XXX*/); + packet(0x088b,clif->pPartyInvite2,2); + packet(0x0894,clif->pReqCloseBuyingStore,0); + packet(0x0897,clif->pReqClickBuyingStore,2); + packet(0x0898,clif->pWantToConnection,2,6,10,14,18); + packet(0x08ad,clif->pDropItem,2,4); + packet(0x091a,clif->pWalkToXY,2); + packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x092f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0931,clif->pSolveCharName,2); + packet(0x0934,clif->pTickSend,2); + packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094d,clif->pHomMenu,2,4); + packet(0x094e,clif->pMoveFromKafra,2,4); + packet(0x094f,clif->pFriendsListAdd,2); + packet(0x095f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0961,clif->pTakeItem,2); #endif // 2014-07-16aRagexeRE #if PACKETVER == 20140716 - packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0811,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0871,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0881,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0918,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0926,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0938,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0959,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 + packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x0811,clif->pActionRequest,2,6); + packet(0x085c,clif->pGetCharNameRequest,2); + packet(0x085f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0868,clif->pPartyInvite2,2); + packet(0x0871,clif->pMoveToKafra,2,4); + packet(0x0881,clif->pUseSkillToId,2,4,6); + packet(0x088b,clif->pSearchStoreInfoNextPage,0); + packet(0x088d,clif->pDull/*,XXX*/); + packet(0x088f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089a,clif->pSolveCharName,2); + packet(0x089f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a2,clif->pReqCloseBuyingStore,0); + packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08ac,clif->pHomMenu,2,4); + packet(0x0918,clif->pWalkToXY,2); + packet(0x091f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0926,clif->pDropItem,2,4); + packet(0x092c,clif->pFriendsListAdd,2); + packet(0x092f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0938,clif->pMoveFromKafra,2,4); + packet(0x093b,clif->pReqClickBuyingStore,2); + packet(0x0947,clif->pDull/*,XXX*/); + packet(0x0952,clif->pChangeDir,2,4); + packet(0x0958,clif->pTakeItem,2); + packet(0x0959,clif->pTickSend,2); + packet(0x0969,clif->pItemListWindowSelected,2,4,8); #endif // 2014-07-23aRagexeRE, 2014-07-23bRagexeRE #if PACKETVER == 20140723 - packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0819,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0888,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0891,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0896,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0927,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x092f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0934,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0935,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0939,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0945,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0947,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0960,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x02c4,clif->pTickSend,2); + packet(0x0364,clif->pStoragePassword,0); + packet(0x0368,clif->pGetCharNameRequest,2); + packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0819,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0838,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pSearchStoreInfoNextPage,0); + packet(0x085f,clif->pWalkToXY,2); + packet(0x0869,clif->pMoveToKafra,2,4); + packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0888,clif->pReqClickBuyingStore,2); + packet(0x0891,clif->pReqCloseBuyingStore,0); + packet(0x0896,clif->pDropItem,2,4); + packet(0x0898,clif->pDull/*,XXX*/); + packet(0x089e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a2,clif->pMoveFromKafra,2,4); + packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); + packet(0x0927,clif->pSolveCharName,2); + packet(0x092f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0934,clif->pFriendsListAdd,2); + packet(0x0935,clif->pPartyInvite2,2); + packet(0x0939,clif->pItemListWindowSelected,2,4,8); + packet(0x093d,clif->pTakeItem,2); + packet(0x0945,clif->pUseSkillToPos,2,4,6,8); + packet(0x0947,clif->pActionRequest,2,6); + packet(0x0948,clif->pHomMenu,2,4); + packet(0x095f,clif->pDull/*,XXX*/); + packet(0x0960,clif->pChangeDir,2,4); #endif // 2014-07-30bRagexeRE #if PACKETVER == 20140730 - packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0366,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0367,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0815,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x087d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x088b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0892,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a0,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a7,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a9,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0924,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0940,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0946,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 + packet(0x022d,clif->pUseSkillToPos,2,4,6,8); + packet(0x0364,clif->pGetCharNameRequest,2); + packet(0x0366,clif->pUseSkillToId,2,4,6); + packet(0x0367,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0437,clif->pWantToConnection,2,6,10,14,18); + packet(0x07ec,clif->pDull/*,XXX*/); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x0815,clif->pFriendsListAdd,2); + packet(0x0817,clif->pActionRequest,2,6); + packet(0x085e,clif->pWalkToXY,2); + packet(0x085f,clif->pReqCloseBuyingStore,0); + packet(0x087d,clif->pMoveFromKafra,2,4); + packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x087f,clif->pDropItem,2,4); + packet(0x0889,clif->pPartyBookingRegisterReq,2,4); + packet(0x088b,clif->pTickSend,2); + packet(0x088d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0892,clif->pMoveToKafra,2,4); + packet(0x08a0,clif->pItemListWindowSelected,2,4,8); + packet(0x08a6,clif->pReqClickBuyingStore,2); + packet(0x08a7,clif->pSolveCharName,2); + packet(0x08a9,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08ad,clif->pStoragePassword,0); + packet(0x091e,clif->pPartyInvite2,2); + packet(0x0924,clif->pSearchStoreInfoNextPage,0); + packet(0x092a,clif->pTakeItem,2); + packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0940,clif->pChangeDir,2,4); + packet(0x0946,clif->pHomMenu,2,4); #endif // 2014-08-06aRagexeRE #if PACKETVER == 20140806 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0948,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0948,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-08-13aRagexeRE #if PACKETVER == 20140813 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0882,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pStoragePassword,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0802,clif->pWantToConnection,2,6,10,14,18); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pItemListWindowSelected,2,4,8); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0868,clif->pHomMenu,2,4); + packet(0x0878,clif->pChangeDir,2,4); + packet(0x087c,clif->pPartyInvite2,2); + packet(0x0882,clif->pPartyBookingRegisterReq,2,4); + packet(0x0895,clif->pMoveFromKafra,2,4); + packet(0x0897,clif->pFriendsListAdd,2); + packet(0x0899,clif->pDropItem,2,4); + packet(0x08a3,clif->pTakeItem,2); + packet(0x08a7,clif->pDull/*,XXX*/); + packet(0x08ab,clif->pDull/*,XXX*/); + packet(0x0967,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-08-20aRagexeRE #if PACKETVER == 20140820 - packet(0x035f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0835,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0861,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0864,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0869,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0899,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a3,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a7,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0937,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x093a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0951,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0952,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0956,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x035f,clif->pReqCloseBuyingStore,0); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pSearchStoreInfoNextPage,0); + packet(0x0835,clif->pChangeDir,2,4); + packet(0x0861,clif->pTickSend,2); + packet(0x0864,clif->pWantToConnection,2,6,10,14,18); + packet(0x0869,clif->pDull/*,XXX*/); + packet(0x086c,clif->pItemListWindowSelected,2,4,8); + packet(0x086e,clif->pPartyInvite2,2); + packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0876,clif->pDropItem,2,4); + packet(0x0891,clif->pGetCharNameRequest,2); + packet(0x0899,clif->pUseSkillToPos,2,4,6,8); + packet(0x089a,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x089b,clif->pMoveFromKafra,2,4); + packet(0x08a3,clif->pWalkToXY,2); + packet(0x08a7,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091d,clif->pSolveCharName,2); + packet(0x092f,clif->pUseSkillToId,2,4,6); + packet(0x0936,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0937,clif->pHomMenu,2,4); + packet(0x093a,clif->pStoragePassword,0); + packet(0x093e,clif->pReqClickBuyingStore,2); + packet(0x094a,clif->pFriendsListAdd,2); + packet(0x0951,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0952,clif->pActionRequest,2,6); + packet(0x0956,clif->pMoveToKafra,2,4); + packet(0x0958,clif->pDull/*,XXX*/); + packet(0x0961,clif->pPartyBookingRegisterReq,2,4); #endif // 2014-08-27aRagexeRE #if PACKETVER == 20140827 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0943,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-09-03aRagexeRE #if PACKETVER == 20140903 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0945,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pWantToConnection,2,6,10,14,18); + packet(0x089b,clif->pFriendsListAdd,2); + packet(0x0931,clif->pHomMenu,2,4); + packet(0x0941,clif->pStoragePassword,0); + packet(0x0943,clif->pDull/*,XXX*/); + packet(0x0945,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-09-17cRagexeRE #if PACKETVER == 20140917 - packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0364,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0365,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0367,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0897,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0898,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x091e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x092a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0951,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0955,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x095c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x095e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0966,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x022d,clif->pPartyInvite2,2); + packet(0x0364,clif->pSearchStoreInfoNextPage,0); + packet(0x0365,clif->pMoveToKafra,2,4); + packet(0x0366,clif->pWantToConnection,2,6,10,14,18); + packet(0x0367,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0369,clif->pSolveCharName,2); + packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0864,clif->pTakeItem,2); + packet(0x086d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0889,clif->pActionRequest,2,6); + packet(0x0895,clif->pHomMenu,2,4); + packet(0x0897,clif->pTickSend,2); + packet(0x0898,clif->pGetCharNameRequest,2); + packet(0x089c,clif->pReqClickBuyingStore,2); + packet(0x08a8,clif->pStoragePassword,0); + packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x091e,clif->pReqCloseBuyingStore,0); + packet(0x092a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0930,clif->pMoveFromKafra,2,4); + packet(0x0949,clif->pUseSkillToId,2,4,6); + packet(0x094f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0951,clif->pPartyBookingRegisterReq,2,4); + packet(0x0955,clif->pFriendsListAdd,2); + packet(0x0956,clif->pItemListWindowSelected,2,4,8); + packet(0x0957,clif->pDull/*,XXX*/); + packet(0x095a,clif->pDropItem,2,4); + packet(0x095c,clif->pWalkToXY,2); + packet(0x095e,clif->pChangeDir,2,4); + packet(0x0966,clif->pDull/*,XXX*/); #endif // 2014-09-24bRagexeRE, 2014-09-24cRagexeRE #if PACKETVER == 20140924 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0815,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0886,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0894,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a5,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a7,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0918,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0925,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0926,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0928,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0949,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 + packet(0x0366,clif->pUseSkillToPos,2,4,6,8); + packet(0x0367,clif->pPartyInvite2,2); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x0815,clif->pWalkToXY,2); + packet(0x0862,clif->pDull/*,XXX*/); + packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x086b,clif->pReqCloseBuyingStore,0); + packet(0x086d,clif->pTakeItem,2); + packet(0x086e,clif->pHomMenu,2,4); + packet(0x0886,clif->pGetCharNameRequest,2); + packet(0x088b,clif->pItemListWindowSelected,2,4,8); + packet(0x0894,clif->pActionRequest,2,6); + packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089c,clif->pMoveToKafra,2,4); + packet(0x08a5,clif->pSolveCharName,2); + packet(0x08a7,clif->pUseSkillToId,2,4,6); + packet(0x0918,clif->pWantToConnection,2,6,10,14,18); + packet(0x091b,clif->pSearchStoreInfoNextPage,0); + packet(0x0925,clif->pDull/*,XXX*/); + packet(0x0926,clif->pTickSend,2); + packet(0x0928,clif->pMoveFromKafra,2,4); + packet(0x092b,clif->pReqClickBuyingStore,2); + packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0934,clif->pChangeDir,2,4); + packet(0x0949,clif->pDropItem,2,4); + packet(0x0952,clif->pFriendsListAdd,2); #endif // 2014-10-01bRagexeRE, 2014-10-01cRagexeRE #if PACKETVER == 20141001 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0884,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0885,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pDropItem,2,4); + packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pMoveFromKafra,2,4); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087c,clif->pMoveToKafra,2,4); + packet(0x0884,clif->pPartyInvite2,2); + packet(0x0885,clif->pGetCharNameRequest,2); + packet(0x089c,clif->pPartyBookingRegisterReq,2,4); + packet(0x089d,clif->pFriendsListAdd,2); + packet(0x08ad,clif->pChangeDir,2,4); + packet(0x091c,clif->pDull/*,XXX*/); + packet(0x092a,clif->pStoragePassword,0); + packet(0x0937,clif->pItemListWindowSelected,2,4,8); + packet(0x0939,clif->pDull/*,XXX*/); + packet(0x093f,clif->pTakeItem,2); + packet(0x094b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0952,clif->pHomMenu,2,4); #endif // 2014-10-08bRagexeRE, 2014-10-08cRagexeRE #if PACKETVER == 20141008 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0942,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-10-15bRagexeRE, 2014-10-16aRagexeRE #if PACKETVER == 20141015 || \ PACKETVER == 20141016 - packet(0x022d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0922,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pMoveFromKafra,2,4); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pHomMenu,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0922,clif->pDull/*,XXX*/); + packet(0x0936,clif->pStoragePassword,0); + packet(0x094b,clif->pFriendsListAdd,2); + packet(0x0967,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-10-22aRagexeRE #if PACKETVER == 20141022 - packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0878,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0896,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08aa,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08ab,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pStoragePassword,0); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0878,clif->pMoveToKafra,2,4); + packet(0x087d,clif->pDropItem,2,4); + packet(0x0896,clif->pPartyInvite2,2); + packet(0x0899,clif->pHomMenu,2,4); + packet(0x08aa,clif->pMoveFromKafra,2,4); + packet(0x08ab,clif->pDull/*,XXX*/); + packet(0x08ad,clif->pChangeDir,2,4); + packet(0x091a,clif->pFriendsListAdd,2); + packet(0x092b,clif->pDull/*,XXX*/); + packet(0x093b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0940,clif->pSearchStoreInfoNextPage,0); + packet(0x094e,clif->pTakeItem,2); + packet(0x0955,clif->pPartyBookingRegisterReq,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-10-29aRagexeRE #if PACKETVER == 20141029 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pWalkToXY,2); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pStoragePassword,0); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pActionRequest,2,6); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-11-05aRagexeRE, 2014-11-05bRagexeRE #if PACKETVER == 20141105 - packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x035f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0864,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0871,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0874,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0875,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0892,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0898,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a0,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0948,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0950,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0957,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x095f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0968,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x022d,clif->pDull/*,XXX*/); + packet(0x035f,clif->pUseSkillToId,2,4,6); + packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x085c,clif->pUseSkillToPos,2,4,6,8); + packet(0x0863,clif->pGetCharNameRequest,2); + packet(0x0864,clif->pTickSend,2); + packet(0x0865,clif->pFriendsListAdd,2); + packet(0x0871,clif->pStoragePassword,0); + packet(0x0874,clif->pDull/*,XXX*/); + packet(0x0875,clif->pActionRequest,2,6); + packet(0x0877,clif->pItemListWindowSelected,2,4,8); + packet(0x0879,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0887,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0892,clif->pDropItem,2,4); + packet(0x0898,clif->pMoveFromKafra,2,4); + packet(0x08a0,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a5,clif->pChangeDir,2,4); + packet(0x08a7,clif->pReqCloseBuyingStore,0); + packet(0x08ad,clif->pMoveToKafra,2,4); + packet(0x091d,clif->pSolveCharName,2); + packet(0x091e,clif->pReqClickBuyingStore,2); + packet(0x092b,clif->pTakeItem,2); + packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0944,clif->pHomMenu,2,4); + packet(0x0948,clif->pSearchStoreInfoNextPage,0); + packet(0x0950,clif->pPartyInvite2,2); + packet(0x0957,clif->pWalkToXY,2); + packet(0x095f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0968,clif->pPartyBookingRegisterReq,2,4); #endif // 2014-11-12aRagexeRE #if PACKETVER == 20141112 - packet(0x0362,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0438,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x07e4,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0869,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0871,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0885,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08a0,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a1,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0926,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0929,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0962,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x0362,clif->pFriendsListAdd,2); + packet(0x0438,clif->pSolveCharName,2); + packet(0x07e4,clif->pReqCloseBuyingStore,0); + packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0838,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pMoveToKafra,2,4); + packet(0x085f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0863,clif->pUseSkillToId,2,4,6); + packet(0x0869,clif->pGetCharNameRequest,2); + packet(0x086c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0871,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0885,clif->pChangeDir,2,4); + packet(0x0886,clif->pItemListWindowSelected,2,4,8); + packet(0x0887,clif->pPartyInvite2,2); + packet(0x088d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08a0,clif->pWalkToXY,2); + packet(0x08a1,clif->pReqClickBuyingStore,2); + packet(0x08ab,clif->pStoragePassword,0); + packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0926,clif->pHomMenu,2,4); + packet(0x0929,clif->pActionRequest,2,6); + packet(0x0943,clif->pDropItem,2,4); + packet(0x094b,clif->pWantToConnection,2,6,10,14,18); + packet(0x094c,clif->pDull/*,XXX*/); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x0955,clif->pMoveFromKafra,2,4); + packet(0x095d,clif->pTickSend,2); + packet(0x0960,clif->pTakeItem,2); + packet(0x0962,clif->pUseSkillToPos,2,4,6,8); #endif // 2014-11-19bRagexeRE #if PACKETVER == 20141119 - packet(0x0202,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0866,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0872,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0873,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0875,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x087c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x088d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a8,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0918,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0920,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0921,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0933,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0938,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0940,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0948,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x094c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0963,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x0202,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085a,clif->pReqClickBuyingStore,2); + packet(0x0861,clif->pFriendsListAdd,2); + packet(0x0865,clif->pPartyInvite2,2); + packet(0x0866,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0872,clif->pActionRequest,2,6); + packet(0x0873,clif->pUseSkillToId,2,4,6); + packet(0x0875,clif->pGetCharNameRequest,2); + packet(0x087c,clif->pSolveCharName,2); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x0887,clif->pReqCloseBuyingStore,0); + packet(0x0888,clif->pPartyBookingRegisterReq,2,4); + packet(0x088d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0895,clif->pItemListWindowSelected,2,4,8); + packet(0x08a8,clif->pTakeItem,2); + packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0918,clif->pUseSkillToPos,2,4,6,8); + packet(0x0920,clif->pChangeDir,2,4); + packet(0x0921,clif->pWantToConnection,2,6,10,14,18); + packet(0x0929,clif->pMoveFromKafra,2,4); + packet(0x092f,clif->pDull/*,XXX*/); + packet(0x0933,clif->pStoragePassword,0); + packet(0x0938,clif->pTickSend,2); + packet(0x0940,clif->pSearchStoreInfoNextPage,0); + packet(0x0941,clif->pMoveToKafra,2,4); + packet(0x0942,clif->pHomMenu,2,4); + packet(0x0948,clif->pWalkToXY,2); + packet(0x094c,clif->pDropItem,2,4); + packet(0x0963,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2014-11-26aRagexeRE, 2014-11-26bRagexeRE, 2014-11-26cRagexeRE, 2014-11-26dRagexeRE, 2014-11-26eRagexeRE #if PACKETVER == 20141126 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0367,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0871,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0367,clif->pDull/*,XXX*/); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pPartyBookingRegisterReq,2,4); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0871,clif->pMoveFromKafra,2,4); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x0896,clif->pItemListWindowSelected,2,4,8); + packet(0x08a4,clif->pChangeDir,2,4); + packet(0x08ad,clif->pStoragePassword,0); + packet(0x0920,clif->pDropItem,2,4); + packet(0x0942,clif->pFriendsListAdd,2); + packet(0x095a,clif->pTakeItem,2); + packet(0x095b,clif->pHomMenu,2,4); + packet(0x095f,clif->pMoveToKafra,2,4); + packet(0x0965,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-12-03aRagexeRE #if PACKETVER == 20141203 - packet(0x0202,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0281,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0861,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x086e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0880,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0889,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a5,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08aa,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0928,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x092a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x0202,clif->pSolveCharName,2); + packet(0x0281,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0367,clif->pGetCharNameRequest,2); + packet(0x0368,clif->pDull/*,XXX*/); + packet(0x0802,clif->pWantToConnection,2,6,10,14,18); + packet(0x0861,clif->pMoveToKafra,2,4); + packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086d,clif->pMoveFromKafra,2,4); + packet(0x086e,clif->pTakeItem,2); + packet(0x087b,clif->pWalkToXY,2); + packet(0x087e,clif->pItemListWindowSelected,2,4,8); + packet(0x0880,clif->pChangeDir,2,4); + packet(0x0889,clif->pFriendsListAdd,2); + packet(0x0898,clif->pStoragePassword,0); + packet(0x089c,clif->pUseSkillToPos,2,4,6,8); + packet(0x089d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a5,clif->pActionRequest,2,6); + packet(0x08aa,clif->pDropItem,2,4); + packet(0x0917,clif->pSearchStoreInfoNextPage,0); + packet(0x091c,clif->pPartyBookingRegisterReq,2,4); + packet(0x091d,clif->pPartyInvite2,2); + packet(0x0928,clif->pTickSend,2); + packet(0x092a,clif->pDull/*,XXX*/); + packet(0x0936,clif->pHomMenu,2,4); + packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0957,clif->pReqCloseBuyingStore,0); + packet(0x095c,clif->pReqClickBuyingStore,2); + packet(0x0962,clif->pUseSkillToId,2,4,6); #endif // 2014-12-10cRagexeRE #if PACKETVER == 20141210 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0885,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0917,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x092b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0947,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0954,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0958,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0963,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0967,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pHomMenu,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pChangeDir,2,4); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087b,clif->pTakeItem,2); + packet(0x0885,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08ac,clif->pItemListWindowSelected,2,4,8); + packet(0x0917,clif->pPartyInvite2,2); + packet(0x0927,clif->pDull/*,XXX*/); + packet(0x092b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0947,clif->pDull/*,XXX*/); + packet(0x0954,clif->pWantToConnection,2,6,10,14,18); + packet(0x0955,clif->pMoveFromKafra,2,4); + packet(0x0958,clif->pDropItem,2,4); + packet(0x0961,clif->pFriendsListAdd,2); + packet(0x0963,clif->pStoragePassword,0); + packet(0x0967,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2014-12-17aRagexeRE #if PACKETVER == 20141217 - packet(0x0360,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0879,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0889,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x088e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a2,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08ab,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0919,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0924,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0930,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0933,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0939,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0944,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0948,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x0360,clif->pMoveToKafra,2,4); + packet(0x085b,clif->pSearchStoreInfoNextPage,0); + packet(0x0860,clif->pStoragePassword,0); + packet(0x086c,clif->pItemListWindowSelected,2,4,8); + packet(0x0875,clif->pMoveFromKafra,2,4); + packet(0x0878,clif->pWalkToXY,2); + packet(0x0879,clif->pHomMenu,2,4); + packet(0x0883,clif->pTakeItem,2); + packet(0x0889,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x088e,clif->pPartyBookingRegisterReq,2,4); + packet(0x089f,clif->pDropItem,2,4); + packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a2,clif->pDull/*,XXX*/); + packet(0x08a8,clif->pPartyInvite2,2); + packet(0x08ab,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08ac,clif->pTickSend,2); + packet(0x0919,clif->pChangeDir,2,4); + packet(0x091f,clif->pUseSkillToId,2,4,6); + packet(0x0924,clif->pActionRequest,2,6); + packet(0x0930,clif->pReqCloseBuyingStore,0); + packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0933,clif->pFriendsListAdd,2); + packet(0x0936,clif->pGetCharNameRequest,2); + packet(0x0939,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0940,clif->pWantToConnection,2,6,10,14,18); + packet(0x0944,clif->pReqClickBuyingStore,2); + packet(0x0945,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0948,clif->pSolveCharName,2); + packet(0x0960,clif->pDull/*,XXX*/); #endif // 2014-12-23cRagexeRE #if PACKETVER == 20141223 - packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0438,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a3,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08ac,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0932,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0949,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0950,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0956,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x0361,clif->pMoveToKafra,2,4); + packet(0x0438,clif->pFriendsListAdd,2); + packet(0x0835,clif->pItemListWindowSelected,2,4,8); + packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085e,clif->pReqCloseBuyingStore,0); + packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0867,clif->pHomMenu,2,4); + packet(0x086c,clif->pReqClickBuyingStore,2); + packet(0x0870,clif->pChangeDir,2,4); + packet(0x087a,clif->pTakeItem,2); + packet(0x087b,clif->pDull/*,XXX*/); + packet(0x089a,clif->pWalkToXY,2); + packet(0x089b,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a3,clif->pPartyInvite2,2); + packet(0x08a4,clif->pStoragePassword,0); + packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08ac,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0930,clif->pDropItem,2,4); + packet(0x0932,clif->pDull/*,XXX*/); + packet(0x093a,clif->pSearchStoreInfoNextPage,0); + packet(0x0945,clif->pTickSend,2); + packet(0x0946,clif->pGetCharNameRequest,2); + packet(0x0949,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x094f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0950,clif->pSolveCharName,2); + packet(0x0953,clif->pMoveFromKafra,2,4); + packet(0x0956,clif->pUseSkillToPos,2,4,6,8); + packet(0x095b,clif->pUseSkillToId,2,4,6); + packet(0x095f,clif->pActionRequest,2,6); #endif // 2014-12-31aRagexeRE #if PACKETVER == 20141231 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086d,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-01-07aRagexeRE #if PACKETVER == 20150107 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0895,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0943,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087c,clif->pFriendsListAdd,2); + packet(0x0895,clif->pStoragePassword,0); + packet(0x092d,clif->pHomMenu,2,4); + packet(0x0943,clif->pChangeDir,2,4); + packet(0x0947,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-01-14aRagexeRE #if PACKETVER == 20150114 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0868,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0899,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0955,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0957,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pUseSkillToId,2,4,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0868,clif->pFriendsListAdd,2); + packet(0x0899,clif->pHomMenu,2,4); + packet(0x0946,clif->pStoragePassword,0); + packet(0x0955,clif->pDull/*,XXX*/); + packet(0x0957,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-01-21aRagexeRE, 2015-01-21bRagexeRE #if PACKETVER == 20150121 - packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ab,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0919,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0959,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0963,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0967,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pPartyBookingRegisterReq,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pItemListWindowSelected,2,4,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087c,clif->pDull/*,XXX*/); + packet(0x088b,clif->pFriendsListAdd,2); + packet(0x089d,clif->pHomMenu,2,4); + packet(0x089e,clif->pChangeDir,2,4); + packet(0x08ab,clif->pStoragePassword,0); + packet(0x0918,clif->pDull/*,XXX*/); + packet(0x0919,clif->pDropItem,2,4); + packet(0x091d,clif->pTakeItem,2); + packet(0x0955,clif->pMoveToKafra,2,4); + packet(0x0959,clif->pWantToConnection,2,6,10,14,18); + packet(0x0963,clif->pMoveFromKafra,2,4); + packet(0x0967,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-01-28aRagexeRE #if PACKETVER == 20150128 - packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x023b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0368,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0838,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0864,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0870,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0874,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0888,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x093a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0968,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 + packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x023b,clif->pChangeDir,2,4); + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0368,clif->pDull/*,XXX*/); + packet(0x0838,clif->pActionRequest,2,6); + packet(0x085a,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0864,clif->pUseSkillToPos,2,4,6,8); + packet(0x086d,clif->pMoveToKafra,2,4); + packet(0x0870,clif->pWalkToXY,2); + packet(0x0874,clif->pGetCharNameRequest,2); + packet(0x0875,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0876,clif->pHomMenu,2,4); + packet(0x087d,clif->pSolveCharName,2); + packet(0x0888,clif->pItemListWindowSelected,2,4,8); + packet(0x089a,clif->pPartyBookingRegisterReq,2,4); + packet(0x08ab,clif->pTakeItem,2); + packet(0x091f,clif->pTickSend,2); + packet(0x0927,clif->pPartyInvite2,2); + packet(0x0929,clif->pStoragePassword,0); + packet(0x092d,clif->pSearchStoreInfoNextPage,0); + packet(0x0938,clif->pDull/*,XXX*/); + packet(0x093a,clif->pUseSkillToId,2,4,6); + packet(0x0944,clif->pWantToConnection,2,6,10,14,18); + packet(0x094d,clif->pReqCloseBuyingStore,0); + packet(0x094e,clif->pMoveFromKafra,2,4); + packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0963,clif->pFriendsListAdd,2); + packet(0x0968,clif->pDropItem,2,4); #endif // 2015-02-04cRagexeRE #if PACKETVER == 20150204 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0966,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0966,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-02-11aRagexeRE #if PACKETVER == 20150211 - packet(0x023b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0862,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0870,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0873,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0882,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0883,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0886,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08aa,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0919,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0957,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0958,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x023b,clif->pDull/*,XXX*/); + packet(0x0368,clif->pHomMenu,2,4); + packet(0x0369,clif->pChangeDir,2,4); + packet(0x0436,clif->pSearchStoreInfoNextPage,0); + packet(0x0437,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x07e4,clif->pDropItem,2,4); + packet(0x0817,clif->pUseSkillToPos,2,4,6,8); + packet(0x0819,clif->pReqCloseBuyingStore,0); + packet(0x0835,clif->pDull/*,XXX*/); + packet(0x0862,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0863,clif->pUseSkillToId,2,4,6); + packet(0x0870,clif->pTakeItem,2); + packet(0x0873,clif->pWalkToXY,2); + packet(0x087b,clif->pGetCharNameRequest,2); + packet(0x087f,clif->pStoragePassword,0); + packet(0x0882,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0883,clif->pMoveFromKafra,2,4); + packet(0x0885,clif->pTickSend,2); + packet(0x0886,clif->pReqClickBuyingStore,2); + packet(0x089c,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a0,clif->pFriendsListAdd,2); + packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); + packet(0x08aa,clif->pActionRequest,2,6); + packet(0x0919,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0920,clif->pSolveCharName,2); + packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0951,clif->pItemListWindowSelected,2,4,8); + packet(0x0957,clif->pPartyInvite2,2); + packet(0x0958,clif->pMoveToKafra,2,4); #endif // 2015-02-17aRagexeRE #if PACKETVER == 20150217 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085b,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-02-25aRagexeRE, 2015-02-25bRagexeRE, 2015-02-25cRagexeRE, 2015-02-25dRagexeRE, 2015-02-25eRagexeRE, 2015-02-26aRagexeRE #if PACKETVER == 20150225 || \ PACKETVER == 20150226 - packet(0x02c4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0948,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0952,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0955,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x02c4,clif->pReqClickBuyingStore,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pPartyInvite2,2); + packet(0x0362,clif->pReqCloseBuyingStore,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pGetCharNameRequest,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pTakeItem,2); + packet(0x0819,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pPartyBookingRegisterReq,2,4); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x0896,clif->pItemListWindowSelected,2,4,8); + packet(0x089b,clif->pDull/*,XXX*/); + packet(0x089c,clif->pMoveToKafra,2,4); + packet(0x08a4,clif->pStoragePassword,0); + packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0946,clif->pFriendsListAdd,2); + packet(0x0948,clif->pDropItem,2,4); + packet(0x094f,clif->pHomMenu,2,4); + packet(0x0952,clif->pMoveFromKafra,2,4); + packet(0x0955,clif->pChangeDir,2,4); + packet(0x096a,clif->pWantToConnection,2,6,10,14,18); #endif // 2015-03-04aRagexeRE, 2015-03-04bRagexeRE #if PACKETVER == 20150304 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x086d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0879,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pTakeItem,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pMoveFromKafra,2,4); + packet(0x086d,clif->pItemListWindowSelected,2,4,8); + packet(0x0879,clif->pChangeDir,2,4); + packet(0x087e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0892,clif->pStoragePassword,0); + packet(0x089a,clif->pPartyInvite2,2); + packet(0x093a,clif->pPartyBookingRegisterReq,2,4); + packet(0x0947,clif->pMoveToKafra,2,4); + packet(0x095d,clif->pDull/*,XXX*/); + packet(0x0960,clif->pFriendsListAdd,2); + packet(0x0961,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-03-11aRagexeRE, 2015-03-11bRagexeRE #if PACKETVER == 20150311 - packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0438,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0883,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0896,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a1,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a5,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a6,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x092e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0943,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0957,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0958,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x095b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0963,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0964,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x023b,clif->pHomMenu,2,4); + packet(0x0360,clif->pReqCloseBuyingStore,0); + packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0438,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pWantToConnection,2,6,10,14,18); + packet(0x0838,clif->pUseSkillToPos,2,4,6,8); + packet(0x086a,clif->pGetCharNameRequest,2); + packet(0x086c,clif->pStoragePassword,0); + packet(0x087b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0883,clif->pItemListWindowSelected,2,4,8); + packet(0x0886,clif->pWalkToXY,2); + packet(0x0888,clif->pSearchStoreInfoNextPage,0); + packet(0x0896,clif->pActionRequest,2,6); + packet(0x08a1,clif->pUseSkillToId,2,4,6); + packet(0x08a3,clif->pTakeItem,2); + packet(0x08a5,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a6,clif->pFriendsListAdd,2); + packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0928,clif->pChangeDir,2,4); + packet(0x092a,clif->pDull/*,XXX*/); + packet(0x092e,clif->pMoveFromKafra,2,4); + packet(0x093b,clif->pPartyInvite2,2); + packet(0x0943,clif->pSolveCharName,2); + packet(0x0946,clif->pDull/*,XXX*/); + packet(0x0957,clif->pReqClickBuyingStore,2); + packet(0x0958,clif->pTickSend,2); + packet(0x095b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0963,clif->pDropItem,2,4); + packet(0x0964,clif->pMoveToKafra,2,4); #endif // 2015-03-18aRagexeRE, 2015-03-18bRagexeRE, 2015-03-18cRagexeRE #if PACKETVER == 20150318 - packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x023b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0862,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0885,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0889,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x088c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x089c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0920,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0951,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0958,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0959,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x0202,clif->pDull/*,XXX*/); + packet(0x023b,clif->pTickSend,2); + packet(0x0281,clif->pDull/*,XXX*/); + packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x07e4,clif->pFriendsListAdd,2); + packet(0x0802,clif->pItemListWindowSelected,2,4,8); + packet(0x0811,clif->pWantToConnection,2,6,10,14,18); + packet(0x0862,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0863,clif->pReqClickBuyingStore,2); + packet(0x0873,clif->pStoragePassword,0); + packet(0x0885,clif->pReqCloseBuyingStore,0); + packet(0x0889,clif->pActionRequest,2,6); + packet(0x088c,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x089c,clif->pMoveToKafra,2,4); + packet(0x08a4,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x091d,clif->pMoveFromKafra,2,4); + packet(0x0920,clif->pDropItem,2,4); + packet(0x0927,clif->pChangeDir,2,4); + packet(0x0928,clif->pTakeItem,2); + packet(0x0936,clif->pUseSkillToId,2,4,6); + packet(0x0937,clif->pUseSkillToPos,2,4,6,8); + packet(0x0938,clif->pPartyInvite2,2); + packet(0x093a,clif->pWalkToXY,2); + packet(0x093c,clif->pSolveCharName,2); + packet(0x094c,clif->pHomMenu,2,4); + packet(0x0951,clif->pGetCharNameRequest,2); + packet(0x0958,clif->pSearchStoreInfoNextPage,0); + packet(0x0959,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0960,clif->pPartyBookingRegisterReq,2,4); #endif // 2015-03-25bRagexeRE, 2015-03-25cRagexeRE #if PACKETVER == 20150325 - packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0365,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0438,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0883,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0885,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0893,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0899,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a7,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0931,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0932,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0950,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0954,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0969,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 + packet(0x0202,clif->pPartyInvite2,2); + packet(0x0363,clif->pDropItem,2,4); + packet(0x0365,clif->pUseSkillToId,2,4,6); + packet(0x0438,clif->pSearchStoreInfoNextPage,0); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x0819,clif->pReqClickBuyingStore,2); + packet(0x085d,clif->pSolveCharName,2); + packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087c,clif->pMoveToKafra,2,4); + packet(0x087e,clif->pChangeDir,2,4); + packet(0x0883,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0885,clif->pUseSkillToPos,2,4,6,8); + packet(0x0891,clif->pGetCharNameRequest,2); + packet(0x0893,clif->pDull/*,XXX*/); + packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0899,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a1,clif->pActionRequest,2,6); + packet(0x08a7,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0919,clif->pStoragePassword,0); + packet(0x092c,clif->pTakeItem,2); + packet(0x0931,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0932,clif->pWalkToXY,2); + packet(0x0938,clif->pHomMenu,2,4); + packet(0x0940,clif->pFriendsListAdd,2); + packet(0x0947,clif->pReqCloseBuyingStore,0); + packet(0x094a,clif->pWantToConnection,2,6,10,14,18); + packet(0x0950,clif->pItemListWindowSelected,2,4,8); + packet(0x0954,clif->pTickSend,2); + packet(0x0969,clif->pMoveFromKafra,2,4); #endif // 2015-04-01bRagexeRE #if PACKETVER == 20150401 - packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0367,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0437,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0875,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x087e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0895,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0898,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0924,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0938,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x093a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x093e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0949,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0953,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x0362,clif->pActionRequest,2,6); + packet(0x0367,clif->pGetCharNameRequest,2); + packet(0x0437,clif->pReqClickBuyingStore,2); + packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086f,clif->pWalkToXY,2); + packet(0x0875,clif->pItemListWindowSelected,2,4,8); + packet(0x087e,clif->pDull/*,XXX*/); + packet(0x088c,clif->pDropItem,2,4); + packet(0x088f,clif->pTickSend,2); + packet(0x0895,clif->pMoveFromKafra,2,4); + packet(0x0898,clif->pHomMenu,2,4); + packet(0x089c,clif->pStoragePassword,0); + packet(0x08a5,clif->pMoveToKafra,2,4); + packet(0x091b,clif->pPartyInvite2,2); + packet(0x091c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0924,clif->pPartyBookingRegisterReq,2,4); + packet(0x0938,clif->pReqCloseBuyingStore,0); + packet(0x0939,clif->pWantToConnection,2,6,10,14,18); + packet(0x093a,clif->pUseSkillToPos,2,4,6,8); + packet(0x093b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x093e,clif->pSearchStoreInfoNextPage,0); + packet(0x0946,clif->pDull/*,XXX*/); + packet(0x0949,clif->pTakeItem,2); + packet(0x094b,clif->pUseSkillToId,2,4,6); + packet(0x0953,clif->pFriendsListAdd,2); + packet(0x095f,clif->pSolveCharName,2); + packet(0x0964,clif->pChangeDir,2,4); #endif // 2015-04-08aRagexeRE #if PACKETVER == 20150408 - packet(0x0819,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0865,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0888,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0955,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0957,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0963,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x0819,clif->pMoveFromKafra,2,4); + packet(0x085a,clif->pTickSend,2); + packet(0x085c,clif->pUseSkillToId,2,4,6); + packet(0x085e,clif->pHomMenu,2,4); + packet(0x0865,clif->pActionRequest,2,6); + packet(0x0868,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x086e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0878,clif->pPartyInvite2,2); + packet(0x087e,clif->pGetCharNameRequest,2); + packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0888,clif->pMoveToKafra,2,4); + packet(0x0889,clif->pStoragePassword,0); + packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0898,clif->pDropItem,2,4); + packet(0x089c,clif->pWalkToXY,2); + packet(0x08a2,clif->pSolveCharName,2); + packet(0x08a4,clif->pFriendsListAdd,2); + packet(0x091b,clif->pDull/*,XXX*/); + packet(0x091e,clif->pItemListWindowSelected,2,4,8); + packet(0x0922,clif->pChangeDir,2,4); + packet(0x092a,clif->pDull/*,XXX*/); + packet(0x0946,clif->pReqCloseBuyingStore,0); + packet(0x094f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0955,clif->pReqClickBuyingStore,2); + packet(0x0957,clif->pWantToConnection,2,6,10,14,18); + packet(0x0959,clif->pTakeItem,2); + packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0963,clif->pSearchStoreInfoNextPage,0); #endif // 2015-04-15aRagexeRE #if PACKETVER == 20150415 - packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0366,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0368,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0802,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0868,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0869,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0880,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0898,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x093c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0941,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0946,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0953,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x0361,clif->pMoveToKafra,2,4); + packet(0x0364,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0366,clif->pWalkToXY,2); + packet(0x0368,clif->pReqClickBuyingStore,2); + packet(0x0802,clif->pSearchStoreInfoNextPage,0); + packet(0x0817,clif->pTakeItem,2); + packet(0x0835,clif->pDropItem,2,4); + packet(0x085e,clif->pDull/*,XXX*/); + packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0867,clif->pPartyInvite2,2); + packet(0x0868,clif->pUseSkillToPos,2,4,6,8); + packet(0x0869,clif->pHomMenu,2,4); + packet(0x086c,clif->pActionRequest,2,6); + packet(0x0880,clif->pDull/*,XXX*/); + packet(0x088e,clif->pUseSkillToId,2,4,6); + packet(0x0891,clif->pGetCharNameRequest,2); + packet(0x0898,clif->pItemListWindowSelected,2,4,8); + packet(0x08a0,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0922,clif->pMoveFromKafra,2,4); + packet(0x092e,clif->pSolveCharName,2); + packet(0x093c,clif->pTickSend,2); + packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0941,clif->pWantToConnection,2,6,10,14,18); + packet(0x0946,clif->pReqCloseBuyingStore,0); + packet(0x094d,clif->pChangeDir,2,4); + packet(0x0953,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095c,clif->pFriendsListAdd,2); + packet(0x0960,clif->pStoragePassword,0); + packet(0x0961,clif->pPartyBookingRegisterReq,2,4); #endif // 2015-04-22aRagexeRE #if PACKETVER == 20150422 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0955,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0955,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-04-29aRagexeRE #if PACKETVER == 20150429 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0886,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0894,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0899,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a8,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pChangeDir,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pStoragePassword,0); + packet(0x086a,clif->pWantToConnection,2,6,10,14,18); + packet(0x0886,clif->pPartyInvite2,2); + packet(0x088f,clif->pHomMenu,2,4); + packet(0x0894,clif->pDropItem,2,4); + packet(0x0899,clif->pMoveToKafra,2,4); + packet(0x089f,clif->pItemListWindowSelected,2,4,8); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x08a8,clif->pDull/*,XXX*/); + packet(0x08ad,clif->pPartyBookingRegisterReq,2,4); + packet(0x0929,clif->pMoveFromKafra,2,4); + packet(0x093d,clif->pFriendsListAdd,2); + packet(0x0943,clif->pTakeItem,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-05-07bRagexeRE #if PACKETVER == 20150507 - packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0889,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0924,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0942,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0955,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pHomMenu,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pReqCloseBuyingStore,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pTakeItem,2); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pMoveToKafra,2,4); + packet(0x0864,clif->pPartyInvite2,2); + packet(0x0887,clif->pDull/*,XXX*/); + packet(0x0889,clif->pPartyBookingRegisterReq,2,4); + packet(0x0924,clif->pWantToConnection,2,6,10,14,18); + packet(0x092e,clif->pItemListWindowSelected,2,4,8); + packet(0x093b,clif->pChangeDir,2,4); + packet(0x0941,clif->pMoveFromKafra,2,4); + packet(0x0942,clif->pDull/*,XXX*/); + packet(0x0953,clif->pStoragePassword,0); + packet(0x0955,clif->pDropItem,2,4); + packet(0x0958,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-05-13aRagexeRE #if PACKETVER == 20150513 - packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x02c4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0883,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a8,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0924,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0927,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0960,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pReqCloseBuyingStore,0); + packet(0x02c4,clif->pDull/*,XXX*/); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pWantToConnection,2,6,10,14,18); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pHomMenu,2,4); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0864,clif->pMoveFromKafra,2,4); + packet(0x0879,clif->pMoveToKafra,2,4); + packet(0x0883,clif->pPartyBookingRegisterReq,2,4); + packet(0x0885,clif->pDropItem,2,4); + packet(0x08a8,clif->pFriendsListAdd,2); + packet(0x0923,clif->pStoragePassword,0); + packet(0x0924,clif->pChangeDir,2,4); + packet(0x0927,clif->pDull/*,XXX*/); + packet(0x094a,clif->pPartyInvite2,2); + packet(0x0958,clif->pTakeItem,2); + packet(0x0960,clif->pItemListWindowSelected,2,4,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-05-20aRagexeRE #if PACKETVER == 20150520 - packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0865,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0880,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0882,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a2,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0924,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0931,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0936,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x093d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0945,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0960,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x0202,clif->pTickSend,2); + packet(0x0361,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pReqCloseBuyingStore,0); + packet(0x085e,clif->pReqClickBuyingStore,2); + packet(0x0865,clif->pWantToConnection,2,6,10,14,18); + packet(0x0868,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0880,clif->pPartyInvite2,2); + packet(0x0882,clif->pItemListWindowSelected,2,4,8); + packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089c,clif->pStoragePassword,0); + packet(0x089e,clif->pDropItem,2,4); + packet(0x08a2,clif->pGetCharNameRequest,2); + packet(0x08ad,clif->pChangeDir,2,4); + packet(0x091c,clif->pTakeItem,2); + packet(0x091d,clif->pActionRequest,2,6); + packet(0x0924,clif->pMoveFromKafra,2,4); + packet(0x092b,clif->pWalkToXY,2); + packet(0x0931,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0936,clif->pUseSkillToId,2,4,6); + packet(0x093d,clif->pFriendsListAdd,2); + packet(0x0940,clif->pDull/*,XXX*/); + packet(0x0945,clif->pSolveCharName,2); + packet(0x094e,clif->pUseSkillToPos,2,4,6,8); + packet(0x095b,clif->pHomMenu,2,4); + packet(0x095f,clif->pSearchStoreInfoNextPage,0); + packet(0x0960,clif->pDull/*,XXX*/); + packet(0x0961,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pPartyBookingRegisterReq,2,4); #endif // 2015-05-27aRagexeRE #if PACKETVER == 20150527 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x083c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pUseSkillToId,2,4,6); + packet(0x083c,clif->pStoragePassword,0); + packet(0x0940,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-06-03bRagexeRE #if PACKETVER == 20150603 - packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0437,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0860,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0864,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0867,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0873,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0877,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x089e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x093b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0955,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0956,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0960,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0969,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x096a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 + packet(0x0361,clif->pPartyInvite2,2); + packet(0x0437,clif->pDull/*,XXX*/); + packet(0x0811,clif->pChangeDir,2,4); + packet(0x0819,clif->pReqClickBuyingStore,2); + packet(0x0860,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0864,clif->pFriendsListAdd,2); + packet(0x0867,clif->pMoveToKafra,2,4); + packet(0x086a,clif->pMoveFromKafra,2,4); + packet(0x0873,clif->pActionRequest,2,6); + packet(0x0877,clif->pItemListWindowSelected,2,4,8); + packet(0x0881,clif->pGetCharNameRequest,2); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x088b,clif->pDropItem,2,4); + packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x089e,clif->pTickSend,2); + packet(0x08a1,clif->pUseSkillToPos,2,4,6,8); + packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); + packet(0x091b,clif->pSolveCharName,2); + packet(0x0922,clif->pStoragePassword,0); + packet(0x092d,clif->pTakeItem,2); + packet(0x093b,clif->pSearchStoreInfoNextPage,0); + packet(0x093f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0955,clif->pHomMenu,2,4); + packet(0x0956,clif->pReqCloseBuyingStore,0); + packet(0x0960,clif->pUseSkillToId,2,4,6); + packet(0x0969,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x096a,clif->pWalkToXY,2); #endif // 2015-06-10aRagexeRE #if PACKETVER == 20150610 - packet(0x022d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0438,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0872,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0877,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0897,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a0,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08ac,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0925,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0932,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0940,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0949,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0957,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0964,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x022d,clif->pReqCloseBuyingStore,0); + packet(0x0438,clif->pItemListWindowSelected,2,4,8); + packet(0x07e4,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pDull/*,XXX*/); + packet(0x0870,clif->pPartyInvite2,2); + packet(0x0872,clif->pSolveCharName,2); + packet(0x0877,clif->pReqClickBuyingStore,2); + packet(0x087e,clif->pGetCharNameRequest,2); + packet(0x0884,clif->pMoveFromKafra,2,4); + packet(0x0885,clif->pHomMenu,2,4); + packet(0x0888,clif->pWantToConnection,2,6,10,14,18); + packet(0x088c,clif->pMoveToKafra,2,4); + packet(0x088d,clif->pPartyBookingRegisterReq,2,4); + packet(0x088f,clif->pWalkToXY,2); + packet(0x0897,clif->pFriendsListAdd,2); + packet(0x08a0,clif->pStoragePassword,0); + packet(0x08ac,clif->pDropItem,2,4); + packet(0x0925,clif->pTakeItem,2); + packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x092e,clif->pDull/*,XXX*/); + packet(0x0932,clif->pSearchStoreInfoNextPage,0); + packet(0x093e,clif->pActionRequest,2,6); + packet(0x0940,clif->pUseSkillToPos,2,4,6,8); + packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0949,clif->pUseSkillToId,2,4,6); + packet(0x0957,clif->pTickSend,2); + packet(0x095d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0964,clif->pChangeDir,2,4); #endif // 2015-06-17aRagexeRE, 2015-06-18aRagexeRE #if PACKETVER == 20150617 || \ PACKETVER == 20150618 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0362,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0869,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0870,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pTakeItem,2); + packet(0x0362,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pStoragePassword,0); + packet(0x0365,clif->pItemListWindowSelected,2,4,8); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pWantToConnection,2,6,10,14,18); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0811,clif->pDull/*,XXX*/); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0869,clif->pMoveFromKafra,2,4); + packet(0x086a,clif->pPartyBookingRegisterReq,2,4); + packet(0x086b,clif->pChangeDir,2,4); + packet(0x0870,clif->pPartyInvite2,2); + packet(0x087a,clif->pMoveToKafra,2,4); + packet(0x0886,clif->pHomMenu,2,4); + packet(0x0894,clif->pDull/*,XXX*/); + packet(0x0940,clif->pDropItem,2,4); + packet(0x094e,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-06-24aRagexeRE #if PACKETVER == 20150624 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0365,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0870,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0940,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0966,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pPartyBookingRegisterReq,2,4); + packet(0x0365,clif->pHomMenu,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0870,clif->pStoragePassword,0); + packet(0x0940,clif->pMoveFromKafra,2,4); + packet(0x0941,clif->pFriendsListAdd,2); + packet(0x0966,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-07-01bRagexeRE #if PACKETVER == 20150701 - packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0281,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x087d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0893,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a0,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a4,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a6,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08ad,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0919,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0923,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0928,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0946,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0954,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0958,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x095f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0960,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0968,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x023b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0281,clif->pSearchStoreInfoNextPage,0); + packet(0x07e4,clif->pMoveFromKafra,2,4); + packet(0x0802,clif->pGetCharNameRequest,2); + packet(0x086d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x087d,clif->pTickSend,2); + packet(0x087e,clif->pItemListWindowSelected,2,4,8); + packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088e,clif->pReqCloseBuyingStore,0); + packet(0x0893,clif->pDull/*,XXX*/); + packet(0x08a0,clif->pDropItem,2,4); + packet(0x08a4,clif->pReqClickBuyingStore,2); + packet(0x08a5,clif->pPartyInvite2,2); + packet(0x08a6,clif->pUseSkillToId,2,4,6); + packet(0x08ad,clif->pUseSkillToPos,2,4,6,8); + packet(0x0919,clif->pStoragePassword,0); + packet(0x0923,clif->pDull/*,XXX*/); + packet(0x0928,clif->pMoveToKafra,2,4); + packet(0x092c,clif->pWalkToXY,2); + packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x093f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0946,clif->pTakeItem,2); + packet(0x094e,clif->pSolveCharName,2); + packet(0x0954,clif->pHomMenu,2,4); + packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0958,clif->pActionRequest,2,6); + packet(0x095f,clif->pFriendsListAdd,2); + packet(0x0960,clif->pPartyBookingRegisterReq,2,4); + packet(0x0968,clif->pChangeDir,2,4); #endif // 2015-07-08bRagexeRE, 2015-07-08cRagexeRE, 2015-07-08dRagexeRE #if PACKETVER == 20150708 - packet(0x022d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0368,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0872,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x092a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0962,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pSolveCharName,2); + packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pPartyInvite2,2); + packet(0x0368,clif->pHomMenu,2,4); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pWantToConnection,2,6,10,14,18); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085e,clif->pMoveToKafra,2,4); + packet(0x0872,clif->pTakeItem,2); + packet(0x087f,clif->pDull/*,XXX*/); + packet(0x0884,clif->pWalkToXY,2); + packet(0x089d,clif->pChangeDir,2,4); + packet(0x08a5,clif->pItemListWindowSelected,2,4,8); + packet(0x08ad,clif->pStoragePassword,0); + packet(0x091f,clif->pPartyBookingRegisterReq,2,4); + packet(0x092a,clif->pMoveFromKafra,2,4); + packet(0x093c,clif->pFriendsListAdd,2); + packet(0x095b,clif->pDropItem,2,4); + packet(0x0962,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-07-15aRagexeRE #if PACKETVER == 20150715 - packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0362,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0436,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0437,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0873,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0879,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x087c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0897,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0899,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x089a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0917,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0944,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0950,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0956,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0961,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0965,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0362,clif->pUseSkillToPos,2,4,6,8); + packet(0x0364,clif->pItemListWindowSelected,2,4,8); + packet(0x0436,clif->pSolveCharName,2); + packet(0x0437,clif->pUseSkillToId,2,4,6); + packet(0x0438,clif->pWalkToXY,2); + packet(0x0835,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x083c,clif->pActionRequest,2,6); + packet(0x085c,clif->pGetCharNameRequest,2); + packet(0x086f,clif->pMoveFromKafra,2,4); + packet(0x0873,clif->pTickSend,2); + packet(0x0879,clif->pWantToConnection,2,6,10,14,18); + packet(0x087c,clif->pDropItem,2,4); + packet(0x087f,clif->pSearchStoreInfoNextPage,0); + packet(0x0886,clif->pDull/*,XXX*/); + packet(0x0895,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0896,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0897,clif->pPartyInvite2,2); + packet(0x0899,clif->pReqCloseBuyingStore,0); + packet(0x089a,clif->pTakeItem,2); + packet(0x08a4,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pChangeDir,2,4); + packet(0x0917,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093e,clif->pHomMenu,2,4); + packet(0x0944,clif->pFriendsListAdd,2); + packet(0x0950,clif->pReqClickBuyingStore,2); + packet(0x0956,clif->pStoragePassword,0); + packet(0x0961,clif->pMoveToKafra,2,4); + packet(0x0965,clif->pPartyBookingRegisterReq,2,4); #endif // 2015-07-22bRagexeRE #if PACKETVER == 20150722 - packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0361,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0368,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0811,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0878,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0880,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0884,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a8,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0919,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x092e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x093d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x094c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0951,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x023b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0281,clif->pGetCharNameRequest,2); + packet(0x0360,clif->pActionRequest,2,6); + packet(0x0361,clif->pDropItem,2,4); + packet(0x0368,clif->pPartyInvite2,2); + packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0811,clif->pSearchStoreInfoNextPage,0); + packet(0x0815,clif->pReqCloseBuyingStore,0); + packet(0x0817,clif->pWantToConnection,2,6,10,14,18); + packet(0x0869,clif->pTakeItem,2); + packet(0x0878,clif->pUseSkillToPos,2,4,6,8); + packet(0x087b,clif->pPartyBookingRegisterReq,2,4); + packet(0x087d,clif->pWalkToXY,2); + packet(0x087e,clif->pSolveCharName,2); + packet(0x0880,clif->pReqClickBuyingStore,2); + packet(0x0884,clif->pHomMenu,2,4); + packet(0x088d,clif->pTickSend,2); + packet(0x0899,clif->pMoveFromKafra,2,4); + packet(0x08a8,clif->pChangeDir,2,4); + packet(0x0919,clif->pDull/*,XXX*/); + packet(0x0921,clif->pMoveToKafra,2,4); + packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x092e,clif->pFriendsListAdd,2); + packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x093d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x094c,clif->pUseSkillToId,2,4,6); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x0951,clif->pItemListWindowSelected,2,4,8); + packet(0x0958,clif->pStoragePassword,0); #endif // 2015-07-29aRagexeRE #if PACKETVER == 20150729 - packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x086f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0870,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0886,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ac,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08ad,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x093a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0955,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0961,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 + packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0438,clif->pHomMenu,2,4); + packet(0x085b,clif->pDull/*,XXX*/); + packet(0x0860,clif->pTakeItem,2); + packet(0x086c,clif->pMoveToKafra,2,4); + packet(0x086d,clif->pPartyBookingRegisterReq,2,4); + packet(0x086e,clif->pWalkToXY,2); + packet(0x086f,clif->pMoveFromKafra,2,4); + packet(0x0870,clif->pGetCharNameRequest,2); + packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0881,clif->pActionRequest,2,6); + packet(0x0886,clif->pSolveCharName,2); + packet(0x089a,clif->pUseSkillToPos,2,4,6,8); + packet(0x089b,clif->pFriendsListAdd,2); + packet(0x08a3,clif->pDull/*,XXX*/); + packet(0x08a4,clif->pChangeDir,2,4); + packet(0x08ac,clif->pPartyInvite2,2); + packet(0x08ad,clif->pReqClickBuyingStore,2); + packet(0x0920,clif->pSearchStoreInfoNextPage,0); + packet(0x092b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x092f,clif->pUseSkillToId,2,4,6); + packet(0x093a,clif->pTickSend,2); + packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0940,clif->pDropItem,2,4); + packet(0x094f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0955,clif->pItemListWindowSelected,2,4,8); + packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0961,clif->pStoragePassword,0); + packet(0x096a,clif->pReqCloseBuyingStore,0); #endif // 2015-08-05dRagexeRE #if PACKETVER == 20150805 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x088a,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-08-12aRagexeRE #if PACKETVER == 20150812 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087f,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-08-19aRagexeRE, 2015-08-19bRagexeRE #if PACKETVER == 20150819 - packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x022d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0281,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x085d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0862,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0865,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0871,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0888,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0919,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0927,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0961,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0967,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pItemListWindowSelected,2,4,8); + packet(0x022d,clif->pUseSkillToId,2,4,6); + packet(0x0281,clif->pTakeItem,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x085d,clif->pMoveFromKafra,2,4); + packet(0x0862,clif->pDull/*,XXX*/); + packet(0x0865,clif->pFriendsListAdd,2); + packet(0x0871,clif->pPartyBookingRegisterReq,2,4); + packet(0x0888,clif->pHomMenu,2,4); + packet(0x0919,clif->pMoveToKafra,2,4); + packet(0x091e,clif->pStoragePassword,0); + packet(0x0927,clif->pWantToConnection,2,6,10,14,18); + packet(0x0940,clif->pDropItem,2,4); + packet(0x0961,clif->pPartyInvite2,2); + packet(0x0967,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-08-26aRagexeRE, 2015-08-26bRagexeRE #if PACKETVER == 20150826 - packet(0x0362,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0436,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x07ec,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0819,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0861,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x086b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a1,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0945,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0951,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0959,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0968,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 + packet(0x0362,clif->pStoragePassword,0); + packet(0x0368,clif->pMoveFromKafra,2,4); + packet(0x0436,clif->pPartyBookingRegisterReq,2,4); + packet(0x07ec,clif->pActionRequest,2,6); + packet(0x0819,clif->pReqClickBuyingStore,2); + packet(0x0861,clif->pDull/*,XXX*/); + packet(0x0865,clif->pWalkToXY,2); + packet(0x086b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x087b,clif->pSolveCharName,2); + packet(0x088b,clif->pPartyInvite2,2); + packet(0x088d,clif->pFriendsListAdd,2); + packet(0x0890,clif->pSearchStoreInfoNextPage,0); + packet(0x0891,clif->pUseSkillToId,2,4,6); + packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a1,clif->pMoveToKafra,2,4); + packet(0x08a4,clif->pTakeItem,2); + packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0924,clif->pDropItem,2,4); + packet(0x0928,clif->pReqCloseBuyingStore,0); + packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093b,clif->pGetCharNameRequest,2); + packet(0x0945,clif->pHomMenu,2,4); + packet(0x094f,clif->pChangeDir,2,4); + packet(0x0951,clif->pTickSend,2); + packet(0x0959,clif->pItemListWindowSelected,2,4,8); + packet(0x0964,clif->pWantToConnection,2,6,10,14,18); + packet(0x0968,clif->pDull/*,XXX*/); + packet(0x0969,clif->pSearchStoreInfo,2,4,5,9,13,14,15); #endif // 2015-09-02aRagexeRE #if PACKETVER == 20150902 - packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0367,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0802,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0863,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0886,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0887,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0889,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0897,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0899,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0923,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0928,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0941,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0947,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x094f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x023b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0360,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0367,clif->pTickSend,2); + packet(0x0802,clif->pStoragePassword,0); + packet(0x083c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085b,clif->pActionRequest,2,6); + packet(0x085d,clif->pSolveCharName,2); + packet(0x0863,clif->pUseSkillToId,2,4,6); + packet(0x086f,clif->pUseSkillToPos,2,4,6,8); + packet(0x087b,clif->pWalkToXY,2); + packet(0x087f,clif->pDull/*,XXX*/); + packet(0x0886,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0887,clif->pDull/*,XXX*/); + packet(0x0889,clif->pReqCloseBuyingStore,0); + packet(0x088d,clif->pMoveFromKafra,2,4); + packet(0x0892,clif->pItemListWindowSelected,2,4,8); + packet(0x0897,clif->pMoveToKafra,2,4); + packet(0x0899,clif->pGetCharNameRequest,2); + packet(0x08a9,clif->pDropItem,2,4); + packet(0x0923,clif->pFriendsListAdd,2); + packet(0x0928,clif->pTakeItem,2); + packet(0x092a,clif->pHomMenu,2,4); + packet(0x092d,clif->pPartyInvite2,2); + packet(0x0941,clif->pChangeDir,2,4); + packet(0x0947,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x094f,clif->pReqClickBuyingStore,2); + packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0960,clif->pSearchStoreInfoNextPage,0); #endif // 2015-09-09aRagexeRE #if PACKETVER == 20150909 - packet(0x023b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0361,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0437,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0861,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0871,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x087b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0883,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0886,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0928,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0941,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0962,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x023b,clif->pActionRequest,2,6); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqCloseBuyingStore,0); + packet(0x0361,clif->pGetCharNameRequest,2); + packet(0x0365,clif->pWalkToXY,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pStoragePassword,0); + packet(0x0437,clif->pMoveFromKafra,2,4); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0861,clif->pDull/*,XXX*/); + packet(0x0871,clif->pItemListWindowSelected,2,4,8); + packet(0x087b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0883,clif->pTakeItem,2); + packet(0x0886,clif->pWantToConnection,2,6,10,14,18); + packet(0x088f,clif->pPartyInvite2,2); + packet(0x0895,clif->pFriendsListAdd,2); + packet(0x0928,clif->pDull/*,XXX*/); + packet(0x0940,clif->pReqClickBuyingStore,2); + packet(0x0941,clif->pHomMenu,2,4); + packet(0x095e,clif->pDropItem,2,4); + packet(0x0962,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pChangeDir,2,4); #endif // 2015-09-16cRagexeRE #if PACKETVER == 20150916 - packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0817,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0835,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0869,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0873,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x089b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0920,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0924,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x092f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0934,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x093e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0941,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0942,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0948,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0960,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0969,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x022d,clif->pUseSkillToPos,2,4,6,8); + packet(0x0817,clif->pSearchStoreInfoNextPage,0); + packet(0x0835,clif->pReqClickBuyingStore,2); + packet(0x085e,clif->pMoveFromKafra,2,4); + packet(0x0869,clif->pActionRequest,2,6); + packet(0x0873,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0877,clif->pWalkToXY,2); + packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x089b,clif->pPartyBookingRegisterReq,2,4); + packet(0x089c,clif->pTakeItem,2); + packet(0x089e,clif->pFriendsListAdd,2); + packet(0x08ac,clif->pTickSend,2); + packet(0x0920,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0924,clif->pPartyInvite2,2); + packet(0x092e,clif->pReqCloseBuyingStore,0); + packet(0x092f,clif->pDropItem,2,4); + packet(0x0934,clif->pMoveToKafra,2,4); + packet(0x0936,clif->pChangeDir,2,4); + packet(0x0938,clif->pDull/*,XXX*/); + packet(0x093e,clif->pUseSkillToId,2,4,6); + packet(0x0941,clif->pStoragePassword,0); + packet(0x0942,clif->pSolveCharName,2); + packet(0x0948,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x095a,clif->pGetCharNameRequest,2); + packet(0x0960,clif->pHomMenu,2,4); + packet(0x0961,clif->pItemListWindowSelected,2,4,8); + packet(0x0969,clif->pWantToConnection,2,6,10,14,18); #endif // 2015-09-23bRagexeRE, 2015-09-23eRagexeRE, 2015-09-23fRagexeRE #if PACKETVER == 20150923 - packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x085c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x085d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0864,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x086f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0870,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0879,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a5,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a6,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x092b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0936,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0951,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 + packet(0x0361,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x0817,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x085c,clif->pSolveCharName,2); + packet(0x085d,clif->pFriendsListAdd,2); + packet(0x0864,clif->pHomMenu,2,4); + packet(0x086e,clif->pReqCloseBuyingStore,0); + packet(0x086f,clif->pUseSkillToId,2,4,6); + packet(0x0870,clif->pChangeDir,2,4); + packet(0x0879,clif->pMoveFromKafra,2,4); + packet(0x087f,clif->pSearchStoreInfoNextPage,0); + packet(0x0886,clif->pWalkToXY,2); + packet(0x088e,clif->pReqClickBuyingStore,2); + packet(0x0892,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0895,clif->pDull/*,XXX*/); + packet(0x089b,clif->pUseSkillToPos,2,4,6,8); + packet(0x089f,clif->pMoveToKafra,2,4); + packet(0x08a0,clif->pTickSend,2); + packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a5,clif->pGetCharNameRequest,2); + packet(0x08a6,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x092b,clif->pTakeItem,2); + packet(0x0930,clif->pDropItem,2,4); + packet(0x0936,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093b,clif->pPartyInvite2,2); + packet(0x0951,clif->pActionRequest,2,6); + packet(0x0961,clif->pItemListWindowSelected,2,4,8); #endif // 2015-10-01bRagexeRE #if PACKETVER == 20151001 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0960,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0960,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-10-07aRagexeRE #if PACKETVER == 20151007 - packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x093f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pFriendsListAdd,2); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pDull/*,XXX*/); + packet(0x093f,clif->pHomMenu,2,4); + packet(0x095f,clif->pChangeDir,2,4); + packet(0x0961,clif->pWantToConnection,2,6,10,14,18); + packet(0x0967,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-10-14bRagexeRE #if PACKETVER == 20151014 - packet(0x0202,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0838,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0863,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0874,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0881,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0883,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0889,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x088e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x089f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08aa,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0930,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0944,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x094f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0956,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0961,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 + packet(0x0202,clif->pPartyBookingRegisterReq,2,4); + packet(0x0817,clif->pFriendsListAdd,2); + packet(0x0838,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085a,clif->pUseSkillToId,2,4,6); + packet(0x085c,clif->pActionRequest,2,6); + packet(0x0860,clif->pDropItem,2,4); + packet(0x0863,clif->pChangeDir,2,4); + packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0872,clif->pHomMenu,2,4); + packet(0x0874,clif->pUseSkillToPos,2,4,6,8); + packet(0x0881,clif->pMoveFromKafra,2,4); + packet(0x0883,clif->pTickSend,2); + packet(0x0884,clif->pItemListWindowSelected,2,4,8); + packet(0x0889,clif->pReqClickBuyingStore,2); + packet(0x088e,clif->pDull/*,XXX*/); + packet(0x089a,clif->pDull/*,XXX*/); + packet(0x089b,clif->pReqCloseBuyingStore,0); + packet(0x089f,clif->pWalkToXY,2); + packet(0x08aa,clif->pTakeItem,2); + packet(0x091c,clif->pPartyInvite2,2); + packet(0x091d,clif->pStoragePassword,0); + packet(0x0930,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0934,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0944,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x094f,clif->pSearchStoreInfoNextPage,0); + packet(0x0956,clif->pSolveCharName,2); + packet(0x095e,clif->pMoveToKafra,2,4); + packet(0x0961,clif->pGetCharNameRequest,2); + packet(0x0964,clif->pWantToConnection,2,6,10,14,18); #endif // 2015-10-21aRagexeRE, 2015-10-22aRagexeRE #if PACKETVER == 20151021 || \ PACKETVER == 20151022 - packet(0x023b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x02c4,clif->pStoragePassword,0); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pMoveToKafra,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pChangeDir,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086a,clif->pFriendsListAdd,2); + packet(0x091d,clif->pHomMenu,2,4); + packet(0x0940,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-10-28bRagexeRE, 2015-10-28bRagexeRE_2, 2015-10-28cRagexeRE, 2015-10-28dRagexeRE, 2015-10-29aRagexeRE #if PACKETVER == 20151028 || \ PACKETVER == 20151029 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0860,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0860,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-11-04aRagexeRE #if PACKETVER == 20151104 - packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0363,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0811,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0886,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a3,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a5,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0928,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0939,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093a,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0940,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x023b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0360,clif->pWantToConnection,2,6,10,14,18); + packet(0x0363,clif->pWalkToXY,2); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pReqClickBuyingStore,2); + packet(0x0437,clif->pDropItem,2,4); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pFriendsListAdd,2); + packet(0x0811,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0886,clif->pTickSend,2); + packet(0x0887,clif->pGetCharNameRequest,2); + packet(0x088b,clif->pMoveToKafra,2,4); + packet(0x088d,clif->pHomMenu,2,4); + packet(0x08a3,clif->pDull/*,XXX*/); + packet(0x08a5,clif->pPartyInvite2,2); + packet(0x0928,clif->pChangeDir,2,4); + packet(0x0939,clif->pDull/*,XXX*/); + packet(0x093a,clif->pItemListWindowSelected,2,4,8,12); + packet(0x0940,clif->pStoragePassword,2,4,20); + packet(0x0964,clif->pTakeItem,2); #endif // 2015-11-11aRagexeRE #if PACKETVER == 20151111 - packet(0x02c4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0862,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0871,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0885,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0942,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0958,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0967,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0969,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x02c4,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pMoveToKafra,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pPartyInvite2,2); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pItemListWindowSelected,2,4,8,12); + packet(0x0862,clif->pDropItem,2,4); + packet(0x0871,clif->pFriendsListAdd,2); + packet(0x0885,clif->pActionRequest,2,6); + packet(0x089c,clif->pChangeDir,2,4); + packet(0x0942,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x094a,clif->pTakeItem,2); + packet(0x0958,clif->pDull/*,XXX*/); + packet(0x0966,clif->pMoveFromKafra,2,4); + packet(0x0967,clif->pWantToConnection,2,6,10,14,18); + packet(0x0969,clif->pStoragePassword,2,4,20); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-11-18aRagexeRE #if PACKETVER == 20151118 - packet(0x022d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x035f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x088b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0921,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0943,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0946,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0957,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095c,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pTickSend,2); + packet(0x035f,clif->pHomMenu,2,4); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pPartyInvite2,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086b,clif->pMoveToKafra,2,4); + packet(0x088b,clif->pStoragePassword,2,4,20); + packet(0x08ab,clif->pMoveFromKafra,2,4); + packet(0x0921,clif->pFriendsListAdd,2); + packet(0x0925,clif->pWantToConnection,2,6,10,14,18); + packet(0x092e,clif->pChangeDir,2,4); + packet(0x092f,clif->pDull/*,XXX*/); + packet(0x093c,clif->pDropItem,2,4); + packet(0x0943,clif->pTakeItem,2); + packet(0x0946,clif->pItemListWindowSelected,2,4,8,12); + packet(0x0957,clif->pDull/*,XXX*/); + packet(0x095c,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-11-25bRagexeRE, 2015-11-25cRagexeRE, 2015-11-25dRagexeRE #if PACKETVER == 20151125 - packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0368,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0438,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0802,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0863,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0883,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0884,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a9,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0956,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x0361,clif->pSearchStoreInfoNextPage,0); + packet(0x0365,clif->pWalkToXY,2); + packet(0x0366,clif->pMoveFromKafra,2,4); + packet(0x0368,clif->pItemListWindowSelected,2,4,8,12); + packet(0x0438,clif->pTakeItem,2); + packet(0x0802,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0838,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x085e,clif->pGetCharNameRequest,2); + packet(0x085f,clif->pMoveToKafra,2,4); + packet(0x0863,clif->pReqCloseBuyingStore,0); + packet(0x0883,clif->pChangeDir,2,4); + packet(0x0884,clif->pStoragePassword,2,4,20); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x088c,clif->pTickSend,2); + packet(0x088d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x089c,clif->pActionRequest,2,6); + packet(0x089f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a9,clif->pDropItem,2,4); + packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0920,clif->pSolveCharName,2); + packet(0x092a,clif->pUseSkillToId,2,4,6); + packet(0x092e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0939,clif->pReqClickBuyingStore,2); + packet(0x093e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0951,clif->pHomMenu,2,4); + packet(0x0956,clif->pPartyInvite2,2); + packet(0x0957,clif->pDull/*,XXX*/); + packet(0x0959,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2015-12-02bRagexeRE #if PACKETVER == 20151202 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0870,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8,12); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0870,clif->pStoragePassword,2,4,20); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2015-12-09aRagexeRE #if PACKETVER == 20151209 - packet(0x0365,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x07e4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x07ec,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0811,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0819,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085b,clif->pStoragePassword,2,4,20); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x085d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0861,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0866,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0894,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a1,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0932,clif->pItemListWindowSelected,2,4,8,12); // CZ_ITEMLISTWIN_RES // -1 - packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0948,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0961,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0964,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 + packet(0x0365,clif->pWalkToXY,2); + packet(0x0369,clif->pSolveCharName,2); + packet(0x07e4,clif->pPartyInvite2,2); + packet(0x07ec,clif->pTakeItem,2); + packet(0x0811,clif->pTickSend,2); + packet(0x0819,clif->pReqCloseBuyingStore,0); + packet(0x085b,clif->pStoragePassword,2,4,20); + packet(0x085d,clif->pGetCharNameRequest,2); + packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0861,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0866,clif->pChangeDir,2,4); + packet(0x0875,clif->pSearchStoreInfoNextPage,0); + packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087f,clif->pReqClickBuyingStore,2); + packet(0x088e,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pDull/*,XXX*/); + packet(0x0894,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a1,clif->pHomMenu,2,4); + packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092d,clif->pMoveFromKafra,2,4); + packet(0x0930,clif->pDropItem,2,4); + packet(0x0932,clif->pItemListWindowSelected,2,4,8,12); + packet(0x093b,clif->pMoveToKafra,2,4); + packet(0x0948,clif->pWantToConnection,2,6,10,14,18); + packet(0x094a,clif->pPartyBookingRegisterReq,2,4,6); + packet(0x0956,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095c,clif->pDull/*,XXX*/); + packet(0x0961,clif->pActionRequest,2,6); + packet(0x0964,clif->pFriendsListAdd,2); #endif // 2015-12-16aRagexeRE #if PACKETVER == 20151216 - packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0361,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0364,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0865,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0874,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0885,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a2,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a9,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0947,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0966,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0968,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x022d,clif->pChangeDir,2,4); + packet(0x0361,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0364,clif->pDull/*,XXX*/); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0436,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pReqCloseBuyingStore,0); + packet(0x085b,clif->pTickSend,2); + packet(0x0864,clif->pMoveFromKafra,2,4); + packet(0x0865,clif->pUseSkillToPos,2,4,6,8); + packet(0x086a,clif->pDull/*,XXX*/); + packet(0x086e,clif->pPartyInvite2,2); + packet(0x0870,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0874,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0885,clif->pStoragePassword,0); + packet(0x088b,clif->pGetCharNameRequest,2); + packet(0x089d,clif->pActionRequest,2,6); + packet(0x089e,clif->pSolveCharName,2); + packet(0x08a2,clif->pWalkToXY,2); + packet(0x08a9,clif->pTakeItem,2); + packet(0x08ac,clif->pMoveToKafra,2,4); + packet(0x091d,clif->pFriendsListAdd,2); + packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0947,clif->pWantToConnection,2,6,10,14,18); + packet(0x0949,clif->pItemListWindowSelected,2,4,8); + packet(0x0954,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0960,clif->pSearchStoreInfoNextPage,0); + packet(0x0966,clif->pDropItem,2,4); + packet(0x0968,clif->pUseSkillToId,2,4,6); #endif // 2015-12-23bRagexeRE #if PACKETVER == 20151223 - packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0362,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0802,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0815,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0864,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0866,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0875,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0876,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0881,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0884,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0886,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08aa,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0920,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0923,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0924,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x095e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0965,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0967,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x02c4,clif->pMoveToKafra,2,4); + packet(0x0362,clif->pDull/*,XXX*/); + packet(0x0364,clif->pTakeItem,2); + packet(0x0802,clif->pDull/*,XXX*/); + packet(0x0815,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0864,clif->pGetCharNameRequest,2); + packet(0x0866,clif->pWantToConnection,2,6,10,14,18); + packet(0x086e,clif->pUseSkillToPos,2,4,6,8); + packet(0x0872,clif->pPartyBookingRegisterReq,2,4); + packet(0x0875,clif->pUseSkillToId,2,4,6); + packet(0x0876,clif->pDropItem,2,4); + packet(0x0881,clif->pActionRequest,2,6); + packet(0x0884,clif->pMoveFromKafra,2,4); + packet(0x0886,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088d,clif->pHomMenu,2,4); + packet(0x0890,clif->pItemListWindowSelected,2,4,8); + packet(0x0891,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0898,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08aa,clif->pPartyInvite2,2); + packet(0x0918,clif->pSearchStoreInfoNextPage,0); + packet(0x091a,clif->pReqClickBuyingStore,2); + packet(0x091b,clif->pFriendsListAdd,2); + packet(0x0920,clif->pWalkToXY,2); + packet(0x0923,clif->pChangeDir,2,4); + packet(0x0924,clif->pTickSend,2); + packet(0x095e,clif->pSolveCharName,2); + packet(0x095f,clif->pReqCloseBuyingStore,0); + packet(0x0965,clif->pStoragePassword,0); + packet(0x0967,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2015-12-30aRagexeRE #if PACKETVER == 20151230 - packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x07ec,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0861,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0869,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0886,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x088e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0923,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0949,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x02c4,clif->pMoveToKafra,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pDull/*,XXX*/); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0437,clif->pWalkToXY,2); + packet(0x07ec,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pWantToConnection,2,6,10,14,18); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085b,clif->pItemListWindowSelected,2,4,8); + packet(0x0861,clif->pPartyInvite2,2); + packet(0x0869,clif->pChangeDir,2,4); + packet(0x0886,clif->pUseSkillToPos,2,4,6,8); + packet(0x088e,clif->pFriendsListAdd,2); + packet(0x0897,clif->pDropItem,2,4); + packet(0x091d,clif->pMoveFromKafra,2,4); + packet(0x0923,clif->pStoragePassword,0); + packet(0x093a,clif->pDull/*,XXX*/); + packet(0x0949,clif->pHomMenu,2,4); + packet(0x094e,clif->pTakeItem,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-01-06aRagexeRE #if PACKETVER == 20160106 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0861,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x086c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x087f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0940,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pHomMenu,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0861,clif->pTakeItem,2); + packet(0x086a,clif->pDropItem,2,4); + packet(0x086c,clif->pDull/*,XXX*/); + packet(0x0878,clif->pStoragePassword,0); + packet(0x087a,clif->pPartyBookingRegisterReq,2,4); + packet(0x087f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0885,clif->pMoveToKafra,2,4); + packet(0x0889,clif->pChangeDir,2,4); + packet(0x088a,clif->pPartyInvite2,2); + packet(0x0891,clif->pMoveFromKafra,2,4); + packet(0x08a0,clif->pFriendsListAdd,2); + packet(0x091d,clif->pItemListWindowSelected,2,4,8); + packet(0x0940,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-01-13aRagexeRE, 2016-01-13bRagexeRE, 2016-01-13bRagexeRE_2, 2016-01-13cRagexeRE #if PACKETVER == 20160113 - packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x085b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0864,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0893,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a0,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a6,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08aa,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0924,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0930,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0932,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x093c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0941,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0967,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x022d,clif->pUseSkillToPos,2,4,6,8); + packet(0x023b,clif->pWalkToXY,2); + packet(0x035f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0815,clif->pStoragePassword,0); + packet(0x085b,clif->pChangeDir,2,4); + packet(0x0864,clif->pReqClickBuyingStore,2); + packet(0x086d,clif->pHomMenu,2,4); + packet(0x0873,clif->pDull/*,XXX*/); + packet(0x0875,clif->pSearchStoreInfoNextPage,0); + packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x088b,clif->pPartyInvite2,2); + packet(0x088c,clif->pReqCloseBuyingStore,0); + packet(0x0892,clif->pUseSkillToId,2,4,6); + packet(0x0893,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x089a,clif->pActionRequest,2,6); + packet(0x08a0,clif->pTickSend,2); + packet(0x08a6,clif->pTakeItem,2); + packet(0x08aa,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0919,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091b,clif->pGetCharNameRequest,2); + packet(0x0924,clif->pDropItem,2,4); + packet(0x0930,clif->pSolveCharName,2); + packet(0x0932,clif->pMoveToKafra,2,4); + packet(0x093c,clif->pMoveFromKafra,2,4); + packet(0x0941,clif->pItemListWindowSelected,2,4,8); + packet(0x094d,clif->pWantToConnection,2,6,10,14,18); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x0967,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2016-01-20aRagexeRE #if PACKETVER == 20160120 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0865,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0865,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-01-27aRagexeRE, 2016-01-27aRagexeRE_2, 2016-01-27bRagexeRE #if PACKETVER == 20160127 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0961,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085e,clif->pChangeDir,2,4); + packet(0x0922,clif->pHomMenu,2,4); + packet(0x095a,clif->pStoragePassword,0); + packet(0x0961,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-02-03aRagexeRE #if PACKETVER == 20160203 - packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0835,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0873,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0918,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0940,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0947,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0954,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pFriendsListAdd,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0437,clif->pTickSend,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pSearchStoreInfoNextPage,0); + packet(0x0811,clif->pChangeDir,2,4); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pWantToConnection,2,6,10,14,18); + packet(0x0835,clif->pItemListWindowSelected,2,4,8); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0872,clif->pHomMenu,2,4); + packet(0x0873,clif->pStoragePassword,0); + packet(0x088c,clif->pDull/*,XXX*/); + packet(0x0918,clif->pDull/*,XXX*/); + packet(0x093e,clif->pPartyInvite2,2); + packet(0x0940,clif->pWalkToXY,2); + packet(0x0947,clif->pDropItem,2,4); + packet(0x0954,clif->pMoveFromKafra,2,4); + packet(0x095a,clif->pTakeItem,2); + packet(0x095d,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-02-11aRagexeRE #if PACKETVER == 20160211 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0886,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pStoragePassword,0); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086c,clif->pChangeDir,2,4); + packet(0x0870,clif->pFriendsListAdd,2); + packet(0x0886,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17bRagexeRE_2, 2016-02-17cRagexeRE #if PACKETVER == 20160217 - packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x023b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0362,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0864,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0870,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0873,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x087a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0888,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x088f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a9,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08ad,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x091d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0920,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0926,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0941,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0966,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x0202,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x023b,clif->pReqCloseBuyingStore,0); + packet(0x0362,clif->pChangeDir,2,4); + packet(0x0365,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0864,clif->pMoveToKafra,2,4); + packet(0x0870,clif->pFriendsListAdd,2); + packet(0x0873,clif->pHomMenu,2,4); + packet(0x087a,clif->pWantToConnection,2,6,10,14,18); + packet(0x0888,clif->pTickSend,2); + packet(0x088d,clif->pReqClickBuyingStore,2); + packet(0x088f,clif->pDropItem,2,4); + packet(0x0899,clif->pDull/*,XXX*/); + packet(0x08a0,clif->pMoveFromKafra,2,4); + packet(0x08a9,clif->pPartyInvite2,2); + packet(0x08ac,clif->pPartyBookingRegisterReq,2,4); + packet(0x08ad,clif->pSearchStoreInfoNextPage,0); + packet(0x091d,clif->pWalkToXY,2); + packet(0x0920,clif->pActionRequest,2,6); + packet(0x0926,clif->pUseSkillToId,2,4,6); + packet(0x092e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093b,clif->pItemListWindowSelected,2,4,8); + packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0941,clif->pTakeItem,2); + packet(0x094a,clif->pUseSkillToPos,2,4,6,8); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x095e,clif->pStoragePassword,0); + packet(0x0966,clif->pGetCharNameRequest,2); + packet(0x0967,clif->pSolveCharName,2); + packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2016-02-24aRagexeRE, 2016-02-24bRagexeRE #if PACKETVER == 20160224 - packet(0x022d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0364,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0436,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0861,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0885,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0888,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0929,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0936,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0938,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pPartyInvite2,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0364,clif->pUseSkillToId,2,4,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pMoveFromKafra,2,4); + packet(0x0436,clif->pDropItem,2,4); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pMoveToKafra,2,4); + packet(0x0861,clif->pWantToConnection,2,6,10,14,18); + packet(0x086b,clif->pDull/*,XXX*/); + packet(0x0884,clif->pActionRequest,2,6); + packet(0x0885,clif->pReqClickBuyingStore,2); + packet(0x0888,clif->pWalkToXY,2); + packet(0x08a9,clif->pFriendsListAdd,2); + packet(0x0920,clif->pDull/*,XXX*/); + packet(0x0929,clif->pChangeDir,2,4); + packet(0x092f,clif->pItemListWindowSelected,2,4,8); + packet(0x0936,clif->pStoragePassword,0); + packet(0x0938,clif->pTakeItem,2); + packet(0x094c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0961,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-03-02bRagexeRE #if PACKETVER == 20160302 - packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0367,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0802,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0819,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0868,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0873,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0883,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a6,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a9,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0927,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x094e,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0950,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0957,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0968,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x022d,clif->pChangeDir,2,4); + packet(0x0367,clif->pReqClickBuyingStore,2); + packet(0x0802,clif->pWantToConnection,2,6,10,14,18); + packet(0x0819,clif->pWalkToXY,2); + packet(0x085b,clif->pFriendsListAdd,2); + packet(0x0864,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0865,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0867,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0868,clif->pHomMenu,2,4); + packet(0x0873,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0875,clif->pSearchStoreInfoNextPage,0); + packet(0x087a,clif->pUseSkillToPos,2,4,6,8); + packet(0x087d,clif->pPartyInvite2,2); + packet(0x0883,clif->pUseSkillToId,2,4,6); + packet(0x08a6,clif->pReqCloseBuyingStore,0); + packet(0x08a9,clif->pMoveFromKafra,2,4); + packet(0x091a,clif->pDropItem,2,4); + packet(0x0927,clif->pTakeItem,2); + packet(0x092d,clif->pDull/*,XXX*/); + packet(0x092f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0945,clif->pGetCharNameRequest,2); + packet(0x094e,clif->pStoragePassword,0); + packet(0x0950,clif->pDull/*,XXX*/); + packet(0x0957,clif->pItemListWindowSelected,2,4,8); + packet(0x095a,clif->pTickSend,2); + packet(0x0960,clif->pMoveToKafra,2,4); + packet(0x0961,clif->pPartyBookingRegisterReq,2,4); + packet(0x0967,clif->pSolveCharName,2); + packet(0x0968,clif->pActionRequest,2,6); #endif // 2016-03-09aRagexeRE #if PACKETVER == 20160309 - packet(0x023b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0281,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x083c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x087e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0920,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0929,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0932,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0956,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x096a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x023b,clif->pDropItem,2,4); + packet(0x0281,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pFriendsListAdd,2); + packet(0x0364,clif->pStoragePassword,0); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0819,clif->pUseSkillToPos,2,4,6,8); + packet(0x0838,clif->pWalkToXY,2); + packet(0x083c,clif->pPartyInvite2,2); + packet(0x085a,clif->pMoveToKafra,2,4); + packet(0x085f,clif->pUseSkillToId,2,4,6); + packet(0x0866,clif->pSearchStoreInfoNextPage,0); + packet(0x086a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0873,clif->pDull/*,XXX*/); + packet(0x087c,clif->pWantToConnection,2,6,10,14,18); + packet(0x087e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089b,clif->pItemListWindowSelected,2,4,8); + packet(0x089d,clif->pChangeDir,2,4); + packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); + packet(0x091d,clif->pGetCharNameRequest,2); + packet(0x0920,clif->pMoveFromKafra,2,4); + packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0929,clif->pDull/*,XXX*/); + packet(0x092a,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092e,clif->pReqCloseBuyingStore,0); + packet(0x0932,clif->pHomMenu,2,4); + packet(0x094f,clif->pActionRequest,2,6); + packet(0x0956,clif->pTickSend,2); + packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x096a,clif->pTakeItem,2); #endif // 2016-03-16aRagexeRE #if PACKETVER == 20160316 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0922,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-03-23aRagexeRE, 2016-03-23bRagexeRE #if PACKETVER == 20160323 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0869,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0872,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0878,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0883,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0896,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x093c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pFriendsListAdd,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pDull/*,XXX*/); + packet(0x0869,clif->pTakeItem,2); + packet(0x086a,clif->pMoveFromKafra,2,4); + packet(0x0872,clif->pStoragePassword,0); + packet(0x0878,clif->pWantToConnection,2,6,10,14,18); + packet(0x0883,clif->pPartyInvite2,2); + packet(0x0896,clif->pItemListWindowSelected,2,4,8); + packet(0x089a,clif->pHomMenu,2,4); + packet(0x091b,clif->pDull/*,XXX*/); + packet(0x0926,clif->pMoveToKafra,2,4); + packet(0x0927,clif->pPartyBookingRegisterReq,2,4); + packet(0x0933,clif->pChangeDir,2,4); + packet(0x093c,clif->pDropItem,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-03-30aRagexeRE #if PACKETVER == 20160330 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0365,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0878,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0918,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0925,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0930,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0939,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x093b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0365,clif->pStoragePassword,0); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pPartyInvite2,2); + packet(0x086d,clif->pTakeItem,2); + packet(0x0878,clif->pDull/*,XXX*/); + packet(0x087f,clif->pMoveFromKafra,2,4); + packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x088b,clif->pHomMenu,2,4); + packet(0x088d,clif->pDull/*,XXX*/); + packet(0x0918,clif->pMoveToKafra,2,4); + packet(0x0925,clif->pWantToConnection,2,6,10,14,18); + packet(0x092a,clif->pItemListWindowSelected,2,4,8); + packet(0x092c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0930,clif->pChangeDir,2,4); + packet(0x0939,clif->pDropItem,2,4); + packet(0x093b,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-04-06aRagexeRE #if PACKETVER == 20160406 - packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x07e4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0869,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0877,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0879,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0895,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0898,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ac,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0927,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0934,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0949,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0953,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x0364,clif->pSolveCharName,2); + packet(0x07e4,clif->pDropItem,2,4); + packet(0x0819,clif->pSearchStoreInfoNextPage,0); + packet(0x085a,clif->pPartyBookingRegisterReq,2,4); + packet(0x085c,clif->pUseSkillToPos,2,4,6,8); + packet(0x0869,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0877,clif->pTakeItem,2); + packet(0x0878,clif->pFriendsListAdd,2); + packet(0x0879,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0884,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0895,clif->pWantToConnection,2,6,10,14,18); + packet(0x0898,clif->pPartyInvite2,2); + packet(0x089b,clif->pGetCharNameRequest,2); + packet(0x089e,clif->pMoveFromKafra,2,4); + packet(0x08a1,clif->pActionRequest,2,6); + packet(0x08a9,clif->pReqCloseBuyingStore,0); + packet(0x08ac,clif->pDull/*,XXX*/); + packet(0x0927,clif->pMoveToKafra,2,4); + packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0933,clif->pChangeDir,2,4); + packet(0x0934,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pTickSend,2); + packet(0x0949,clif->pItemListWindowSelected,2,4,8); + packet(0x094d,clif->pReqClickBuyingStore,2); + packet(0x0953,clif->pStoragePassword,0); + packet(0x095d,clif->pHomMenu,2,4); + packet(0x095f,clif->pWalkToXY,2); + packet(0x0962,clif->pDull/*,XXX*/); #endif // 2016-04-14aRagexeRE, 2016-04-14bRagexeRE #if PACKETVER == 20160414 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0363,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0880,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0918,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0922,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0927,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0931,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0934,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0945,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0953,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pItemListWindowSelected,2,4,8); + packet(0x0363,clif->pTakeItem,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pWantToConnection,2,6,10,14,18); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x0880,clif->pPartyBookingRegisterReq,2,4); + packet(0x0885,clif->pMoveFromKafra,2,4); + packet(0x089e,clif->pPartyInvite2,2); + packet(0x0918,clif->pDull/*,XXX*/); + packet(0x0922,clif->pChangeDir,2,4); + packet(0x0927,clif->pStoragePassword,0); + packet(0x0931,clif->pDropItem,2,4); + packet(0x0934,clif->pHomMenu,2,4); + packet(0x0945,clif->pFriendsListAdd,2); + packet(0x0953,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-04-20aRagexeRE #if PACKETVER == 20160420 - packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0872,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0874,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0884,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0935,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x094e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x02c4,clif->pTickSend,2); + packet(0x035f,clif->pPartyInvite2,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pHomMenu,2,4); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0864,clif->pTakeItem,2); + packet(0x0870,clif->pDull/*,XXX*/); + packet(0x0872,clif->pChangeDir,2,4); + packet(0x0874,clif->pMoveToKafra,2,4); + packet(0x0884,clif->pDropItem,2,4); + packet(0x0888,clif->pWantToConnection,2,6,10,14,18); + packet(0x088b,clif->pMoveFromKafra,2,4); + packet(0x08a5,clif->pStoragePassword,0); + packet(0x092f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0935,clif->pFriendsListAdd,2); + packet(0x094e,clif->pItemListWindowSelected,2,4,8); + packet(0x095c,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-04-27aRagexeRE #if PACKETVER == 20160427 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0835,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfoNextPage,0); + packet(0x0835,clif->pStoragePassword,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-05-04aRagexeRE #if PACKETVER == 20160504 - packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0365,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x083c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x087f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0884,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0887,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0898,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08ad,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0918,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0922,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0924,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0940,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0941,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0948,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0952,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0969,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x0202,clif->pHomMenu,2,4); + packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0365,clif->pDull/*,XXX*/); + packet(0x083c,clif->pSearchStoreInfoNextPage,0); + packet(0x085f,clif->pActionRequest,2,6); + packet(0x086b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x087f,clif->pReqCloseBuyingStore,0); + packet(0x0884,clif->pUseSkillToPos,2,4,6,8); + packet(0x0886,clif->pMoveToKafra,2,4); + packet(0x0887,clif->pPartyInvite2,2); + packet(0x088a,clif->pTakeItem,2); + packet(0x088d,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pItemListWindowSelected,2,4,8); + packet(0x0890,clif->pDropItem,2,4); + packet(0x0893,clif->pPartyBookingRegisterReq,2,4); + packet(0x0898,clif->pDull/*,XXX*/); + packet(0x089d,clif->pSolveCharName,2); + packet(0x08ad,clif->pChangeDir,2,4); + packet(0x0918,clif->pTickSend,2); + packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0922,clif->pGetCharNameRequest,2); + packet(0x0924,clif->pWalkToXY,2); + packet(0x093e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0940,clif->pWantToConnection,2,6,10,14,18); + packet(0x0941,clif->pMoveFromKafra,2,4); + packet(0x0948,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0952,clif->pFriendsListAdd,2); + packet(0x095b,clif->pReqClickBuyingStore,2); + packet(0x0969,clif->pStoragePassword,0); #endif // 2016-05-11aRagexeRE, 2016-05-11bRagexeRE #if PACKETVER == 20160511 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0894,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0918,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0940,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085e,clif->pChangeDir,2,4); + packet(0x0894,clif->pFriendsListAdd,2); + packet(0x089b,clif->pDull/*,XXX*/); + packet(0x0918,clif->pHomMenu,2,4); + packet(0x0920,clif->pWantToConnection,2,6,10,14,18); + packet(0x0940,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-05-18aRagexeRE #if PACKETVER == 20160518 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0874,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a9,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0928,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086c,clif->pChangeDir,2,4); + packet(0x0874,clif->pWantToConnection,2,6,10,14,18); + packet(0x089a,clif->pStoragePassword,0); + packet(0x08a9,clif->pFriendsListAdd,2); + packet(0x0928,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-05-25aRagexeRE #if PACKETVER == 20160525 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0867,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x092c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0945,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0951,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0956,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pDull/*,XXX*/); + packet(0x085e,clif->pDropItem,2,4); + packet(0x0867,clif->pHomMenu,2,4); + packet(0x086a,clif->pWantToConnection,2,6,10,14,18); + packet(0x0899,clif->pTakeItem,2); + packet(0x089c,clif->pChangeDir,2,4); + packet(0x091d,clif->pStoragePassword,0); + packet(0x092c,clif->pPartyBookingRegisterReq,2,4); + packet(0x0937,clif->pItemListWindowSelected,2,4,8); + packet(0x0945,clif->pPartyInvite2,2); + packet(0x094a,clif->pMoveToKafra,2,4); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0951,clif->pFriendsListAdd,2); + packet(0x0956,clif->pMoveFromKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-06-01aRagexeRE #if PACKETVER == 20160601 - packet(0x0202,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0863,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0870,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x088f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0895,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a7,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0924,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x095f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0961,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pReqCloseBuyingStore,0); + packet(0x02c4,clif->pPartyInvite2,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pFriendsListAdd,2); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0863,clif->pTakeItem,2); + packet(0x0870,clif->pMoveFromKafra,2,4); + packet(0x087d,clif->pItemListWindowSelected,2,4,8); + packet(0x088d,clif->pDropItem,2,4); + packet(0x088f,clif->pMoveToKafra,2,4); + packet(0x0895,clif->pHomMenu,2,4); + packet(0x08a7,clif->pDull/*,XXX*/); + packet(0x08ac,clif->pWantToConnection,2,6,10,14,18); + packet(0x0924,clif->pDull/*,XXX*/); + packet(0x095b,clif->pChangeDir,2,4); + packet(0x095f,clif->pStoragePassword,0); + packet(0x0961,clif->pPartyBookingRegisterReq,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-06-08aRagexeRE, 2016-06-08bRagexeRE #if PACKETVER == 20160608 - packet(0x022d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x035f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0437,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07ec,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0802,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0889,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0899,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0969,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pItemListWindowSelected,2,4,8); + packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); + packet(0x035f,clif->pPartyInvite2,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pWalkToXY,2); + packet(0x0437,clif->pWantToConnection,2,6,10,14,18); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07ec,clif->pChangeDir,2,4); + packet(0x0802,clif->pTickSend,2); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085c,clif->pDull/*,XXX*/); + packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0889,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0899,clif->pTakeItem,2); + packet(0x089b,clif->pHomMenu,2,4); + packet(0x08a6,clif->pMoveFromKafra,2,4); + packet(0x093b,clif->pDull/*,XXX*/); + packet(0x094d,clif->pDropItem,2,4); + packet(0x0958,clif->pStoragePassword,0); + packet(0x095b,clif->pMoveToKafra,2,4); + packet(0x0969,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-06-15aRagexeRE #if PACKETVER == 20160615 - packet(0x0281,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x083c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0866,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0870,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x092f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0947,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0948,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x094b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0957,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0958,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0961,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x0281,clif->pFriendsListAdd,2); + packet(0x0363,clif->pWantToConnection,2,6,10,14,18); + packet(0x0364,clif->pStoragePassword,0); + packet(0x0369,clif->pHomMenu,2,4); + packet(0x083c,clif->pGetCharNameRequest,2); + packet(0x0866,clif->pWalkToXY,2); + packet(0x0870,clif->pDull/*,XXX*/); + packet(0x087d,clif->pSolveCharName,2); + packet(0x087e,clif->pTakeItem,2); + packet(0x087f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x0887,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0888,clif->pUseSkillToId,2,4,6); + packet(0x088a,clif->pTickSend,2); + packet(0x088d,clif->pItemListWindowSelected,2,4,8); + packet(0x0891,clif->pUseSkillToPos,2,4,6,8); + packet(0x0898,clif->pDropItem,2,4); + packet(0x092f,clif->pSearchStoreInfoNextPage,0); + packet(0x093e,clif->pPartyInvite2,2); + packet(0x0947,clif->pReqCloseBuyingStore,0); + packet(0x0948,clif->pActionRequest,2,6); + packet(0x094a,clif->pReqClickBuyingStore,2); + packet(0x094b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0954,clif->pChangeDir,2,4); + packet(0x0957,clif->pMoveToKafra,2,4); + packet(0x0958,clif->pMoveFromKafra,2,4); + packet(0x095c,clif->pPartyBookingRegisterReq,2,4); + packet(0x095e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0961,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2016-06-22aRagexeRE #if PACKETVER == 20160622 - packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x035f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x07e4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0867,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0887,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0890,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0892,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x089a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a2,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a8,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x092f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0936,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0959,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 + packet(0x023b,clif->pUseSkillToPos,2,4,6,8); + packet(0x035f,clif->pMoveFromKafra,2,4); + packet(0x0361,clif->pPartyInvite2,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0437,clif->pWalkToXY,2); + packet(0x07e4,clif->pHomMenu,2,4); + packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0865,clif->pDull/*,XXX*/); + packet(0x0867,clif->pDull/*,XXX*/); + packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0887,clif->pReqCloseBuyingStore,0); + packet(0x0890,clif->pFriendsListAdd,2); + packet(0x0891,clif->pReqClickBuyingStore,2); + packet(0x0892,clif->pSearchStoreInfoNextPage,0); + packet(0x089a,clif->pPartyBookingRegisterReq,2,4); + packet(0x089e,clif->pActionRequest,2,6); + packet(0x08a2,clif->pSolveCharName,2); + packet(0x08a8,clif->pStoragePassword,0); + packet(0x091c,clif->pTakeItem,2); + packet(0x092d,clif->pTickSend,2); + packet(0x092f,clif->pUseSkillToId,2,4,6); + packet(0x0936,clif->pWantToConnection,2,6,10,14,18); + packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093b,clif->pMoveToKafra,2,4); + packet(0x093f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0946,clif->pItemListWindowSelected,2,4,8); + packet(0x0959,clif->pGetCharNameRequest,2); + packet(0x0965,clif->pChangeDir,2,4); + packet(0x0969,clif->pDropItem,2,4); #endif // 2016-06-29aRagexeRE, 2016-06-30aRagexeRE #if PACKETVER == 20160629 || \ PACKETVER == 20160630 - packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x022d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0363,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0368,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x085e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0860,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0861,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0863,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0867,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x086b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0881,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0893,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0922,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0925,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0946,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0948,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0957,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0968,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0969,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x022d,clif->pWalkToXY,2); + packet(0x035f,clif->pDull/*,XXX*/); + packet(0x0363,clif->pReqClickBuyingStore,2); + packet(0x0368,clif->pItemListWindowSelected,2,4,8); + packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x085e,clif->pDull/*,XXX*/); + packet(0x0860,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0861,clif->pDropItem,2,4); + packet(0x0863,clif->pSolveCharName,2); + packet(0x0867,clif->pStoragePassword,0); + packet(0x086b,clif->pSearchStoreInfoNextPage,0); + packet(0x0881,clif->pWantToConnection,2,6,10,14,18); + packet(0x0885,clif->pHomMenu,2,4); + packet(0x088e,clif->pGetCharNameRequest,2); + packet(0x0893,clif->pTickSend,2); + packet(0x091e,clif->pPartyBookingRegisterReq,2,4); + packet(0x0922,clif->pMoveFromKafra,2,4); + packet(0x0925,clif->pUseSkillToId,2,4,6); + packet(0x0926,clif->pPartyInvite2,2); + packet(0x093e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0946,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0948,clif->pChangeDir,2,4); + packet(0x094a,clif->pFriendsListAdd,2); + packet(0x0957,clif->pReqCloseBuyingStore,0); + packet(0x095a,clif->pActionRequest,2,6); + packet(0x0968,clif->pUseSkillToPos,2,4,6,8); + packet(0x0969,clif->pTakeItem,2); + packet(0x096a,clif->pMoveToKafra,2,4); #endif // 2016-07-06cRagexeRE #if PACKETVER == 20160706 - packet(0x0362,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x085f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0860,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0869,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0884,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0886,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0892,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0899,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a8,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0918,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x091b,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0927,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0929,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0939,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x093d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0944,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0945,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0958,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x0362,clif->pSolveCharName,2); + packet(0x0436,clif->pReqClickBuyingStore,2); + packet(0x085f,clif->pPartyInvite2,2); + packet(0x0860,clif->pActionRequest,2,6); + packet(0x0869,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x086b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0884,clif->pFriendsListAdd,2); + packet(0x0886,clif->pDull/*,XXX*/); + packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0892,clif->pHomMenu,2,4); + packet(0x0899,clif->pUseSkillToId,2,4,6); + packet(0x08a4,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a8,clif->pTickSend,2); + packet(0x0918,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x091b,clif->pItemListWindowSelected,2,4,8); + packet(0x0924,clif->pUseSkillToPos,2,4,6,8); + packet(0x0926,clif->pChangeDir,2,4); + packet(0x0927,clif->pSearchStoreInfoNextPage,0); + packet(0x0929,clif->pMoveFromKafra,2,4); + packet(0x092d,clif->pWalkToXY,2); + packet(0x0939,clif->pMoveToKafra,2,4); + packet(0x093d,clif->pDropItem,2,4); + packet(0x0944,clif->pDull/*,XXX*/); + packet(0x0945,clif->pGetCharNameRequest,2); + packet(0x094c,clif->pStoragePassword,0); + packet(0x0952,clif->pReqCloseBuyingStore,0); + packet(0x0957,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0958,clif->pTakeItem,2); #endif // 2016-07-13aRagexeRE, 2016-07-13bRagexeRE #if PACKETVER == 20160713 - packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0363,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0838,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0865,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0877,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0892,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x089a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0922,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0931,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0944,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0945,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0947,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0957,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x095b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x022d,clif->pStoragePassword,0); + packet(0x0363,clif->pChangeDir,2,4); + packet(0x0364,clif->pItemListWindowSelected,2,4,8); + packet(0x0838,clif->pTakeItem,2); + packet(0x0860,clif->pReqClickBuyingStore,2); + packet(0x0865,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0869,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0875,clif->pSearchStoreInfoNextPage,0); + packet(0x0877,clif->pUseSkillToPos,2,4,6,8); + packet(0x087b,clif->pTickSend,2); + packet(0x0883,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0892,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x089a,clif->pPartyInvite2,2); + packet(0x089f,clif->pDull/*,XXX*/); + packet(0x08a2,clif->pMoveFromKafra,2,4); + packet(0x08a4,clif->pWantToConnection,2,6,10,14,18); + packet(0x091c,clif->pWalkToXY,2); + packet(0x091d,clif->pSolveCharName,2); + packet(0x0921,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0922,clif->pHomMenu,2,4); + packet(0x092c,clif->pGetCharNameRequest,2); + packet(0x0931,clif->pUseSkillToId,2,4,6); + packet(0x0939,clif->pFriendsListAdd,2); + packet(0x0944,clif->pReqCloseBuyingStore,0); + packet(0x0945,clif->pActionRequest,2,6); + packet(0x0947,clif->pMoveToKafra,2,4); + packet(0x0957,clif->pDropItem,2,4); + packet(0x095b,clif->pDull/*,XXX*/); #endif // 2016-07-20aRagexeRE, 2016-07-20bRagexeRE #if PACKETVER == 20160720 - packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0363,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0365,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0838,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x085b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0883,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08aa,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0917,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x091c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093b,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0946,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0953,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0960,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 + packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0363,clif->pUseSkillToId,2,4,6); + packet(0x0365,clif->pActionRequest,2,6); + packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); + packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0838,clif->pWalkToXY,2); + packet(0x085b,clif->pReqCloseBuyingStore,0); + packet(0x086a,clif->pSearchStoreInfoNextPage,0); + packet(0x086d,clif->pReqClickBuyingStore,2); + packet(0x087f,clif->pDropItem,2,4); + packet(0x0883,clif->pUseSkillToPos,2,4,6,8); + packet(0x0887,clif->pGetCharNameRequest,2); + packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089a,clif->pStoragePassword,0); + packet(0x089c,clif->pHomMenu,2,4); + packet(0x089e,clif->pMoveFromKafra,2,4); + packet(0x08a0,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08aa,clif->pItemListWindowSelected,2,4,8); + packet(0x0917,clif->pDull/*,XXX*/); + packet(0x091c,clif->pTakeItem,2); + packet(0x092a,clif->pFriendsListAdd,2); + packet(0x093b,clif->pChangeDir,2,4); + packet(0x093e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0946,clif->pTickSend,2); + packet(0x094d,clif->pSolveCharName,2); + packet(0x0953,clif->pDull/*,XXX*/); + packet(0x095b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0960,clif->pMoveToKafra,2,4); + packet(0x0969,clif->pPartyInvite2,2); #endif // 2016-07-27aRagexeRE, 2016-07-27bRagexeRE #if PACKETVER == 20160727 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x023b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0436,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x07ec,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0866,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0868,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0869,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0883,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0887,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x089f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a7,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0936,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0946,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0951,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0966,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x023b,clif->pDull/*,XXX*/); + packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0363,clif->pFriendsListAdd,2); + packet(0x0436,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0438,clif->pTickSend,2); + packet(0x07ec,clif->pDropItem,2,4); + packet(0x0866,clif->pDull/*,XXX*/); + packet(0x0868,clif->pPartyInvite2,2); + packet(0x0869,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0874,clif->pReqClickBuyingStore,2); + packet(0x0877,clif->pPartyBookingRegisterReq,2,4); + packet(0x0883,clif->pActionRequest,2,6); + packet(0x0887,clif->pWantToConnection,2,6,10,14,18); + packet(0x088e,clif->pUseSkillToId,2,4,6); + packet(0x0891,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x089f,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a2,clif->pStoragePassword,0); + packet(0x08a4,clif->pSolveCharName,2); + packet(0x08a7,clif->pTakeItem,2); + packet(0x092e,clif->pWalkToXY,2); + packet(0x0936,clif->pHomMenu,2,4); + packet(0x0941,clif->pSearchStoreInfoNextPage,0); + packet(0x0946,clif->pGetCharNameRequest,2); + packet(0x0949,clif->pMoveFromKafra,2,4); + packet(0x0951,clif->pMoveToKafra,2,4); + packet(0x095f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0966,clif->pReqCloseBuyingStore,0); + packet(0x0969,clif->pItemListWindowSelected,2,4,8); #endif // 2016-08-03bRagexeRE #if PACKETVER == 20160803 - packet(0x0364,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x085d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0878,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0886,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0887,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x088b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0895,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08a1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0929,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0930,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0932,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0934,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0937,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x093a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x093e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0952,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0955,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0956,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0959,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 + packet(0x0364,clif->pWantToConnection,2,6,10,14,18); + packet(0x085d,clif->pReqClickBuyingStore,2); + packet(0x0878,clif->pDull/*,XXX*/); + packet(0x087f,clif->pWalkToXY,2); + packet(0x0881,clif->pPartyBookingRegisterReq,2,4); + packet(0x0886,clif->pMoveToKafra,2,4); + packet(0x0887,clif->pGetCharNameRequest,2); + packet(0x0888,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x088b,clif->pReqCloseBuyingStore,0); + packet(0x0891,clif->pChangeDir,2,4); + packet(0x0895,clif->pFriendsListAdd,2); + packet(0x089c,clif->pDropItem,2,4); + packet(0x089e,clif->pSearchStoreInfoNextPage,0); + packet(0x08a1,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091b,clif->pTakeItem,2); + packet(0x0929,clif->pStoragePassword,0); + packet(0x0930,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0932,clif->pUseSkillToId,2,4,6); + packet(0x0934,clif->pActionRequest,2,6); + packet(0x0937,clif->pUseSkillToPos,2,4,6,8); + packet(0x093a,clif->pDull/*,XXX*/); + packet(0x093e,clif->pTickSend,2); + packet(0x093f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0952,clif->pHomMenu,2,4); + packet(0x0955,clif->pMoveFromKafra,2,4); + packet(0x0956,clif->pItemListWindowSelected,2,4,8); + packet(0x0959,clif->pSolveCharName,2); + packet(0x095a,clif->pPartyInvite2,2); + packet(0x096a,clif->pReqTradeBuyingStore,2,4,8,12); #endif // 2016-08-10aRagexeRE #if PACKETVER == 20160810 - packet(0x0361,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0819,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x085e,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0860,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0875,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0879,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0885,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0888,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0890,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x089f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0926,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0959,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x0361,clif->pStoragePassword,0); + packet(0x0819,clif->pUseSkillToPos,2,4,6,8); + packet(0x0838,clif->pPartyInvite2,2); + packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x085e,clif->pDropItem,2,4); + packet(0x085f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0860,clif->pSolveCharName,2); + packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0875,clif->pHomMenu,2,4); + packet(0x0879,clif->pReqClickBuyingStore,2); + packet(0x087a,clif->pWalkToXY,2); + packet(0x0885,clif->pWantToConnection,2,6,10,14,18); + packet(0x0888,clif->pFriendsListAdd,2); + packet(0x0890,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089d,clif->pChangeDir,2,4); + packet(0x089f,clif->pItemListWindowSelected,2,4,8); + packet(0x08a9,clif->pMoveToKafra,2,4); + packet(0x091a,clif->pTakeItem,2); + packet(0x091b,clif->pGetCharNameRequest,2); + packet(0x091c,clif->pUseSkillToId,2,4,6); + packet(0x0926,clif->pDull/*,XXX*/); + packet(0x092b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092d,clif->pMoveFromKafra,2,4); + packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0943,clif->pTickSend,2); + packet(0x094b,clif->pSearchStoreInfoNextPage,0); + packet(0x0959,clif->pReqCloseBuyingStore,0); + packet(0x095b,clif->pActionRequest,2,6); + packet(0x0967,clif->pDull/*,XXX*/); #endif // 2016-08-17aRagexeRE #if PACKETVER == 20160817 - packet(0x0364,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0437,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0811,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x083c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x085c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0875,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x087f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0891,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a5,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a6,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08ab,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08ac,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0929,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0939,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0957,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0960,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0963,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x0364,clif->pReqClickBuyingStore,2); + packet(0x0437,clif->pFriendsListAdd,2); + packet(0x07e4,clif->pGetCharNameRequest,2); + packet(0x0811,clif->pDull/*,XXX*/); + packet(0x0819,clif->pTickSend,2); + packet(0x083c,clif->pItemListWindowSelected,2,4,8); + packet(0x085c,clif->pTakeItem,2); + packet(0x0867,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086b,clif->pSolveCharName,2); + packet(0x0875,clif->pWantToConnection,2,6,10,14,18); + packet(0x087f,clif->pDropItem,2,4); + packet(0x0886,clif->pActionRequest,2,6); + packet(0x0891,clif->pUseSkillToId,2,4,6); + packet(0x089c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a5,clif->pStoragePassword,0); + packet(0x08a6,clif->pPartyInvite2,2); + packet(0x08a9,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08ab,clif->pHomMenu,2,4); + packet(0x08ac,clif->pUseSkillToPos,2,4,6,8); + packet(0x08ad,clif->pMoveToKafra,2,4); + packet(0x091b,clif->pReqCloseBuyingStore,0); + packet(0x0929,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0930,clif->pWalkToXY,2); + packet(0x0939,clif->pMoveFromKafra,2,4); + packet(0x093c,clif->pDull/*,XXX*/); + packet(0x0957,clif->pPartyBookingRegisterReq,2,4); + packet(0x0960,clif->pSearchStoreInfoNextPage,0); + packet(0x0963,clif->pChangeDir,2,4); #endif // 2016-08-24aRagexeRE #if PACKETVER == 20160824 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0934,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-08-31aRagexeRE, 2016-08-31bRagexeRE #if PACKETVER == 20160831 - packet(0x022d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0366,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x086d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0874,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0876,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x087c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a9,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0938,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0946,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0954,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0957,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0960,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0964,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x022d,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0366,clif->pDropItem,2,4); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x0835,clif->pWantToConnection,2,6,10,14,18); + packet(0x0865,clif->pWalkToXY,2); + packet(0x086d,clif->pReqCloseBuyingStore,0); + packet(0x0870,clif->pPartyBookingRegisterReq,2,4); + packet(0x0874,clif->pPartyInvite2,2); + packet(0x0876,clif->pDull/*,XXX*/); + packet(0x0878,clif->pActionRequest,2,6); + packet(0x087c,clif->pGetCharNameRequest,2); + packet(0x08a8,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a9,clif->pTickSend,2); + packet(0x0917,clif->pStoragePassword,0); + packet(0x091b,clif->pDull/*,XXX*/); + packet(0x092c,clif->pFriendsListAdd,2); + packet(0x092e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0938,clif->pSearchStoreInfoNextPage,0); + packet(0x093a,clif->pHomMenu,2,4); + packet(0x0946,clif->pSolveCharName,2); + packet(0x094a,clif->pChangeDir,2,4); + packet(0x094f,clif->pMoveToKafra,2,4); + packet(0x0950,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0954,clif->pItemListWindowSelected,2,4,8); + packet(0x0957,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095e,clif->pMoveFromKafra,2,4); + packet(0x0960,clif->pTakeItem,2); + packet(0x0964,clif->pUseSkillToPos,2,4,6,8); + packet(0x0967,clif->pUseSkillToId,2,4,6); #endif // 2016-09-07aRagexeRE #if PACKETVER == 20160907 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x091c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x091c,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-09-13aRagexeRE #if PACKETVER == 20160913 - packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0865,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0874,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0875,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0879,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0889,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x088e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0892,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0935,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x093a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0949,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0950,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0952,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0954,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0962,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0963,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0968,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 + packet(0x0361,clif->pPartyBookingRegisterReq,2,4); + packet(0x0817,clif->pMoveToKafra,2,4); + packet(0x085b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0865,clif->pGetCharNameRequest,2); + packet(0x0874,clif->pReqClickBuyingStore,2); + packet(0x0875,clif->pTickSend,2); + packet(0x0879,clif->pDropItem,2,4); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x087b,clif->pSearchStoreInfoNextPage,0); + packet(0x0887,clif->pItemListWindowSelected,2,4,8); + packet(0x0889,clif->pTakeItem,2); + packet(0x088e,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0891,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0892,clif->pUseSkillToPos,2,4,6,8); + packet(0x089b,clif->pMoveFromKafra,2,4); + packet(0x089c,clif->pStoragePassword,0); + packet(0x08a5,clif->pChangeDir,2,4); + packet(0x0928,clif->pFriendsListAdd,2); + packet(0x0935,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x093a,clif->pHomMenu,2,4); + packet(0x0949,clif->pPartyInvite2,2); + packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0950,clif->pActionRequest,2,6); + packet(0x0952,clif->pWantToConnection,2,6,10,14,18); + packet(0x0954,clif->pWalkToXY,2); + packet(0x0962,clif->pDull/*,XXX*/); + packet(0x0963,clif->pSolveCharName,2); + packet(0x0968,clif->pReqCloseBuyingStore,0); #endif // 2016-09-21bRagexeRE #if PACKETVER == 20160921 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x094a,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-09-28cRagexeRE, 2016-09-28dRagexeRE #if PACKETVER == 20160928 - packet(0x0202,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0366,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0811,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0864,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0872,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0878,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0889,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x088e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0897,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x089a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a9,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0919,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0927,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0957,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 + packet(0x0202,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pGetCharNameRequest,2); + packet(0x0366,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0436,clif->pReqClickBuyingStore,2); + packet(0x0811,clif->pDull/*,XXX*/); + packet(0x0838,clif->pPartyInvite2,2); + packet(0x0864,clif->pMoveFromKafra,2,4); + packet(0x0866,clif->pSearchStoreInfoNextPage,0); + packet(0x086d,clif->pDropItem,2,4); + packet(0x0872,clif->pHomMenu,2,4); + packet(0x0878,clif->pSolveCharName,2); + packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0889,clif->pWantToConnection,2,6,10,14,18); + packet(0x088e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0897,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x089a,clif->pActionRequest,2,6); + packet(0x08a2,clif->pStoragePassword,0); + packet(0x08a9,clif->pMoveToKafra,2,4); + packet(0x0919,clif->pWalkToXY,2); + packet(0x091e,clif->pTickSend,2); + packet(0x0927,clif->pUseSkillToId,2,4,6); + packet(0x092d,clif->pUseSkillToPos,2,4,6,8); + packet(0x0944,clif->pChangeDir,2,4); + packet(0x094d,clif->pReqCloseBuyingStore,0); + packet(0x094e,clif->pFriendsListAdd,2); + packet(0x0953,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0955,clif->pPartyBookingRegisterReq,2,4); + packet(0x0957,clif->pTakeItem,2); + packet(0x095a,clif->pDull/*,XXX*/); #endif // 2016-10-05aRagexeRE #if PACKETVER == 20161005 - packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0838,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0863,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0886,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0891,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0892,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08ac,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0918,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0919,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0931,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0932,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0942,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0945,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x094a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0952,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x095b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pActionRequest,2,6); + packet(0x0838,clif->pStoragePassword,0); + packet(0x0863,clif->pGetCharNameRequest,2); + packet(0x0886,clif->pItemListWindowSelected,2,4,8); + packet(0x088e,clif->pMoveFromKafra,2,4); + packet(0x0891,clif->pChangeDir,2,4); + packet(0x0892,clif->pPartyBookingRegisterReq,2,4); + packet(0x089b,clif->pPartyInvite2,2); + packet(0x089c,clif->pTakeItem,2); + packet(0x08a0,clif->pMoveToKafra,2,4); + packet(0x08ac,clif->pReqCloseBuyingStore,0); + packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0918,clif->pSearchStoreInfoNextPage,0); + packet(0x0919,clif->pSolveCharName,2); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x092b,clif->pTickSend,2); + packet(0x0931,clif->pFriendsListAdd,2); + packet(0x0932,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0942,clif->pDropItem,2,4); + packet(0x0944,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0945,clif->pWalkToXY,2); + packet(0x094a,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094d,clif->pHomMenu,2,4); + packet(0x0952,clif->pDull/*,XXX*/); + packet(0x095a,clif->pReqClickBuyingStore,2); + packet(0x095b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0967,clif->pUseSkillToId,2,4,6); #endif // 2016-10-12aRagexeRE #if PACKETVER == 20161012 - packet(0x023b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0369,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x07ec,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0819,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x085b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x085e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0863,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0868,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0880,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0893,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0937,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0951,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0962,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0966,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x023b,clif->pSearchStoreInfoNextPage,0); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0364,clif->pItemListWindowSelected,2,4,8); + packet(0x0365,clif->pTickSend,2); + packet(0x0369,clif->pPartyInvite2,2); + packet(0x07ec,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0819,clif->pFriendsListAdd,2); + packet(0x085b,clif->pDull/*,XXX*/); + packet(0x085e,clif->pReqCloseBuyingStore,0); + packet(0x0863,clif->pActionRequest,2,6); + packet(0x0868,clif->pTakeItem,2); + packet(0x086d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0872,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0875,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0880,clif->pUseSkillToPos,2,4,6,8); + packet(0x0893,clif->pMoveToKafra,2,4); + packet(0x08a0,clif->pChangeDir,2,4); + packet(0x092d,clif->pSolveCharName,2); + packet(0x0936,clif->pGetCharNameRequest,2); + packet(0x0937,clif->pReqClickBuyingStore,2); + packet(0x0939,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0943,clif->pPartyBookingRegisterReq,2,4); + packet(0x0944,clif->pMoveFromKafra,2,4); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x0951,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095c,clif->pHomMenu,2,4); + packet(0x0962,clif->pUseSkillToId,2,4,6); + packet(0x0966,clif->pWalkToXY,2); + packet(0x0967,clif->pStoragePassword,0); #endif // 2016-10-19aRagexeRE #if PACKETVER == 20161019 - packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0889,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0892,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0963,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pReqClickBuyingStore,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pHomMenu,2,4); + packet(0x0361,clif->pWalkToXY,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pChangeDir,2,4); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0889,clif->pStoragePassword,0); + packet(0x0892,clif->pDull/*,XXX*/); + packet(0x0946,clif->pWantToConnection,2,6,10,14,18); + packet(0x0963,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-10-26bRagexeRE, 2016-10-26cRagexeRE #if PACKETVER == 20161026 - packet(0x0363,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085f,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0862,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x086a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x087c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0886,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0891,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0894,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0898,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0926,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x092e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0930,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x094b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0953,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x095c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x095e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0962,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x0363,clif->pStoragePassword,0); + packet(0x0438,clif->pWalkToXY,2); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x085a,clif->pMoveToKafra,2,4); + packet(0x085f,clif->pActionRequest,2,6); + packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0862,clif->pTickSend,2); + packet(0x086a,clif->pSearchStoreInfoNextPage,0); + packet(0x086c,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086e,clif->pDull/*,XXX*/); + packet(0x087a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x087c,clif->pDull/*,XXX*/); + packet(0x087f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0886,clif->pDropItem,2,4); + packet(0x0891,clif->pReqClickBuyingStore,2); + packet(0x0894,clif->pUseSkillToId,2,4,6); + packet(0x0898,clif->pFriendsListAdd,2); + packet(0x091a,clif->pWantToConnection,2,6,10,14,18); + packet(0x091b,clif->pTakeItem,2); + packet(0x0926,clif->pSolveCharName,2); + packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x092e,clif->pHomMenu,2,4); + packet(0x092f,clif->pReqCloseBuyingStore,0); + packet(0x0930,clif->pGetCharNameRequest,2); + packet(0x094b,clif->pMoveFromKafra,2,4); + packet(0x0953,clif->pPartyInvite2,2); + packet(0x095c,clif->pItemListWindowSelected,2,4,8); + packet(0x095e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0962,clif->pChangeDir,2,4); #endif // 2016-11-02aRagexeRE, 2016-11-03aRagexeRE #if PACKETVER == 20161102 || \ PACKETVER == 20161103 - packet(0x0361,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0367,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0802,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x083c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0869,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0874,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a2,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08aa,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0922,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0925,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0936,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0946,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0949,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0964,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0965,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0966,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 + packet(0x0361,clif->pMoveFromKafra,2,4); + packet(0x0367,clif->pDull/*,XXX*/); + packet(0x0436,clif->pActionRequest,2,6); + packet(0x0802,clif->pTakeItem,2); + packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x083c,clif->pPartyBookingRegisterReq,2,4); + packet(0x085f,clif->pUseSkillToId,2,4,6); + packet(0x0869,clif->pMoveToKafra,2,4); + packet(0x086c,clif->pSearchStoreInfoNextPage,0); + packet(0x086f,clif->pDull/*,XXX*/); + packet(0x0874,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0886,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x088f,clif->pHomMenu,2,4); + packet(0x0890,clif->pDropItem,2,4); + packet(0x089f,clif->pPartyInvite2,2); + packet(0x08a2,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08aa,clif->pWalkToXY,2); + packet(0x091b,clif->pStoragePassword,0); + packet(0x0922,clif->pReqClickBuyingStore,2); + packet(0x0925,clif->pSolveCharName,2); + packet(0x0928,clif->pFriendsListAdd,2); + packet(0x092f,clif->pGetCharNameRequest,2); + packet(0x0936,clif->pReqCloseBuyingStore,0); + packet(0x0946,clif->pWantToConnection,2,6,10,14,18); + packet(0x0949,clif->pChangeDir,2,4); + packet(0x095e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0964,clif->pItemListWindowSelected,2,4,8); + packet(0x0965,clif->pUseSkillToPos,2,4,6,8); + packet(0x0966,clif->pTickSend,2); #endif // 2016-11-09aRagexeRE, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE #if PACKETVER == 20161109 - packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0362,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x085d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x086a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0876,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x088e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0891,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0898,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x089f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a7,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0927,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0937,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0954,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0956,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); + packet(0x0361,clif->pSearchStoreInfoNextPage,0); + packet(0x0362,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pTickSend,2); + packet(0x0366,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSolveCharName,2); + packet(0x085d,clif->pReqCloseBuyingStore,0); + packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0865,clif->pWalkToXY,2); + packet(0x086a,clif->pActionRequest,2,6); + packet(0x086d,clif->pUseSkillToPos,2,4,6,8); + packet(0x0870,clif->pWantToConnection,2,6,10,14,18); + packet(0x0876,clif->pReqClickBuyingStore,2); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x0881,clif->pMoveToKafra,2,4); + packet(0x088e,clif->pItemListWindowSelected,2,4,8); + packet(0x0891,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0898,clif->pTakeItem,2); + packet(0x089a,clif->pDropItem,2,4); + packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x089f,clif->pDull/*,XXX*/); + packet(0x08a7,clif->pHomMenu,2,4); + packet(0x08ad,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0927,clif->pPartyInvite2,2); + packet(0x0937,clif->pFriendsListAdd,2); + packet(0x093c,clif->pStoragePassword,0); + packet(0x093f,clif->pGetCharNameRequest,2); + packet(0x0954,clif->pUseSkillToId,2,4,6); + packet(0x0956,clif->pChangeDir,2,4); #endif // 2016-11-16bRagexeRE, 2016-11-16cRagexeRE #if PACKETVER == 20161116 - packet(0x0368,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0369,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0835,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0885,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x088d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x088f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0890,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0892,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a2,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08ac,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0925,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x092a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0931,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x094a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0967,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 + packet(0x0368,clif->pTickSend,2); + packet(0x0369,clif->pMoveToKafra,2,4); + packet(0x0835,clif->pFriendsListAdd,2); + packet(0x085f,clif->pDropItem,2,4); + packet(0x0864,clif->pPartyInvite2,2); + packet(0x086f,clif->pTakeItem,2); + packet(0x0885,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088b,clif->pHomMenu,2,4); + packet(0x088d,clif->pReqClickBuyingStore,2); + packet(0x088f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0890,clif->pWalkToXY,2); + packet(0x0892,clif->pItemListWindowSelected,2,4,8); + packet(0x0893,clif->pActionRequest,2,6); + packet(0x08a1,clif->pChangeDir,2,4); + packet(0x08a2,clif->pPartyBookingRegisterReq,2,4); + packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08ac,clif->pMoveFromKafra,2,4); + packet(0x0920,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0925,clif->pUseSkillToPos,2,4,6,8); + packet(0x092a,clif->pUseSkillToId,2,4,6); + packet(0x0931,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x093c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x094a,clif->pGetCharNameRequest,2); + packet(0x0952,clif->pReqCloseBuyingStore,0); + packet(0x0957,clif->pSolveCharName,2); + packet(0x095b,clif->pStoragePassword,0); + packet(0x095d,clif->pDull/*,XXX*/); + packet(0x095f,clif->pSearchStoreInfoNextPage,0); + packet(0x0967,clif->pDull/*,XXX*/); #endif // 2016-11-23aRagexeRE #if PACKETVER == 20161123 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0437,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0861,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0866,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x086f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0880,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a9,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0926,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x094d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x095a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x096a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0362,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0437,clif->pTickSend,2); + packet(0x085c,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0861,clif->pWalkToXY,2); + packet(0x0862,clif->pReqCloseBuyingStore,0); + packet(0x0866,clif->pSearchStoreInfoNextPage,0); + packet(0x086f,clif->pDropItem,2,4); + packet(0x0871,clif->pDull/*,XXX*/); + packet(0x087f,clif->pPartyInvite2,2); + packet(0x0880,clif->pStoragePassword,0); + packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088b,clif->pGetCharNameRequest,2); + packet(0x089c,clif->pChangeDir,2,4); + packet(0x08a9,clif->pUseSkillToPos,2,4,6,8); + packet(0x08aa,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091a,clif->pMoveToKafra,2,4); + packet(0x0926,clif->pWantToConnection,2,6,10,14,18); + packet(0x092a,clif->pReqClickBuyingStore,2); + packet(0x092f,clif->pTakeItem,2); + packet(0x0930,clif->pHomMenu,2,4); + packet(0x0941,clif->pFriendsListAdd,2); + packet(0x094d,clif->pUseSkillToId,2,4,6); + packet(0x094f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x095a,clif->pDull/*,XXX*/); + packet(0x095b,clif->pActionRequest,2,6); + packet(0x0962,clif->pMoveFromKafra,2,4); + packet(0x096a,clif->pSolveCharName,2); #endif // 2016-11-30aRagexeRE, 2016-11-30bRagexeRE #if PACKETVER == 20161130 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0931,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0943,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0954,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0959,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pChangeDir,2,4); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pTickSend,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x088f,clif->pDull/*,XXX*/); + packet(0x0931,clif->pHomMenu,2,4); + packet(0x0943,clif->pWantToConnection,2,6,10,14,18); + packet(0x0954,clif->pStoragePassword,0); + packet(0x0959,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexeRE #if PACKETVER == 20161207 - packet(0x023b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0868,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0875,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0886,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08ad,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0943,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0965,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pHomMenu,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pWantToConnection,2,6,10,14,18); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pFriendsListAdd,2); + packet(0x0868,clif->pDull/*,XXX*/); + packet(0x0875,clif->pMoveToKafra,2,4); + packet(0x087e,clif->pItemListWindowSelected,2,4,8); + packet(0x0886,clif->pActionRequest,2,6); + packet(0x08a1,clif->pChangeDir,2,4); + packet(0x08a2,clif->pTakeItem,2); + packet(0x08ad,clif->pDropItem,2,4); + packet(0x0918,clif->pPartyBookingRegisterReq,2,4); + packet(0x091d,clif->pMoveFromKafra,2,4); + packet(0x0943,clif->pDull/*,XXX*/); + packet(0x095d,clif->pStoragePassword,0); + packet(0x0965,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-12-14bRagexeRE, 2016-12-14cRagexeRE #if PACKETVER == 20161214 - packet(0x022d,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x02c4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0436,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0862,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x086d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0887,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0895,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x092e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x093d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pReqClickBuyingStore,2); + packet(0x0281,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x02c4,clif->pMoveFromKafra,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pHomMenu,2,4); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pWantToConnection,2,6,10,14,18); + packet(0x0436,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pDull/*,XXX*/); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085a,clif->pItemListWindowSelected,2,4,8); + packet(0x0862,clif->pFriendsListAdd,2); + packet(0x086d,clif->pPartyInvite2,2); + packet(0x0887,clif->pDropItem,2,4); + packet(0x0895,clif->pDull/*,XXX*/); + packet(0x0899,clif->pStoragePassword,0); + packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); + packet(0x092e,clif->pTakeItem,2); + packet(0x093d,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2016-12-21aRagexeRE, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE #if PACKETVER == 20161221 - packet(0x035f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0366,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0438,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0817,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0876,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0881,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0899,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08aa,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0926,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x092e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0930,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0943,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x095a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0964,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0965,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x035f,clif->pTakeItem,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0366,clif->pSolveCharName,2); + packet(0x0438,clif->pWalkToXY,2); + packet(0x0817,clif->pMoveToKafra,2,4); + packet(0x085b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0876,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0881,clif->pGetCharNameRequest,2); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x0885,clif->pItemListWindowSelected,2,4,8); + packet(0x088c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0890,clif->pStoragePassword,0); + packet(0x0899,clif->pDull/*,XXX*/); + packet(0x089a,clif->pMoveFromKafra,2,4); + packet(0x089b,clif->pActionRequest,2,6); + packet(0x08aa,clif->pTickSend,2); + packet(0x091e,clif->pSearchStoreInfoNextPage,0); + packet(0x0926,clif->pPartyInvite2,2); + packet(0x0928,clif->pFriendsListAdd,2); + packet(0x092c,clif->pReqCloseBuyingStore,0); + packet(0x092e,clif->pPartyBookingRegisterReq,2,4); + packet(0x0930,clif->pHomMenu,2,4); + packet(0x0943,clif->pUseSkillToId,2,4,6); + packet(0x0946,clif->pUseSkillToPos,2,4,6,8); + packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x095a,clif->pReqClickBuyingStore,2); + packet(0x0964,clif->pWantToConnection,2,6,10,14,18); + packet(0x0965,clif->pChangeDir,2,4); #endif // 2016-12-28aRagexeRE #if PACKETVER == 20161228 - packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x085a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x086c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0870,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0871,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0875,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0886,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0889,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0893,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a3,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a5,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08ab,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08ac,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08ad,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0929,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x092c,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0934,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0935,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0938,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x093d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0944,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 + packet(0x0362,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x085a,clif->pGetCharNameRequest,2); + packet(0x085e,clif->pHomMenu,2,4); + packet(0x0865,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x086a,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x086c,clif->pTakeItem,2); + packet(0x086d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0870,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0871,clif->pChangeDir,2,4); + packet(0x0875,clif->pReqCloseBuyingStore,0); + packet(0x087f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0886,clif->pWalkToXY,2); + packet(0x0889,clif->pItemListWindowSelected,2,4,8); + packet(0x0893,clif->pDropItem,2,4); + packet(0x089f,clif->pMoveToKafra,2,4); + packet(0x08a2,clif->pUseSkillToId,2,4,6); + packet(0x08a3,clif->pReqClickBuyingStore,2); + packet(0x08a5,clif->pPartyBookingRegisterReq,2,4); + packet(0x08ab,clif->pMoveFromKafra,2,4); + packet(0x08ac,clif->pSolveCharName,2); + packet(0x08ad,clif->pStoragePassword,0); + packet(0x091c,clif->pFriendsListAdd,2); + packet(0x0929,clif->pUseSkillToPos,2,4,6,8); + packet(0x092c,clif->pSearchStoreInfoNextPage,0); + packet(0x0934,clif->pPartyInvite2,2); + packet(0x0935,clif->pDull/*,XXX*/); + packet(0x0938,clif->pDull/*,XXX*/); + packet(0x093d,clif->pActionRequest,2,6); + packet(0x0944,clif->pTickSend,2); #endif // 2017-01-04bRagexeRE #if PACKETVER == 20170104 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x085a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0896,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pWantToConnection,2,6,10,14,18); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToPos,2,4,6,8); + packet(0x085a,clif->pFriendsListAdd,2); + packet(0x087f,clif->pStoragePassword,0); + packet(0x0896,clif->pChangeDir,2,4); + packet(0x091b,clif->pHomMenu,2,4); + packet(0x0940,clif->pUseSkillToId,2,4,6); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-01-11aRagexeRE #if PACKETVER == 20170111 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0877,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a1,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a3,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0961,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0969,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pHomMenu,2,4); + packet(0x0877,clif->pFriendsListAdd,2); + packet(0x087f,clif->pDull/*,XXX*/); + packet(0x088a,clif->pMoveToKafra,2,4); + packet(0x08a1,clif->pChangeDir,2,4); + packet(0x08a3,clif->pTakeItem,2); + packet(0x08a6,clif->pPartyBookingRegisterReq,2,4); + packet(0x091a,clif->pStoragePassword,0); + packet(0x091b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0940,clif->pDropItem,2,4); + packet(0x094c,clif->pMoveFromKafra,2,4); + packet(0x0961,clif->pItemListWindowSelected,2,4,8); + packet(0x0969,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-01-18aRagexeRE #if PACKETVER == 20170118 - packet(0x022d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0364,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086f,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0873,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0927,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0933,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0958,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0962,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x022d,clif->pUseSkillToPos,2,4,6,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0364,clif->pGetCharNameRequest,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pHomMenu,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pWantToConnection,2,6,10,14,18); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pMoveFromKafra,2,4); + packet(0x0865,clif->pChangeDir,2,4); + packet(0x086f,clif->pTakeItem,2); + packet(0x0873,clif->pDull/*,XXX*/); + packet(0x089e,clif->pPartyInvite2,2); + packet(0x08ad,clif->pItemListWindowSelected,2,4,8); + packet(0x091f,clif->pPartyBookingRegisterReq,2,4); + packet(0x0927,clif->pDull/*,XXX*/); + packet(0x0933,clif->pDropItem,2,4); + packet(0x0958,clif->pStoragePassword,0); + packet(0x0962,clif->pFriendsListAdd,2); + packet(0x096a,clif->pMoveToKafra,2,4); #endif // 2017-01-25aRagexeRE #if PACKETVER == 20170125 - packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0877,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0879,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0881,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0894,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0895,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x091c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0920,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x092b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0930,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0943,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0944,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0965,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0968,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x0438,clif->pActionRequest,2,6); + packet(0x0811,clif->pWantToConnection,2,6,10,14,18); + packet(0x086e,clif->pPartyInvite2,2); + packet(0x0876,clif->pHomMenu,2,4); + packet(0x0877,clif->pDropItem,2,4); + packet(0x0879,clif->pUseSkillToId,2,4,6); + packet(0x087b,clif->pTakeItem,2); + packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0881,clif->pChangeDir,2,4); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x0893,clif->pStoragePassword,0); + packet(0x0894,clif->pDull/*,XXX*/); + packet(0x0895,clif->pItemListWindowSelected,2,4,8); + packet(0x0898,clif->pSolveCharName,2); + packet(0x089b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091b,clif->pReqClickBuyingStore,2); + packet(0x091c,clif->pMoveToKafra,2,4); + packet(0x091d,clif->pReqCloseBuyingStore,0); + packet(0x0920,clif->pFriendsListAdd,2); + packet(0x0929,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x092b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0930,clif->pWalkToXY,2); + packet(0x093c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0943,clif->pTickSend,2); + packet(0x0944,clif->pPartyBookingRegisterReq,2,4); + packet(0x095c,clif->pMoveFromKafra,2,4); + packet(0x0965,clif->pGetCharNameRequest,2); + packet(0x0968,clif->pSearchStoreInfoNextPage,0); #endif // 2017-02-01aRagexeRE #if PACKETVER == 20170201 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0881,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0886,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a4,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0920,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0938,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x094c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0969,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0815,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pPartyBookingRegisterReq,2,4); + packet(0x085e,clif->pChangeDir,2,4); + packet(0x0875,clif->pTakeItem,2); + packet(0x0879,clif->pDull/*,XXX*/); + packet(0x0881,clif->pMoveToKafra,2,4); + packet(0x0884,clif->pWalkToXY,2); + packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0886,clif->pStoragePassword,0); + packet(0x088b,clif->pDropItem,2,4); + packet(0x08a4,clif->pDull/*,XXX*/); + packet(0x0919,clif->pFriendsListAdd,2); + packet(0x0920,clif->pPartyInvite2,2); + packet(0x0938,clif->pHomMenu,2,4); + packet(0x0940,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x094c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0966,clif->pMoveFromKafra,2,4); + packet(0x0969,clif->pItemListWindowSelected,2,4,8); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-02-08aRagexeRE, 2017-02-08bRagexeRE #if PACKETVER == 20170208 - packet(0x02c4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0367,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0892,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08ac,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0921,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0923,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0932,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0937,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x02c4,clif->pDull/*,XXX*/); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0367,clif->pItemListWindowSelected,2,4,8); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085c,clif->pPartyInvite2,2); + packet(0x0860,clif->pChangeDir,2,4); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x088c,clif->pWantToConnection,2,6,10,14,18); + packet(0x0892,clif->pFriendsListAdd,2); + packet(0x08a1,clif->pPartyBookingRegisterReq,2,4); + packet(0x08ac,clif->pMoveToKafra,2,4); + packet(0x0921,clif->pDropItem,2,4); + packet(0x0923,clif->pTakeItem,2); + packet(0x092d,clif->pHomMenu,2,4); + packet(0x0932,clif->pMoveFromKafra,2,4); + packet(0x0937,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-02-15aRagexeRE #if PACKETVER == 20170215 - packet(0x02c4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0876,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087c,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x087d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087e,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0883,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x088b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0890,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a8,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x092d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0942,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x095f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0969,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 + packet(0x02c4,clif->pStoragePassword,0); + packet(0x035f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0360,clif->pTickSend,2); + packet(0x0811,clif->pWantToConnection,2,6,10,14,18); + packet(0x083c,clif->pActionRequest,2,6); + packet(0x085c,clif->pDropItem,2,4); + packet(0x0876,clif->pFriendsListAdd,2); + packet(0x087c,clif->pItemListWindowSelected,2,4,8); + packet(0x087d,clif->pChangeDir,2,4); + packet(0x087e,clif->pUseSkillToId,2,4,6); + packet(0x0883,clif->pSolveCharName,2); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x088a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x088b,clif->pPartyInvite2,2); + packet(0x088c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0890,clif->pUseSkillToPos,2,4,6,8); + packet(0x0896,clif->pDull/*,XXX*/); + packet(0x089b,clif->pMoveToKafra,2,4); + packet(0x08a2,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a8,clif->pPartyBookingRegisterReq,2,4); + packet(0x091c,clif->pReqCloseBuyingStore,0); + packet(0x0925,clif->pMoveFromKafra,2,4); + packet(0x092b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x092d,clif->pSearchStoreInfoNextPage,0); + packet(0x0942,clif->pTakeItem,2); + packet(0x094e,clif->pGetCharNameRequest,2); + packet(0x095f,clif->pReqClickBuyingStore,2); + packet(0x0962,clif->pHomMenu,2,4); + packet(0x0969,clif->pWalkToXY,2); #endif // 2017-02-22aRagexeRE #if PACKETVER == 20170222 - packet(0x0202,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0866,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0870,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0871,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0894,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a3,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a8,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0939,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0943,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0962,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pHomMenu,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085f,clif->pFriendsListAdd,2); + packet(0x0866,clif->pDropItem,2,4); + packet(0x0870,clif->pPartyBookingRegisterReq,2,4); + packet(0x0871,clif->pDull/*,XXX*/); + packet(0x0877,clif->pDull/*,XXX*/); + packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0894,clif->pTakeItem,2); + packet(0x08a3,clif->pChangeDir,2,4); + packet(0x08a8,clif->pPartyInvite2,2); + packet(0x0937,clif->pItemListWindowSelected,2,4,8); + packet(0x0939,clif->pWantToConnection,2,6,10,14,18); + packet(0x0943,clif->pStoragePassword,0); + packet(0x095d,clif->pMoveToKafra,2,4); + packet(0x0962,clif->pMoveFromKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-02-28aRagexeRE #if PACKETVER == 20170228 - packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0360,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086b,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0876,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0883,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0884,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0889,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0893,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a0,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a7,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x091f,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0937,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0944,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0947,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0952,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0955,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x022d,clif->pDropItem,2,4); + packet(0x0360,clif->pActionRequest,2,6); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x085e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0863,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086b,clif->pWantToConnection,2,6,10,14,18); + packet(0x0873,clif->pItemListWindowSelected,2,4,8); + packet(0x0874,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0876,clif->pReqCloseBuyingStore,0); + packet(0x0883,clif->pSearchStoreInfoNextPage,0); + packet(0x0884,clif->pWalkToXY,2); + packet(0x0889,clif->pChangeDir,2,4); + packet(0x0893,clif->pGetCharNameRequest,2); + packet(0x089e,clif->pMoveToKafra,2,4); + packet(0x08a0,clif->pFriendsListAdd,2); + packet(0x08a2,clif->pStoragePassword,0); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x08a7,clif->pReqClickBuyingStore,2); + packet(0x091f,clif->pUseSkillToId,2,4,6); + packet(0x092a,clif->pTakeItem,2); + packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0937,clif->pTickSend,2); + packet(0x093e,clif->pDull/*,XXX*/); + packet(0x0944,clif->pMoveFromKafra,2,4); + packet(0x0947,clif->pSolveCharName,2); + packet(0x0948,clif->pPartyInvite2,2); + packet(0x0952,clif->pUseSkillToPos,2,4,6,8); + packet(0x0955,clif->pPartyBookingRegisterReq,2,4); #endif // 2017-03-08bRagexeRE #if PACKETVER == 20170308 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087d,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-03-15cRagexeRE #if PACKETVER == 20170315 - packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0360,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0366,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x07ec,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0863,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x086a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0884,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x088b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0920,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0922,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0944,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x094a,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x094e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0950,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0952,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x02c4,clif->pUseSkillToPos,2,4,6,8); + packet(0x035f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0360,clif->pChangeDir,2,4); + packet(0x0366,clif->pTakeItem,2); + packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0436,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x07ec,clif->pTickSend,2); + packet(0x085c,clif->pDull/*,XXX*/); + packet(0x0863,clif->pHomMenu,2,4); + packet(0x086a,clif->pMoveFromKafra,2,4); + packet(0x0872,clif->pFriendsListAdd,2); + packet(0x087b,clif->pPartyInvite2,2); + packet(0x0884,clif->pActionRequest,2,6); + packet(0x088b,clif->pPartyBookingRegisterReq,2,4); + packet(0x088d,clif->pDull/*,XXX*/); + packet(0x088f,clif->pWalkToXY,2); + packet(0x0892,clif->pUseSkillToId,2,4,6); + packet(0x089c,clif->pReqCloseBuyingStore,0); + packet(0x08aa,clif->pMoveToKafra,2,4); + packet(0x091a,clif->pDropItem,2,4); + packet(0x091b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x091d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0920,clif->pSolveCharName,2); + packet(0x0922,clif->pItemListWindowSelected,2,4,8); + packet(0x0944,clif->pGetCharNameRequest,2); + packet(0x094a,clif->pReqClickBuyingStore,2); + packet(0x094e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0950,clif->pSearchStoreInfoNextPage,0); + packet(0x0952,clif->pStoragePassword,0); #endif // 2017-03-22aRagexeRE, 2017-03-22bRagexeRE #if PACKETVER == 20170322 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x091a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x091a,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-03-29cRagexeRE, 2017-03-29dRagexeRE #if PACKETVER == 20170329 - packet(0x0281,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0363,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0888,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a8,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0917,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0926,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0929,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x092e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0937,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0949,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pPartyInvite2,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0363,clif->pMoveToKafra,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pStoragePassword,0); + packet(0x087a,clif->pPartyBookingRegisterReq,2,4); + packet(0x0888,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a8,clif->pDropItem,2,4); + packet(0x0917,clif->pDull/*,XXX*/); + packet(0x0926,clif->pChangeDir,2,4); + packet(0x0929,clif->pTakeItem,2); + packet(0x092e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0937,clif->pItemListWindowSelected,2,4,8); + packet(0x0939,clif->pFriendsListAdd,2); + packet(0x0949,clif->pMoveFromKafra,2,4); + packet(0x095f,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-04-05bRagexeRE, 2017-04-05cRagexeRE #if PACKETVER == 20170405 - packet(0x022d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0281,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085f,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0860,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0864,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0865,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0893,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094c,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0964,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pSearchStoreInfoNextPage,0); + packet(0x0281,clif->pPartyBookingRegisterReq,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pActionRequest,2,6); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pTakeItem,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pHomMenu,2,4); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085f,clif->pMoveToKafra,2,4); + packet(0x0860,clif->pItemListWindowSelected,2,4,8); + packet(0x0864,clif->pPartyInvite2,2); + packet(0x0865,clif->pChangeDir,2,4); + packet(0x086f,clif->pFriendsListAdd,2); + packet(0x0893,clif->pMoveFromKafra,2,4); + packet(0x08a5,clif->pWantToConnection,2,6,10,14,18); + packet(0x094c,clif->pStoragePassword,0); + packet(0x094f,clif->pDull/*,XXX*/); + packet(0x0964,clif->pDropItem,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-04-12aRagexeRE #if PACKETVER == 20170412 - packet(0x023b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0365,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0869,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0878,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0879,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0890,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0893,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0898,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x089a,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08a1,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x091e,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0929,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0942,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0945,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0949,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x094f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0952,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0959,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x095c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x095d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x023b,clif->pUseSkillToPos,2,4,6,8); + packet(0x0365,clif->pReqClickBuyingStore,2); + packet(0x0863,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0869,clif->pPartyBookingRegisterReq,2,4); + packet(0x086d,clif->pMoveFromKafra,2,4); + packet(0x0878,clif->pWalkToXY,2); + packet(0x0879,clif->pDull/*,XXX*/); + packet(0x087b,clif->pUseSkillToId,2,4,6); + packet(0x088b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0890,clif->pItemListWindowSelected,2,4,8); + packet(0x0893,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0898,clif->pSolveCharName,2); + packet(0x089a,clif->pHomMenu,2,4); + packet(0x089c,clif->pDropItem,2,4); + packet(0x08a1,clif->pActionRequest,2,6); + packet(0x091a,clif->pChangeDir,2,4); + packet(0x091e,clif->pWantToConnection,2,6,10,14,18); + packet(0x0929,clif->pTickSend,2); + packet(0x092e,clif->pDull/*,XXX*/); + packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0942,clif->pFriendsListAdd,2); + packet(0x0945,clif->pMoveToKafra,2,4); + packet(0x0949,clif->pSearchStoreInfoNextPage,0); + packet(0x094f,clif->pPartyInvite2,2); + packet(0x0952,clif->pReqCloseBuyingStore,0); + packet(0x0959,clif->pTakeItem,2); + packet(0x095b,clif->pGetCharNameRequest,2); + packet(0x095c,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x095d,clif->pStoragePassword,0); #endif // 2017-04-19bRagexeRE #if PACKETVER == 20170419 - packet(0x0811,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0838,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0862,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0868,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0872,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0881,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0897,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0898,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0920,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0922,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0930,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0931,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0942,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x095c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0963,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0965,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 + packet(0x0811,clif->pChangeDir,2,4); + packet(0x0819,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0838,clif->pGetCharNameRequest,2); + packet(0x085a,clif->pActionRequest,2,6); + packet(0x085e,clif->pWalkToXY,2); + packet(0x0862,clif->pPartyInvite2,2); + packet(0x0868,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086a,clif->pPartyBookingRegisterReq,2,4); + packet(0x0872,clif->pDull/*,XXX*/); + packet(0x0881,clif->pStoragePassword,0); + packet(0x088d,clif->pItemListWindowSelected,2,4,8); + packet(0x088f,clif->pHomMenu,2,4); + packet(0x0897,clif->pDropItem,2,4); + packet(0x0898,clif->pTickSend,2); + packet(0x089d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08aa,clif->pMoveToKafra,2,4); + packet(0x091b,clif->pSolveCharName,2); + packet(0x0920,clif->pUseSkillToId,2,4,6); + packet(0x0922,clif->pWantToConnection,2,6,10,14,18); + packet(0x0930,clif->pMoveFromKafra,2,4); + packet(0x0931,clif->pReqCloseBuyingStore,0); + packet(0x0935,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093a,clif->pFriendsListAdd,2); + packet(0x093f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0942,clif->pSearchStoreInfoNextPage,0); + packet(0x095c,clif->pTakeItem,2); + packet(0x095d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0963,clif->pDull/*,XXX*/); + packet(0x0965,clif->pReqClickBuyingStore,2); #endif // 2017-04-26dRagexeRE #if PACKETVER == 20170426 - packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0887,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0899,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0927,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0940,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0958,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0963,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pStoragePassword,0); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0866,clif->pItemListWindowSelected,2,4,8); + packet(0x086f,clif->pDull/*,XXX*/); + packet(0x087a,clif->pPartyBookingRegisterReq,2,4); + packet(0x0887,clif->pSolveCharName,2); + packet(0x0899,clif->pMoveFromKafra,2,4); + packet(0x089c,clif->pHomMenu,2,4); + packet(0x08a2,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a4,clif->pTakeItem,2); + packet(0x091f,clif->pDull/*,XXX*/); + packet(0x0927,clif->pChangeDir,2,4); + packet(0x0940,clif->pDropItem,2,4); + packet(0x0958,clif->pFriendsListAdd,2); + packet(0x0963,clif->pMoveToKafra,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-05-02dRagexeRE #if PACKETVER == 20170502 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0894,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x089c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x093c,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0950,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0875,clif->pStoragePassword,0); + packet(0x0894,clif->pChangeDir,2,4); + packet(0x089c,clif->pWantToConnection,2,6,10,14,18); + packet(0x093c,clif->pFriendsListAdd,2); + packet(0x0950,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-05-17aRagexeRE, 2017-05-17bRagexeRE #if PACKETVER == 20170517 - packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0367,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0815,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0817,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0868,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0875,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087b,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x088d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0894,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0896,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x089f,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a2,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a8,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08aa,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x091b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x093b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0946,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0960,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0964,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x0364,clif->pDull/*,XXX*/); + packet(0x0367,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x0815,clif->pUseSkillToId,2,4,6); + packet(0x0817,clif->pUseSkillToPos,2,4,6,8); + packet(0x0868,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0875,clif->pSearchStoreInfoNextPage,0); + packet(0x087b,clif->pSolveCharName,2); + packet(0x087d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088c,clif->pMoveFromKafra,2,4); + packet(0x088d,clif->pChangeDir,2,4); + packet(0x0894,clif->pGetCharNameRequest,2); + packet(0x0896,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0899,clif->pPartyInvite2,2); + packet(0x089e,clif->pDull/*,XXX*/); + packet(0x089f,clif->pReqCloseBuyingStore,0); + packet(0x08a2,clif->pTickSend,2); + packet(0x08a8,clif->pWalkToXY,2); + packet(0x08aa,clif->pMoveToKafra,2,4); + packet(0x091b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0923,clif->pWantToConnection,2,6,10,14,18); + packet(0x093b,clif->pDropItem,2,4); + packet(0x0945,clif->pItemListWindowSelected,2,4,8); + packet(0x0946,clif->pReqClickBuyingStore,2); + packet(0x0947,clif->pStoragePassword,0); + packet(0x0958,clif->pHomMenu,2,4); + packet(0x0960,clif->pFriendsListAdd,2); + packet(0x0964,clif->pTakeItem,2); #endif // 2017-05-24aRagexeRE #if PACKETVER == 20170524 - packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0368,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0860,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0864,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0868,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x086d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0873,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0874,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0894,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089c,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a1,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0923,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0934,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0946,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0958,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x095b,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0964,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0967,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0968,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 + packet(0x0364,clif->pPartyInvite2,2); + packet(0x0368,clif->pStoragePassword,0); + packet(0x0802,clif->pDropItem,2,4); + packet(0x085e,clif->pActionRequest,2,6); + packet(0x085f,clif->pReqClickBuyingStore,2); + packet(0x0860,clif->pTickSend,2); + packet(0x0864,clif->pTakeItem,2); + packet(0x0866,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0868,clif->pMoveToKafra,2,4); + packet(0x086d,clif->pHomMenu,2,4); + packet(0x0873,clif->pWantToConnection,2,6,10,14,18); + packet(0x0874,clif->pSearchStoreInfoNextPage,0); + packet(0x087d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0882,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088d,clif->pUseSkillToId,2,4,6); + packet(0x0894,clif->pMoveFromKafra,2,4); + packet(0x089c,clif->pWalkToXY,2); + packet(0x08a1,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x0923,clif->pItemListWindowSelected,2,4,8); + packet(0x0925,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0934,clif->pChangeDir,2,4); + packet(0x0946,clif->pUseSkillToPos,2,4,6,8); + packet(0x0958,clif->pDull/*,XXX*/); + packet(0x095a,clif->pGetCharNameRequest,2); + packet(0x095b,clif->pPartyBookingRegisterReq,2,4); + packet(0x0964,clif->pReqCloseBuyingStore,0); + packet(0x0967,clif->pFriendsListAdd,2); + packet(0x0968,clif->pSolveCharName,2); #endif // 2017-05-31aRagexeRE #if PACKETVER == 20170531 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0819,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x085f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0873,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0875,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0878,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x088d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0894,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08ad,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0933,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0945,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0963,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0968,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 + packet(0x0361,clif->pChangeDir,2,4); + packet(0x0369,clif->pUseSkillToId,2,4,6); + packet(0x07e4,clif->pWalkToXY,2); + packet(0x07ec,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0819,clif->pTickSend,2); + packet(0x085b,clif->pDull/*,XXX*/); + packet(0x085f,clif->pSolveCharName,2); + packet(0x0861,clif->pFriendsListAdd,2); + packet(0x0868,clif->pDull/*,XXX*/); + packet(0x0873,clif->pReqCloseBuyingStore,0); + packet(0x0875,clif->pUseSkillToPos,2,4,6,8); + packet(0x0878,clif->pPartyInvite2,2); + packet(0x087b,clif->pActionRequest,2,6); + packet(0x0885,clif->pItemListWindowSelected,2,4,8); + packet(0x088b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x088d,clif->pDropItem,2,4); + packet(0x0894,clif->pWantToConnection,2,6,10,14,18); + packet(0x089a,clif->pStoragePassword,0); + packet(0x089c,clif->pHomMenu,2,4); + packet(0x08a2,clif->pSearchStoreInfoNextPage,0); + packet(0x08ac,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08ad,clif->pMoveToKafra,2,4); + packet(0x092d,clif->pGetCharNameRequest,2); + packet(0x0933,clif->pMoveFromKafra,2,4); + packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0940,clif->pPartyBookingRegisterReq,2,4); + packet(0x0945,clif->pReqClickBuyingStore,2); + packet(0x0963,clif->pTakeItem,2); + packet(0x0968,clif->pSearchStoreInfo,2,4,5,9,13,14,15); #endif // 2017-06-07bRagexeRE, 2017-06-07cRagexeRE #if PACKETVER == 20170607 - packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0364,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x07e4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x085e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0862,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0864,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0873,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0885,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x088a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x089d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a9,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08ab,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0917,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0918,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0925,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0927,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0931,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0934,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0938,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0944,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0949,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x0361,clif->pItemListWindowSelected,2,4,8); + packet(0x0364,clif->pStoragePassword,0); + packet(0x07e4,clif->pTickSend,2); + packet(0x085a,clif->pChangeDir,2,4); + packet(0x085e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0862,clif->pGetCharNameRequest,2); + packet(0x0863,clif->pReqClickBuyingStore,2); + packet(0x0864,clif->pDropItem,2,4); + packet(0x0871,clif->pWantToConnection,2,6,10,14,18); + packet(0x0873,clif->pDull/*,XXX*/); + packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0885,clif->pFriendsListAdd,2); + packet(0x088a,clif->pMoveFromKafra,2,4); + packet(0x0897,clif->pTakeItem,2); + packet(0x089d,clif->pMoveToKafra,2,4); + packet(0x08a9,clif->pUseSkillToId,2,4,6); + packet(0x08ab,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0917,clif->pSearchStoreInfoNextPage,0); + packet(0x0918,clif->pPartyBookingRegisterReq,2,4); + packet(0x0919,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0925,clif->pPartyInvite2,2); + packet(0x0927,clif->pUseSkillToPos,2,4,6,8); + packet(0x0931,clif->pDull/*,XXX*/); + packet(0x0934,clif->pWalkToXY,2); + packet(0x0938,clif->pActionRequest,2,6); + packet(0x093d,clif->pReqCloseBuyingStore,0); + packet(0x0942,clif->pHomMenu,2,4); + packet(0x0944,clif->pSolveCharName,2); + packet(0x0949,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2017-06-14bRagexeRE #if PACKETVER == 20170614 - packet(0x023b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0361,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0364,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0367,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0838,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x083c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0860,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0866,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0867,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x086b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0877,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08ad,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0928,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0936,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0944,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0957,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0963,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x023b,clif->pMoveFromKafra,2,4); + packet(0x0361,clif->pWalkToXY,2); + packet(0x0364,clif->pHomMenu,2,4); + packet(0x0367,clif->pDropItem,2,4); + packet(0x0437,clif->pStoragePassword,0); + packet(0x0838,clif->pUseSkillToPos,2,4,6,8); + packet(0x083c,clif->pActionRequest,2,6); + packet(0x0860,clif->pReqClickBuyingStore,2); + packet(0x0865,clif->pDull/*,XXX*/); + packet(0x0866,clif->pTickSend,2); + packet(0x0867,clif->pFriendsListAdd,2); + packet(0x086b,clif->pReqCloseBuyingStore,0); + packet(0x086c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0877,clif->pPartyBookingRegisterReq,2,4); + packet(0x0879,clif->pMoveToKafra,2,4); + packet(0x087d,clif->pSolveCharName,2); + packet(0x087e,clif->pChangeDir,2,4); + packet(0x0889,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0899,clif->pPartyInvite2,2); + packet(0x089d,clif->pItemListWindowSelected,2,4,8); + packet(0x08a2,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08ad,clif->pTakeItem,2); + packet(0x091b,clif->pUseSkillToId,2,4,6); + packet(0x0928,clif->pSearchStoreInfoNextPage,0); + packet(0x092f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0936,clif->pGetCharNameRequest,2); + packet(0x0944,clif->pWantToConnection,2,6,10,14,18); + packet(0x0957,clif->pDull/*,XXX*/); + packet(0x0963,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2017-06-21aRagexeRE #if PACKETVER == 20170621 - packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0365,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0366,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0885,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a8,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0957,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x095c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0961,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pTakeItem,2); + packet(0x0365,clif->pItemListWindowSelected,2,4,8); + packet(0x0366,clif->pPartyBookingRegisterReq,2,4); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pFriendsListAdd,2); + packet(0x0802,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085d,clif->pChangeDir,2,4); + packet(0x087d,clif->pDropItem,2,4); + packet(0x0885,clif->pPartyInvite2,2); + packet(0x0889,clif->pMoveFromKafra,2,4); + packet(0x08a8,clif->pHomMenu,2,4); + packet(0x0956,clif->pDull/*,XXX*/); + packet(0x0957,clif->pStoragePassword,0); + packet(0x095b,clif->pDull/*,XXX*/); + packet(0x095c,clif->pMoveToKafra,2,4); + packet(0x0961,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-06-28bRagexeRE #if PACKETVER == 20170628 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0863,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0863,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-07-05aRagexeRE #if PACKETVER == 20170705 - packet(0x0202,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0886,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x088d,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x092f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0930,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0932,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0934,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pStoragePassword,0); + packet(0x02c4,clif->pPartyBookingRegisterReq,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0879,clif->pMoveToKafra,2,4); + packet(0x0886,clif->pFriendsListAdd,2); + packet(0x088d,clif->pDull/*,XXX*/); + packet(0x088e,clif->pPartyInvite2,2); + packet(0x089a,clif->pWantToConnection,2,6,10,14,18); + packet(0x089d,clif->pDropItem,2,4); + packet(0x091a,clif->pChangeDir,2,4); + packet(0x092f,clif->pDull/*,XXX*/); + packet(0x0930,clif->pItemListWindowSelected,2,4,8); + packet(0x0932,clif->pTakeItem,2); + packet(0x0934,clif->pMoveFromKafra,2,4); + packet(0x094c,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-07-12bRagexeRE #if PACKETVER == 20170712 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0944,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-07-19aRagexeRE #if PACKETVER == 20170719 - packet(0x022d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0368,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0369,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x07e4,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085a,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x086e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x087d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0881,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0891,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0898,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a6,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091b,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x092c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x092e,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x092f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x093d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0944,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0966,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 + packet(0x022d,clif->pActionRequest,2,6); + packet(0x0367,clif->pReqCloseBuyingStore,0); + packet(0x0368,clif->pDull/*,XXX*/); + packet(0x0369,clif->pHomMenu,2,4); + packet(0x07e4,clif->pGetCharNameRequest,2); + packet(0x085a,clif->pTickSend,2); + packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0863,clif->pReqClickBuyingStore,2); + packet(0x086e,clif->pPartyInvite2,2); + packet(0x087d,clif->pTakeItem,2); + packet(0x0881,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0885,clif->pItemListWindowSelected,2,4,8); + packet(0x0891,clif->pUseSkillToPos,2,4,6,8); + packet(0x0898,clif->pUseSkillToId,2,4,6); + packet(0x089a,clif->pStoragePassword,0); + packet(0x089d,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a6,clif->pMoveFromKafra,2,4); + packet(0x08a8,clif->pWantToConnection,2,6,10,14,18); + packet(0x091b,clif->pDropItem,2,4); + packet(0x091f,clif->pSolveCharName,2); + packet(0x092c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x092e,clif->pSearchStoreInfoNextPage,0); + packet(0x092f,clif->pPartyBookingRegisterReq,2,4); + packet(0x093d,clif->pWalkToXY,2); + packet(0x093e,clif->pDull/*,XXX*/); + packet(0x0944,clif->pChangeDir,2,4); + packet(0x0946,clif->pFriendsListAdd,2); + packet(0x0966,clif->pMoveToKafra,2,4); #endif // 2017-07-26cRagexeRE #if PACKETVER == 20170726 - packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0369,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0438,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0838,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0873,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0874,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0878,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x088e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a3,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a7,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08aa,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08ab,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08ac,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x091e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0923,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0943,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x094f,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0950,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0952,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0954,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0963,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 + packet(0x0363,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0366,clif->pWantToConnection,2,6,10,14,18); + packet(0x0369,clif->pUseSkillToId,2,4,6); + packet(0x0438,clif->pPartyInvite2,2); + packet(0x0838,clif->pReqCloseBuyingStore,0); + packet(0x0873,clif->pReqClickBuyingStore,2); + packet(0x0874,clif->pItemListWindowSelected,2,4,8); + packet(0x0878,clif->pActionRequest,2,6); + packet(0x0881,clif->pDull/*,XXX*/); + packet(0x0888,clif->pSearchStoreInfoNextPage,0); + packet(0x088e,clif->pWalkToXY,2); + packet(0x08a3,clif->pDull/*,XXX*/); + packet(0x08a7,clif->pStoragePassword,0); + packet(0x08aa,clif->pGetCharNameRequest,2); + packet(0x08ab,clif->pTakeItem,2); + packet(0x08ac,clif->pTickSend,2); + packet(0x091d,clif->pFriendsListAdd,2); + packet(0x091e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091f,clif->pHomMenu,2,4); + packet(0x0921,clif->pSolveCharName,2); + packet(0x0923,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0943,clif->pDropItem,2,4); + packet(0x094f,clif->pMoveFromKafra,2,4); + packet(0x0950,clif->pUseSkillToPos,2,4,6,8); + packet(0x0952,clif->pChangeDir,2,4); + packet(0x0954,clif->pPartyBookingRegisterReq,2,4); + packet(0x095a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0963,clif->pSearchStoreInfo,2,4,5,9,13,14,15); #endif // 2017-08-01aRagexeRE #if PACKETVER == 20170801 - packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0362,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095a,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pDropItem,2,4); + packet(0x0281,clif->pChangeDir,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pItemListWindowSelected,2,4,8); + packet(0x0362,clif->pHomMenu,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087d,clif->pStoragePassword,0); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x094f,clif->pFriendsListAdd,2); + packet(0x095a,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-08-09cRagexeRE #if PACKETVER == 20170809 - packet(0x022d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0281,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0364,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0366,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0367,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x07e4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0802,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0868,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x086e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086f,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0876,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0895,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0899,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a3,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0918,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0921,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x092b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0931,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0939,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0940,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x022d,clif->pDull/*,XXX*/); + packet(0x0281,clif->pMoveFromKafra,2,4); + packet(0x0364,clif->pPartyInvite2,2); + packet(0x0366,clif->pFriendsListAdd,2); + packet(0x0367,clif->pReqCloseBuyingStore,0); + packet(0x07e4,clif->pSearchStoreInfoNextPage,0); + packet(0x0802,clif->pItemListWindowSelected,2,4,8); + packet(0x0835,clif->pDropItem,2,4); + packet(0x0868,clif->pActionRequest,2,6); + packet(0x086e,clif->pChangeDir,2,4); + packet(0x086f,clif->pHomMenu,2,4); + packet(0x0876,clif->pUseSkillToPos,2,4,6,8); + packet(0x087d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0880,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088c,clif->pUseSkillToId,2,4,6); + packet(0x0890,clif->pStoragePassword,0); + packet(0x0892,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0895,clif->pWalkToXY,2); + packet(0x0899,clif->pDull/*,XXX*/); + packet(0x08a3,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a6,clif->pWantToConnection,2,6,10,14,18); + packet(0x0918,clif->pTakeItem,2); + packet(0x0921,clif->pMoveToKafra,2,4); + packet(0x092a,clif->pGetCharNameRequest,2); + packet(0x092b,clif->pTickSend,2); + packet(0x0931,clif->pSolveCharName,2); + packet(0x0939,clif->pReqClickBuyingStore,2); + packet(0x093b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0940,clif->pPartyBookingRegisterReq,2,4); #endif // 2017-08-16cRagexeRE, 2017-08-16dRagexeRE #if PACKETVER == 20170816 - packet(0x022d,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x035f,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0361,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0438,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x085a,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0862,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0864,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x087e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0882,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0884,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0888,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0889,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a9,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08ac,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x091c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0921,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0925,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x093a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0940,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0941,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0950,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0960,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 + packet(0x022d,clif->pGetCharNameRequest,2); + packet(0x035f,clif->pSearchStoreInfoNextPage,0); + packet(0x0361,clif->pItemListWindowSelected,2,4,8); + packet(0x0362,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0438,clif->pActionRequest,2,6); + packet(0x085a,clif->pSolveCharName,2); + packet(0x0862,clif->pUseSkillToPos,2,4,6,8); + packet(0x0864,clif->pReqCloseBuyingStore,0); + packet(0x087e,clif->pTakeItem,2); + packet(0x0881,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0882,clif->pStoragePassword,0); + packet(0x0884,clif->pDull/*,XXX*/); + packet(0x0888,clif->pPartyBookingRegisterReq,2,4); + packet(0x0889,clif->pTickSend,2); + packet(0x08a3,clif->pFriendsListAdd,2); + packet(0x08a7,clif->pDull/*,XXX*/); + packet(0x08a9,clif->pWalkToXY,2); + packet(0x08ac,clif->pHomMenu,2,4); + packet(0x091c,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0921,clif->pReqClickBuyingStore,2); + packet(0x0925,clif->pMoveFromKafra,2,4); + packet(0x092c,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x093a,clif->pPartyInvite2,2); + packet(0x093d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0940,clif->pUseSkillToId,2,4,6); + packet(0x0941,clif->pDropItem,2,4); + packet(0x0950,clif->pChangeDir,2,4); + packet(0x0959,clif->pMoveToKafra,2,4); + packet(0x0960,clif->pSearchStoreInfo,2,4,5,9,13,14,15); #endif // 2017-08-23aRagexeRE #if PACKETVER == 20170823 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x086d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08ac,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pPartyInvite2,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pChangeDir,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086c,clif->pWantToConnection,2,6,10,14,18); + packet(0x086d,clif->pStoragePassword,0); + packet(0x08ac,clif->pFriendsListAdd,2); + packet(0x095b,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-08-30aRagexeRE, 2017-08-30bRagexeRE #if PACKETVER == 20170830 - packet(0x0281,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x02c4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0364,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0860,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0865,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0884,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0888,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0899,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089e,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0921,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0925,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x092e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0939,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0940,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0942,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0943,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0947,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0951,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0959,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x0281,clif->pChangeDir,2,4); + packet(0x02c4,clif->pTakeItem,2); + packet(0x0363,clif->pPartyBookingRegisterReq,2,4); + packet(0x0364,clif->pDull/*,XXX*/); + packet(0x0860,clif->pReqCloseBuyingStore,0); + packet(0x0865,clif->pWalkToXY,2); + packet(0x086a,clif->pPartyInvite2,2); + packet(0x0875,clif->pDull/*,XXX*/); + packet(0x0884,clif->pWantToConnection,2,6,10,14,18); + packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0888,clif->pUseSkillToId,2,4,6); + packet(0x0897,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0899,clif->pDropItem,2,4); + packet(0x089a,clif->pItemListWindowSelected,2,4,8); + packet(0x089e,clif->pMoveToKafra,2,4); + packet(0x08a2,clif->pStoragePassword,0); + packet(0x08a8,clif->pMoveFromKafra,2,4); + packet(0x091e,clif->pTickSend,2); + packet(0x0921,clif->pHomMenu,2,4); + packet(0x0925,clif->pReqClickBuyingStore,2); + packet(0x092e,clif->pGetCharNameRequest,2); + packet(0x0939,clif->pFriendsListAdd,2); + packet(0x093e,clif->pActionRequest,2,6); + packet(0x0940,clif->pSolveCharName,2); + packet(0x0942,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0943,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0947,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0951,clif->pSearchStoreInfoNextPage,0); + packet(0x0959,clif->pUseSkillToPos,2,4,6,8); #endif // 2017-09-06cRagexeRE #if PACKETVER == 20170906 - packet(0x0202,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0281,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0860,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a2,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x091a,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0953,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pDull/*,XXX*/); + packet(0x0281,clif->pStoragePassword,0); + packet(0x02c4,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pPartyInvite2,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pChangeDir,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0860,clif->pDropItem,2,4); + packet(0x0866,clif->pItemListWindowSelected,2,4,8); + packet(0x086c,clif->pDull/*,XXX*/); + packet(0x087b,clif->pMoveToKafra,2,4); + packet(0x08a2,clif->pMoveFromKafra,2,4); + packet(0x08a3,clif->pFriendsListAdd,2); + packet(0x08a7,clif->pPartyBookingRegisterReq,2,4); + packet(0x091a,clif->pTakeItem,2); + packet(0x091e,clif->pHomMenu,2,4); + packet(0x0953,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-09-13bRagexeRE #if PACKETVER == 20170913 - packet(0x0281,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x035f,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x07e4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0817,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0835,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x085a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0860,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0865,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x088c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0891,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0892,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a7,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08aa,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08ab,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08ac,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ad,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0920,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0923,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0927,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095c,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 + packet(0x0281,clif->pGetCharNameRequest,2); + packet(0x035f,clif->pFriendsListAdd,2); + packet(0x0437,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x07e4,clif->pMoveFromKafra,2,4); + packet(0x0817,clif->pActionRequest,2,6); + packet(0x0835,clif->pWantToConnection,2,6,10,14,18); + packet(0x085a,clif->pReqCloseBuyingStore,0); + packet(0x0860,clif->pTakeItem,2); + packet(0x0865,clif->pPartyInvite2,2); + packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x088c,clif->pHomMenu,2,4); + packet(0x0890,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0891,clif->pMoveToKafra,2,4); + packet(0x0892,clif->pStoragePassword,0); + packet(0x08a6,clif->pReqClickBuyingStore,2); + packet(0x08a7,clif->pDull/*,XXX*/); + packet(0x08aa,clif->pUseSkillToId,2,4,6); + packet(0x08ab,clif->pPartyBookingRegisterReq,2,4); + packet(0x08ac,clif->pChangeDir,2,4); + packet(0x08ad,clif->pItemListWindowSelected,2,4,8); + packet(0x091b,clif->pTickSend,2); + packet(0x091d,clif->pDropItem,2,4); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x0920,clif->pSearchStoreInfoNextPage,0); + packet(0x0923,clif->pWalkToXY,2); + packet(0x0925,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0927,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x095a,clif->pUseSkillToPos,2,4,6,8); + packet(0x095c,clif->pSolveCharName,2); #endif // 2017-09-20bRagexeRE #if PACKETVER == 20170920 - packet(0x0369,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0436,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x085a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0861,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0862,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0864,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x086a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x086c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0874,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0875,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0889,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x088e,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x089b,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0919,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x091e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0921,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0923,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0926,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0939,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0945,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x094c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0961,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0966,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x096a,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 + packet(0x0369,clif->pTakeItem,2); + packet(0x0436,clif->pItemListWindowSelected,2,4,8); + packet(0x07ec,clif->pMoveFromKafra,2,4); + packet(0x085a,clif->pWalkToXY,2); + packet(0x0861,clif->pFriendsListAdd,2); + packet(0x0862,clif->pUseSkillToId,2,4,6); + packet(0x0864,clif->pStoragePassword,0); + packet(0x0865,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x086a,clif->pPartyInvite2,2); + packet(0x086c,clif->pDropItem,2,4); + packet(0x0874,clif->pReqCloseBuyingStore,0); + packet(0x0875,clif->pDull/*,XXX*/); + packet(0x0889,clif->pGetCharNameRequest,2); + packet(0x088e,clif->pTickSend,2); + packet(0x089b,clif->pActionRequest,2,6); + packet(0x0919,clif->pUseSkillToPos,2,4,6,8); + packet(0x091e,clif->pDull/*,XXX*/); + packet(0x0921,clif->pSolveCharName,2); + packet(0x0923,clif->pWantToConnection,2,6,10,14,18); + packet(0x0926,clif->pMoveToKafra,2,4); + packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0937,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0939,clif->pChangeDir,2,4); + packet(0x0945,clif->pPartyBookingRegisterReq,2,4); + packet(0x094c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095d,clif->pHomMenu,2,4); + packet(0x0961,clif->pReqClickBuyingStore,2); + packet(0x0966,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x096a,clif->pSearchStoreInfoNextPage,0); #endif // 2017-09-27bRagexeRE, 2017-09-27dRagexeRE #if PACKETVER == 20170927 - packet(0x02c4,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x035f,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0361,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0366,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x085c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0873,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x087e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x088b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0899,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x089a,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08a3,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a5,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a6,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08ad,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x091e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0922,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0923,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0927,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x093b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0942,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0945,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x02c4,clif->pHomMenu,2,4); + packet(0x035f,clif->pGetCharNameRequest,2); + packet(0x0361,clif->pDull/*,XXX*/); + packet(0x0362,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0366,clif->pWantToConnection,2,6,10,14,18); + packet(0x085c,clif->pUseSkillToId,2,4,6); + packet(0x0873,clif->pSolveCharName,2); + packet(0x0875,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x087e,clif->pChangeDir,2,4); + packet(0x088b,clif->pSearchStoreInfoNextPage,0); + packet(0x0899,clif->pActionRequest,2,6); + packet(0x089a,clif->pStoragePassword,0); + packet(0x089b,clif->pMoveFromKafra,2,4); + packet(0x08a3,clif->pReqCloseBuyingStore,0); + packet(0x08a5,clif->pItemListWindowSelected,2,4,8); + packet(0x08a6,clif->pDull/*,XXX*/); + packet(0x08ad,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x091e,clif->pReqClickBuyingStore,2); + packet(0x0922,clif->pPartyInvite2,2); + packet(0x0923,clif->pDropItem,2,4); + packet(0x0927,clif->pWalkToXY,2); + packet(0x093b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0942,clif->pPartyBookingRegisterReq,2,4); + packet(0x0945,clif->pTickSend,2); + packet(0x094b,clif->pFriendsListAdd,2); + packet(0x094d,clif->pTakeItem,2); + packet(0x0959,clif->pMoveToKafra,2,4); + packet(0x095a,clif->pUseSkillToPos,2,4,6,8); #endif // 2017-10-02cRagexeRE #if PACKETVER == 20171002 - packet(0x022d,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0885,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0928,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093b,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x093e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0943,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x095f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x022d,clif->pDropItem,2,4); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pUseSkillToPos,2,4,6,8); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pHomMenu,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0885,clif->pMoveToKafra,2,4); + packet(0x0897,clif->pChangeDir,2,4); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x089d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0928,clif->pItemListWindowSelected,2,4,8); + packet(0x092d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0934,clif->pStoragePassword,0); + packet(0x093b,clif->pMoveFromKafra,2,4); + packet(0x093d,clif->pTakeItem,2); + packet(0x093e,clif->pDull/*,XXX*/); + packet(0x0943,clif->pPartyInvite2,2); + packet(0x095f,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-10-11aRagexeRE, 2017-10-11bRagexeRE #if PACKETVER == 20171011 - packet(0x023b,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0882,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0950,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0954,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x023b,clif->pWalkToXY,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pStoragePassword,0); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087b,clif->pFriendsListAdd,2); + packet(0x0882,clif->pHomMenu,2,4); + packet(0x0950,clif->pWantToConnection,2,6,10,14,18); + packet(0x0954,clif->pChangeDir,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-10-18aRagexeRE #if PACKETVER == 20171018 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0363,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x087a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089a,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a6,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0938,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0944,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x094a,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x094f,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0363,clif->pWantToConnection,2,6,10,14,18); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pTakeItem,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086a,clif->pDull/*,XXX*/); + packet(0x087a,clif->pDull/*,XXX*/); + packet(0x087e,clif->pHomMenu,2,4); + packet(0x0889,clif->pMoveFromKafra,2,4); + packet(0x089a,clif->pDropItem,2,4); + packet(0x089f,clif->pPartyInvite2,2); + packet(0x08a6,clif->pChangeDir,2,4); + packet(0x0938,clif->pItemListWindowSelected,2,4,8); + packet(0x0944,clif->pStoragePassword,0); + packet(0x094a,clif->pFriendsListAdd,2); + packet(0x094f,clif->pPartyBookingRegisterReq,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-10-25bRagexeRE, 2017-10-25cRagexeRE, 2017-10-25dRagexeRE, 2017-10-25eRagexeRE #if PACKETVER == 20171025 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a2,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x08a2,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-11-01bRagexeRE #if PACKETVER == 20171101 - packet(0x022d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0438,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0835,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x085b,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0860,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0872,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0876,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0886,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0890,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0895,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0899,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x089b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x089c,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a0,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x08ab,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08ad,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x091b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0939,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x094a,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x094d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0957,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x095a,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0962,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0966,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x022d,clif->pStoragePassword,0); + packet(0x0368,clif->pWantToConnection,2,6,10,14,18); + packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0438,clif->pTickSend,2); + packet(0x0835,clif->pDropItem,2,4); + packet(0x085b,clif->pHomMenu,2,4); + packet(0x0860,clif->pGetCharNameRequest,2); + packet(0x086c,clif->pUseSkillToId,2,4,6); + packet(0x0872,clif->pFriendsListAdd,2); + packet(0x0876,clif->pChangeDir,2,4); + packet(0x0886,clif->pDull/*,XXX*/); + packet(0x088e,clif->pReqClickBuyingStore,2); + packet(0x0890,clif->pSearchStoreInfoNextPage,0); + packet(0x0895,clif->pDull/*,XXX*/); + packet(0x0899,clif->pPartyInvite2,2); + packet(0x089b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x089c,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a0,clif->pMoveFromKafra,2,4); + packet(0x08ab,clif->pItemListWindowSelected,2,4,8); + packet(0x08ad,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x091b,clif->pMoveToKafra,2,4); + packet(0x0939,clif->pWalkToXY,2); + packet(0x094a,clif->pReqCloseBuyingStore,0); + packet(0x094d,clif->pSolveCharName,2); + packet(0x0952,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0957,clif->pActionRequest,2,6); + packet(0x095a,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0962,clif->pTakeItem,2); + packet(0x0966,clif->pUseSkillToPos,2,4,6,8); #endif // 2017-11-08bRagexeRE #if PACKETVER == 20171108 - packet(0x0202,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x07e4,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0815,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0863,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0878,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x087e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0884,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0896,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x08a2,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x08a9,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08ad,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x091f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0940,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0941,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0945,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0947,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0949,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x094e,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0958,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x095a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0963,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0965,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0967,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x0202,clif->pTickSend,2); + packet(0x0361,clif->pSearchStoreInfoNextPage,0); + packet(0x07e4,clif->pSolveCharName,2); + packet(0x0815,clif->pStoragePassword,0); + packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0838,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x085d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0863,clif->pWalkToXY,2); + packet(0x0878,clif->pFriendsListAdd,2); + packet(0x087e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0884,clif->pItemListWindowSelected,2,4,8); + packet(0x0896,clif->pDull/*,XXX*/); + packet(0x0897,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x08a2,clif->pUseSkillToId,2,4,6); + packet(0x08a9,clif->pHomMenu,2,4); + packet(0x08ad,clif->pGetCharNameRequest,2); + packet(0x091d,clif->pReqCloseBuyingStore,0); + packet(0x091f,clif->pChangeDir,2,4); + packet(0x0940,clif->pReqClickBuyingStore,2); + packet(0x0941,clif->pMoveToKafra,2,4); + packet(0x0945,clif->pTakeItem,2); + packet(0x0947,clif->pDull/*,XXX*/); + packet(0x0949,clif->pWantToConnection,2,6,10,14,18); + packet(0x094e,clif->pPartyInvite2,2); + packet(0x0958,clif->pPartyBookingRegisterReq,2,4); + packet(0x095a,clif->pMoveFromKafra,2,4); + packet(0x0963,clif->pActionRequest,2,6); + packet(0x0965,clif->pDropItem,2,4); + packet(0x0967,clif->pUseSkillToPos,2,4,6,8); #endif // 2017-11-15aRagexeRE #if PACKETVER == 20171115 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x086d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x086f,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x087e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0883,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0890,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0898,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0926,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0958,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x095a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pWantToConnection,2,6,10,14,18); + packet(0x0365,clif->pDropItem,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pReqClickBuyingStore,2); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pFriendsListAdd,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x086d,clif->pDull/*,XXX*/); + packet(0x086f,clif->pItemListWindowSelected,2,4,8); + packet(0x087e,clif->pMoveFromKafra,2,4); + packet(0x0883,clif->pDull/*,XXX*/); + packet(0x088b,clif->pMoveToKafra,2,4); + packet(0x0890,clif->pPartyBookingRegisterReq,2,4); + packet(0x0898,clif->pStoragePassword,0); + packet(0x08a4,clif->pChangeDir,2,4); + packet(0x0926,clif->pTakeItem,2); + packet(0x0958,clif->pHomMenu,2,4); + packet(0x095a,clif->pPartyInvite2,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-11-22bRagexeRE #if PACKETVER == 20171122 - packet(0x0281,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x02c4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x035f,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0838,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x083c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x085b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0862,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0867,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0877,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0885,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0890,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0891,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0893,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0897,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0898,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x089a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x089e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x08a6,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x08a9,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x091e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0920,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0923,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0934,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0945,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0947,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0962,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0968,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 + packet(0x0281,clif->pSolveCharName,2); + packet(0x02c4,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x035f,clif->pDull/*,XXX*/); + packet(0x0838,clif->pMoveToKafra,2,4); + packet(0x083c,clif->pHomMenu,2,4); + packet(0x085b,clif->pGetCharNameRequest,2); + packet(0x0862,clif->pItemListWindowSelected,2,4,8); + packet(0x0867,clif->pWantToConnection,2,6,10,14,18); + packet(0x0877,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0885,clif->pDull/*,XXX*/); + packet(0x0890,clif->pTickSend,2); + packet(0x0891,clif->pTakeItem,2); + packet(0x0893,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0897,clif->pChangeDir,2,4); + packet(0x0898,clif->pDropItem,2,4); + packet(0x089a,clif->pMoveFromKafra,2,4); + packet(0x089e,clif->pActionRequest,2,6); + packet(0x08a6,clif->pUseSkillToPos,2,4,6,8); + packet(0x08a9,clif->pReqClickBuyingStore,2); + packet(0x091e,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0920,clif->pReqCloseBuyingStore,0); + packet(0x0923,clif->pPartyBookingRegisterReq,2,4); + packet(0x0934,clif->pStoragePassword,0); + packet(0x093b,clif->pUseSkillToId,2,4,6); + packet(0x0945,clif->pSearchStoreInfoNextPage,0); + packet(0x0946,clif->pFriendsListAdd,2); + packet(0x0947,clif->pWalkToXY,2); + packet(0x0962,clif->pPartyInvite2,2); + packet(0x0968,clif->pReqOpenBuyingStore,2,4,8,9,89); #endif // 2017-11-29aRagexeRE #if PACKETVER == 20171129 - packet(0x02c4,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0363,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0365,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0862,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x086d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0878,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x08a5,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x094b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0953,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0966,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x02c4,clif->pChangeDir,2,4); + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0363,clif->pFriendsListAdd,2); + packet(0x0365,clif->pDropItem,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pPartyInvite2,2); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0862,clif->pTakeItem,2); + packet(0x086d,clif->pPartyBookingRegisterReq,2,4); + packet(0x0876,clif->pDull/*,XXX*/); + packet(0x0878,clif->pStoragePassword,0); + packet(0x088a,clif->pItemListWindowSelected,2,4,8); + packet(0x089c,clif->pHomMenu,2,4); + packet(0x08a5,clif->pMoveToKafra,2,4); + packet(0x0940,clif->pTickSend,2); + packet(0x094b,clif->pDull/*,XXX*/); + packet(0x0953,clif->pMoveFromKafra,2,4); + packet(0x0966,clif->pWantToConnection,2,6,10,14,18); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-12-06aRagexeRE #if PACKETVER == 20171206 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0867,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x086a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x086e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0885,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0888,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x089d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08a2,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x08a4,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0923,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x092e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0936,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0942,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0958,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0961,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0867,clif->pDropItem,2,4); + packet(0x086a,clif->pDull/*,XXX*/); + packet(0x086e,clif->pPartyBookingRegisterReq,2,4); + packet(0x0885,clif->pTickSend,2); + packet(0x0888,clif->pSearchStoreInfoNextPage,0); + packet(0x0897,clif->pWantToConnection,2,6,10,14,18); + packet(0x089d,clif->pStoragePassword,0); + packet(0x08a2,clif->pPartyInvite2,2); + packet(0x08a4,clif->pMoveFromKafra,2,4); + packet(0x091d,clif->pFriendsListAdd,2); + packet(0x0923,clif->pMoveToKafra,2,4); + packet(0x092e,clif->pDull/*,XXX*/); + packet(0x0936,clif->pChangeDir,2,4); + packet(0x0942,clif->pHomMenu,2,4); + packet(0x0958,clif->pItemListWindowSelected,2,4,8); + packet(0x0961,clif->pTakeItem,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-12-13bRagexeRE #if PACKETVER == 20171213 - packet(0x0202,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0881,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0890,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0957,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pPartyInvite2,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pFriendsListAdd,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0860,clif->pWantToConnection,2,6,10,14,18); + packet(0x0881,clif->pDull/*,XXX*/); + packet(0x0890,clif->pStoragePassword,0); + packet(0x091a,clif->pChangeDir,2,4); + packet(0x0957,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-12-20aRagexeRE #if PACKETVER == 20171220 - packet(0x0281,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0366,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0436,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0437,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0872,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0873,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0882,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0885,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0899,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x089e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a7,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x091b,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091e,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0924,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0929,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0933,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x093e,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0941,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0946,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x094e,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0951,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0957,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0964,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 + packet(0x0281,clif->pWantToConnection,2,6,10,14,18); + packet(0x0366,clif->pMoveFromKafra,2,4); + packet(0x0369,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0436,clif->pSearchStoreInfoNextPage,0); + packet(0x0437,clif->pPartyBookingRegisterReq,2,4); + packet(0x085e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0861,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0872,clif->pUseSkillToId,2,4,6); + packet(0x0873,clif->pGetCharNameRequest,2); + packet(0x0880,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0882,clif->pTickSend,2); + packet(0x0885,clif->pItemListWindowSelected,2,4,8); + packet(0x088c,clif->pUseSkillToPos,2,4,6,8); + packet(0x0899,clif->pStoragePassword,0); + packet(0x089e,clif->pWalkToXY,2); + packet(0x08a7,clif->pReqCloseBuyingStore,0); + packet(0x091b,clif->pTakeItem,2); + packet(0x091e,clif->pSolveCharName,2); + packet(0x0924,clif->pMoveToKafra,2,4); + packet(0x0929,clif->pDropItem,2,4); + packet(0x0933,clif->pChangeDir,2,4); + packet(0x093e,clif->pActionRequest,2,6); + packet(0x0941,clif->pReqClickBuyingStore,2); + packet(0x0946,clif->pDull/*,XXX*/); + packet(0x094e,clif->pDull/*,XXX*/); + packet(0x0951,clif->pHomMenu,2,4); + packet(0x0957,clif->pFriendsListAdd,2); + packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0964,clif->pPartyInvite2,2); #endif // 2017-12-27aRagexeRE #if PACKETVER == 20171227 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x087d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0888,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x088a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a0,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a5,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092c,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x092e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0938,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0945,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0969,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x096a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pActionRequest,2,6); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pChangeDir,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pGetCharNameRequest,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x087d,clif->pStoragePassword,0); + packet(0x0888,clif->pMoveFromKafra,2,4); + packet(0x088a,clif->pDull/*,XXX*/); + packet(0x088d,clif->pTakeItem,2); + packet(0x08a0,clif->pMoveToKafra,2,4); + packet(0x08a5,clif->pHomMenu,2,4); + packet(0x092c,clif->pWantToConnection,2,6,10,14,18); + packet(0x092e,clif->pDull/*,XXX*/); + packet(0x0938,clif->pPartyInvite2,2); + packet(0x0945,clif->pItemListWindowSelected,2,4,8); + packet(0x0946,clif->pFriendsListAdd,2); + packet(0x0969,clif->pDropItem,2,4); + packet(0x096a,clif->pPartyBookingRegisterReq,2,4); #endif // 2018-01-03aRagexeRE, 2018-01-03bRagexeRE #if PACKETVER == 20180103 - packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0363,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0865,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0876,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0879,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088e,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x089f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x08a9,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ab,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x08ac,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091d,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0922,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0927,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x092c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0935,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0938,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0941,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0946,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0948,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094e,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x095d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x095f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 + packet(0x02c4,clif->pMoveToKafra,2,4); + packet(0x0363,clif->pPartyInvite2,2); + packet(0x0811,clif->pWantToConnection,2,6,10,14,18); + packet(0x0865,clif->pDull/*,XXX*/); + packet(0x086b,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0872,clif->pReqClickBuyingStore,2); + packet(0x0876,clif->pTickSend,2); + packet(0x0879,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088e,clif->pReqCloseBuyingStore,0); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x089f,clif->pSolveCharName,2); + packet(0x08a9,clif->pChangeDir,2,4); + packet(0x08ab,clif->pGetCharNameRequest,2); + packet(0x08ac,clif->pItemListWindowSelected,2,4,8); + packet(0x091d,clif->pActionRequest,2,6); + packet(0x0922,clif->pSearchStoreInfoNextPage,0); + packet(0x0926,clif->pDull/*,XXX*/); + packet(0x0927,clif->pPartyBookingRegisterReq,2,4); + packet(0x092c,clif->pMoveFromKafra,2,4); + packet(0x0935,clif->pTakeItem,2); + packet(0x0938,clif->pUseSkillToId,2,4,6); + packet(0x0941,clif->pWalkToXY,2); + packet(0x0946,clif->pStoragePassword,0); + packet(0x0948,clif->pHomMenu,2,4); + packet(0x094e,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x095d,clif->pUseSkillToPos,2,4,6,8); + packet(0x095f,clif->pDropItem,2,4); + packet(0x0960,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); #endif // 2018-01-17aRagexeRE #if PACKETVER == 20180117 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0875,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0875,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2018-01-24bRagexeRE #if PACKETVER == 20180124 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085f,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0868,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x086a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x086f,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x087a,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0888,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0890,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0919,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0946,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x094d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0958,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pMoveToKafra,2,4); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0802,clif->pDropItem,2,4); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085f,clif->pStoragePassword,0); + packet(0x0868,clif->pDull/*,XXX*/); + packet(0x086a,clif->pPartyBookingRegisterReq,2,4); + packet(0x086f,clif->pDull/*,XXX*/); + packet(0x087a,clif->pPartyInvite2,2); + packet(0x0888,clif->pWantToConnection,2,6,10,14,18); + packet(0x0890,clif->pMoveFromKafra,2,4); + packet(0x0919,clif->pFriendsListAdd,2); + packet(0x0940,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0946,clif->pItemListWindowSelected,2,4,8); + packet(0x094d,clif->pTakeItem,2); + packet(0x0958,clif->pChangeDir,2,4); + packet(0x0961,clif->pHomMenu,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2018-02-07bRagexeRE #if PACKETVER == 20180207 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0360,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0870,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0881,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0940,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0950,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pReqClickBuyingStore,2); + packet(0x0360,clif->pDull/*,XXX*/); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0870,clif->pWantToConnection,2,6,10,14,18); + packet(0x0881,clif->pFriendsListAdd,2); + packet(0x092c,clif->pHomMenu,2,4); + packet(0x092e,clif->pChangeDir,2,4); + packet(0x0940,clif->pTickSend,2); + packet(0x0950,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2018-02-13aRagexeRE #if PACKETVER == 20180213 - packet(0x0369,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0802,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0817,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x086f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0874,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0875,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0878,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x087b,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0882,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0892,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x089c,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08a9,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08ad,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0917,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0922,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0924,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0926,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0933,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0936,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x093c,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0943,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0955,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0962,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 + packet(0x0369,clif->pStoragePassword,0); + packet(0x0802,clif->pDropItem,2,4); + packet(0x0817,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x085a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x086f,clif->pPartyInvite2,2); + packet(0x0874,clif->pTickSend,2); + packet(0x0875,clif->pMoveFromKafra,2,4); + packet(0x0878,clif->pChangeDir,2,4); + packet(0x087b,clif->pReqClickBuyingStore,2); + packet(0x0882,clif->pUseSkillToId,2,4,6); + packet(0x088c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0892,clif->pTakeItem,2); + packet(0x0898,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x089c,clif->pDull/*,XXX*/); + packet(0x08a3,clif->pWantToConnection,2,6,10,14,18); + packet(0x08a5,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08a9,clif->pReqCloseBuyingStore,0); + packet(0x08ad,clif->pSolveCharName,2); + packet(0x0917,clif->pFriendsListAdd,2); + packet(0x0922,clif->pWalkToXY,2); + packet(0x0924,clif->pUseSkillToPos,2,4,6,8); + packet(0x0926,clif->pDull/*,XXX*/); + packet(0x0933,clif->pActionRequest,2,6); + packet(0x0936,clif->pSearchStoreInfoNextPage,0); + packet(0x093c,clif->pGetCharNameRequest,2); + packet(0x0943,clif->pPartyBookingRegisterReq,2,4); + packet(0x0955,clif->pMoveToKafra,2,4); + packet(0x095a,clif->pItemListWindowSelected,2,4,8); + packet(0x0962,clif->pHomMenu,2,4); #endif // 2018-02-21aRagexeRE, 2018-02-21bRagexeRE #if PACKETVER == 20180221 - packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0366,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0436,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0838,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0867,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086c,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0871,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0876,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0879,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x087d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0880,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0881,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0883,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x088f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0891,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0897,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0899,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x089d,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0917,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x091e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0929,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x093d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x094b,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x094e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0957,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x096a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 + packet(0x0202,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0366,clif->pDull/*,XXX*/); + packet(0x0436,clif->pFriendsListAdd,2); + packet(0x0838,clif->pChangeDir,2,4); + packet(0x0867,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086c,clif->pReqClickBuyingStore,2); + packet(0x086f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0871,clif->pDropItem,2,4); + packet(0x0876,clif->pHomMenu,2,4); + packet(0x0879,clif->pMoveToKafra,2,4); + packet(0x087d,clif->pWalkToXY,2); + packet(0x0880,clif->pItemListWindowSelected,2,4,8); + packet(0x0881,clif->pPartyBookingRegisterReq,2,4); + packet(0x0883,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x088f,clif->pSolveCharName,2); + packet(0x0891,clif->pDull/*,XXX*/); + packet(0x0897,clif->pWantToConnection,2,6,10,14,18); + packet(0x0899,clif->pSearchStoreInfoNextPage,0); + packet(0x089d,clif->pTickSend,2); + packet(0x0917,clif->pStoragePassword,0); + packet(0x091e,clif->pMoveFromKafra,2,4); + packet(0x0929,clif->pReqCloseBuyingStore,0); + packet(0x093d,clif->pPartyInvite2,2); + packet(0x094b,clif->pUseSkillToId,2,4,6); + packet(0x094d,clif->pUseSkillToPos,2,4,6,8); + packet(0x094e,clif->pTakeItem,2); + packet(0x0957,clif->pGetCharNameRequest,2); + packet(0x0964,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x096a,clif->pActionRequest,2,6); #endif // 2018-03-07bRagexeRE #if PACKETVER == 20180307 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x035f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0437,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0862,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0864,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x086c,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0870,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0872,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0877,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x088d,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0893,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a6,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x08aa,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08ab,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0917,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0920,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0937,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0939,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x093d,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0941,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0944,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0948,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0951,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0954,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0957,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0969,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 -#endif - -// 2018-03-21aRagexeRE, 2018-03-28bRagexeRE, 2018-04-04cRagexeRE, 2018-04-18bRagexeRE, 2018-04-25cRagexeRE, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-16cRagexeRE, 2018-05-23aRagexeRE, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20dRagexeRE, 2018-06-20eRagexeRE, 2018-06-21aRagexeRE + packet(0x0281,clif->pDull/*,XXX*/); + packet(0x035f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0437,clif->pDropItem,2,4); + packet(0x07e4,clif->pWantToConnection,2,6,10,14,18); + packet(0x0861,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0862,clif->pReqClickBuyingStore,2); + packet(0x0864,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x086c,clif->pTickSend,2); + packet(0x0870,clif->pItemListWindowSelected,2,4,8); + packet(0x0872,clif->pPartyBookingRegisterReq,2,4); + packet(0x0877,clif->pWalkToXY,2); + packet(0x088d,clif->pMoveFromKafra,2,4); + packet(0x0893,clif->pUseSkillToId,2,4,6); + packet(0x089b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a6,clif->pSearchStoreInfoNextPage,0); + packet(0x08aa,clif->pFriendsListAdd,2); + packet(0x08ab,clif->pChangeDir,2,4); + packet(0x0917,clif->pUseSkillToPos,2,4,6,8); + packet(0x0920,clif->pMoveToKafra,2,4); + packet(0x0937,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0939,clif->pStoragePassword,0); + packet(0x093d,clif->pReqCloseBuyingStore,0); + packet(0x0941,clif->pGetCharNameRequest,2); + packet(0x0944,clif->pHomMenu,2,4); + packet(0x0948,clif->pPartyInvite2,2); + packet(0x0951,clif->pDull/*,XXX*/); + packet(0x0954,clif->pTakeItem,2); + packet(0x0957,clif->pSolveCharName,2); + packet(0x0969,clif->pActionRequest,2,6); +#endif + +// 2018-03-21aRagexeRE, 2018-03-28bRagexeRE, 2018-04-04cRagexeRE, 2018-04-18bRagexeRE, 2018-04-25cRagexeRE, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-16cRagexeRE, 2018-05-23aRagexeRE, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20dRagexeRE, 2018-06-20eRagexeRE, 2018-06-21aRagexeRE, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE, 2018-10-02aRagexeRE, 2018-10-02bRagexeRE, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexeRE, 2018-10-17bRagexeRE, 2018-10-31cRagexeRE, 2018-11-07aRagexeRE, 2018-11-14cRagexeRE, 2018-11-14dRagexeRE, 2018-11-21cRagexeRE, 2018-11-28aRagexeRE, 2018-12-05bRagexeRE, 2018-12-12aRagexeRE, 2018-12-12bRagexeRE, 2018-12-19bRagexeRE, 2018-12-26aRagexeRE, 2019-01-09bRagexeRE, 2019-01-16bRagexeRE, 2019-01-16cRagexeRE, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-20aRagexeRE, 2019-02-27bRagexeRE, 2019-02-28aRagexeRE, 2019-03-06bRagexeRE, 2019-03-06cRagexeRE, 2019-03-20aRagexeRE, 2019-03-22aRagexeRE, 2019-03-27bRagexeRE, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17cRagexeRE, 2019-04-18aRagexeRE, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexeRE, 2019-05-22cRagexeRE, 2019-05-29bRagexeRE, 2019-05-29cRagexeRE, 2019-05-30aRagexeRE, 2019-06-05hRagexeRE, 2019-06-05JRagexeRE, 2019-06-05LRagexeRE, 2019-06-19cRagexeRE, 2019-06-26bRagexeRE, 2019-07-03bRagexeRE, 2019-07-17cRagexeRE, 2019-07-17dRagexeRE, 2019-07-24bRagexeRE, 2019-07-31bRagexeRE, 2019-08-02aRagexeRE, 2019-08-07dRagexeRE, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexeRE, 2019-09-04bRagexeRE, 2019-09-18cRagexeRE, 2019-09-25aRagexeRE, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexeRE, 2019-10-16gRagexeRE, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-11-06bRagexeRE, 2019-11-07aRagexeRE, 2019-11-13eRagexeRE, 2019-11-20cRagexeRE, 2019-11-27aRagexeRE, 2019-12-04aRagexeRE, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11fRagexeRE, 2019-12-18bRagexeRE, 2019-12-24aRagexeRE, 2019-12-24bRagexeRE, 2020-01-08bRagexeRE, 2020-01-22cRagexeRE, 2020-02-05aRagexeRE, 2020-02-12aRagexeRE, 2020-02-19eRagexeRE, 2020-03-04aRagexeRE, 2020-07-09_sakaRagexeRE #if PACKETVER == 20180321 || \ PACKETVER == 20180328 || \ PACKETVER == 20180404 || \ @@ -9631,40 +9631,8 @@ PACKETVER == 20180605 || \ PACKETVER == 20180612 || \ PACKETVER == 20180620 || \ - PACKETVER == 20180621 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 -#endif - -// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE, 2018-10-02aRagexeRE, 2018-10-02bRagexeRE, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexeRE, 2018-10-17bRagexeRE, 2018-10-31cRagexeRE, 2018-11-07aRagexeRE, 2018-11-14cRagexeRE, 2018-11-14dRagexeRE, 2018-11-21cRagexeRE, 2018-11-28aRagexeRE, 2018-12-05bRagexeRE, 2018-12-12aRagexeRE, 2018-12-12bRagexeRE, 2018-12-19bRagexeRE, 2018-12-26aRagexeRE, 2019-01-09bRagexeRE, 2019-01-16bRagexeRE, 2019-01-16cRagexeRE, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-20aRagexeRE, 2019-02-27bRagexeRE, 2019-02-28aRagexeRE, 2019-03-06bRagexeRE, 2019-03-06cRagexeRE, 2019-03-20aRagexeRE, 2019-03-22aRagexeRE, 2019-03-27bRagexeRE, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17cRagexeRE, 2019-04-18aRagexeRE, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexeRE, 2019-05-22cRagexeRE, 2019-05-29bRagexeRE, 2019-05-29cRagexeRE, 2019-05-30aRagexeRE, 2019-06-05hRagexeRE, 2019-06-05JRagexeRE, 2019-06-05LRagexeRE, 2019-06-19cRagexeRE, 2019-06-26bRagexeRE, 2019-07-03bRagexeRE, 2019-07-17cRagexeRE, 2019-07-17dRagexeRE, 2019-07-24bRagexeRE, 2019-07-31bRagexeRE, 2019-08-02aRagexeRE, 2019-08-07dRagexeRE, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexeRE -#if PACKETVER == 20180704 || \ + PACKETVER == 20180621 || \ + PACKETVER == 20180704 || \ PACKETVER == 20180711 || \ PACKETVER == 20180718 || \ PACKETVER == 20180801 || \ @@ -9712,40 +9680,8 @@ PACKETVER == 20190802 || \ PACKETVER == 20190807 || \ PACKETVER == 20190821 || \ - PACKETVER >= 20190828 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14 -#endif - -// 2019-09-04bRagexeRE, 2019-09-18cRagexeRE, 2019-09-25aRagexeRE, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexeRE, 2019-10-16gRagexeRE, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-11-06bRagexeRE, 2019-11-07aRagexeRE, 2019-11-13eRagexeRE, 2019-11-20cRagexeRE, 2019-11-27aRagexeRE, 2019-12-04aRagexeRE, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11fRagexeRE, 2019-12-18bRagexeRE, 2019-12-24aRagexeRE, 2019-12-24bRagexeRE, 2020-01-08bRagexeRE, 2020-01-22cRagexeRE, 2020-02-05aRagexeRE -#if PACKETVER == 20190904 || \ + PACKETVER == 20190828 || \ + PACKETVER == 20190904 || \ PACKETVER == 20190918 || \ PACKETVER == 20190925 || \ PACKETVER == 20191002 || \ @@ -9763,36 +9699,40 @@ PACKETVER == 20191224 || \ PACKETVER == 20200108 || \ PACKETVER == 20200122 || \ - PACKETVER == 20200205 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 31 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14 + PACKETVER == 20200205 || \ + PACKETVER == 20200212 || \ + PACKETVER == 20200219 || \ + PACKETVER == 20200304 || \ + PACKETVER >= 20200709 + packet(0x0202,clif->pFriendsListAdd,2); + packet(0x022d,clif->pHomMenu,2,4); + packet(0x023b,clif->pStoragePassword,0); + packet(0x0281,clif->pDull/*,XXX*/); + packet(0x02c4,clif->pPartyInvite2,2); + packet(0x035f,clif->pWalkToXY,2); + packet(0x0360,clif->pTickSend,2); + packet(0x0361,clif->pChangeDir,2,4); + packet(0x0362,clif->pTakeItem,2); + packet(0x0363,clif->pDropItem,2,4); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0365,clif->pMoveFromKafra,2,4); + packet(0x0366,clif->pUseSkillToPos,2,4,6,8); + packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pGetCharNameRequest,2); + packet(0x0369,clif->pSolveCharName,2); + packet(0x0436,clif->pWantToConnection,2,6,10,14,18); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0438,clif->pUseSkillToId,2,4,6); + packet(0x07e4,clif->pItemListWindowSelected,2,4,8); + packet(0x07ec,clif->pDull/*,XXX*/); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0815,clif->pReqCloseBuyingStore,0); + packet(0x0817,clif->pReqClickBuyingStore,2); + packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); #endif diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h index 602264a8f..5ff03b264 100644 --- a/src/map/packets_shuffle_zero.h +++ b/src/map/packets_shuffle_zero.h @@ -2,8 +2,8 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2020 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2013-2020 Hercules Dev Team + * Copyright (C) 2018-2020 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,7 +37,7 @@ /* This file is autogenerated, please do not commit manual changes */ -// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero +// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero, 2020-02-12aRagexe_zero, 2020-02-26aRagexe_zero, 2020-02-26bRagexe_zero, 2020-03-04aRagexe_zero, 2020-03-18_2aRagexe_zero, 2020-04-01_2aRagexe_zero, 2020-04-14bRagexe_zero, 2020-05-06aRagexe_zero, 2020-05-20_5aRagexe_zero, 2020-06-03_2aRagexe_zero, 2020-06-17aRagexe_zero, 2020-07-01_2aRagexe_zero, 2020-07-01aRagexe_zero #if PACKETVER == 20171018 || \ PACKETVER == 20171019 || \ PACKETVER == 20171023 || \ @@ -69,238 +69,292 @@ PACKETVER == 20180919 || \ PACKETVER == 20180928 || \ PACKETVER == 20181010 || \ - PACKETVER == 20181024 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + PACKETVER == 20181024 || \ + PACKETVER == 20181114 || \ + PACKETVER == 20181120 || \ + PACKETVER == 20181128 || \ + PACKETVER == 20181212 || \ + PACKETVER == 20181219 || \ + PACKETVER == 20181226 || \ + PACKETVER == 20190116 || \ + PACKETVER == 20190117 || \ + PACKETVER == 20190130 || \ + PACKETVER == 20190213 || \ + PACKETVER == 20190220 || \ + PACKETVER == 20190227 || \ + PACKETVER == 20190313 || \ + PACKETVER == 20190327 || \ + PACKETVER == 20190403 || \ + PACKETVER == 20190410 || \ + PACKETVER == 20190424 || \ + PACKETVER == 20190502 || \ + PACKETVER == 20190508 || \ + PACKETVER == 20190515 || \ + PACKETVER == 20190529 || \ + PACKETVER == 20190530 || \ + PACKETVER == 20190605 || \ + PACKETVER == 20190626 || \ + PACKETVER == 20190709 || \ + PACKETVER == 20190710 || \ + PACKETVER == 20190717 || \ + PACKETVER == 20190724 || \ + PACKETVER == 20190814 || \ + PACKETVER == 20190828 || \ + PACKETVER == 20190911 || \ + PACKETVER == 20190918 || \ + PACKETVER == 20190925 || \ + PACKETVER == 20191008 || \ + PACKETVER == 20191023 || \ + PACKETVER == 20191106 || \ + PACKETVER == 20191113 || \ + PACKETVER == 20191127 || \ + PACKETVER == 20191204 || \ + PACKETVER == 20191211 || \ + PACKETVER == 20191224 || \ + PACKETVER == 20200115 || \ + PACKETVER == 20200129 || \ + PACKETVER == 20200212 || \ + PACKETVER == 20200226 || \ + PACKETVER == 20200304 || \ + PACKETVER == 20200318 || \ + PACKETVER == 20200401 || \ + PACKETVER == 20200414 || \ + PACKETVER == 20200506 || \ + PACKETVER == 20200520 || \ + PACKETVER == 20200603 || \ + PACKETVER == 20200617 || \ + PACKETVER >= 20200701 + packet(0x0202,clif->pFriendsListAdd,2); + packet(0x022d,clif->pHomMenu,2,4); + packet(0x023b,clif->pStoragePassword,0); + packet(0x0281,clif->pDull/*,XXX*/); + packet(0x02c4,clif->pPartyInvite2,2); + packet(0x035f,clif->pWalkToXY,2); + packet(0x0360,clif->pTickSend,2); + packet(0x0361,clif->pChangeDir,2,4); + packet(0x0362,clif->pTakeItem,2); + packet(0x0363,clif->pDropItem,2,4); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0365,clif->pMoveFromKafra,2,4); + packet(0x0366,clif->pUseSkillToPos,2,4,6,8); + packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pGetCharNameRequest,2); + packet(0x0369,clif->pSolveCharName,2); + packet(0x0436,clif->pWantToConnection,2,6,10,14,18); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0438,clif->pUseSkillToId,2,4,6); + packet(0x07e4,clif->pItemListWindowSelected,2,4,8); + packet(0x07ec,clif->pDull/*,XXX*/); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0815,clif->pReqCloseBuyingStore,0); + packet(0x0817,clif->pReqClickBuyingStore,2); + packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2017-11-15aRagexe_zero, 2017-11-15bRagexe_zero, 2017-11-16aRagexe_zero, 2017-11-17aRagexe_zero #if PACKETVER == 20171115 || \ PACKETVER == 20171116 || \ PACKETVER == 20171117 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0860,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0881,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0922,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0959,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0966,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0860,clif->pDull/*,XXX*/); + packet(0x0881,clif->pWantToConnection,2,6,10,14,18); + packet(0x091c,clif->pHomMenu,2,4); + packet(0x0922,clif->pStoragePassword,0); + packet(0x0959,clif->pChangeDir,2,4); + packet(0x0966,clif->pFriendsListAdd,2); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-11-21aRagexe_zero, 2017-11-22aRagexe_zero #if PACKETVER == 20171121 || \ PACKETVER == 20171122 - packet(0x0202,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0866,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0889,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0892,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08ad,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0918,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x091f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0928,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0943,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0950,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pStoragePassword,0); + packet(0x022d,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pItemListWindowSelected,2,4,8); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pHomMenu,2,4); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0866,clif->pMoveToKafra,2,4); + packet(0x0889,clif->pMoveFromKafra,2,4); + packet(0x0892,clif->pPartyBookingRegisterReq,2,4); + packet(0x089e,clif->pChangeDir,2,4); + packet(0x08ad,clif->pPartyInvite2,2); + packet(0x0918,clif->pTakeItem,2); + packet(0x091f,clif->pWantToConnection,2,6,10,14,18); + packet(0x0928,clif->pFriendsListAdd,2); + packet(0x0943,clif->pDull/*,XXX*/); + packet(0x0950,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-11-23dRagexe_zero #if PACKETVER == 20171123 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0367,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0860,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0876,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0882,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x088c,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0896,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x089e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x08a8,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x092b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0930,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0935,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0947,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0960,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0367,clif->pHomMenu,2,4); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085f,clif->pDropItem,2,4); + packet(0x0860,clif->pWantToConnection,2,6,10,14,18); + packet(0x0876,clif->pDull/*,XXX*/); + packet(0x0882,clif->pItemListWindowSelected,2,4,8); + packet(0x088c,clif->pPartyInvite2,2); + packet(0x0896,clif->pChangeDir,2,4); + packet(0x089e,clif->pPartyBookingRegisterReq,2,4); + packet(0x08a8,clif->pFriendsListAdd,2); + packet(0x092b,clif->pMoveToKafra,2,4); + packet(0x0930,clif->pTakeItem,2); + packet(0x0935,clif->pMoveFromKafra,2,4); + packet(0x0947,clif->pStoragePassword,0); + packet(0x0960,clif->pDull/*,XXX*/); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-11-27aRagexe_zero, 2017-11-27cRagexe_zero, 2017-11-28aRagexe_zero #if PACKETVER == 20171127 || \ PACKETVER == 20171128 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0893,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0893,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-11-30bRagexe_zero #if PACKETVER == 20171130 - packet(0x0361,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0864,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x086f,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0871,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0872,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0875,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0878,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0881,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0884,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0886,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0887,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x088b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0894,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0899,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x08a0,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x08a7,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0928,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0930,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0931,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0935,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093a,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0947,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x094c,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x095b,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x095f,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0960,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0965,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 + packet(0x0361,clif->pPartyBookingRegisterReq,2,4); + packet(0x0864,clif->pGetCharNameRequest,2); + packet(0x086f,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0871,clif->pSearchStoreInfoNextPage,0); + packet(0x0872,clif->pReqClickBuyingStore,2); + packet(0x0875,clif->pTakeItem,2); + packet(0x0878,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0881,clif->pUseSkillToPos,2,4,6,8); + packet(0x0884,clif->pDropItem,2,4); + packet(0x0886,clif->pReqCloseBuyingStore,0); + packet(0x0887,clif->pStoragePassword,0); + packet(0x088b,clif->pMoveToKafra,2,4); + packet(0x0894,clif->pWalkToXY,2); + packet(0x0899,clif->pDull/*,XXX*/); + packet(0x08a0,clif->pChangeDir,2,4); + packet(0x08a7,clif->pItemListWindowSelected,2,4,8); + packet(0x0925,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0928,clif->pDull/*,XXX*/); + packet(0x0930,clif->pWantToConnection,2,6,10,14,18); + packet(0x0931,clif->pFriendsListAdd,2); + packet(0x0935,clif->pMoveFromKafra,2,4); + packet(0x093a,clif->pActionRequest,2,6); + packet(0x0947,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x094c,clif->pHomMenu,2,4); + packet(0x094f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x095b,clif->pTickSend,2); + packet(0x095f,clif->pPartyInvite2,2); + packet(0x0960,clif->pSolveCharName,2); + packet(0x0965,clif->pUseSkillToId,2,4,6); #endif // 2017-12-04bRagexe_zero #if PACKETVER == 20171204 - packet(0x0281,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x085b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086f,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x087d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0887,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0892,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0896,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x08aa,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0917,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0921,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0924,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0937,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0960,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0281,clif->pTakeItem,2); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x085b,clif->pDull/*,XXX*/); + packet(0x086f,clif->pWantToConnection,2,6,10,14,18); + packet(0x087d,clif->pItemListWindowSelected,2,4,8); + packet(0x0885,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0887,clif->pChangeDir,2,4); + packet(0x0892,clif->pDull/*,XXX*/); + packet(0x0896,clif->pStoragePassword,0); + packet(0x08aa,clif->pPartyInvite2,2); + packet(0x0917,clif->pMoveFromKafra,2,4); + packet(0x091b,clif->pFriendsListAdd,2); + packet(0x0921,clif->pPartyBookingRegisterReq,2,4); + packet(0x0924,clif->pHomMenu,2,4); + packet(0x0937,clif->pMoveToKafra,2,4); + packet(0x0960,clif->pDropItem,2,4); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2017-12-06aRagexe_zero, 2017-12-06bRagexe_zero, 2017-12-06cRagexe_zero, 2017-12-06dRagexe_zero, 2017-12-08aRagexe_zero, 2017-12-08cRagexe_zero, 2017-12-08dRagexe_zero, 2017-12-09bRagexe_zero, 2017-12-09cRagexe_zero, 2017-12-10aRagexe_zero, 2017-12-11bRagexe_zero, 2017-12-12aRagexe_zero, 2017-12-13aRagexe_zero, 2017-12-13bRagexe_zero, 2017-12-13cRagexe_zero @@ -311,542 +365,435 @@ PACKETVER == 20171211 || \ PACKETVER == 20171212 || \ PACKETVER == 20171213 - packet(0x0281,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0366,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0436,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0835,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x083c,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0860,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0862,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0864,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0870,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0878,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x087a,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x087b,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0885,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x088d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0893,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0897,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x089e,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x08ac,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0920,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0934,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0936,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x093a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0940,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0941,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0959,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x095f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 + packet(0x0281,clif->pUseSkillToId,2,4,6); + packet(0x0366,clif->pDropItem,2,4); + packet(0x0436,clif->pReqClickBuyingStore,2); + packet(0x0835,clif->pTakeItem,2); + packet(0x083c,clif->pDull/*,XXX*/); + packet(0x0860,clif->pDull/*,XXX*/); + packet(0x0862,clif->pChangeDir,2,4); + packet(0x0864,clif->pWalkToXY,2); + packet(0x0870,clif->pMoveToKafra,2,4); + packet(0x0878,clif->pUseSkillToPos,2,4,6,8); + packet(0x087a,clif->pPartyBookingRegisterReq,2,4); + packet(0x087b,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0885,clif->pSolveCharName,2); + packet(0x088d,clif->pPartyInvite2,2); + packet(0x0893,clif->pFriendsListAdd,2); + packet(0x0897,clif->pHomMenu,2,4); + packet(0x089e,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a4,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x08ac,clif->pActionRequest,2,6); + packet(0x0920,clif->pWantToConnection,2,6,10,14,18); + packet(0x0934,clif->pReqCloseBuyingStore,0); + packet(0x0936,clif->pMoveFromKafra,2,4); + packet(0x093a,clif->pItemListWindowSelected,2,4,8); + packet(0x0940,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0941,clif->pGetCharNameRequest,2); + packet(0x0959,clif->pStoragePassword,0); + packet(0x095b,clif->pSearchStoreInfoNextPage,0); + packet(0x095c,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x095f,clif->pTickSend,2); #endif // 2017-12-14cRagexe_zero #if PACKETVER == 20171214 - packet(0x023b,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x02c4,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0438,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x085b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x085e,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0862,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0864,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x086a,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0871,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0873,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0886,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x088b,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088c,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0892,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0894,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x08a3,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x08a5,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x08ac,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0933,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x094a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0951,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x095a,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0960,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x096a,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 + packet(0x023b,clif->pSearchStoreInfoNextPage,0); + packet(0x02c4,clif->pDropItem,2,4); + packet(0x0438,clif->pGetCharNameRequest,2); + packet(0x085b,clif->pStoragePassword,0); + packet(0x085e,clif->pPartyBookingRegisterReq,2,4); + packet(0x0862,clif->pSolveCharName,2); + packet(0x0864,clif->pDull/*,XXX*/); + packet(0x086a,clif->pWalkToXY,2); + packet(0x0871,clif->pWantToConnection,2,6,10,14,18); + packet(0x0873,clif->pItemListWindowSelected,2,4,8); + packet(0x0886,clif->pReqClickBuyingStore,2); + packet(0x088b,clif->pDull/*,XXX*/); + packet(0x088c,clif->pMoveToKafra,2,4); + packet(0x0892,clif->pUseSkillToId,2,4,6); + packet(0x0894,clif->pTakeItem,2); + packet(0x0897,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x08a3,clif->pFriendsListAdd,2); + packet(0x08a5,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x08ac,clif->pReqCloseBuyingStore,0); + packet(0x0933,clif->pActionRequest,2,6); + packet(0x094a,clif->pChangeDir,2,4); + packet(0x094d,clif->pHomMenu,2,4); + packet(0x094f,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0951,clif->pPartyInvite2,2); + packet(0x095a,clif->pMoveFromKafra,2,4); + packet(0x095b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0960,clif->pTickSend,2); + packet(0x0969,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x096a,clif->pUseSkillToPos,2,4,6,8); #endif // 2017-12-20aRagexe_zero, 2017-12-21aRagexe_zero, 2017-12-21bRagexe_zero #if PACKETVER == 20171220 || \ PACKETVER == 20171221 - packet(0x022d,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0281,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0438,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x07ec,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0867,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x086c,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0872,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x087e,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0899,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x089b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x089c,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a3,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a5,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x091f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0921,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092d,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x092e,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0932,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0934,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0937,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x094d,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 + packet(0x022d,clif->pSearchStoreInfoNextPage,0); + packet(0x0281,clif->pUseSkillToPos,2,4,6,8); + packet(0x0438,clif->pGetCharNameRequest,2); + packet(0x07ec,clif->pReqClickBuyingStore,2); + packet(0x0819,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pTickSend,2); + packet(0x085f,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0867,clif->pSolveCharName,2); + packet(0x086c,clif->pTakeItem,2); + packet(0x0872,clif->pMoveFromKafra,2,4); + packet(0x087a,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x087e,clif->pDull/*,XXX*/); + packet(0x0899,clif->pWalkToXY,2); + packet(0x089b,clif->pDull/*,XXX*/); + packet(0x089c,clif->pReqCloseBuyingStore,0); + packet(0x08a3,clif->pItemListWindowSelected,2,4,8); + packet(0x08a5,clif->pDropItem,2,4); + packet(0x08ad,clif->pWantToConnection,2,6,10,14,18); + packet(0x091f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0921,clif->pHomMenu,2,4); + packet(0x092d,clif->pPartyBookingRegisterReq,2,4); + packet(0x092e,clif->pFriendsListAdd,2); + packet(0x0932,clif->pPartyInvite2,2); + packet(0x0934,clif->pMoveToKafra,2,4); + packet(0x0937,clif->pActionRequest,2,6); + packet(0x094d,clif->pUseSkillToId,2,4,6); + packet(0x095b,clif->pStoragePassword,0); + packet(0x096a,clif->pChangeDir,2,4); #endif // 2017-12-27bRagexe_zero, 2017-12-29aRagexe_zero #if PACKETVER == 20171227 || \ PACKETVER == 20171229 - packet(0x02c4,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0860,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0871,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0874,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0876,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0877,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0878,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x087b,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0885,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x088b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0894,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x089f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x091c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0925,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0939,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x093e,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0941,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0945,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0946,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x095e,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0967,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0968,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 + packet(0x02c4,clif->pSearchStoreInfoNextPage,0); + packet(0x0860,clif->pChangeDir,2,4); + packet(0x086c,clif->pActionRequest,2,6); + packet(0x0871,clif->pSolveCharName,2); + packet(0x0872,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0874,clif->pWantToConnection,2,6,10,14,18); + packet(0x0876,clif->pUseSkillToPos,2,4,6,8); + packet(0x0877,clif->pDull/*,XXX*/); + packet(0x0878,clif->pTakeItem,2); + packet(0x087b,clif->pMoveToKafra,2,4); + packet(0x0885,clif->pMoveFromKafra,2,4); + packet(0x0889,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x088b,clif->pReqCloseBuyingStore,0); + packet(0x0894,clif->pPartyBookingRegisterReq,2,4); + packet(0x089f,clif->pReqClickBuyingStore,2); + packet(0x091c,clif->pDropItem,2,4); + packet(0x0920,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0925,clif->pDull/*,XXX*/); + packet(0x092d,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0930,clif->pStoragePassword,0); + packet(0x0939,clif->pTickSend,2); + packet(0x093e,clif->pGetCharNameRequest,2); + packet(0x0941,clif->pFriendsListAdd,2); + packet(0x0945,clif->pPartyInvite2,2); + packet(0x0946,clif->pWalkToXY,2); + packet(0x094b,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x095e,clif->pHomMenu,2,4); + packet(0x0967,clif->pUseSkillToId,2,4,6); + packet(0x0968,clif->pItemListWindowSelected,2,4,8); #endif // 2018-01-03aRagexe_zero #if PACKETVER == 20180103 - packet(0x035f,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0360,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x07e4,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x083c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0860,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0866,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x086d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0871,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0874,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x087b,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0885,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0888,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0890,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0896,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x089d,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x08a6,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x091e,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0924,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x093b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0958,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x095b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x095d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0964,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0966,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x096a,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 + packet(0x035f,clif->pChangeDir,2,4); + packet(0x0360,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x07e4,clif->pWalkToXY,2); + packet(0x083c,clif->pUseSkillToPos,2,4,6,8); + packet(0x0860,clif->pHomMenu,2,4); + packet(0x0866,clif->pItemListWindowSelected,2,4,8); + packet(0x086d,clif->pFriendsListAdd,2); + packet(0x0871,clif->pTickSend,2); + packet(0x0872,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0874,clif->pSearchStoreInfoNextPage,0); + packet(0x087b,clif->pDull/*,XXX*/); + packet(0x0885,clif->pReqCloseBuyingStore,0); + packet(0x0888,clif->pActionRequest,2,6); + packet(0x0890,clif->pDropItem,2,4); + packet(0x0896,clif->pUseSkillToId,2,4,6); + packet(0x089d,clif->pMoveToKafra,2,4); + packet(0x08a6,clif->pGetCharNameRequest,2); + packet(0x091e,clif->pTakeItem,2); + packet(0x0924,clif->pDull/*,XXX*/); + packet(0x0938,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x093b,clif->pPartyInvite2,2); + packet(0x0956,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0958,clif->pWantToConnection,2,6,10,14,18); + packet(0x095b,clif->pStoragePassword,0); + packet(0x095d,clif->pSolveCharName,2); + packet(0x0964,clif->pReqClickBuyingStore,2); + packet(0x0966,clif->pMoveFromKafra,2,4); + packet(0x096a,clif->pSearchStoreInfoListItemClick,2,6,10); #endif // 2018-01-17aRagexe_zero #if PACKETVER == 20180117 - packet(0x0361,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0364,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0438,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x07e4,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x083c,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x086e,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086f,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x087d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0881,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0884,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0886,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0890,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0891,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0893,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x089d,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x089e,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0919,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x091c,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0921,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0928,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0929,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x092d,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0933,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0946,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0963,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 + packet(0x0361,clif->pPartyInvite2,2); + packet(0x0364,clif->pSolveCharName,2); + packet(0x0438,clif->pDull/*,XXX*/); + packet(0x07e4,clif->pStoragePassword,0); + packet(0x083c,clif->pDropItem,2,4); + packet(0x0866,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x086e,clif->pUseSkillToPos,2,4,6,8); + packet(0x086f,clif->pReqClickBuyingStore,2); + packet(0x087d,clif->pWantToConnection,2,6,10,14,18); + packet(0x0881,clif->pUseSkillToId,2,4,6); + packet(0x0884,clif->pSearchStoreInfoNextPage,0); + packet(0x0886,clif->pTakeItem,2); + packet(0x0890,clif->pMoveToKafra,2,4); + packet(0x0891,clif->pGetCharNameRequest,2); + packet(0x0893,clif->pActionRequest,2,6); + packet(0x0899,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x089d,clif->pItemListWindowSelected,2,4,8); + packet(0x089e,clif->pChangeDir,2,4); + packet(0x0919,clif->pTickSend,2); + packet(0x091c,clif->pMoveFromKafra,2,4); + packet(0x091f,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0921,clif->pWalkToXY,2); + packet(0x0928,clif->pReqCloseBuyingStore,0); + packet(0x0929,clif->pPartyBookingRegisterReq,2,4); + packet(0x092d,clif->pDull/*,XXX*/); + packet(0x0933,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0946,clif->pFriendsListAdd,2); + packet(0x095e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0963,clif->pHomMenu,2,4); #endif // 2018-01-31dRagexe_zero #if PACKETVER == 20180131 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0367,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0940,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0367,clif->pStoragePassword,0); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0940,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2018-02-07bRagexe_zero #if PACKETVER == 20180207 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0967,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2018-02-13aRagexe_zero #if PACKETVER == 20180213 - packet(0x022d,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x02c4,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x035f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0361,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0802,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0815,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0868,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x087b,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0887,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0888,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x088a,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x088e,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0899,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0917,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x091d,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0930,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0941,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0942,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0947,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x094d,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0958,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x095b,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0967,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 + packet(0x022d,clif->pChangeDir,2,4); + packet(0x02c4,clif->pMoveToKafra,2,4); + packet(0x035f,clif->pDropItem,2,4); + packet(0x0361,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0802,clif->pTickSend,2); + packet(0x0815,clif->pUseSkillToId,2,4,6); + packet(0x0838,clif->pSearchStoreInfoNextPage,0); + packet(0x085a,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085d,clif->pHomMenu,2,4); + packet(0x0868,clif->pPartyBookingRegisterReq,2,4); + packet(0x087b,clif->pGetCharNameRequest,2); + packet(0x0882,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0887,clif->pItemListWindowSelected,2,4,8); + packet(0x0888,clif->pSolveCharName,2); + packet(0x088a,clif->pDull/*,XXX*/); + packet(0x088e,clif->pReqClickBuyingStore,2); + packet(0x0899,clif->pFriendsListAdd,2); + packet(0x0917,clif->pActionRequest,2,6); + packet(0x091d,clif->pWalkToXY,2); + packet(0x0922,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0930,clif->pDull/*,XXX*/); + packet(0x0941,clif->pWantToConnection,2,6,10,14,18); + packet(0x0942,clif->pMoveFromKafra,2,4); + packet(0x0947,clif->pTakeItem,2); + packet(0x094d,clif->pUseSkillToPos,2,4,6,8); + packet(0x0958,clif->pPartyInvite2,2); + packet(0x095b,clif->pReqCloseBuyingStore,0); + packet(0x095c,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0967,clif->pStoragePassword,0); #endif // 2018-02-21aRagexe_zero #if PACKETVER == 20180221 - packet(0x02c4,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0362,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0364,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0438,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x0817,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x085b,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x086a,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0878,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0880,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0884,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x088d,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0892,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0895,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x08a1,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x08a3,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x091b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0921,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0923,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x092d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x093d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x093e,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0942,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0951,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0952,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0958,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0959,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x095d,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 + packet(0x02c4,clif->pTickSend,2); + packet(0x0362,clif->pGetCharNameRequest,2); + packet(0x0364,clif->pChangeDir,2,4); + packet(0x0438,clif->pItemListWindowSelected,2,4,8); + packet(0x0817,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x085b,clif->pUseSkillToPos,2,4,6,8); + packet(0x086a,clif->pDull/*,XXX*/); + packet(0x0878,clif->pReqCloseBuyingStore,0); + packet(0x0880,clif->pWantToConnection,2,6,10,14,18); + packet(0x0884,clif->pSearchStoreInfoNextPage,0); + packet(0x088d,clif->pSolveCharName,2); + packet(0x0892,clif->pDropItem,2,4); + packet(0x0895,clif->pReqClickBuyingStore,2); + packet(0x08a1,clif->pWalkToXY,2); + packet(0x08a3,clif->pUseSkillToId,2,4,6); + packet(0x091b,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0921,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0923,clif->pHomMenu,2,4); + packet(0x092d,clif->pFriendsListAdd,2); + packet(0x0932,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x093b,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x093d,clif->pPartyInvite2,2); + packet(0x093e,clif->pMoveFromKafra,2,4); + packet(0x0942,clif->pStoragePassword,0); + packet(0x0951,clif->pPartyBookingRegisterReq,2,4); + packet(0x0952,clif->pDull/*,XXX*/); + packet(0x0958,clif->pActionRequest,2,6); + packet(0x0959,clif->pMoveToKafra,2,4); + packet(0x095d,clif->pTakeItem,2); #endif // 2018-02-28bRagexe_zero, 2018-03-07aRagexe_zero, 2018-03-09aRagexe_zero #if PACKETVER == 20180228 || \ PACKETVER == 20180307 || \ PACKETVER == 20180309 - packet(0x0202,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x022d,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x023b,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0281,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x035f,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0360,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0361,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0362,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0363,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0364,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0365,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0369,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0436,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0437,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0438,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x07e4,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x07ec,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0802,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0835,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x083c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x0930,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x096a,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 + packet(0x0202,clif->pChangeDir,2,4); + packet(0x022d,clif->pWantToConnection,2,6,10,14,18); + packet(0x023b,clif->pFriendsListAdd,2); + packet(0x0281,clif->pItemListWindowSelected,2,4,8); + packet(0x035f,clif->pTickSend,2); + packet(0x0360,clif->pReqClickBuyingStore,2); + packet(0x0361,clif->pHomMenu,2,4); + packet(0x0362,clif->pDropItem,2,4); + packet(0x0363,clif->pDull/*,XXX*/); + packet(0x0364,clif->pMoveFromKafra,2,4); + packet(0x0365,clif->pPartyBookingRegisterReq,2,4); + packet(0x0366,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pSolveCharName,2); + packet(0x0369,clif->pActionRequest,2,6); + packet(0x0436,clif->pDull/*,XXX*/); + packet(0x0437,clif->pWalkToXY,2); + packet(0x0438,clif->pUseSkillToPos,2,4,6,8); + packet(0x07e4,clif->pTakeItem,2); + packet(0x07ec,clif->pMoveToKafra,2,4); + packet(0x0802,clif->pPartyInvite2,2); + packet(0x0811,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0815,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x0819,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0835,clif->pSearchStoreInfoNextPage,0); + packet(0x0838,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x083c,clif->pUseSkillToId,2,4,6); + packet(0x0930,clif->pStoragePassword,0); + packet(0x096a,clif->pGetCharNameRequest,2); #endif // 2018-03-14nRagexe_zero #if PACKETVER == 20180314 - packet(0x023b,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x0438,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0817,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x083c,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x085d,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x085f,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0866,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0878,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x088d,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0891,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0897,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0899,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x089e,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x08a1,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0918,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x091f,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0920,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0923,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x0930,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0931,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x093f,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x094a,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x094e,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0954,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0956,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0958,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 + packet(0x023b,clif->pPartyInvite2,2); + packet(0x0438,clif->pSearchStoreInfoNextPage,0); + packet(0x07ec,clif->pWantToConnection,2,6,10,14,18); + packet(0x0817,clif->pReqCloseBuyingStore,0); + packet(0x083c,clif->pChangeDir,2,4); + packet(0x085d,clif->pFriendsListAdd,2); + packet(0x085f,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0866,clif->pHomMenu,2,4); + packet(0x0878,clif->pDull/*,XXX*/); + packet(0x088d,clif->pStoragePassword,0); + packet(0x0891,clif->pMoveFromKafra,2,4); + packet(0x0897,clif->pTakeItem,2); + packet(0x0899,clif->pMoveToKafra,2,4); + packet(0x089e,clif->pItemListWindowSelected,2,4,8); + packet(0x08a1,clif->pDull/*,XXX*/); + packet(0x0917,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0918,clif->pActionRequest,2,6); + packet(0x091f,clif->pUseSkillToPos,2,4,6,8); + packet(0x0920,clif->pTickSend,2); + packet(0x0923,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x0930,clif->pDropItem,2,4); + packet(0x0931,clif->pReqClickBuyingStore,2); + packet(0x093f,clif->pSolveCharName,2); + packet(0x0946,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x094a,clif->pUseSkillToId,2,4,6); + packet(0x094e,clif->pWalkToXY,2); + packet(0x0954,clif->pPartyBookingRegisterReq,2,4); + packet(0x0956,clif->pGetCharNameRequest,2); + packet(0x0958,clif->pReqTradeBuyingStore,2,4,8,12); #endif // 2018-05-11aRagexe_zero, 2018-05-11bRagexe_zero #if PACKETVER == 20180511 - packet(0x0817,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x085f,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0863,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x086c,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0877,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0880,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0889,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0893,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0896,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0899,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12 - packet(0x08a2,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x08a4,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x08a5,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0919,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x091a,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0920,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x092c,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x092d,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0941,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x0942,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0955,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x0956,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x095c,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0961,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x0968,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 -#endif - -// 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero -#if PACKETVER == 20181114 || \ - PACKETVER == 20181120 || \ - PACKETVER == 20181128 || \ - PACKETVER == 20181212 || \ - PACKETVER == 20181219 || \ - PACKETVER == 20181226 || \ - PACKETVER == 20190116 || \ - PACKETVER == 20190117 || \ - PACKETVER == 20190130 || \ - PACKETVER == 20190213 || \ - PACKETVER == 20190220 || \ - PACKETVER == 20190227 || \ - PACKETVER == 20190313 || \ - PACKETVER == 20190327 || \ - PACKETVER == 20190403 || \ - PACKETVER == 20190410 || \ - PACKETVER == 20190424 || \ - PACKETVER == 20190502 || \ - PACKETVER == 20190508 || \ - PACKETVER == 20190515 || \ - PACKETVER == 20190529 || \ - PACKETVER == 20190530 || \ - PACKETVER == 20190605 || \ - PACKETVER == 20190626 || \ - PACKETVER == 20190709 || \ - PACKETVER == 20190710 || \ - PACKETVER == 20190717 || \ - PACKETVER == 20190724 || \ - PACKETVER >= 20190814 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 90 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14 -#endif - -// 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero -#if PACKETVER == 20190828 || \ - PACKETVER == 20190911 || \ - PACKETVER == 20190918 || \ - PACKETVER == 20190925 || \ - PACKETVER == 20191008 || \ - PACKETVER == 20191023 || \ - PACKETVER == 20191106 || \ - PACKETVER == 20191113 || \ - PACKETVER == 20191127 || \ - PACKETVER == 20191204 || \ - PACKETVER == 20191211 || \ - PACKETVER == 20191224 || \ - PACKETVER == 20200115 || \ - PACKETVER == 20200129 - packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26 - packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5 - packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36 - packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4 - packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26 - packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5 - packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6 - packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5 - packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6 - packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6 - packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8 - packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8 - packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10 - packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 31 - packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6 - packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6 - packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19 - packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7 - packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10 - packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1 - packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8 - packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18 - packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1 - packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2 - packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6 - packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1 - packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1 - packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2 - packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14 + packet(0x0817,clif->pSolveCharName,2); + packet(0x085f,clif->pDropItem,2,4); + packet(0x0863,clif->pReqClickBuyingStore,2); + packet(0x086c,clif->pActionRequest,2,6); + packet(0x0877,clif->pMoveFromKafra,2,4); + packet(0x087e,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0880,clif->pGetCharNameRequest,2); + packet(0x0889,clif->pMoveToKafra,2,4); + packet(0x0893,clif->pPartyBookingRegisterReq,2,4); + packet(0x0896,clif->pWantToConnection,2,6,10,14,18); + packet(0x0899,clif->pSearchStoreInfoListItemClick,2,6,10); + packet(0x08a2,clif->pTakeItem,2); + packet(0x08a4,clif->pReqCloseBuyingStore,0); + packet(0x08a5,clif->pTickSend,2); + packet(0x0919,clif->pWalkToXY,2); + packet(0x091a,clif->pItemListWindowSelected,2,4,8); + packet(0x091d,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0920,clif->pDull/*,XXX*/); + packet(0x092c,clif->pUseSkillToId,2,4,6); + packet(0x092d,clif->pPartyInvite2,2); + packet(0x092e,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0941,clif->pSearchStoreInfoNextPage,0); + packet(0x0942,clif->pChangeDir,2,4); + packet(0x094a,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0955,clif->pFriendsListAdd,2); + packet(0x0956,clif->pDull/*,XXX*/); + packet(0x095c,clif->pUseSkillToPos,2,4,6,8); + packet(0x0961,clif->pHomMenu,2,4); + packet(0x0968,clif->pStoragePassword,0); #endif diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index b604c77b8..031a23b6d 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -3779,7 +3779,7 @@ struct PACKET_ZC_SE_CASHSHOP_OPEN { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_SE_CASHSHOP_OPEN, 0x0b6e); // for ragexeRE in some version this packet unused [4144] -#elif PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || PACKETVER_ZERO_NUM >= defined(PACKETVER_ZERO) +#elif PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || defined(PACKETVER_ZERO) struct PACKET_ZC_SE_CASHSHOP_OPEN { int16 packetType; uint32 cashPoints; @@ -3819,9 +3819,15 @@ struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub { uint32 index; uint32 zeny; uint32 currency_count; - struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 currencies[]; + // Workaround for fix Visual Studio bug (error C2233). Here should be currencies[] + struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 currencies[1]; } __attribute__((packed)); +// Workaround check for Visual Studio bug (error C2233) +STATIC_ASSERT(sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2[1]) == + sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2), + "Wrong PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub size"); + struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN { int16 packetType; int16 packetLength; @@ -3885,6 +3891,60 @@ struct PACKET_ZC_AUTORUN_SKILL { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_AUTORUN_SKILL, 0x0147); +#if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) +struct PACKET_ZC_LAPINEUPGRADE_OPEN { + int16 packetType; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_LAPINEUPGRADE_OPEN, 0x0ab4); + +struct PACKET_ZC_LAPINEUPGRADE_RESULT { + int16 packetType; + uint16 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_LAPINEUPGRADE_RESULT, 0x0ab7); +#endif // PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) + +#if PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO) +struct PACKET_CZ_LAPINEUPGRADE_CLOSE { + int16 packetType; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_LAPINEUPGRADE_CLOSE, 0x0ab5); + +struct PACKET_CZ_LAPINEUPGRADE_MAKE_ITEM { + int16 packetType; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint16 index; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_LAPINEUPGRADE_MAKE_ITEM, 0x0ab6); +#endif // PACKETVER_MAIN_NUM >= 20170111 || PACKETVER_RE_NUM >= 20170111 || defined(PACKETVER_ZERO) + +#if PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO) +struct PACKET_ZC_PERSONAL_INFOMATION_SUB { + int8 type; + int32 exp; + int32 death; + int32 drop; +} __attribute__((packed)); +struct PACKET_ZC_PERSONAL_INFOMATION { + int16 packetType; + int16 length; + int32 total_exp; + int32 total_death; + int32 total_drop; + struct PACKET_ZC_PERSONAL_INFOMATION_SUB details[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PERSONAL_INFOMATION, 0x097b); +#endif // PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO) + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(pop) #endif // not NetBSD < 6 / Solaris diff --git a/src/map/party.c b/src/map/party.c index 7d7f69620..5eecd3fe6 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -330,6 +330,8 @@ static int party_recv_info(const struct party *sp, int char_id) party->member_withdraw(sp->party_id, sd->status.account_id, sd->status.char_id); } + int option_auto_changed = p->state.option_auto_changed; // Preserve state. + memcpy(&p->party, sp, sizeof(struct party)); memset(&p->state, 0, sizeof(p->state)); memset(&p->data, 0, sizeof(p->data)); @@ -342,6 +344,7 @@ static int party_recv_info(const struct party *sp, int char_id) p->party.member[member_id].leader = 1; } party->check_state(p); + p->state.option_auto_changed = option_auto_changed; while( added_count > 0 ) { // new in party member_id = added[--added_count]; sd = p->data[member_id].sd; @@ -349,12 +352,9 @@ static int party_recv_info(const struct party *sp, int char_id) continue;// not online clif->charnameupdate(sd); //Update other people's display. [Skotlex] clif->party_member_info(p,sd); - clif->party_option(p,sd,0x100); clif->party_info(p,NULL); for( j = 0; j < p->instances; j++ ) { if( p->instance[j] >= 0 ) { - if( instance->list[p->instance[j]].idle_timer == INVALID_TIMER && instance->list[p->instance[j]].progress_timer == INVALID_TIMER ) - continue; clif->instance_join(sd->fd, p->instance[j]); break; } @@ -488,14 +488,14 @@ static void party_member_joined(struct map_session_data *sd) p->data[i].sd = sd; for( j = 0; j < p->instances; j++ ) { if( p->instance[j] >= 0 ) { - if( instance->list[p->instance[j]].idle_timer == INVALID_TIMER && instance->list[p->instance[j]].progress_timer == INVALID_TIMER ) - continue; clif->instance_join(sd->fd, p->instance[j]); break; } } } else sd->status.party_id = 0; //He does not belongs to the party really? + + party->send_movemap(sd); } /// Invoked (from char-server) when a new member is added to the party. @@ -536,6 +536,11 @@ static int party_member_added(int party_id, int account_id, int char_id, int fla clif->party_member_info(p,sd); clif->party_info(p,sd); + if (p->state.option_auto_changed != 0) + clif->party_option(p, sd, 0x04); + else + clif->party_option(p, sd, 0x08); + if( sd2 != NULL ) clif->party_inviteack(sd2,sd->status.name,2); @@ -551,8 +556,6 @@ static int party_member_added(int party_id, int account_id, int char_id, int fla for( j = 0; j < p->instances; j++ ) { if( p->instance[j] >= 0 ) { - if( instance->list[p->instance[j]].idle_timer == INVALID_TIMER && instance->list[p->instance[j]].progress_timer == INVALID_TIMER ) - continue; clif->instance_join(sd->fd, p->instance[j]); break; } @@ -622,6 +625,7 @@ static int party_member_withdraw(int party_id, int account_id, int char_id) prev_leader_accountId = p->party.member[i].account_id; } + clif->party_option(p, sd, 0x10); clif->party_withdraw(p,sd,account_id,p->party.member[i].name,0x0); memset(&p->party.member[i], 0, sizeof(p->party.member[0])); memset(&p->data[i], 0, sizeof(p->data[0])); @@ -677,17 +681,18 @@ static int party_member_withdraw(int party_id, int account_id, int char_id) /// Invoked (from char-server) when a party is disbanded. static int party_broken(int party_id) { - struct party_data* p; - int i, j; + int i; - p = party->search(party_id); - if( p == NULL ) + struct party_data *p = party->search(party_id); + if (p == NULL) return 0; - for( j = 0; j < p->instances; j++ ) { - if( p->instance[j] >= 0 ) { - instance->destroy( p->instance[j] ); - instance->list[p->instance[j]].owner_id = 0; + for (int j = 0; j < p->instances; j++) { + const short instance_id = p->instance[j]; + if (instance_id >= 0) { + instance->destroy(instance_id); + if (instance_id < instance->instances) + instance->list[instance_id].owner_id = 0; } } @@ -728,8 +733,17 @@ static int party_optionchanged(int party_id, int account_id, int exp, int item, //Flag&0x1: Exp change denied. Flag&0x10: Item change denied. if(!(flag&0x01) && p->party.exp != exp) p->party.exp=exp; - if(!(flag&0x10) && p->party.item != item) { + if (p->party.item != item) p->party.item=item; + + if (account_id == 0) { + flag |= 0x04; + p->state.option_auto_changed = 1; + + if (p->state.member_level_changed == 0) + return 0; // clif_party_option() is handled in clif_parse_LoadEndAck(). + } else { + flag |= 0x02; } clif->party_option(p,sd,flag); @@ -810,7 +824,8 @@ static int party_recv_movemap(int party_id, int account_id, int char_id, unsigne ShowError("party_recv_movemap: char %d/%d not found in party %s (id:%d)",account_id,char_id,p->party.name,party_id); return 0; } - + + p->state.member_level_changed = 0; m = &p->party.member[i]; m->map = mapid; m->online = online; @@ -859,7 +874,12 @@ static void party_send_movemap(struct map_session_data *sd) static void party_send_levelup(struct map_session_data *sd) { - intif->party_changemap(sd,1); + struct party_data *p = party->search(sd->status.party_id); + + if (p != NULL) + p->state.member_level_changed = 1; + + intif->party_changemap(sd, 1); } static int party_send_logout(struct map_session_data *sd) diff --git a/src/map/party.h b/src/map/party.h index c2306b7a8..5f3458cd4 100644 --- a/src/map/party.h +++ b/src/map/party.h @@ -51,6 +51,8 @@ struct party_data { unsigned sg : 1; ///< There's at least one Star Gladiator in party? unsigned snovice :1; ///< There's a Super Novice unsigned tk : 1; ///< There's a taekwon + unsigned option_auto_changed : 1; ///< Party options were changed automatically. (inter_party_check_lv()) + unsigned member_level_changed : 1; ///< A party member's level has changed. } state; struct hplugin_data_store *hdata; ///< HPM Plugin Data Store }; diff --git a/src/map/pc.c b/src/map/pc.c index fc1552e62..04c3cd1cb 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -998,20 +998,23 @@ static bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data return false; // Job Change Fail } -/*================================================= - * Checks if the player can equip the item at index n in inventory. - * Returns 0 (no) or 1 (yes). - *------------------------------------------------*/ +/** + * Checks if a character can equip an item. + * + * @param sd The related character. + * @param n The item's inventory index. + * @retval 0 Character can't equip the item. + * @retval 1 Character can equip the item. + * + **/ static int pc_isequip(struct map_session_data *sd, int n) { - struct item_data *item; - nullpo_ret(sd); Assert_ret(n >= 0 && n < sd->status.inventorySize); - item = sd->inventory_data[n]; + struct item_data *item = sd->inventory_data[n]; - if(item == NULL) + if (item == NULL) return 0; #if PACKETVER <= 20100707 @@ -1019,31 +1022,34 @@ static int pc_isequip(struct map_session_data *sd, int n) return 0; #endif - if(pc_has_permission(sd, PC_PERM_USE_ALL_EQUIPMENT)) + if (pc_has_permission(sd, PC_PERM_USE_ALL_EQUIPMENT)) return 1; - if (item->elv && sd->status.base_level < item->elv) { + if (item->elv != 0 && sd->status.base_level < item->elv) { #if PACKETVER >= 20100525 clif->msgtable(sd, MSG_CANNOT_EQUIP_ITEM_LEVEL); #endif return 0; } - if (item->elvmax && sd->status.base_level > item->elvmax) { + + if (item->elvmax != 0 && sd->status.base_level > item->elvmax) { #if PACKETVER >= 20100525 clif->msgtable(sd, MSG_CANNOT_EQUIP_ITEM_LEVEL); #endif return 0; } - if(item->sex != 2 && sd->status.sex != item->sex) + + if (item->sex != SEX_SERVER && sd->status.sex != item->sex) return 0; - if ( item->equip & EQP_AMMO ) { - if (sd->state.active && !pc_iscarton(sd) && (sd->job & MAPID_THIRDMASK) == MAPID_GENETIC) { // check if sc data is already loaded. + if ((item->equip & EQP_AMMO) != 0) { + if (sd->state.active != 0 && !pc_iscarton(sd) && (sd->job & MAPID_THIRDMASK) == MAPID_GENETIC) { // Check if sc data is already loaded. #if PACKETVER_RE_NUM >= 20090529 || PACKETVER_MAIN_NUM >= 20090603 || defined(PACKETVER_ZERO) clif->msgtable(sd, MSG_USESKILL_FAIL_CART); #endif return 0; } + if (!pc_ismadogear(sd) && (sd->job & MAPID_THIRDMASK) == MAPID_MECHANIC) { #if PACKETVER_RE_NUM >= 20090226 || PACKETVER_MAIN_NUM >= 20090304 || defined(PACKETVER_ZERO) clif->msgtable(sd, MSG_USESKILL_FAIL_MADOGEAR); @@ -1051,76 +1057,85 @@ static int pc_isequip(struct map_session_data *sd, int n) return 0; } } - if (sd->sc.count) { - if(item->equip & EQP_ARMS && item->type == IT_WEAPON && sd->sc.data[SC_NOEQUIPWEAPON]) // Also works with left-hand weapons [DracoRPG] + if ((battle_config.unequip_restricted_equipment & 1) != 0) { + for (int i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++) + if (map->list[sd->bl.m].zone->disabled_items[i] == item->nameid) + return 0; + } + + if ((battle_config.unequip_restricted_equipment & 2) != 0 && !itemdb_isspecial(sd->status.inventory[n].card[0])) { + for (int slot = 0; slot < item->slot; slot++) + for (int i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++) + if (map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].card[slot]) + return 0; + } + + if (sd->sc.count != 0) { + if ((item->equip & EQP_ARMS) != 0 && item->type == IT_WEAPON && sd->sc.data[SC_NOEQUIPWEAPON] != NULL) // Also works with left-hand weapons. [DracoRPG] return 0; - if(item->equip & EQP_SHIELD && item->type == IT_ARMOR && sd->sc.data[SC_NOEQUIPSHIELD]) + + if ((item->equip & EQP_SHIELD) != 0 && item->type == IT_ARMOR && sd->sc.data[SC_NOEQUIPSHIELD] != NULL) return 0; - if(item->equip & EQP_ARMOR && sd->sc.data[SC_NOEQUIPARMOR]) + + if ((item->equip & EQP_ARMOR) != 0 && sd->sc.data[SC_NOEQUIPARMOR] != NULL) return 0; - if(item->equip & EQP_HEAD_TOP && sd->sc.data[SC_NOEQUIPHELM]) + + if ((item->equip & EQP_HEAD_TOP) != 0 && sd->sc.data[SC_NOEQUIPHELM] != NULL) return 0; - if(item->equip & EQP_ACC && sd->sc.data[SC__STRIPACCESSARY]) + + if ((item->equip & EQP_ACC) != 0 && sd->sc.data[SC__STRIPACCESSARY] != NULL) return 0; - if(item->equip && sd->sc.data[SC_KYOUGAKU]) + + if (item->equip != 0 && sd->sc.data[SC_KYOUGAKU] != NULL) return 0; - if (sd->sc.data[SC_SOULLINK] && sd->sc.data[SC_SOULLINK]->val2 == SL_SUPERNOVICE) { - //Spirit of Super Novice equip bonuses. [Skotlex] - if (sd->status.base_level > 90 && item->equip & EQP_HELM) - return 1; //Can equip all helms - - if (sd->status.base_level > 96 && item->equip & EQP_ARMS && item->type == IT_WEAPON) - switch (item->subtype) { //In weapons, the look determines type of weapon. - case W_DAGGER: //Level 4 Knives are equippable.. this means all knives, I'd guess? - case W_1HSWORD: //All 1H swords - case W_1HAXE: //All 1H Axes - case W_MACE: //All 1H Maces - case W_STAFF: //All 1H Staves + if (sd->sc.data[SC_SOULLINK] != NULL && sd->sc.data[SC_SOULLINK]->val2 == SL_SUPERNOVICE) { // Spirit of Super Novice equip bonuses. [Skotlex] + if (sd->status.base_level > 90 && (item->equip & EQP_HELM) != 0) + return 1; // Can equip all helms. + + if (sd->status.base_level > 96 && (item->equip & EQP_ARMS) != 0 && item->type == IT_WEAPON) { + switch (item->subtype) { // In weapons, the look determines type of weapon. + case W_DAGGER: // Level 4 Knives are equippable.. this means all knives, I'd guess? + case W_1HSWORD: // All 1H swords. + case W_1HAXE: // All 1H axes. + case W_MACE: // All 1H maces. + case W_STAFF: // All 1H staffs. return 1; } + } } } - //Not equipable by class. [Skotlex] - if (((1ULL<<(sd->job & MAPID_BASEMASK)) & item->class_base[(sd->job & JOBL_2_1) != 0 ? 1 : ((sd->job & JOBL_2_2) != 0 ? 2 : 0)]) == 0) + + uint64 mask_job = 1ULL << (sd->job & MAPID_BASEMASK); + uint64 mask_item = item->class_base[((sd->job & JOBL_2_1) != 0) ? 1 : (((sd->job & JOBL_2_2) != 0) ? 2 : 0)]; + + if ((mask_job & mask_item) == 0) // Not equipable by class. [Skotlex] return 0; - //Not usable by upper class. [Inkfish] - while( 1 ) { + + // Not usable by upper class. [Inkfish] + while (1) { if ((item->class_upper & ITEMUPPER_NORMAL) != 0) { - if ((sd->job & (JOBL_UPPER|JOBL_THIRD|JOBL_BABY)) == 0) + if ((sd->job & (JOBL_UPPER | JOBL_THIRD | JOBL_BABY)) == 0) break; } + if ((item->class_upper & ITEMUPPER_UPPER) != 0) { - if ((sd->job & (JOBL_UPPER|JOBL_THIRD)) != 0) + if ((sd->job & (JOBL_UPPER | JOBL_THIRD)) != 0) break; } + if ((item->class_upper & ITEMUPPER_BABY) != 0) { if ((sd->job & JOBL_BABY) != 0) break; } + if ((item->class_upper & ITEMUPPER_THIRD) != 0) { if ((sd->job & JOBL_THIRD) != 0) break; } - return 0; - } - - if ( battle_config.unequip_restricted_equipment & 1 ) { - int i; - for ( i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++ ) - if ( map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].nameid ) - return 0; - } - if ( battle_config.unequip_restricted_equipment & 2 ) { - if ( !itemdb_isspecial( sd->status.inventory[n].card[0] ) ) { - int i, slot; - for ( slot = 0; slot < MAX_SLOTS; slot++ ) - for ( i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++ ) - if ( map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].card[slot] ) - return 0; - } + return 0; } return 1; @@ -1264,6 +1279,7 @@ static bool pc_authok(struct map_session_data *sd, int login_id2, time_t expirat sd->bg_queue.client_has_bg_data = 0; sd->bg_queue.type = 0; + VECTOR_INIT(sd->auto_cast); // Initialize auto-cast vector. VECTOR_INIT(sd->channels); VECTOR_INIT(sd->script_queues); VECTOR_INIT(sd->achievement); // Achievements [Smokexyz/Hercules] @@ -1590,58 +1606,56 @@ static void pc_calc_skilltree_clear(struct map_session_data *sd) *------------------------------------------*/ static int pc_calc_skilltree(struct map_session_data *sd) { - int i,id=0,flag; - int class = 0, classidx = 0; - nullpo_ret(sd); - i = pc->calc_skilltree_normalize_job(sd); - class = pc->mapid2jobid(i, sd->status.sex); + uint32 job = pc->calc_skilltree_normalize_job(sd); + int class = pc->mapid2jobid(job, sd->status.sex); if (class == -1) { //Unable to normalize job?? - ShowError("pc_calc_skilltree: Unable to normalize job %d for character %s (%d:%d)\n", i, sd->status.name, sd->status.account_id, sd->status.char_id); + ShowError("pc_calc_skilltree: Unable to normalize job %u for character %s (%d:%d)\n", job, sd->status.name, sd->status.account_id, sd->status.char_id); return 1; } - classidx = pc->class2idx(class); + int classidx = pc->class2idx(class); pc->calc_skilltree_clear(sd); - for (i = 0; i < MAX_SKILL_DB; i++) { - if( sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED ) - { // Restore original level of skills after deleting earned skills. + for (int i = 0; i < MAX_SKILL_DB; i++) { + if (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY || sd->status.skill[i].flag >= SKILL_FLAG_REPLACED_LV_0) { + // Restore original level of skills after deleting earned skills. sd->status.skill[i].lv = (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY) ? 0 : sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0; sd->status.skill[i].flag = SKILL_FLAG_PERMANENT; } - if( sd->sc.count && sd->sc.data[SC_SOULLINK] && sd->sc.data[SC_SOULLINK]->val2 == SL_BARDDANCER && skill->dbs->db[i].nameid >= DC_HUMMING && skill->dbs->db[i].nameid <= DC_SERVICEFORYOU ) - { //Enable Bard/Dancer spirit linked skills. - if (sd->status.sex) { - // Link dancer skills to bard. - if (i < 8) { - Assert_report(i >= 8); - continue; - } - if (sd->status.skill[i-8].lv < 10) - continue; - sd->status.skill[i].id = skill->dbs->db[i].nameid; - sd->status.skill[i].lv = sd->status.skill[i-8].lv; // Set the level to the same as the linking skill - sd->status.skill[i].flag = SKILL_FLAG_TEMPORARY; // Tag it as a non-savable, non-uppable, bonus skill + if (sd->sc.count && sd->sc.data[SC_SOULLINK] && sd->sc.data[SC_SOULLINK]->val2 == SL_BARDDANCER + && ((skill->dbs->db[i].nameid >= BA_WHISTLE && skill->dbs->db[i].nameid <= BA_APPLEIDUN) + || (skill->dbs->db[i].nameid >= DC_HUMMING && skill->dbs->db[i].nameid <= DC_SERVICEFORYOU)) + ) { + //Enable Bard/Dancer spirit linked skills. + int linked_nameid = skill->get_linked_song_dance_id(skill->dbs->db[i].nameid); + if (linked_nameid == 0) { + Assert_report("Linked bard/dance skill not found"); + continue; + } + int copy_from_index; + int copy_to_index; + if (sd->status.sex == SEX_MALE && skill->dbs->db[i].nameid >= BA_WHISTLE && skill->dbs->db[i].nameid <= BA_APPLEIDUN) { + copy_from_index = i; + copy_to_index = skill->get_index(linked_nameid); } else { - // Link bard skills to dancer. - if (i < 8) { - Assert_report(i >= 8); - continue; - } - if (sd->status.skill[i].lv < 10) - continue; - sd->status.skill[i-8].id = skill->dbs->db[i-8].nameid; - sd->status.skill[i-8].lv = sd->status.skill[i].lv; // Set the level to the same as the linking skill - sd->status.skill[i-8].flag = SKILL_FLAG_TEMPORARY; // Tag it as a non-savable, non-uppable, bonus skill + copy_from_index = skill->get_index(linked_nameid); + copy_to_index = i; } + if (copy_from_index < copy_to_index) + continue; // Copy only after the source skill has been filled into the tree + if (sd->status.skill[copy_from_index].lv < 10) + continue; // Copy only if the linked skill has been mastered + sd->status.skill[copy_to_index].id = skill->dbs->db[copy_to_index].nameid; + sd->status.skill[copy_to_index].lv = sd->status.skill[copy_from_index].lv; // Set the level to the same as the linking skill + sd->status.skill[copy_to_index].flag = SKILL_FLAG_TEMPORARY; // Tag it as a non-savable, non-uppable, bonus skill } } if( pc_has_permission(sd, PC_PERM_ALL_SKILL) ) { - for (i = 0; i < MAX_SKILL_DB; i++) { + for (int i = 0; i < MAX_SKILL_DB; i++) { switch(skill->dbs->db[i].nameid) { /** * Dummy skills must be added here otherwise they'll be displayed in the, @@ -1673,9 +1687,11 @@ static int pc_calc_skilltree(struct map_session_data *sd) return 0; } + bool changed = false; do { - flag = 0; - for (i = 0; i < MAX_SKILL_TREE && (id = pc->skill_tree[classidx][i].id) > 0; i++) { + changed = false; + int id; + for (int i = 0; i < MAX_SKILL_TREE && (id = pc->skill_tree[classidx][i].id) > 0; i++) { int idx = pc->skill_tree[classidx][i].idx; bool satisfied = true; if (sd->status.skill[idx].id > 0) @@ -1725,10 +1741,10 @@ static int pc_calc_skilltree(struct map_session_data *sd) sd->status.skill[idx].lv = 1; // need to manually specify a skill level sd->status.skill[idx].flag = SKILL_FLAG_TEMPORARY; //So it is not saved, and tagged as a "bonus" skill. } - flag = 1; // skill list has changed, perform another pass + changed = true; // skill list has changed, perform another pass } } - } while(flag); + } while (changed); pc->calc_skilltree_bonus(sd, classidx); @@ -4191,7 +4207,7 @@ static int pc_skill(struct map_session_data *sd, int id, int level, int flag) if( sd->status.skill[index].id == id ) { if( sd->status.skill[index].lv >= level ) return 0; - if( sd->status.skill[index].flag == SKILL_FLAG_PERMANENT ) //Non-granted skill, store it's level. + if (sd->status.skill[index].flag == SKILL_FLAG_PERMANENT) // Non-granted skill, store its level. sd->status.skill[index].flag = SKILL_FLAG_REPLACED_LV_0 + sd->status.skill[index].lv; } else { sd->status.skill[index].id = id; @@ -5147,7 +5163,8 @@ static int pc_useitem(struct map_session_data *sd, int n) nullpo_ret(sd); Assert_ret(n >= 0 && n < sd->status.inventorySize); - if (sd->npc_id || sd->state.workinprogress & 1) { + if ((sd->npc_id != 0 && sd->state.using_megaphone == 0 && (sd->npc_item_flag & ITEMENABLEDNPC_CONSUME) == 0) + || (sd->state.workinprogress & 1) != 0) { #if PACKETVER >= 20110308 clif->msgtable(sd, MSG_BUSY); #else @@ -5156,7 +5173,7 @@ static int pc_useitem(struct map_session_data *sd, int n) return 0; } - if (battle_config.storage_use_item == 1 && sd->state.storage_flag != STORAGE_FLAG_CLOSED) { + if (battle_config.storage_use_item == 0 && sd->state.storage_flag != STORAGE_FLAG_CLOSED) { clif->messagecolor_self(sd->fd, COLOR_RED, msg_sd(sd, 1475)); return 0; // You cannot use this item while storage is open. } @@ -5173,6 +5190,16 @@ static int pc_useitem(struct map_session_data *sd, int n) // Store information for later use before it is lost (via pc->delitem) [Paradox924X] nameid = sd->inventory_data[n]->nameid; + if (nameid == ITEMID_MEGAPHONE && ((sd->state.workinprogress & 2) != 0 || sd->state.using_megaphone != 0 + || sd->npc_id != 0)) { +#if PACKETVER >= 20110308 + clif->msgtable(sd, MSG_BUSY); +#else + clif->messagecolor_self(sd->fd, COLOR_WHITE, msg_sd(sd, 48)); +#endif + return 0; + } + if (nameid != ITEMID_NAUTHIZ && sd->sc.opt1 > 0 && sd->sc.opt1 != OPT1_STONEWAIT && sd->sc.opt1 != OPT1_BURNING) return 0; @@ -5280,10 +5307,6 @@ static int pc_useitem(struct map_session_data *sd, int n) if(sd->catch_target_class != -1) //Abort pet catching. sd->catch_target_class = -1; - // Removes abracadabra/randomize spell flag for delayed consume items or item doesn't get consumed - if (sd->inventory_data[n]->flag.delay_consume) - sd->state.abra_flag = 0; - amount = sd->status.inventory[n].amount; //Check if the item is to be consumed immediately [Skotlex] if (sd->inventory_data[n]->flag.delay_consume || sd->inventory_data[n]->flag.keepafteruse) @@ -5307,6 +5330,9 @@ static int pc_useitem(struct map_session_data *sd, int n) // Update item use time. sd->canuseitem_tick = tick + battle_config.item_use_interval; + if (nameid == ITEMID_MEGAPHONE) + sd->state.using_megaphone = 1; + script->run_use_script(sd, sd->inventory_data[n], npc->fake_nd->bl.id); script->potion_flag = 0; @@ -5322,23 +5348,79 @@ static int pc_useitem(struct map_session_data *sd, int n) } /** - * Sets state flags and helper variables, used by itemskill() script command, to 0. + * Unsets a character's currently processed auto-cast skill data. * - * @param sd The character's session data. - * @return 0 if parameter sd is NULL, otherwise 1. - */ -static int pc_itemskill_clear(struct map_session_data *sd) + * @param sd The character. + * + **/ +static void pc_autocast_clear_current(struct map_session_data *sd) { - nullpo_ret(sd); + nullpo_retv(sd); - sd->itemskill_id = 0; - sd->itemskill_lv = 0; - sd->state.itemskill_conditions_checked = 0; - sd->state.itemskill_no_conditions = 0; - sd->state.itemskill_no_casttime = 0; - sd->state.itemskill_castonself = 0; + sd->auto_cast_current.type = AUTOCAST_NONE; + sd->auto_cast_current.skill_id = 0; + sd->auto_cast_current.skill_lv = 0; + sd->auto_cast_current.itemskill_conditions_checked = false; + sd->auto_cast_current.itemskill_check_conditions = true; + sd->auto_cast_current.itemskill_instant_cast = false; + sd->auto_cast_current.itemskill_cast_on_self = false; +} - return 1; +/** + * Unsets a character's auto-cast related data. + * + * @param sd The character. + * + **/ +static void pc_autocast_clear(struct map_session_data *sd) +{ + nullpo_retv(sd); + + pc->autocast_clear_current(sd); + VECTOR_TRUNCATE(sd->auto_cast); // Truncate auto-cast vector. +} + +/** + * Sets a character's currently processed auto-cast skill data by comparing the skill ID. + * + * @param sd The character. + * @param skill_id The skill ID to compare. + * + **/ +static void pc_autocast_set_current(struct map_session_data *sd, int skill_id) +{ + nullpo_retv(sd); + + pc->autocast_clear_current(sd); + + for (int i = 0; i < VECTOR_LENGTH(sd->auto_cast); i++) { + if (VECTOR_INDEX(sd->auto_cast, i).skill_id == skill_id) { + sd->auto_cast_current = VECTOR_INDEX(sd->auto_cast, i); + break; + } + } +} + +/** + * Removes a specific entry from a character's auto-cast vector. + * + * @param sd The character. + * @param type The entry's auto-cast type. + * @param skill_id The entry's skill ID. + * @param skill_lv The entry's skill level. + * + **/ +static void pc_autocast_remove(struct map_session_data *sd, enum autocast_type type, int skill_id, int skill_lv) +{ + nullpo_retv(sd); + + for (int i = 0; i < VECTOR_LENGTH(sd->auto_cast); i++) { + if (VECTOR_INDEX(sd->auto_cast, i).type == type && VECTOR_INDEX(sd->auto_cast, i).skill_id == skill_id + && VECTOR_INDEX(sd->auto_cast, i).skill_lv == skill_lv) { + VECTOR_ERASE(sd->auto_cast, i); + break; + } + } } /*========================================== @@ -5688,242 +5770,290 @@ static int pc_steal_coin(struct map_session_data *sd, struct block_list *target, return 0; } -/*========================================== - * Set's a player position. - * Return values: - * 0 - Success. - * 1 - Invalid map index. - * 2 - Map not in this map-server, and failed to locate alternate map-server. - *------------------------------------------*/ +/** + * Sets a character's position. + * + * @param sd The related character. + * @param map_index The target map's index. + * @param x The target x-coordinate. + * @param y The target y-coordinate. + * @param clrtype The unit clear type, which should be used. + * @retval 0 Success. + * @retval 1 Invalid map index. + * @retval 2 Map not in this map-server, and failed to locate alternative map-server. + * @retval 3 No character data. (Parameter sd is a NULL pointer.) + * @retval 4 Character is jailed. + * + **/ static int pc_setpos(struct map_session_data *sd, unsigned short map_index, int x, int y, enum clr_type clrtype) { - int16 m; + nullpo_retr(3, sd); - nullpo_ret(sd); + int map_id = map->mapindex2mapid(map_index); - if( !map_index || !mapindex_id2name(map_index) || ( m = map->mapindex2mapid(map_index) ) == -1 ) { - ShowDebug("pc_setpos: Passed mapindex(%d) is invalid!\n", map_index); + if (map_index == 0 || !mapindex_id2name(map_index) || map_id == INDEX_NOT_FOUND) { + ShowDebug("pc_setpos: Passed mapindex %d is invalid!\n", map_index); return 1; } - if( pc_isdead(sd) ) { //Revive dead people before warping them + if (pc_isdead(sd)) { // Revive dead character before warping. pc->setstand(sd); - pc->setrestartvalue(sd,1); + pc->setrestartvalue(sd, 1); } - if( map->list[m].flag.src4instance ) { - struct party_data *p; + if (map->list[map_id].flag.src4instance != 0) { bool stop = false; - int i = 0, j = 0; - if( sd->instances ) { - for( i = 0; i < sd->instances; i++ ) { - if( sd->instance[i] >= 0 ) { - ARR_FIND(0, instance->list[sd->instance[i]].num_map, j, map->list[instance->list[sd->instance[i]].map[j]].instance_src_map == m && !map->list[instance->list[sd->instance[i]].map[j]].custom_name); - if( j != instance->list[sd->instance[i]].num_map ) + if (sd->instances != 0) { + int i, j = 0; + + for (i = 0; i < sd->instances; i++) { + if (sd->instance[i] >= 0) { + ARR_FIND(0, instance->list[sd->instance[i]].num_map, j, + map->list[instance->list[sd->instance[i]].map[j]].instance_src_map == map_id + && !map->list[instance->list[sd->instance[i]].map[j]].custom_name); + + if (j != instance->list[sd->instance[i]].num_map) break; } } - if( i != sd->instances ) { - m = instance->list[sd->instance[i]].map[j]; - map_index = map_id2index(m); + + if (i != sd->instances) { + map_id = instance->list[sd->instance[i]].map[j]; + map_index = map_id2index(map_id); stop = true; } } - if ( !stop && sd->status.party_id && (p = party->search(sd->status.party_id)) != NULL && p->instances ) { - for( i = 0; i < p->instances; i++ ) { - if( p->instance[i] >= 0 ) { - ARR_FIND(0, instance->list[p->instance[i]].num_map, j, map->list[instance->list[p->instance[i]].map[j]].instance_src_map == m && !map->list[instance->list[p->instance[i]].map[j]].custom_name); - if( j != instance->list[p->instance[i]].num_map ) + + struct party_data *p = party->search(sd->status.party_id); + + if (!stop && sd->status.party_id != 0 && p != NULL && p->instances != 0) { + int i, j = 0; + + for (i = 0; i < p->instances; i++) { + if (p->instance[i] >= 0) { + ARR_FIND(0, instance->list[p->instance[i]].num_map, j, + map->list[instance->list[p->instance[i]].map[j]].instance_src_map == map_id + && !map->list[instance->list[p->instance[i]].map[j]].custom_name); + + if (j != instance->list[p->instance[i]].num_map) break; } } - if( i != p->instances ) { - m = instance->list[p->instance[i]].map[j]; - map_index = map_id2index(m); + + if (i != p->instances) { + map_id = instance->list[p->instance[i]].map[j]; + map_index = map_id2index(map_id); stop = true; } } - if ( !stop && sd->status.guild_id && sd->guild && sd->guild->instances ) { - for( i = 0; i < sd->guild->instances; i++ ) { - if( sd->guild->instance[i] >= 0 ) { - ARR_FIND(0, instance->list[sd->guild->instance[i]].num_map, j, map->list[instance->list[sd->guild->instance[i]].map[j]].instance_src_map == m && !map->list[instance->list[sd->guild->instance[i]].map[j]].custom_name); - if( j != instance->list[sd->guild->instance[i]].num_map ) + + if (!stop && sd->status.guild_id != 0 && sd->guild != NULL && sd->guild->instances != 0) { + int i, j = 0; + + for (i = 0; i < sd->guild->instances; i++) { + if (sd->guild->instance[i] >= 0) { + ARR_FIND(0, instance->list[sd->guild->instance[i]].num_map, j, + map->list[instance->list[sd->guild->instance[i]].map[j]].instance_src_map == map_id + && !map->list[instance->list[sd->guild->instance[i]].map[j]].custom_name); + + if (j != instance->list[sd->guild->instance[i]].num_map) break; } } - if( i != sd->guild->instances ) { - m = instance->list[sd->guild->instance[i]].map[j]; - map_index = map_id2index(m); - //stop = true; Uncomment if adding new checks + + if (i != sd->guild->instances) { + map_id = instance->list[sd->guild->instance[i]].map[j]; + map_index = map_id2index(map_id); + //stop = true; Uncomment when adding new checks. } } - /* we hit a instance, if empty we populate the spawn data */ - if( map->list[m].instance_id >= 0 && instance->list[map->list[m].instance_id].respawn.map == 0 && - instance->list[map->list[m].instance_id].respawn.x == 0 && - instance->list[map->list[m].instance_id].respawn.y == 0) { - instance->list[map->list[m].instance_id].respawn.map = map_index; - instance->list[map->list[m].instance_id].respawn.x = x; - instance->list[map->list[m].instance_id].respawn.y = y; + // We hit an instance. If empty we populate the spawn data. + if (map->list[map_id].instance_id >= 0 && instance->list[map->list[map_id].instance_id].respawn.map == 0 + && instance->list[map->list[map_id].instance_id].respawn.x == 0 + && instance->list[map->list[map_id].instance_id].respawn.y == 0) { + instance->list[map->list[map_id].instance_id].respawn.map = map_index; + instance->list[map->list[map_id].instance_id].respawn.x = x; + instance->list[map->list[map_id].instance_id].respawn.y = y; } } - sd->state.changemap = (sd->mapindex != map_index); + sd->state.changemap = (sd->mapindex != map_index) ? 1 : 0; sd->state.warping = 1; sd->state.workinprogress = 0; - if( sd->state.changemap ) { // Misc map-changing settings - int i; + + if (sd->state.changemap != 0) { // Miscellaneous map-changing settings. sd->state.pmap = sd->bl.m; - for (i = 0; i < VECTOR_LENGTH(sd->script_queues); i++) { + for (int i = 0; i < VECTOR_LENGTH(sd->script_queues); i++) { struct script_queue *queue = script->queue(VECTOR_INDEX(sd->script_queues, i)); - if (queue && queue->event_mapchange[0] != '\0') { - pc->setregstr(sd, script->add_variable("@Queue_Destination_Map$"), map->list[m].name); + + if (queue != NULL && queue->event_mapchange[0] != '\0') { + pc->setregstr(sd, script->add_variable("@Queue_Destination_Map$"), map->list[map_id].name); npc->event(sd, queue->event_mapchange, 0); } } - if( map->list[m].cell == (struct mapcell *)0xdeadbeaf ) - map->cellfromcache(&map->list[m]); - if (sd->sc.count) { // Cancel some map related stuff. - if (sd->sc.data[SC_JAILED]) - return 1; //You may not get out! + if (map->list[map_id].cell == (struct mapcell *)0xdeadbeaf) + map->cellfromcache(&map->list[map_id]); + + if (sd->sc.count != 0) { // Cancel some map related stuff. + if (sd->sc.data[SC_JAILED] != NULL) + return 4; // You may not get out! + status_change_end(&sd->bl, SC_CASH_BOSS_ALARM, INVALID_TIMER); status_change_end(&sd->bl, SC_WARM, INVALID_TIMER); status_change_end(&sd->bl, SC_SUN_COMFORT, INVALID_TIMER); status_change_end(&sd->bl, SC_MOON_COMFORT, INVALID_TIMER); status_change_end(&sd->bl, SC_STAR_COMFORT, INVALID_TIMER); status_change_end(&sd->bl, SC_MIRACLE, INVALID_TIMER); - status_change_end(&sd->bl, SC_NEUTRALBARRIER_MASTER, INVALID_TIMER);//Will later check if this is needed. [Rytech] + status_change_end(&sd->bl, SC_NEUTRALBARRIER_MASTER, INVALID_TIMER); // Will later check if this is needed. [Rytech] status_change_end(&sd->bl, SC_NEUTRALBARRIER, INVALID_TIMER); status_change_end(&sd->bl, SC_STEALTHFIELD_MASTER, INVALID_TIMER); status_change_end(&sd->bl, SC_STEALTHFIELD, INVALID_TIMER); - if (sd->sc.data[SC_KNOWLEDGE]) { + + if (sd->sc.data[SC_KNOWLEDGE] != NULL) { struct status_change_entry *sce = sd->sc.data[SC_KNOWLEDGE]; + if (sce->timer != INVALID_TIMER) timer->delete(sce->timer, status->change_timer); - sce->timer = timer->add(timer->gettick() + skill->get_time(SG_KNOWLEDGE, sce->val1), status->change_timer, sd->bl.id, SC_KNOWLEDGE); + + sce->timer = timer->add(timer->gettick() + skill->get_time(SG_KNOWLEDGE, sce->val1), + status->change_timer, sd->bl.id, SC_KNOWLEDGE); } + status_change_end(&sd->bl, SC_PROPERTYWALK, INVALID_TIMER); status_change_end(&sd->bl, SC_CLOAKING, INVALID_TIMER); status_change_end(&sd->bl, SC_CLOAKINGEXCEED, INVALID_TIMER); } - for( i = 0; i < EQI_MAX; i++ ) { - if( sd->equip_index[ i ] >= 0 ) - if( !pc->isequip( sd , sd->equip_index[ i ] ) ) - pc->unequipitem(sd, sd->equip_index[i], PCUNEQUIPITEM_FORCE); - } - if (battle_config.clear_unit_onwarp&BL_PC) + + if ((battle_config.clear_unit_onwarp & BL_PC) != 0) skill->clear_unitgroup(&sd->bl); - party->send_dot_remove(sd); //minimap dot fix [Kevin] + + party->send_dot_remove(sd); // Minimap dot fix. [Kevin] guild->send_dot_remove(sd); bg->send_dot_remove(sd); - if (sd->regen.state.gc) + + if (sd->regen.state.gc != 0) sd->regen.state.gc = 0; - // make sure vending is allowed here - if (sd->state.vending && map->list[m].flag.novending) { - clif->message (sd->fd, msg_sd(sd,276)); // "You can't open a shop on this map" + + // Make sure that vending is allowed here. + if (sd->state.vending != 0 && map->list[map_id].flag.novending != 0) { + clif->message(sd->fd, msg_sd(sd, 276)); // "You can't open a shop on this map" vending->close(sd); } - if (sd->mapindex != 0) { - // Only if the character is already on a map - if (map->list[sd->bl.m].channel) { - channel->leave(map->list[sd->bl.m].channel,sd); - } - } + if (sd->mapindex != 0 && map->list[sd->bl.m].channel != NULL) // Only if the character is already on a map. + channel->leave(map->list[sd->bl.m].channel, sd); } - if( m < 0 ) { + if (map_id < 0) { uint32 ip; uint16 port; - //if can't find any map-servers, just abort setting position. - if(!sd->mapindex || map->mapname2ipport(map_index,&ip,&port)) + + // If can't find any map-servers, just abort setting position. + if (sd->mapindex == 0 || map->mapname2ipport(map_index, &ip, &port) != 0) return 2; - if (sd->npc_id) + if (sd->npc_id != 0) npc->event_dequeue(sd); + npc->script_event(sd, NPCE_LOGOUT); - //remove from map, THEN change x/y coordinates - unit->remove_map_pc(sd,clrtype); + + // Remove from map, THEN change x/y coordinates. + unit->remove_map_pc(sd, clrtype); + if (battle_config.player_warp_keep_direction == 0) - sd->ud.dir = 0; // makes character face north + sd->ud.dir = 0; /// Make character facing north. + sd->mapindex = map_index; - sd->bl.x=x; - sd->bl.y=y; + sd->bl.x= x; + sd->bl.y= y; pc->clean_skilltree(sd); - chrif->save(sd,2); - chrif->changemapserver(sd, ip, (short)port); + chrif->save(sd, 2); + chrif->changemapserver(sd, ip, port); - //Free session data from this map server [Kevin] + // Free session data from this map server. [Kevin] unit->free_pc(sd); return 0; } - if( x < 0 || x >= map->list[m].xs || y < 0 || y >= map->list[m].ys ) { - ShowError("pc_setpos: attempt to place player %s (%d:%d) on invalid coordinates (%s-%d,%d)\n", sd->status.name, sd->status.account_id, sd->status.char_id, mapindex_id2name(map_index),x,y); - x = y = 0; // make it random + if (x < 0 || x >= map->list[map_id].xs || y < 0 || y >= map->list[map_id].ys) { // Invalid coordinates. Randomize them. + ShowError("pc_setpos: Attempt to place player %s (%d:%d) on invalid coordinates (%s-%d,%d)!\n", + sd->status.name, sd->status.account_id, sd->status.char_id, + mapindex_id2name(map_index), x, y); + x = 0; + y = 0; } - if( x == 0 && y == 0 ) {// pick a random walkable cell + if (x == 0 && y == 0) { // Pick a random walkable cell. do { - x=rnd()%(map->list[m].xs-2)+1; - y=rnd()%(map->list[m].ys-2)+1; - } while(map->getcell(m, &sd->bl, x, y, CELL_CHKNOPASS)); + x = rnd() % (map->list[map_id].xs - 2) + 1; + y = rnd() % (map->list[map_id].ys - 2) + 1; + } while(map->getcell(map_id, &sd->bl, x, y, CELL_CHKNOPASS) != 0); } - if (sd->state.vending && map->getcell(m, &sd->bl, x, y, CELL_CHKNOVENDING)) { - clif->message (sd->fd, msg_sd(sd,204)); // "You can't open a shop on this cell." + if (sd->state.vending != 0 && map->getcell(map_id, &sd->bl, x, y, CELL_CHKNOVENDING) != 0) { + clif->message(sd->fd, msg_sd(sd, 204)); // "You can't open a shop on this cell." vending->close(sd); } if (battle_config.player_warp_keep_direction == 0) - sd->ud.dir = 0; // makes character face north + sd->ud.dir = 0; // Make character facing north. - if(sd->bl.prev != NULL){ - unit->remove_map_pc(sd,clrtype); - clif->changemap(sd,m,x,y); // [MouseJstr] - } else if(sd->state.active) - //Tag player for rewarping after map-loading is done. [Skotlex] - sd->state.rewarp = 1; + if (sd->bl.prev != NULL) { + unit->remove_map_pc(sd, clrtype); + clif->changemap(sd, map_id, x, y); // [MouseJstr] + } else if (sd->state.active != 0) { + sd->state.rewarp = 1; // Tag character for re-warping after map-loading is done. [Skotlex] + } sd->mapindex = map_index; - sd->bl.m = m; - sd->bl.x = sd->ud.to_x = x; - sd->bl.y = sd->ud.to_y = y; + sd->bl.m = map_id; + sd->bl.x = x; + sd->bl.y = y; + sd->ud.to_x = x; + sd->ud.to_y = y; - if( sd->status.guild_id > 0 && map->list[m].flag.gvg_castle ) { // Increased guild castle regen [Valaris] + if (sd->status.guild_id > 0 && map->list[map_id].flag.gvg_castle != 0) { // Double regeneration in guild castle. [Valaris] struct guild_castle *gc = guild->mapindex2gc(sd->mapindex); - if(gc && gc->guild_id == sd->status.guild_id) + + if (gc != NULL && gc->guild_id == sd->status.guild_id) sd->regen.state.gc = 1; } - if( sd->status.pet_id > 0 && sd->pd && sd->pd->pet.intimate > 0 ) { - sd->pd->bl.m = m; - sd->pd->bl.x = sd->pd->ud.to_x = x; - sd->pd->bl.y = sd->pd->ud.to_y = y; + if (sd->status.pet_id > 0 && sd->pd != NULL && sd->pd->pet.intimate > PET_INTIMACY_NONE) { + sd->pd->bl.m = map_id; + sd->pd->bl.x = x; + sd->pd->bl.y = y; + sd->pd->ud.to_x = x; + sd->pd->ud.to_y = y; sd->pd->ud.dir = sd->ud.dir; } - if( homun_alive(sd->hd) ) { - sd->hd->bl.m = m; - sd->hd->bl.x = sd->hd->ud.to_x = x; - sd->hd->bl.y = sd->hd->ud.to_y = y; + if (homun_alive(sd->hd)) { + sd->hd->bl.m = map_id; + sd->hd->bl.x = x; + sd->hd->bl.y = y; + sd->hd->ud.to_x = x; + sd->hd->ud.to_y = y; sd->hd->ud.dir = sd->ud.dir; } - if( sd->md ) { - sd->md->bl.m = m; - sd->md->bl.x = sd->md->ud.to_x = x; - sd->md->bl.y = sd->md->ud.to_y = y; + if (sd->md != NULL) { + sd->md->bl.m = map_id; + sd->md->bl.x = x; + sd->md->bl.y = y; + sd->md->ud.to_x = x; + sd->md->ud.to_y = y; sd->md->ud.dir = sd->ud.dir; } - /* given autotrades have no clients you have to trigger this manually otherwise they get stuck in memory limbo bugreport:7495 */ - if( sd->state.autotrade ) - clif->pLoadEndAck(0,sd); + // Given autotrades have no clients. You have to trigger this manually, otherwise they get stuck in memory limbo. (bugreport:7495) + if (sd->state.autotrade != 0) + clif->pLoadEndAck(0, sd); return 0; } @@ -7503,7 +7633,7 @@ static int pc_allskillup(struct map_session_data *sd) nullpo_ret(sd); for (i = 0; i < MAX_SKILL_DB; i++) { - if (sd->status.skill[i].flag != SKILL_FLAG_PERMANENT && sd->status.skill[i].flag != SKILL_FLAG_PERM_GRANTED && sd->status.skill[i].flag != SKILL_FLAG_PLAGIARIZED) { + if (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY || sd->status.skill[i].flag >= SKILL_FLAG_REPLACED_LV_0) { sd->status.skill[i].lv = (sd->status.skill[i].flag == SKILL_FLAG_TEMPORARY) ? 0 : sd->status.skill[i].flag - SKILL_FLAG_REPLACED_LV_0; sd->status.skill[i].flag = SKILL_FLAG_PERMANENT; if (sd->status.skill[i].lv == 0) @@ -8003,163 +8133,175 @@ static void pc_damage(struct map_session_data *sd, struct block_list *src, unsig } } -/*========================================== - * Invoked when a player has negative current hp - *------------------------------------------*/ +/** + * Invoked when a character died. + * + * @param sd The died character. + * @param src The unit which caused the death. + * @retval 0 Death canceled. + * @retval 1 Standard death. + * @retval 9 Died in PVP/GVG/BG. + * + **/ static int pc_dead(struct map_session_data *sd, struct block_list *src) { - int i=0,j=0; - int64 tick = timer->gettick(); + nullpo_ret(sd); - nullpo_retr(0, sd); + for (int i = 0; i < MAX_PC_DEVOTION; i++) { + if (sd->devotion[i] != 0) { + struct map_session_data *devsd = map->id2sd(sd->devotion[i]); - for (j = 0; j < MAX_PC_DEVOTION; j++) { - if (sd->devotion[j]) { - struct map_session_data *devsd = map->id2sd(sd->devotion[j]); - if (devsd) + if (devsd != NULL) status_change_end(&devsd->bl, SC_DEVOTION, INVALID_TIMER); - sd->devotion[j] = 0; + + sd->devotion[i] = 0; } } - if(sd->status.pet_id > 0 && sd->pd) { + if (sd->status.pet_id > 0 && sd->pd != NULL) { struct pet_data *pd = sd->pd; - if( !map->list[sd->bl.m].flag.noexppenalty ) { + + if (map->list[sd->bl.m].flag.noexppenalty == 0) pet->set_intimate(pd, pd->pet.intimate - pd->petDB->die); - if( pd->pet.intimate < 0 ) - pd->pet.intimate = 0; - clif->send_petdata(sd,sd->pd,1,pd->pet.intimate); - } - if( sd->pd->target_id ) // Unlock all targets... + + if (sd->pd != NULL && sd->pd->target_id != 0) // Unlock all targets. pet->unlocktarget(sd->pd); } - if (sd->status.hom_id > 0){ - if(battle_config.homunculus_auto_vapor && sd->hd) - homun->vaporize(sd, HOM_ST_REST, true); - } + if (sd->status.hom_id > 0 && sd->hd != NULL && battle_config.homunculus_auto_vapor != 0) + homun->vaporize(sd, HOM_ST_REST, true); - if( sd->md ) - mercenary->delete(sd->md, 3); // Your mercenary soldier has ran away. + if (sd->md != NULL) + mercenary->delete(sd->md, 3); // Your mercenary soldier ran away. - if( sd->ed ) + if (sd->ed != NULL) elemental->delete(sd->ed, 0); - // Leave duel if you die [LuzZza] - if(battle_config.duel_autoleave_when_die) { - if(sd->duel_group > 0) + if (battle_config.duel_autoleave_when_die != 0) { // Leave duel if character died. [LuzZza] + if (sd->duel_group > 0) duel->leave(sd->duel_group, sd); - if(sd->duel_invite > 0) + if (sd->duel_invite > 0) duel->reject(sd->duel_invite, sd); } - if (sd->npc_id && sd->st && sd->st->state != RUN) + if (sd->npc_id != 0 && sd->state.using_megaphone == 0 && sd->st != NULL && sd->st->state != RUN) npc->event_dequeue(sd); - pc_setglobalreg(sd,script->add_variable("PC_DIE_COUNTER"),sd->die_counter+1); - pc->setparam(sd, SP_KILLERRID, src?src->id:0); + pc_setglobalreg(sd, script->add_variable("PC_DIE_COUNTER"), sd->die_counter + 1); + pc->setparam(sd, SP_KILLERRID, (src != NULL) ? src->id : 0); + + if (sd->bg_id != 0) { //TODO: Purge when bgqueue is deemed ok. + struct battleground_data *bgd = bg->team_search(sd->bg_id); - if( sd->bg_id ) {/* TODO: purge when bgqueue is deemed ok */ - struct battleground_data *bgd; - if( (bgd = bg->team_search(sd->bg_id)) != NULL && bgd->die_event[0] ) + if (bgd != NULL && bgd->die_event[0] != '\0') npc->event(sd, bgd->die_event, 0); } - for (i = 0; i < VECTOR_LENGTH(sd->script_queues); i++ ) { + for (int i = 0; i < VECTOR_LENGTH(sd->script_queues); i++) { struct script_queue *queue = script->queue(VECTOR_INDEX(sd->script_queues, i)); - if (queue && queue->event_death[0] != '\0') + + if (queue != NULL && queue->event_death[0] != '\0') npc->event(sd, queue->event_death, 0); } - npc->script_event(sd,NPCE_DIE); + npc->script_event(sd, NPCE_DIE); - // Clear anything NPC-related when you die and was interacting with one. - if ( (sd->npc_id || sd->npc_shopid) && sd->state.dialog) { - if (sd->state.using_fake_npc) { + // Clear anything NPC-related if character died while interacting with one. + if (((sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->npc_shopid != 0) && sd->state.dialog != 0) { + if (sd->state.using_fake_npc != 0) { clif->clearunit_single(sd->npc_id, CLR_OUTSIGHT, sd->fd); sd->state.using_fake_npc = 0; } - if (sd->state.menu_or_input) + + if (sd->state.menu_or_input != 0) sd->state.menu_or_input = 0; - if (sd->npc_menu) + + if (sd->npc_menu != 0) sd->npc_menu = 0; sd->npc_id = 0; sd->npc_shopid = 0; - if (sd->st && sd->st->state != END) + + if (sd->st != NULL && sd->st->state != END) sd->st->state = END; } - /* e.g. not killed through pc->damage */ - if( pc_issit(sd) ) { + // E.g. not killed through pc->damage(). + if (pc_issit(sd)) clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_SIT)); - } pc_setdead(sd); - clif->party_dead_notification(sd); - //Reset menu skills/item skills - if (sd->skillitem) - sd->skillitem = sd->skillitemlv = 0; - if (sd->menuskill_id) - sd->menuskill_id = sd->menuskill_val = 0; - //Reset ticks. - sd->hp_loss.tick = sd->sp_loss.tick = sd->hp_regen.tick = sd->sp_regen.tick = 0; + pc->autocast_clear(sd); // Unset auto-cast data. + + if (sd->menuskill_id != 0) { // Reset menu skills. + sd->menuskill_id = 0; + sd->menuskill_val = 0; + } - if ( sd->spiritball ) + // Reset ticks. + sd->hp_loss.tick = 0; + sd->sp_loss.tick = 0; + sd->hp_regen.tick = 0; + sd->sp_regen.tick = 0; + + if (sd->spiritball != 0) pc->delspiritball(sd, sd->spiritball, 0); + if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0) pc->del_charm(sd, sd->charm_count, sd->charm_type); + int64 tick = timer->gettick(); + if (src != NULL) { switch (src->type) { - case BL_MOB: - { - struct mob_data *md = BL_UCAST(BL_MOB, src); - if (md->target_id==sd->bl.id) - mob->unlocktarget(md,tick); - if (battle_config.mobs_level_up && md->status.hp - && md->level < pc->maxbaselv(sd) - && !md->guardian_data && md->special_state.ai == AI_NONE// Guardians/summons should not level. [Skotlex] - ) { - // monster level up [Valaris] - clif->misceffect(&md->bl,0); - md->level++; - status_calc_mob(md, SCO_NONE); - status_percent_heal(src,10,0); - - if( battle_config.show_mob_info&4 ) - {// update name with new level - clif->blname_ack(0, &md->bl); - } - } - src = battle->get_master(src); // Maybe Player Summon + case BL_MOB: { + struct mob_data *md = BL_UCAST(BL_MOB, src); + + if (md->target_id == sd->bl.id) + mob->unlocktarget(md, tick); + + if (battle_config.mobs_level_up != 0 && md->status.hp != 0 && md->level < pc->maxbaselv(sd) + && md->guardian_data == NULL && md->special_state.ai == AI_NONE) { // Guardians/summons should not level up. [Skotlex] + /// Monster level up. [Valaris] + clif->misceffect(&md->bl, 0); + md->level++; + status_calc_mob(md, SCO_NONE); + status_percent_heal(src, 10, 0); + + if ((battle_config.show_mob_info & 4) != 0) + clif->blname_ack(0, &md->bl); // Update name with new level. } + + src = battle->get_master(src); // Maybe character summon. break; - case BL_PET: //Pass on to master... - src = &BL_UCAST(BL_PET, src)->msd->bl; + } + case BL_PET: + src = &BL_UCAST(BL_PET, src)->msd->bl; // Pass on to master. break; - case BL_HOM: - src = &BL_UCAST(BL_HOM, src)->master->bl; + case BL_HOM: + src = &BL_UCAST(BL_HOM, src)->master->bl; // Pass on to master. break; - case BL_MER: - src = &BL_UCAST(BL_MER, src)->master->bl; + case BL_MER: + src = &BL_UCAST(BL_MER, src)->master->bl; // Pass on to master. break; } } if (src != NULL && src->type == BL_PC) { struct map_session_data *ssd = BL_UCAST(BL_PC, src); + pc->setparam(ssd, SP_KILLEDRID, sd->bl.id); npc->script_event(ssd, NPCE_KILLPC); + achievement->validate_pc_kill(ssd, sd); - achievement->validate_pc_kill(ssd, sd); // Achievements [Smokexyz/Hercules] - - if (battle_config.pk_mode&2) { + if ((battle_config.pk_mode & 2) != 0) { ssd->status.manner -= 5; - if(ssd->status.manner < 0) - sc_start(NULL,src,SC_NOCHAT,100,0,0); + + if (ssd->status.manner < 0) + sc_start(NULL, src, SC_NOCHAT, 100, 0, 0); + #if 0 // PK/Karma system code (not enabled yet) [celest] // originally from Kade Online, so i don't know if any of these is correct ^^; @@ -8171,14 +8313,15 @@ static int pc_dead(struct map_session_data *sd, struct block_list *src) // If player killed was more evil sd->status.karma--; ssd->status.karma--; - } - else if (sd->status.karma < ssd->status.karma) // If player killed was more good + } else if (sd->status.karma < ssd->status.karma) { // If player killed was more good ssd->status.karma++; + } // or the PK System way... if (sd->status.karma > 0) // player killed is dishonourable? ssd->status.karma--; // honour points earned + sd->status.karma++; // honour points lost // To-do: Receive exp on certain occasions @@ -8186,137 +8329,156 @@ static int pc_dead(struct map_session_data *sd, struct block_list *src) } } - if( battle_config.bone_drop==2 - || (battle_config.bone_drop==1 && map->list[sd->bl.m].flag.pvp) - ) { + if (battle_config.bone_drop == 2 || (battle_config.bone_drop == 1 && map->list[sd->bl.m].flag.pvp != 0)) { struct item item_tmp; - memset(&item_tmp,0,sizeof(item_tmp)); - item_tmp.nameid=ITEMID_SKULL_; - item_tmp.identify=1; - item_tmp.card[0]=CARD0_CREATE; - item_tmp.card[1]=0; - item_tmp.card[2]=GetWord(sd->status.char_id,0); // CharId - item_tmp.card[3]=GetWord(sd->status.char_id,1); + + memset(&item_tmp, 0, sizeof(item_tmp)); + item_tmp.nameid = ITEMID_SKULL_; + item_tmp.identify = 1; + item_tmp.card[0] = CARD0_CREATE; + item_tmp.card[1] = 0; + item_tmp.card[2] = GetWord(sd->status.char_id, 0); + item_tmp.card[3] = GetWord(sd->status.char_id, 1); map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } - // activate Steel body if a super novice dies at 99+% exp [celest] - if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && !sd->state.snovice_dead_flag) { + // Activate Steel Body if a Super Novice dies at 99+% EXP. [celest] + if ((sd->job & MAPID_UPPERMASK) == MAPID_SUPER_NOVICE && sd->state.snovice_dead_flag == 0) { uint64 next = pc->nextbaseexp(sd); - if( next == 0 ) next = pc->thisbaseexp(sd); + + if (next == 0) + next = pc->thisbaseexp(sd); + if (get_percentage64(sd->status.base_exp, next) >= 99) { sd->state.snovice_dead_flag = 1; pc->setstand(sd); status_percent_heal(&sd->bl, 100, 100); clif->resurrection(&sd->bl, 1); - if(battle_config.pc_invincible_time) + + if (battle_config.pc_invincible_time != 0) pc->setinvincibletimer(sd, battle_config.pc_invincible_time); - sc_start(NULL,&sd->bl,status->skill2sc(MO_STEELBODY),100,1,skill->get_time(MO_STEELBODY,1)); - if(map_flag_gvg2(sd->bl.m)) + + sc_start(NULL, &sd->bl, status->skill2sc(MO_STEELBODY), 100, 1, skill->get_time(MO_STEELBODY, 1)); + + if (map_flag_gvg2(sd->bl.m)) pc->respawn_timer(INVALID_TIMER, timer->gettick(), sd->bl.id, 0); + return 0; } } - // changed penalty options, added death by player if pk_mode [Valaris] - if (battle_config.death_penalty_type - && pc->isDeathPenaltyJob(sd->job) - && !map->list[sd->bl.m].flag.noexppenalty && !map_flag_gvg2(sd->bl.m) - && !sd->sc.data[SC_BABY] && !sd->sc.data[SC_CASH_DEATHPENALTY] - && !pc->auto_exp_insurance(sd) - ) { + if (battle_config.death_penalty_type != 0 && pc->isDeathPenaltyJob(sd->job) && !map_flag_gvg2(sd->bl.m) + && map->list[sd->bl.m].flag.noexppenalty == 0 && sd->sc.data[SC_BABY] == NULL + && sd->sc.data[SC_CASH_DEATHPENALTY] == NULL && !pc->auto_exp_insurance(sd)) { if (battle_config.death_penalty_base > 0) { unsigned int base_penalty = 0; + int rate = battle_config.death_penalty_base; + switch (battle_config.death_penalty_type) { - case 1: - base_penalty = (unsigned int) apply_percentrate64(pc->nextbaseexp(sd), battle_config.death_penalty_base, 10000); - break; - case 2: - base_penalty = (unsigned int) apply_percentrate64(sd->status.base_exp, battle_config.death_penalty_base, 10000); - break; + case 1: + base_penalty = (unsigned int)apply_percentrate64(pc->nextbaseexp(sd), rate, 10000); + break; + case 2: + base_penalty = (unsigned int)apply_percentrate64(sd->status.base_exp, rate, 10000); + break; } if (base_penalty != 0) { - if (battle_config.pk_mode && src && src->type==BL_PC) - base_penalty*=2; - if( sd->status.mod_death != 100 ) + if (battle_config.pk_mode != 0 && src != NULL && src->type == BL_PC) + base_penalty *= 2; + + if (sd->status.mod_death != 100) base_penalty = base_penalty * sd->status.mod_death / 100; + sd->status.base_exp -= min(sd->status.base_exp, base_penalty); - clif->updatestatus(sd,SP_BASEEXP); + clif->updatestatus(sd, SP_BASEEXP); } } - if(battle_config.death_penalty_job > 0) { + if (battle_config.death_penalty_job > 0) { unsigned int job_penalty = 0; + int rate = battle_config.death_penalty_job; switch (battle_config.death_penalty_type) { - case 1: - job_penalty = (unsigned int) apply_percentrate64(pc->nextjobexp(sd), battle_config.death_penalty_job, 10000); - break; - case 2: - job_penalty = (unsigned int) apply_percentrate64(sd->status.job_exp, battle_config.death_penalty_job, 10000); - break; + case 1: + job_penalty = (unsigned int)apply_percentrate64(pc->nextjobexp(sd), rate, 10000); + break; + case 2: + job_penalty = (unsigned int)apply_percentrate64(sd->status.job_exp, rate, 10000); + break; } if (job_penalty != 0) { - if (battle_config.pk_mode && src && src->type==BL_PC) - job_penalty*=2; - if( sd->status.mod_death != 100 ) + if (battle_config.pk_mode != 0 && src != NULL && src->type == BL_PC) + job_penalty *= 2; + + if (sd->status.mod_death != 100) job_penalty = job_penalty * sd->status.mod_death / 100; + sd->status.job_exp -= min(sd->status.job_exp, job_penalty); - clif->updatestatus(sd,SP_JOBEXP); + clif->updatestatus(sd, SP_JOBEXP); } } - if (battle_config.zeny_penalty > 0 && !map->list[sd->bl.m].flag.nozenypenalty) { + if (battle_config.zeny_penalty > 0 && map->list[sd->bl.m].flag.nozenypenalty == 0) { int zeny_penalty = apply_percentrate(sd->status.zeny, battle_config.zeny_penalty, 10000); + if (zeny_penalty != 0) pc->payzeny(sd, zeny_penalty, LOG_TYPE_PICKDROP_PLAYER, NULL); } } - if(map->list[sd->bl.m].flag.pvp_nightmaredrop) { - // Moved this outside so it works when PVP isn't enabled and during pk mode [Ancyker] - for(j=0;j<map->list[sd->bl.m].drop_list_count;j++){ - int id = map->list[sd->bl.m].drop_list[j].drop_id; - int type = map->list[sd->bl.m].drop_list[j].drop_type; - int per = map->list[sd->bl.m].drop_list[j].drop_per; - if(id == 0) + if (map->list[sd->bl.m].flag.pvp_nightmaredrop != 0) { + // Moved this outside so it works when PVP isn't enabled and during pk mode. [Ancyker] + for (int i = 0; i < map->list[sd->bl.m].drop_list_count; i++) { + int id = map->list[sd->bl.m].drop_list[i].drop_id; + int type = map->list[sd->bl.m].drop_list[i].drop_type; + int per = map->list[sd->bl.m].drop_list[i].drop_per; + + if (id == 0) continue; - if(id == -1){ - int eq_num = 0, eq_n[MAX_INVENTORY], k; - memset(eq_n,0,sizeof(eq_n)); - for(i = 0; i < sd->status.inventorySize; i++) { - if( (type == 1 && !sd->status.inventory[i].equip) - || (type == 2 && sd->status.inventory[i].equip) - || type == 3) - { + + if (id == -1) { + int eq_num = 0; + int eq_n[MAX_INVENTORY]; + + memset(eq_n, 0, sizeof(eq_n)); + + for (int j = 0; j < sd->status.inventorySize; j++) { + bool is_equipped = (sd->status.inventory[j].equip != 0); + + if ((type == 1 && !is_equipped) || (type == 2 && is_equipped) || type == 3) { + int k; + ARR_FIND(0, sd->status.inventorySize, k, eq_n[k] <= 0); + if (k < sd->status.inventorySize) - eq_n[k] = i; + eq_n[k] = j; eq_num++; } } - if(eq_num > 0){ - int n = eq_n[rnd()%eq_num]; - if(rnd()%10000 < per){ - if(sd->status.inventory[n].equip) + + if (eq_num > 0) { + int n = eq_n[rnd() % eq_num]; + + if (rnd() % 10000 < per) { + if (sd->status.inventory[n].equip != 0) pc->unequipitem(sd, n, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE); - pc->dropitem(sd,n,1); + + pc->dropitem(sd, n, 1); } } - } - else if(id > 0){ - for( i = 0; i < sd->status.inventorySize; i++) { - if(sd->status.inventory[i].nameid == id - && rnd()%10000 < per - && ((type == 1 && !sd->status.inventory[i].equip) - || (type == 2 && sd->status.inventory[i].equip) - || type == 3) ){ - if(sd->status.inventory[i].equip) - pc->unequipitem(sd, i, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE); - pc->dropitem(sd,i,1); + } else if (id > 0) { + for (int j = 0; j < sd->status.inventorySize; j++) { + bool is_equipped = (sd->status.inventory[j].equip != 0); + + if (((type == 1 && !is_equipped) || (type == 2 && is_equipped) || type == 3) + && sd->status.inventory[j].nameid == id && rnd() % 10000 < per) { + if (is_equipped) + pc->unequipitem(sd, j, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE); + + pc->dropitem(sd, j, 1); break; } } @@ -8324,46 +8486,51 @@ static int pc_dead(struct map_session_data *sd, struct block_list *src) } } - // Remove autotrade to prevent autotrading from save point - if( (sd->state.standalone || sd->state.autotrade) - && (map->list[sd->bl.m].flag.pvp || map->list[sd->bl.m].flag.gvg) - ) { + // Remove autotrade to prevent autotrading from save point. + if ((map->list[sd->bl.m].flag.pvp != 0 || map->list[sd->bl.m].flag.gvg != 0) + && (sd->state.standalone != 0 || sd->state.autotrade != 0)) { sd->state.autotrade = 0; sd->state.standalone = 0; - pc->autotrade_update(sd,PAUC_REMOVE); + pc->autotrade_update(sd, PAUC_REMOVE); map->quit(sd); } - // pvp - // disable certain pvp functions on pk_mode [Valaris] - if( map->list[sd->bl.m].flag.pvp && !battle_config.pk_mode && !map->list[sd->bl.m].flag.pvp_nocalcrank ) { + // Disable certain PVP functions on pk_mode. [Valaris] + if (map->list[sd->bl.m].flag.pvp != 0 && battle_config.pk_mode == 0 + && map->list[sd->bl.m].flag.pvp_nocalcrank == 0) { sd->pvp_point -= 5; sd->pvp_lost++; + if (src != NULL && src->type == BL_PC) { struct map_session_data *ssd = BL_UCAST(BL_PC, src); + ssd->pvp_point++; ssd->pvp_won++; } - if( sd->pvp_point < 0 ) - { - timer->add(tick+1, pc->respawn_timer,sd->bl.id,0); + + if (sd->pvp_point < 0) { + timer->add(tick + 1, pc->respawn_timer, sd->bl.id, 0); return 1|8; } } - //GvG - if( map_flag_gvg2(sd->bl.m) ) { - timer->add(tick+1, pc->respawn_timer, sd->bl.id, 0); + + // GVG + if (map_flag_gvg2(sd->bl.m)) { + timer->add(tick + 1, pc->respawn_timer, sd->bl.id, 0); return 1|8; - } else if( sd->bg_id ) { + } + + if (sd->bg_id != 0) { struct battleground_data *bgd = bg->team_search(sd->bg_id); - if( bgd && bgd->mapindex > 0 ) { // Respawn by BG - timer->add(tick+1000, pc->respawn_timer, sd->bl.id, 0); + + if (bgd != NULL && bgd->mapindex > 0) { // Respawn by BG. + timer->add(tick + 1000, pc->respawn_timer, sd->bl.id, 0); return 1|8; } } - //Reset "can log out" tick. - if( battle_config.prevent_logout ) + // Reset "can log out" tick. + if (battle_config.prevent_logout != 0) sd->canlog_tick = timer->gettick() - battle_config.prevent_logout; return 1; @@ -8786,6 +8953,10 @@ static int pc_itemheal(struct map_session_data *sd, int itemid, int hp, int sp) // 2014 Halloween Event : Pumpkin Bonus if ( sd->sc.data[SC_MTF_PUMPKIN] && itemid == ITEMID_PUMPKIN ) hp += (int)(hp * sd->sc.data[SC_MTF_PUMPKIN]->val1/100); + + // Activation Potion + if (sd->sc.data[SC_VITALIZE_POTION] != NULL) + hp += hp * sd->sc.data[SC_VITALIZE_POTION]->val3 / 100; } if(sp) { bonus = 100 + (sd->battle_status.int_<<1) @@ -9180,6 +9351,72 @@ static int pc_changelook(struct map_session_data *sd, int type, int val) return 0; } +/** + * Hides a character. + * + * @param sd The character to hide. + * @param show_msg Whether to show message to the character or not. + * + **/ +static void pc_hide(struct map_session_data *sd, bool show_msg) +{ + nullpo_retv(sd); + + clif->clearunit_area(&sd->bl, CLR_OUTSIGHT); + sd->sc.option |= OPTION_INVISIBLE; + sd->vd.class = INVISIBLE_CLASS; + + if (show_msg) + clif->message(sd->fd, atcommand->msgsd(sd, 11)); // Invisible: On + + // Decrement the number of pvp players on the map. + map->list[sd->bl.m].users_pvp--; + + if (map->list[sd->bl.m].flag.pvp != 0 && map->list[sd->bl.m].flag.pvp_nocalcrank == 0 + && sd->pvp_timer != INVALID_TIMER) { // Unregister the player for ranking. + timer->delete(sd->pvp_timer, pc->calc_pvprank_timer); + sd->pvp_timer = INVALID_TIMER; + } + + clif->changeoption(&sd->bl); +} + +/** + * Unhides a character. + * + * @param sd The character to unhide. + * @param show_msg Whether to show message to the character or not. + * + **/ +static void pc_unhide(struct map_session_data *sd, bool show_msg) +{ + nullpo_retv(sd); + + sd->sc.option &= ~OPTION_INVISIBLE; + + if (sd->disguise != -1) + status->set_viewdata(&sd->bl, sd->disguise); + else + status->set_viewdata(&sd->bl, sd->status.class); + + if (show_msg) + clif->message(sd->fd, atcommand->msgsd(sd, 10)); // Invisible: Off + + // Increment the number of pvp players on the map. + map->list[sd->bl.m].users_pvp++; + + if (map->list[sd->bl.m].flag.pvp != 0 && map->list[sd->bl.m].flag.pvp_nocalcrank == 0) // Register the player for ranking. + sd->pvp_timer = timer->add(timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0); + + // bugreport:2266 + map->foreachinmovearea(clif->insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl); + + if (sd->disguise != -1) + clif->spawn_unit(&sd->bl, AREA_WOS); + + clif->changeoption(&sd->bl); +} + /*========================================== * Give an option (type) to player (sd) and display it to client *------------------------------------------*/ @@ -9191,7 +9428,13 @@ static int pc_setoption(struct map_session_data *sd, int type) //Option has to be changed client-side before the class sprite or it won't always work (eg: Wedding sprite) [Skotlex] sd->sc.option=type; - clif->changeoption(&sd->bl); + + if ((p_type & OPTION_INVISIBLE) != 0 && (type & OPTION_INVISIBLE) == 0) // Unhide character. + pc->unhide(sd, false); + else if ((p_type & OPTION_INVISIBLE) == 0 && (type & OPTION_INVISIBLE) != 0) // Hide character. + pc->hide(sd, false); + else + clif->changeoption(&sd->bl); if( (type&OPTION_RIDING && !(p_type&OPTION_RIDING)) || (type&OPTION_DRAGON && !(p_type&OPTION_DRAGON) && pc->checkskill(sd,RK_DRAGONTRAINING) > 0) ) { // Mounting @@ -10144,141 +10387,163 @@ static void pc_equipitem_pos(struct map_session_data *sd, struct item_data *id, } } -/*========================================== - * Equip item on player sd at req_pos from inventory index n - * Return: - * 0 = fail - * 1 = success - *------------------------------------------*/ +/** + * Attempts to equip an item. + * + * @param sd The related character. + * @param n The item's inventory index. + * @param req_pos The equipment slot, where the item should be equipped. (See enum equip_pos.) + * @return 0 on failure, 1 on success. + * + **/ static int pc_equipitem(struct map_session_data *sd, int n, int req_pos) { - int i,pos,flag=0,iflag; - struct item_data *id; - nullpo_ret(sd); if (n < 0 || n >= sd->status.inventorySize) { - clif->equipitemack(sd,0,0,EIA_FAIL); + clif->equipitemack(sd, 0, 0, EIA_FAIL); return 0; } - if( DIFF_TICK(sd->canequip_tick,timer->gettick()) > 0 ) - { - clif->equipitemack(sd,n,0,EIA_FAIL); + // If the character is in berserk mode, the item can't be equipped. + if (sd->sc.count != 0 && (sd->sc.data[SC_BERSERK] != NULL || sd->sc.data[SC_NO_SWITCH_EQUIP] != NULL)) { + clif->equipitemack(sd, n, 0, EIA_FAIL); return 0; } - id = sd->inventory_data[n]; - pos = pc->equippoint(sd,n); //With a few exceptions, item should go in all specified slots. + if (battle_config.battle_log != 0) + ShowInfo("equip %d(%d) %x:%x\n", sd->status.inventory[n].nameid, n, sd->status.inventory[n].equip, + (unsigned int)req_pos); - if(battle_config.battle_log) - ShowInfo("equip %d(%d) %x:%x\n", sd->status.inventory[n].nameid, n, (unsigned int)(id ? id->equip : 0), (unsigned int)req_pos); - if(!pc->isequip(sd,n) || !(pos&req_pos) || sd->status.inventory[n].equip != 0 || (sd->status.inventory[n].attribute & ATTR_BROKEN) != 0 ) { // [Valaris] - // FIXME: pc->isequip: equip level failure uses 2 instead of 0 - clif->equipitemack(sd,n,0,EIA_FAIL); // fail + if (DIFF_TICK(sd->canequip_tick, timer->gettick()) > 0) { + clif->equipitemack(sd, n, 0, EIA_FAIL); return 0; } - if (sd->sc.data[SC_BERSERK] || sd->sc.data[SC_NO_SWITCH_EQUIP]) - { - clif->equipitemack(sd,n,0,EIA_FAIL); // fail + int pos = pc->equippoint(sd, n); // With a few exceptions, item should go in all specified slots. + + if (pc->isequip(sd,n) == 0 || (pos & req_pos) == 0 || sd->status.inventory[n].equip != 0 + || (sd->status.inventory[n].attribute & ATTR_BROKEN) != 0) { + clif->equipitemack(sd, n, 0, EIA_FAIL); return 0; + } + + if (sd->inventory_data[n]->flag.bindonequip != 0 && sd->status.inventory[n].bound == 0) { + sd->status.inventory[n].bound = IBT_CHARACTER; + clif->notify_bounditem(sd, n); } - /* won't fail from this point onwards */ - if( id->flag.bindonequip && !sd->status.inventory[n].bound ) { - sd->status.inventory[n].bound = (unsigned char)IBT_CHARACTER; - clif->notify_bounditem(sd,n); - } - - if(pos == EQP_ACC) { //Accesories should only go in one of the two, - pos = req_pos&EQP_ACC; - if (pos == EQP_ACC) //User specified both slots.. - pos = sd->equip_index[EQI_ACC_R] >= 0 ? EQP_ACC_L : EQP_ACC_R; - } else if(pos == EQP_ARMS && id->equip == EQP_HAND_R) { //Dual wield capable weapon. - pos = (req_pos&EQP_ARMS); - if (pos == EQP_ARMS) //User specified both slots, pick one for them. - pos = sd->equip_index[EQI_HAND_R] >= 0 ? EQP_HAND_L : EQP_HAND_R; - } else if(pos == EQP_SHADOW_ACC) { //Accesories should only go in one of the two, - pos = req_pos&EQP_SHADOW_ACC; - if (pos == EQP_SHADOW_ACC) //User specified both slots.. - pos = sd->equip_index[EQI_SHADOW_ACC_R] >= 0 ? EQP_SHADOW_ACC_L : EQP_SHADOW_ACC_R; - } else if( pos == EQP_SHADOW_ARMS && id->equip == EQP_SHADOW_WEAPON) { //Dual wield capable weapon. - pos = (req_pos&EQP_SHADOW_ARMS); - if (pos == EQP_SHADOW_ARMS) //User specified both slots, pick one for them. - pos = sd->equip_index[EQI_SHADOW_WEAPON] >= 0 ? EQP_SHADOW_SHIELD : EQP_SHADOW_WEAPON; - } - - if (pos&EQP_HAND_R && battle_config.use_weapon_skill_range&BL_PC) { - //Update skill-block range database when weapon range changes. [Skotlex] - i = sd->equip_index[EQI_HAND_R]; - if (i < 0 || !sd->inventory_data[i]) //No data, or no weapon equipped + if (pos == EQP_ACC) { // Accesories should only go in one of the two. + pos = req_pos & EQP_ACC; + + if (pos == EQP_ACC) // User specified both slots. + pos = (sd->equip_index[EQI_ACC_R] >= 0) ? EQP_ACC_L : EQP_ACC_R; + } else if (pos == EQP_ARMS && sd->inventory_data[n]->equip == EQP_HAND_R) { // Dual wield capable weapon. + pos = req_pos & EQP_ARMS; + + if (pos == EQP_ARMS) // User specified both slots, pick one for them. + pos = (sd->equip_index[EQI_HAND_R] >= 0) ? EQP_HAND_L : EQP_HAND_R; + } else if (pos == EQP_SHADOW_ACC) { // Accesories should only go in one of the two, + pos = req_pos & EQP_SHADOW_ACC; + + if (pos == EQP_SHADOW_ACC) // User specified both slots. + pos = (sd->equip_index[EQI_SHADOW_ACC_R] >= 0) ? EQP_SHADOW_ACC_L : EQP_SHADOW_ACC_R; + } else if (pos == EQP_SHADOW_ARMS && sd->inventory_data[n]->equip == EQP_SHADOW_WEAPON) { // Dual wield capable weapon. + pos = req_pos & EQP_SHADOW_ARMS; + + if (pos == EQP_SHADOW_ARMS) // User specified both slots, pick one for them. + pos = (sd->equip_index[EQI_SHADOW_WEAPON] >= 0) ? EQP_SHADOW_SHIELD : EQP_SHADOW_WEAPON; + } + + int flag = 0; + + // Update skill-block range database when weapon range changes. [Skotlex] + if ((pos & EQP_HAND_R) != 0 && (battle_config.use_weapon_skill_range & BL_PC) != 0) { + int idx = sd->equip_index[EQI_HAND_R]; + + if (idx < 0 || sd->inventory_data[idx] == NULL) // No data, or no weapon equipped. flag = 1; else - flag = id->range != sd->inventory_data[i]->range; + flag = (sd->inventory_data[n]->range != sd->inventory_data[idx]->range) ? 1 : 0; } - for(i=0;i<EQI_MAX;i++) { - if(pos & pc->equip_pos[i]) { - if(sd->equip_index[i] >= 0) //Slot taken, remove item from there. + for (int i = 0; i < EQI_MAX; i++) { + if ((pos & pc->equip_pos[i]) != 0) { + if (sd->equip_index[i] >= 0) // Slot taken, remove item from there. pc->unequipitem(sd, sd->equip_index[i], PCUNEQUIPITEM_FORCE); sd->equip_index[i] = n; } } - if(pos==EQP_AMMO){ - clif->arrowequip(sd,n); - clif->arrow_fail(sd,3); + if (pos == EQP_AMMO) { + clif->arrowequip(sd, n); + clif->arrow_fail(sd, 3); + } else { + clif->equipitemack(sd, n, pos, EIA_SUCCESS); } - else - clif->equipitemack(sd,n,pos,EIA_SUCCESS); - sd->status.inventory[n].equip=pos; + sd->status.inventory[n].equip = pos; + pc->equipitem_pos(sd, sd->inventory_data[n], n, pos); + pc->checkallowskill(sd); // Check if status changes should be halted. - pc->equipitem_pos(sd, id, n, pos); + int iflag = sd->npc_item_flag; - pc->checkallowskill(sd); //Check if status changes should be halted. - iflag = sd->npc_item_flag; + // Check for combos. (MUST be done before status->calc_pc()!) + if (sd->inventory_data[n]->combos_count != 0) + pc->checkcombo(sd, sd->inventory_data[n]); - /* check for combos (MUST be before status_calc_pc) */ - if( id->combos_count ) - pc->checkcombo(sd,id); - if(itemdb_isspecial(sd->status.inventory[n].card[0])) - ; //No cards - else { - for( i = 0; i < id->slot; i++ ) { - struct item_data *data; - if (!sd->status.inventory[n].card[i]) + if (!itemdb_isspecial(sd->status.inventory[n].card[0])) { + for (int i = 0; i < sd->inventory_data[n]->slot; 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 ) - pc->checkcombo(sd,data); - } + + struct item_data *data = itemdb->exists(sd->status.inventory[n].card[i]); + + if (data != NULL && data->combos_count != 0) + pc->checkcombo(sd, data); } } - status_calc_pc(sd,SCO_NONE); - if (flag) //Update skill data + status_calc_pc(sd, SCO_NONE); + + if (flag != 0) // Update skill data. clif->skillinfoblock(sd); + + // Execute equip script. [Skotlex] + struct item_data *equip_data = sd->inventory_data[n]; + struct map_zone_data *zone = map->list[sd->bl.m].zone; + int dis_items_cnt = zone->disabled_items_count; - //OnEquip script [Skotlex] - if (id->equip_script) - script->run_item_equip_script(sd, id, npc->fake_nd->bl.id); + if (equip_data->equip_script != NULL) { + int idx; - if(itemdb_isspecial(sd->status.inventory[n].card[0])) - ; //No cards - else { - for( i = 0; i < id->slot; i++ ) { - struct item_data *data; - if (!sd->status.inventory[n].card[i]) + ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == equip_data->nameid); + + if (idx == dis_items_cnt) + script->run_item_equip_script(sd, equip_data, npc->fake_nd->bl.id); + } + + struct item *equip = &sd->status.inventory[n]; + + if (!itemdb_isspecial(equip->card[0])) { + for (int slot = 0; slot < equip_data->slot; slot++) { + if (equip->card[slot] == 0) continue; - if ( ( data = itemdb->exists(sd->status.inventory[n].card[i]) ) != NULL ) { - if (data->equip_script) - script->run_item_equip_script(sd, data, npc->fake_nd->bl.id); + + struct item_data *card_data = itemdb->exists(equip->card[slot]); + + if (card_data != NULL && card_data->equip_script != NULL) { + int idx; + + ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == card_data->nameid); + + if (idx == dis_items_cnt) + script->run_item_equip_script(sd, card_data, npc->fake_nd->bl.id); } } } + sd->npc_item_flag = iflag; return 1; @@ -10350,19 +10615,17 @@ static void pc_unequipitem_pos(struct map_session_data *sd, int n, int pos) } } -/*========================================== - * Called when attemting to unequip an item from player - * type: @see enum pc_unequipitem_flag - * Return: - * 0 = fail - * 1 = success - *------------------------------------------*/ +/** + * Attempts to unequip an item. + * + * @param sd The related character. + * @param n The item's inventory index. + * @param flag Modifier for additional actions. (See enum pc_unequipitem_flag.) + * @return 0 on failure, 1 on success. + * + **/ static int pc_unequipitem(struct map_session_data *sd, int n, int flag) { - int i, iflag; - bool status_calc = false; - int pos; - nullpo_ret(sd); if (n < 0 || n >= sd->status.inventorySize) { @@ -10370,127 +10633,128 @@ static int pc_unequipitem(struct map_session_data *sd, int n, int flag) 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])) { + // If the character is in berserk mode, the item can't be unequipped. + if (sd->sc.count != 0 && (sd->sc.data[SC_BERSERK] != NULL || sd->sc.data[SC_NO_SWITCH_EQUIP] != NULL) + && (flag & PCUNEQUIPITEM_FORCE) == 0) { clif->unequipitemack(sd, n, 0, UIA_FAIL); return 0; } - if (!(flag & PCUNEQUIPITEM_FORCE) && sd->sc.count && sd->sc.data[SC_KYOUGAKU]) { + if ((flag & PCUNEQUIPITEM_FORCE) == 0 && sd->sc.count != 0 && sd->sc.data[SC_KYOUGAKU] != NULL) { clif->unequipitemack(sd, n, 0, UIA_FAIL); return 0; } - if (battle_config.battle_log) + if (battle_config.battle_log != 0) ShowInfo("unequip %d %x:%x\n", n, (unsigned int)(pc->equippoint(sd, n)), sd->status.inventory[n].equip); - if (sd->status.inventory[n].equip == 0) { //Nothing to unequip + 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 (int i = 0; i < EQI_MAX; i++) { + if ((sd->status.inventory[n].equip & pc->equip_pos[i]) != 0) sd->equip_index[i] = -1; } - pos = sd->status.inventory[n].equip; - pc->unequipitem_pos(sd, n, pos); + int pos = sd->status.inventory[n].equip; + pc->unequipitem_pos(sd, n, pos); clif->unequipitemack(sd, n, pos, UIA_SUCCESS); - if ((pos & EQP_ARMS) && - sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST && (sd->sc.data[SC_TK_SEVENWIND] == NULL || sd->sc.data[SC_ASPERSIO] != NULL)) //Check for seven wind (but not level seven!) + if ((pos & EQP_ARMS) != 0 && sd->weapontype1 == W_FIST && sd->weapontype2 == W_FIST + && (sd->sc.data[SC_TK_SEVENWIND] == NULL || sd->sc.data[SC_ASPERSIO] != NULL)) { // Check for Seven Wind. (But not level seven!) skill->enchant_elemental_end(&sd->bl, -1); + } - if (pos & EQP_ARMOR) { - // On Armor Change... + if ((pos & EQP_ARMOR) != 0) { status_change_end(&sd->bl, SC_BENEDICTIO, INVALID_TIMER); status_change_end(&sd->bl, SC_ARMOR_RESIST, INVALID_TIMER); } #ifdef RENEWAL - if (battle->bc->bow_unequip_arrow && pos&EQP_ARMS && sd->equip_index[EQI_AMMO] > 0) + if (battle->bc->bow_unequip_arrow != 0 && (pos & EQP_ARMS) != 0 && sd->equip_index[EQI_AMMO] > 0) pc->unequipitem(sd, sd->equip_index[EQI_AMMO], PCUNEQUIPITEM_FORCE); #endif - if( sd->state.autobonus&pos ) - sd->state.autobonus &= ~sd->status.inventory[n].equip; //Check for activated autobonus [Inkfish] + if ((sd->state.autobonus & pos) != 0) // Check for activated autobonus. [Inkfish] + sd->state.autobonus &= ~sd->status.inventory[n].equip; sd->status.inventory[n].equip = 0; - iflag = sd->npc_item_flag; - /* check for combos (MUST be before status_calc_pc) */ + bool status_calc = false; + int iflag = sd->npc_item_flag; + + // Check for combos. (MUST be done before status->calc_pc()!) 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->inventory_data[n]->combos_count != 0 && pc->removecombo(sd, sd->inventory_data[n]) != 0) + status_calc = true; + + if (!itemdb_isspecial(sd->status.inventory[n].card[0])) { + for (int i = 0; i < sd->inventory_data[n]->slot; 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_calc = true; - } - } + + struct item_data *data = itemdb->exists(sd->status.inventory[n].card[i]); + + if (data != NULL && data->combos_count != 0 && pc->removecombo(sd, data) != 0) + status_calc = true; } } - /* Item Options checking */ - for (i = 0; i < MAX_ITEM_OPTIONS; i++) { - struct itemdb_option *ito = NULL; - int16 item_option = sd->status.inventory[n].option[i].index; - if (item_option <= 0) + // Check item options. + for (int i = 0; i < MAX_ITEM_OPTIONS; i++) { + if (sd->status.inventory[n].option[i].index <= 0) continue; - if ((ito = itemdb->option_exists(sd->status.inventory[n].option[i].index)) == NULL) + + if (itemdb->option_exists(sd->status.inventory[n].option[i].index) == NULL) continue; status_calc = true; } } - if (flag & PCUNEQUIPITEM_RECALC || status_calc) { + if ((flag & PCUNEQUIPITEM_RECALC) != 0 || status_calc) { pc->checkallowskill(sd); status_calc_pc(sd, SCO_NONE); } - if (sd->sc.data[SC_CRUCIS] && battle->check_undead(sd->battle_status.race, sd->battle_status.def_ele) == false) + if (sd->sc.data[SC_CRUCIS] != NULL && !battle->check_undead(sd->battle_status.race, sd->battle_status.def_ele)) status_change_end(&sd->bl, SC_CRUCIS, INVALID_TIMER); - //OnUnEquip script [Skotlex] + // Execute unequip script. [Skotlex] 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); + struct item_data *equip_data = sd->inventory_data[n]; + struct map_zone_data *zone = map->list[sd->bl.m].zone; + int dis_items_cnt = zone->disabled_items_count; + + if (equip_data->unequip_script != NULL) { + int idx; + + ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == equip_data->nameid); + + if (idx == dis_items_cnt) + script->run_item_unequip_script(sd, equip_data, npc->fake_nd->bl.id); } - 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) + + struct item *equip = &sd->status.inventory[n]; + + if (!itemdb_isspecial(equip->card[0])) { + for (int slot = 0; slot < equip_data->slot; slot++) { + if (equip->card[slot] == 0) continue; - 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) - script->run_item_unequip_script(sd, data, npc->fake_nd->bl.id); - } else { - script->run_item_unequip_script(sd, data, npc->fake_nd->bl.id); - } - } - } + struct item_data *card_data = itemdb->exists(equip->card[slot]); + + if (card_data != NULL && card_data->unequip_script != NULL) { + int idx; + ARR_FIND(0, dis_items_cnt, idx, zone->disabled_items[idx] == card_data->nameid); + + if (idx == dis_items_cnt) + script->run_item_unequip_script(sd, card_data, npc->fake_nd->bl.id); + } } } } @@ -11127,7 +11391,7 @@ static int pc_charm_timer(int tid, int64 tick, int id, intptr_t data) * @param max Maximum amount of charms to add. * @param type Charm type (@see spirit_charm_types) */ -static void pc_add_charm(struct map_session_data *sd, int interval, int max, int type) +static void pc_add_charm(struct map_session_data *sd, int interval, int max, enum spirit_charm_types type) { int tid, i; @@ -11169,7 +11433,7 @@ static void pc_add_charm(struct map_session_data *sd, int interval, int max, int * @param count Amount of charms to remove. * @param type Type of charm to remove. */ -static void pc_del_charm(struct map_session_data *sd, int count, int type) +static void pc_del_charm(struct map_session_data *sd, int count, enum spirit_charm_types type) { int i; @@ -11864,7 +12128,6 @@ static void pc_scdata_received(struct map_session_data *sd) { nullpo_retv(sd); pc->inventory_rentals(sd); - clif->show_modifiers(sd); if (sd->expiration_time != 0) { // don't display if it's unlimited or unknow value time_t exp_time = sd->expiration_time; @@ -12682,7 +12945,10 @@ void pc_defaults(void) pc->unequipitem_pos = pc_unequipitem_pos; pc->checkitem = pc_checkitem; pc->useitem = pc_useitem; - pc->itemskill_clear = pc_itemskill_clear; + pc->autocast_clear_current = pc_autocast_clear_current; + pc->autocast_clear = pc_autocast_clear; + pc->autocast_set_current = pc_autocast_set_current; + pc->autocast_remove = pc_autocast_remove; pc->skillatk_bonus = pc_skillatk_bonus; pc->skillheal_bonus = pc_skillheal_bonus; @@ -12695,6 +12961,8 @@ void pc_defaults(void) pc->itemheal = pc_itemheal; pc->percentheal = pc_percentheal; pc->jobchange = pc_jobchange; + pc->hide = pc_hide; + pc->unhide = pc_unhide; pc->setoption = pc_setoption; pc->setcart = pc_setcart; pc->setfalcon = pc_setfalcon; diff --git a/src/map/pc.h b/src/map/pc.h index e940c3310..e8e591b09 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -103,6 +103,13 @@ enum pc_checkitem_types { PCCHECKITEM_GSTORAGE = 0x8 }; +/** Bit flags for allowed item actions while interacting with NPC. **/ +enum item_enabled_npc_flags { + ITEMENABLEDNPC_NONE = 0x0, //!< Don't allow any item actions while interacting with NPC. + ITEMENABLEDNPC_EQUIP = 0x1, //!< Allow changing equipment while interacting with NPC. + ITEMENABLEDNPC_CONSUME = 0x2, //!< Allow consuming usable items while interacting with NPC. +}; + struct weapon_data { int atkmods[3]; BEGIN_ZEROED_BLOCK; // all the variables within this block get zero'ed in each call of status_calc_pc @@ -173,6 +180,17 @@ struct pc_combos { int id; /* this combo id */ }; +/** Auto-cast related data. **/ +struct autocast_data { + enum autocast_type type; // The auto-cast type. + int skill_id; // The auto-cast skill ID. + int skill_lv; // The auto-cast skill level. + bool itemskill_conditions_checked; // Used by itemskill() script command, to prevent second check of conditions after target was selected. + bool itemskill_check_conditions; // Used by itemskill() script command, to check skill conditions and consume them. + bool itemskill_instant_cast; // Used by itemskill() script command, to cast skill instantaneously. + bool itemskill_cast_on_self; // Used by itemskill() script command, to forcefully cast skill on invoking character. +}; + struct map_session_data { struct block_list bl; struct unit_data ud; @@ -181,6 +199,8 @@ struct map_session_data { struct status_change sc; struct regen_data regen; struct regen_data_sub sregen, ssregen; + struct autocast_data auto_cast_current; // Currently processed auto-cast skill. + VECTOR_DECL(struct autocast_data) auto_cast; // Auto-cast vector. //NOTE: When deciding to add a flag to state or special_state, take into consideration that state is preserved in //status_calc_pc, while special_state is recalculated in each call. [Skotlex] struct { @@ -194,8 +214,6 @@ struct map_session_data { unsigned int rest : 1; unsigned int storage_flag : 2; // @see enum storage_flag unsigned int snovice_dead_flag : 1; //Explosion spirits on death: 0 off, 1 used. - unsigned int abra_flag : 2; // Abracadabra bugfix by Aru - unsigned int autocast : 1; // Autospell flag [Inkfish] unsigned int autotrade : 2; //By Fantik unsigned int showdelay :1; unsigned int showexp :1; @@ -206,6 +224,7 @@ struct map_session_data { unsigned int size :2; // for tiny/large types unsigned int night :1; //Holds whether or not the player currently has the SI_NIGHT effect on. [Skotlex] unsigned int using_fake_npc :1; + unsigned int using_megaphone : 1; //!< Whether the character is currently using a Megephone (ID=12221). unsigned int rewarp :1; //Signals that a player should warp as soon as he is done loading a map. [Skotlex] unsigned int killer : 1; unsigned int killable : 1; @@ -240,10 +259,6 @@ struct map_session_data { unsigned int refine_ui : 1; unsigned int npc_unloaded : 1; ///< The player is talking with an unloaded NPCs (respawned tombstones) unsigned int lapine_ui : 1; - unsigned int itemskill_conditions_checked : 1; // Used by itemskill() script command, to prevent second check of conditions after target was selected. - unsigned int itemskill_no_conditions : 1; // Used by itemskill() script command, to ignore skill conditions and don't consume them. - unsigned int itemskill_no_casttime : 1; // Used by itemskill() script command, to cast skill instantaneously. - unsigned int itemskill_castonself : 1; // Used by itemskill() script command, to forcefully cast skill on invoking character. } state; struct { unsigned char no_weapon_damage, no_magic_damage, no_misc_damage; @@ -298,7 +313,6 @@ struct map_session_data { int followtimer; // [MouseJstr] int followtarget; time_t emotionlasttime; // to limit flood with emotion packets - int skillitem,skillitemlv; uint16 skill_id_old,skill_lv_old; uint16 skill_id_dance,skill_lv_dance; short cook_mastery; // range: [0,1999] [Inkfish] @@ -434,7 +448,7 @@ END_ZEROED_BLOCK; int spiritball, spiritball_old; int spirit_timer[MAX_SPIRITBALL]; int charm_count; - int charm_type; + enum spirit_charm_types charm_type; int charm_timer[MAX_SPIRITCHARM]; unsigned char potion_success_counter; //Potion successes in row counter unsigned char mission_count; //Stores the bounty kill count for TK_MISSION @@ -492,6 +506,7 @@ END_ZEROED_BLOCK; int change_level_3rd; // job level when changing from 2nd to 3rd class [jobchange_level_3rd in global_reg_value] char fakename[NAME_LENGTH]; // fake names [Valaris] + int fakename_options; // Fake name display options. int duel_group; // duel vars [LuzZza] int duel_invite; @@ -623,10 +638,6 @@ END_ZEROED_BLOCK; uint8 lang_id; - // temporary debugging of bug #3504 - const char* delunit_prevfile; - int delunit_prevline; - // HatEffect VECTOR_DECL(int) hatEffectId; @@ -647,15 +658,6 @@ END_ZEROED_BLOCK; bool achievements_received; // Title VECTOR_DECL(int) title_ids; - - /* - * itemskill_conditions_checked/itemskill_no_conditions/itemskill_no_casttime/itemskill_castonself abuse prevention. - * If a skill, casted by itemskill() script command, is aborted while target selection, - * the map server gets no notification where these states could be unset. - * Thus we need this helper variables to prevent abusing these states for next skill cast. - */ - int itemskill_id; - int itemskill_lv; }; #define EQP_WEAPON EQP_HAND_R @@ -680,7 +682,11 @@ END_ZEROED_BLOCK; #define pc_issit(sd) ( (sd)->vd.dead_sit == 2 ) #define pc_isidle(sd) ( (sd)->chat_id != 0 || (sd)->state.vending || (sd)->state.buyingstore || DIFF_TICK(sockt->last_tick, (sd)->idletime) >= battle->bc->idle_no_share ) #define pc_istrading(sd) ( (sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || (sd)->state.trading ) +#define pc_istrading_except_npc(sd) ( (sd)->state.vending != 0 || (sd)->state.buyingstore != 0 || (sd)->state.trading != 0 ) #define pc_cant_act(sd) ( (sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || (sd)->chat_id != 0 || ((sd)->sc.opt1 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading || (sd)->state.storage_flag || (sd)->state.prevend || (sd)->state.refine_ui == 1 || (sd)->state.lapine_ui == 1) +#define pc_cant_act_except_lapine(sd) ((sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || (sd)->chat_id != 0 || ((sd)->sc.opt1 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading || (sd)->state.storage_flag || (sd)->state.prevend || (sd)->state.refine_ui == 1) +#define pc_cant_act_except_npc(sd) ( (sd)->state.vending != 0 || (sd)->state.buyingstore != 0 || (sd)->chat_id != 0 || ((sd)->sc.opt1 != 0 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading != 0 || (sd)->state.storage_flag != 0 || (sd)->state.prevend != 0 || (sd)->state.refine_ui == 1 || (sd)->state.lapine_ui == 1) +#define pc_cant_act_except_npc_chat(sd) ( (sd)->state.vending != 0 || (sd)->state.buyingstore != 0 || ((sd)->sc.opt1 != 0 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading != 0 || (sd)->state.storage_flag != 0 || (sd)->state.prevend != 0 || (sd)->state.refine_ui == 1 || (sd)->state.lapine_ui == 1) /* equals pc_cant_act except it doesn't check for chat rooms */ #define pc_cant_act2(sd) ( (sd)->npc_id || (sd)->state.buyingstore || ((sd)->sc.opt1 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading || (sd)->state.storage_flag || (sd)->state.prevend || (sd)->state.refine_ui == 1 || (sd)->state.lapine_ui == 1) @@ -690,7 +696,7 @@ END_ZEROED_BLOCK; #define pc_ishiding(sd) ( (sd)->sc.option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) ) #define pc_iscloaking(sd) ( !((sd)->sc.option&OPTION_CHASEWALK) && ((sd)->sc.option&OPTION_CLOAK) ) #define pc_ischasewalk(sd) ( (sd)->sc.option&OPTION_CHASEWALK ) -#define pc_ismuted(sc,type) ( (sc)->data[SC_NOCHAT] && (sc)->data[SC_NOCHAT]->val1&(type) ) +#define pc_ismuted(sc, type) ( (sc)->data[SC_NOCHAT] != NULL && (battle_config.manner_system & (type)) != 0 ) #define pc_isvending(sd) ((sd)->state.vending || (sd)->state.prevend || (sd)->state.buyingstore) #ifdef NEW_CARTS @@ -724,6 +730,9 @@ END_ZEROED_BLOCK; /// Rune Knight Dragon #define pc_isridingdragon(sd) ( (sd)->sc.option&OPTION_DRAGON ) +// Check if character has a pet. +#define pc_has_pet(sd) ( (sd)->status.pet_id != 0 && (sd)->pd != NULL && (sd)->pd->pet.intimate > PET_INTIMACY_NONE ) + #define pc_stop_walking(sd, type) (unit->stop_walking(&(sd)->bl, (type))) #define pc_stop_attack(sd) (unit->stop_attack(&(sd)->bl)) @@ -870,6 +879,12 @@ struct class_exp_tables { struct class_exp_group *class_exp_table[CLASS_COUNT][2]; }; +enum player_actions_when_dead_flags { + PCALLOWACTION_NONE = 0x0, // Don't allow trading and open chat rooms. + PCALLOWACTION_TRADE = 0x1, // Allow trading when dead. + PCALLOWACTION_CHAT = 0x2, // Allow open chat room when dead. +}; + /*===================================== * Interface : pc.h * Generated by HerculesInterfaceMaker @@ -1034,7 +1049,10 @@ END_ZEROED_BLOCK; /* End */ void (*unequipitem_pos) (struct map_session_data *sd, int n, int pos); int (*checkitem) (struct map_session_data *sd); int (*useitem) (struct map_session_data *sd,int n); - int (*itemskill_clear) (struct map_session_data *sd); + void (*autocast_clear_current) (struct map_session_data *sd); + void (*autocast_clear) (struct map_session_data *sd); + void (*autocast_set_current) (struct map_session_data *sd, int skill_id); + void (*autocast_remove) (struct map_session_data *sd, enum autocast_type type, int skill_id, int skill_lv); int (*skillatk_bonus) (struct map_session_data *sd, uint16 skill_id); int (*skillheal_bonus) (struct map_session_data *sd, uint16 skill_id); @@ -1047,6 +1065,8 @@ END_ZEROED_BLOCK; /* End */ int (*itemheal) (struct map_session_data *sd,int itemid, int hp,int sp); int (*percentheal) (struct map_session_data *sd,int hp,int sp); int (*jobchange) (struct map_session_data *sd, int class, int upper); + void (*hide) (struct map_session_data *sd, bool show_msg); + void (*unhide) (struct map_session_data *sd, bool show_msg); int (*setoption) (struct map_session_data *sd,int type); int (*setcart) (struct map_session_data* sd, int type); void (*setfalcon) (struct map_session_data *sd, bool flag); @@ -1130,8 +1150,8 @@ END_ZEROED_BLOCK; /* End */ int (*load_combo) (struct map_session_data *sd); - void (*add_charm) (struct map_session_data *sd, int interval, int max, int type); - void (*del_charm) (struct map_session_data *sd, int count, int type); + void (*add_charm) (struct map_session_data *sd, int interval, int max, enum spirit_charm_types type); + void (*del_charm) (struct map_session_data *sd, int count, enum spirit_charm_types type); void (*baselevelchanged) (struct map_session_data *sd); int (*level_penalty_mod) (int diff, unsigned char race, uint32 mode, int type); diff --git a/src/map/pet.c b/src/map/pet.c index f20de2650..f10c55f57 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -60,62 +60,140 @@ struct pet_interface *pet; #define MIN_PETTHINKTIME 100 +/** + * Gets a pet's hunger value, depending it's hunger level. + * This value is only used in clif_parse_LoadEndAck() when calling clif_pet_emotion(). + * + * @param pd The pet. + * @return The pet's hunger value. + * + **/ static int pet_hungry_val(struct pet_data *pd) { nullpo_ret(pd); - if(pd->pet.hungry > 90) + if (pd->pet.hungry > PET_HUNGER_SATISFIED) return 4; - else if(pd->pet.hungry > 75) + else if (pd->pet.hungry > PET_HUNGER_NEUTRAL) return 3; - else if(pd->pet.hungry > 25) + else if (pd->pet.hungry > PET_HUNGER_HUNGRY) return 2; - else if(pd->pet.hungry > 10) + else if (pd->pet.hungry > PET_HUNGER_VERY_HUNGRY) return 1; else return 0; } -static void pet_set_intimate(struct pet_data *pd, int value) +/** + * Sets a pet's hunger value. + * + * @param pd The pet. + * @param value The pet's new hunger value. + * + **/ +static void pet_set_hunger(struct pet_data *pd, int value) { - int intimate; - struct map_session_data *sd; + nullpo_retv(pd); + nullpo_retv(pd->msd); + + pd->pet.hungry = cap_value(value, PET_HUNGER_STARVING, PET_HUNGER_STUFFED); + + clif->send_petdata(pd->msd, pd, 2, pd->pet.hungry); +} + +/** + * Calculates the value to store in a pet egg's 4th card slot + * based on the passed rename flag and intimacy value. + * + * @param rename_flag The pet's rename flag. + * @param intimacy The pet's intimacy value. + * @return The value to store in the pet egg's 4th card slot. (Defaults to 0 in case of error.) + * + **/ +static int pet_get_card4_value(int rename_flag, int intimacy) +{ + Assert_ret(rename_flag == 0 || rename_flag == 1); + Assert_ret(intimacy >= PET_INTIMACY_NONE && intimacy <= PET_INTIMACY_MAX); + + int card4 = rename_flag; + + if (intimacy <= PET_INTIMACY_SHY) + card4 |= (1 << 1); + else if (intimacy <= PET_INTIMACY_NEUTRAL) + card4 |= (2 << 1); + else if (intimacy <= PET_INTIMACY_CORDIAL) + card4 |= (3 << 1); + else if (intimacy <= PET_INTIMACY_LOYAL) + card4 |= (4 << 1); + else + card4 |= (5 << 1); + + return card4; +} +/** + * Sets a pet's intimacy value. + * Deletes the pet if its intimacy value reaches PET_INTIMACY_NONE (0). + * + * @param pd The pet. + * @param value The pet's new intimacy value. + * + **/ +static void pet_set_intimate(struct pet_data *pd, int value) +{ nullpo_retv(pd); - intimate = pd->pet.intimate; - sd = pd->msd; + nullpo_retv(pd->msd); - pd->pet.intimate = value; + pd->pet.intimate = cap_value(value, PET_INTIMACY_NONE, PET_INTIMACY_MAX); - if( (intimate >= battle_config.pet_equip_min_friendly && pd->pet.intimate < battle_config.pet_equip_min_friendly) || (intimate < battle_config.pet_equip_min_friendly && pd->pet.intimate >= battle_config.pet_equip_min_friendly) ) - status_calc_pc(sd,SCO_NONE); + struct map_session_data *sd = pd->msd; - /* Pet is lost, delete the egg */ - if (value <= 0) { + if (pd->pet.intimate == PET_INTIMACY_NONE) { // Pet is lost, delete it. int i; - ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].card[0] == CARD0_PET && - pd->pet.pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2])); + ARR_FIND(0, sd->status.inventorySize, i, sd->status.inventory[i].card[0] == CARD0_PET + && pd->pet.pet_id == MakeDWord(sd->status.inventory[i].card[1], sd->status.inventory[i].card[2])); - if (i != sd->status.inventorySize) { + if (i != sd->status.inventorySize) pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_EGG); + + if (battle_config.pet_remove_immediately != 0) { + pet_stop_attack(pd); + unit->remove_map(&pd->bl, CLR_OUTSIGHT, ALC_MARK); } + } else { + clif->send_petdata(sd, pd, 1, pd->pet.intimate); } + + status_calc_pc(sd, SCO_NONE); } +/** + * Creates a pet egg. + * + * @param sd The character who tries to create the pet egg. + * @param item_id The pet egg's item ID. + * @return 0 on failure, 1 on success. + * + **/ static int pet_create_egg(struct map_session_data *sd, int item_id) { - int pet_id = pet->search_petDB_index(item_id, PET_EGG); nullpo_ret(sd); - if (pet_id < 0) return 0; //No pet egg here. - if (!pc->inventoryblank(sd)) return 0; // Inventory full + + int pet_id = pet->search_petDB_index(item_id, PET_EGG); + + if (pet_id == INDEX_NOT_FOUND) // No pet egg here. + return 0; + + if (pc->inventoryblank(sd) == 0) // Inventory full. + return 0; + sd->catch_target_class = pet->db[pet_id].class_; - intif->create_pet(sd->status.account_id, sd->status.char_id, - pet->db[pet_id].class_, - mob->db(pet->db[pet_id].class_)->lv, - pet->db[pet_id].EggID, 0, - (short)pet->db[pet_id].intimate, - 100, 0, 1, pet->db[pet_id].jname); + intif->create_pet(sd->status.account_id, sd->status.char_id, pet->db[pet_id].class_, + mob->db(pet->db[pet_id].class_)->lv, pet->db[pet_id].EggID, 0, + (short)pet->db[pet_id].intimate, PET_HUNGER_STUFFED, + 0, 1, pet->db[pet_id].jname); + return 1; } @@ -162,48 +240,42 @@ static int pet_attackskill(struct pet_data *pd, int target_id) return 0; } +/** + * Checks if a pet can attack a target. + * + * @param sd The pet's master. + * @param bl The pet's target. + * @param type 0 - Support master when attacking. Not 0 - Support master when being attacked. + * @return 0 on failure, 1 on success. + * + **/ static int pet_target_check(struct map_session_data *sd, struct block_list *bl, int type) { - struct pet_data *pd; - int rate; - nullpo_ret(sd); - pd = sd->pd; + nullpo_ret(sd->pd); + nullpo_ret(bl); + Assert_ret(sd->pd->msd == NULL || sd->pd->msd->pd == sd->pd); - Assert_ret(pd->msd == 0 || pd->msd->pd == pd); + struct pet_data *pd = sd->pd; - if( bl == NULL || bl->type != BL_MOB || bl->prev == NULL - || pd->pet.intimate < battle_config.pet_support_min_friendly - || pd->pet.hungry < 1 - || pd->pet.class_ == status->get_class(bl)) - return 0; + if ((type == 0 && pd->petDB->attack_rate == 0) || (type != 0 && pd->petDB->defence_attack_rate == 0)) + return 0; // If base rate is 0, there's nothing to do. - if( pd->bl.m != bl->m - || !check_distance_bl(&pd->bl, bl, pd->db->range2)) + if (bl->type != BL_MOB || bl->prev == NULL || pd->pet.intimate < battle_config.pet_support_min_friendly + || pd->pet.hungry <= PET_HUNGER_STARVING || pd->pet.class_ == status->get_class(bl) + || pd->bl.m != bl->m || !check_distance_bl(&pd->bl, bl, pd->db->range2) + || status->check_skilluse(&pd->bl, bl, 0, 0) == 0) { return 0; + } - if (!status->check_skilluse(&pd->bl, bl, 0, 0)) - return 0; + int rate = ((type == 0) ? pd->petDB->attack_rate : pd->petDB->defence_attack_rate) * pd->rate_fix / 1000; - if(!type) { - rate = pd->petDB->attack_rate; - rate = rate * pd->rate_fix/1000; - if(pd->petDB->attack_rate > 0 && rate <= 0) - rate = 1; - } else { - rate = pd->petDB->defence_attack_rate; - rate = rate * pd->rate_fix/1000; - if(pd->petDB->defence_attack_rate > 0 && rate <= 0) - rate = 1; - } - if(rnd()%10000 < rate) - { - if(pd->target_id == 0 || rnd()%10000 < pd->petDB->change_target_rate) - pd->target_id = bl->id; - } + if (rnd() % 10000 < max(rate, 1) && (pd->target_id == 0 || rnd() % 10000 < pd->petDB->change_target_rate)) + pd->target_id = bl->id; return 0; } + /*========================================== * Pet SC Check [Skotlex] *------------------------------------------*/ @@ -226,59 +298,70 @@ static int pet_sc_check(struct map_session_data *sd, int type) return 0; } +/** + * Updates a pet's hunger value and timer and updates the pet's intimacy value if starving. + * + * @param tid The timer ID. + * @param tick The base amount of ticks to add to the pet's hunger timer. (The timer's current ticks when calling this fuction.) + * @param id The pet master's account ID. + * @param data Unused. + * @return 1 on failure, 0 on success. + * + **/ static int pet_hungry(int tid, int64 tick, int id, intptr_t data) { - struct map_session_data *sd; - struct pet_data *pd; - int interval; + struct map_session_data *sd = map->id2sd(id); - sd=map->id2sd(id); - if(!sd) + if (sd == NULL || sd->status.pet_id == 0 || sd->pd == NULL) return 1; - if(!sd->status.pet_id || !sd->pd) - return 1; + struct pet_data *pd = sd->pd; - pd = sd->pd; - if(pd->pet_hungry_timer != tid){ - ShowError("pet_hungry_timer %d != %d\n",pd->pet_hungry_timer,tid); + /** + * If HungerDelay is 0, there's nothing to do. + * Actually this shouldn't happen, since the timer wasn't added in pet_data_init(), but just to be sure... + * + **/ + if (pd->petDB->hungry_delay == 0) { + pet->hungry_timer_delete(pd); return 0; } + + if (pd->pet_hungry_timer != tid) { + ShowError("pet_hungry: pet_hungry_timer %d != %d\n", pd->pet_hungry_timer, tid); + return 1; + } + pd->pet_hungry_timer = INVALID_TIMER; - if (pd->pet.intimate <= 0) - return 1; //You lost the pet already, the rest is irrelevant. + if (pd->pet.intimate <= PET_INTIMACY_NONE) + return 1; // You lost the pet already, the rest is irrelevant. + + pet->set_hunger(pd, pd->pet.hungry - pd->petDB->hunger_decrement); - pd->pet.hungry--; - /* Pet Autofeed */ - if (battle_config.feature_enable_pet_autofeed != 0) { - if (pd->petDB->autofeed == 1 && pd->pet.autofeed == 1 && pd->pet.hungry <= 25) { + // Pet auto-feed. + if (battle_config.feature_enable_pet_autofeed == 1) { + if (pd->petDB->autofeed == 1 && pd->pet.autofeed == 1 && pd->pet.hungry <= PET_HUNGER_HUNGRY) pet->food(sd, pd); - } } - if( pd->pet.hungry < 0 ) - { + int interval = pd->petDB->hungry_delay; + + if (pd->pet.hungry == PET_HUNGER_STARVING) { pet_stop_attack(pd); - pd->pet.hungry = 0; - pet->set_intimate(pd, pd->pet.intimate - battle_config.pet_hungry_friendly_decrease); - if( pd->pet.intimate <= 0 ) - { - pd->pet.intimate = 0; - pd->status.speed = pd->db->status.speed; - } + pet->set_intimate(pd, pd->pet.intimate - pd->petDB->starving_decrement); + + if (sd->pd == NULL) + return 0; + status_calc_pet(pd, SCO_NONE); - clif->send_petdata(sd,pd,1,pd->pet.intimate); + + if (pd->petDB->starving_delay > 0) + interval = pd->petDB->starving_delay; } - clif->send_petdata(sd,pd,2,pd->pet.hungry); - if(battle_config.pet_hungry_delay_rate != 100) - interval = (pd->petDB->hungry_delay*battle_config.pet_hungry_delay_rate)/100; - else - interval = pd->petDB->hungry_delay; - if(interval <= 0) - interval = 1; - pd->pet_hungry_timer = timer->add(tick+interval,pet->hungry,sd->bl.id,0); + interval = interval * battle_config.pet_hungry_delay_rate / 100; + pd->pet_hungry_timer = timer->add(tick + max(interval, 1), pet->hungry, sd->bl.id, 0); return 0; } @@ -315,21 +398,31 @@ static int pet_hungry_timer_delete(struct pet_data *pd) return 1; } +/** + * Makes a pet start performing/dancing. + * + * @param sd Unused. + * @param pd The pet. + * @return 0 on failure, 1 on success. + * + **/ static int pet_performance(struct map_session_data *sd, struct pet_data *pd) { + nullpo_ret(pd); + int val; - nullpo_retr(1, pd); - if (pd->pet.intimate > 900) - val = (pd->petDB->s_perfor > 0)? 4:3; - else if(pd->pet.intimate > 750) //TODO: this is way too high + if (pd->pet.intimate > PET_INTIMACY_LOYAL) + val = (pd->petDB->s_perfor > 0) ? 4 : 3; + else if (pd->pet.intimate > PET_INTIMACY_CORDIAL) //TODO: This is way too high. val = 2; else val = 1; - pet_stop_walking(pd,STOPWALKING_FLAG_NONE | (2000<<8)); // Stop walking for 2000ms - clif->send_petdata(NULL, pd, 4, rnd()%val + 1); - pet->lootitem_drop(pd,NULL); + pet_stop_walking(pd, STOPWALKING_FLAG_NONE | (2000 << 8)); // Stop walking for 2 seconds. + clif->send_petdata(NULL, pd, 4, rnd() % val + 1); + pet->lootitem_drop(pd, NULL); + return 1; } @@ -348,6 +441,8 @@ static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd) if (i != sd->status.inventorySize) { sd->status.inventory[i].attribute &= ~ATTR_BROKEN; sd->status.inventory[i].bound = IBT_NONE; + sd->status.inventory[i].card[3] = pet->get_card4_value(pd->pet.rename_flag, pd->pet.intimate); + clif->inventoryList(sd); } else { // The pet egg wasn't found: it was probably hatched with the old system that deleted the egg. struct item tmp_item = {0}; @@ -358,14 +453,13 @@ static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd) tmp_item.card[0] = CARD0_PET; tmp_item.card[1] = GetWord(pd->pet.pet_id, 0); tmp_item.card[2] = GetWord(pd->pet.pet_id, 1); - tmp_item.card[3] = pd->pet.rename_flag; + tmp_item.card[3] = pet->get_card4_value(pd->pet.rename_flag, pd->pet.intimate); if ((flag = pc->additem(sd, &tmp_item, 1, LOG_TYPE_EGG)) != 0) { clif->additem(sd, 0, 0, flag); map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } #if PACKETVER >= 20180704 - clif->inventoryList(sd); clif->send_petdata(sd, pd, 6, 0); #endif pd->pet.incubate = 1; @@ -377,78 +471,109 @@ static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd) return 1; } +/** + * Initializes a pet. + * + * @param sd The pet's master. + * @param petinfo The pet's status data. + * @return 1 on failure, 0 on success. + * + **/ static int pet_data_init(struct map_session_data *sd, struct s_pet *petinfo) { - struct pet_data *pd; - int i=0,interval=0; - nullpo_retr(1, sd); nullpo_retr(1, petinfo); - Assert_retr(1, sd->status.pet_id == 0 || sd->pd == 0 || sd->pd->msd == sd); + Assert_retr(1, sd->status.pet_id == 0 || sd->pd == NULL || sd->pd->msd == sd); - if(sd->status.account_id != petinfo->account_id || sd->status.char_id != petinfo->char_id) { + if (sd->status.account_id != petinfo->account_id || sd->status.char_id != petinfo->char_id) { sd->status.pet_id = 0; return 1; } + if (sd->status.pet_id != petinfo->pet_id) { - if (sd->status.pet_id) { - //Wrong pet?? Set incubate to no and send it back for saving. + if (sd->status.pet_id != 0) { // Wrong pet? Set incubate to no and send it back for saving. petinfo->incubate = 1; - intif->save_petdata(sd->status.account_id,petinfo); + intif->save_petdata(sd->status.account_id, petinfo); sd->status.pet_id = 0; return 1; } - //The pet_id value was lost? odd... restore it. - sd->status.pet_id = petinfo->pet_id; + + sd->status.pet_id = petinfo->pet_id; // The pet_id value was lost? Odd... Restore it. } - i = pet->search_petDB_index(petinfo->class_,PET_CLASS); - if(i < 0) { + int i = pet->search_petDB_index(petinfo->class_, PET_CLASS); + + if (i == INDEX_NOT_FOUND) { sd->status.pet_id = 0; return 1; } + + struct pet_data *pd; + CREATE(pd, struct pet_data, 1); - pd->bl.type = BL_PET; - pd->bl.id = npc->get_new_npc_id(); + memcpy(&pd->pet, petinfo, sizeof(struct s_pet)); sd->pd = pd; - pd->msd = sd; pd->petDB = &pet->db[i]; - pd->db = mob->db(petinfo->class_); - memcpy(&pd->pet, petinfo, sizeof(struct s_pet)); - status->set_viewdata(&pd->bl, petinfo->class_); + pd->db = mob->db(pd->petDB->class_); + pd->bl.type = BL_PET; + pd->bl.id = npc->get_new_npc_id(); + status->set_viewdata(&pd->bl, pd->petDB->class_); unit->dataset(&pd->bl); pd->ud.dir = sd->ud.dir; - pd->bl.m = sd->bl.m; pd->bl.x = sd->bl.x; pd->bl.y = sd->bl.y; unit->calc_pos(&pd->bl, sd->bl.x, sd->bl.y, sd->ud.dir); pd->bl.x = pd->ud.to_x; pd->bl.y = pd->ud.to_y; - map->addiddb(&pd->bl); - status_calc_pet(pd,SCO_FIRST); - + status_calc_pet(pd, SCO_FIRST); pd->last_thinktime = timer->gettick(); pd->state.skillbonus = 0; - if( battle_config.pet_status_support ) - script->run_pet(pet->db[i].pet_script,0,sd->bl.id,0); + if (pd->petDB->pet_script != NULL && battle_config.pet_status_support == 1) + script->run_pet(pd->petDB->pet_script, 0, sd->bl.id, 0); - if( pd->petDB ) { - if( pd->petDB->equip_script ) - status_calc_pc(sd,SCO_NONE); + if (pd->petDB->equip_script != NULL) + status_calc_pc(sd, SCO_NONE); - if( battle_config.pet_hungry_delay_rate != 100 ) - interval = (pd->petDB->hungry_delay*battle_config.pet_hungry_delay_rate)/100; - else - interval = pd->petDB->hungry_delay; + pd->pet_hungry_timer = INVALID_TIMER; + + if (pd->petDB->hungry_delay > 0) { + int interval = pd->petDB->hungry_delay * battle_config.pet_hungry_delay_rate / 100; + pd->pet_hungry_timer = timer->add(timer->gettick() + max(interval, 1), pet->hungry, sd->bl.id, 0); } - if( interval <= 0 ) - interval = 1; - pd->pet_hungry_timer = timer->add(timer->gettick() + interval, pet->hungry, sd->bl.id, 0); + return 0; +} + +/** + * Spawns a pet. + * + * @param sd The pet's master. + * @param birth_process Whether the pet is spawned during birth process. + * @return 1 on failure, 0 on success. + * + **/ +static int pet_spawn(struct map_session_data *sd, bool birth_process) +{ + nullpo_retr(1, sd); + nullpo_retr(1, sd->pd); + + if (map->addblock(&sd->pd->bl) != 0 || !clif->spawn(&sd->pd->bl)) + return 1; + + clif->send_petdata(sd, sd->pd, 0, 0); + clif->send_petdata(sd, sd->pd, 5, battle_config.pet_hair_style); + +#if PACKETVER >= 20180704 + if (birth_process) + clif->send_petdata(sd, sd->pd, 6, 1); +#endif + + clif->send_petstatus(sd); + return 0; } @@ -476,17 +601,11 @@ static int pet_birth_process(struct map_session_data *sd, struct s_pet *petinfo) if (map->save_settings&8) chrif->save(sd,0); //is it REALLY Needed to save the char for hatching a pet? [Skotlex] - if(sd->bl.prev != NULL) { - map->addblock(&sd->pd->bl); - clif->spawn(&sd->pd->bl); - clif->send_petdata(sd,sd->pd, 0,0); - clif->send_petdata(sd,sd->pd, 5,battle_config.pet_hair_style); -#if PACKETVER >= 20180704 - clif->send_petdata(sd, sd->pd, 6, 1); -#endif - clif->send_petdata(NULL, sd->pd, 3, sd->pd->vd.head_bottom); - clif->send_petstatus(sd); + if (sd->pd != NULL && sd->bl.prev != NULL) { + if (pet->spawn(sd, true) != 0) + return 1; } + Assert_retr(1, sd->status.pet_id == 0 || sd->pd == 0 || sd->pd->msd == sd); return 0; @@ -525,13 +644,9 @@ static int pet_recv_petdata(int account_id, struct s_pet *p, int flag) } } else { pet->data_init(sd,p); - if(sd->pd && sd->bl.prev != NULL) { - map->addblock(&sd->pd->bl); - clif->spawn(&sd->pd->bl); - clif->send_petdata(sd,sd->pd,0,0); - clif->send_petdata(sd,sd->pd,5,battle_config.pet_hair_style); - clif->send_petdata(NULL, sd->pd, 3, sd->pd->vd.head_bottom); - clif->send_petstatus(sd); + if (sd->pd != NULL && sd->bl.prev != NULL) { + if (pet->spawn(sd, false) != 0) + return 1; } } @@ -563,57 +678,64 @@ static int pet_catch_process1(struct map_session_data *sd, int target_class) return 0; } +/** + * Begins the actual process of catching a monster. + * + * @param sd The character who tries to catch the monster. + * @param target_id The monster ID of the pet, which the character tries to catch. + * @return 1 on failure, 0 on success. + * + **/ static int pet_catch_process2(struct map_session_data *sd, int target_id) { - struct mob_data *md = NULL; - struct block_list *bl = NULL; - int i = 0, pet_catch_rate = 0; - nullpo_retr(1, sd); - bl = map->id2bl(target_id); // TODO: Why does this not use map->id2md? - md = BL_CAST(BL_MOB, bl); - if (md == NULL || md->bl.prev == NULL) { - // Invalid inputs/state, abort capture. - clif->pet_roulette(sd,0); + struct mob_data *md = BL_CAST(BL_MOB, map->id2bl(target_id)); //TODO: Why does this not use map->id2md? + + if (md == NULL || md->bl.prev == NULL) { // Invalid inputs/state, abort capture. + clif->pet_roulette(sd, 0); sd->catch_target_class = -1; sd->itemid = -1; sd->itemindex = -1; return 1; } - //FIXME: delete taming item here, if this was an item-invoked capture and the item was flagged as delay-consume [ultramage] - - i = pet->search_petDB_index(md->class_,PET_CLASS); - //catch_target_class == 0 is used for universal lures (except bosses for now). [Skotlex] - if (sd->catch_target_class == 0 && !(md->status.mode&MD_BOSS)) + // catch_target_class == 0 is used for universal lures (except bosses for now). [Skotlex] + if (sd->catch_target_class == 0 && (md->status.mode & MD_BOSS) == 0) sd->catch_target_class = md->class_; - if(i < 0 || sd->catch_target_class != md->class_) { - clif->emotion(&md->bl, E_AG); //mob will do /ag if wrong lure is used on them. - clif->pet_roulette(sd,0); + + int i = pet->search_petDB_index(md->class_, PET_CLASS); + + if (i == INDEX_NOT_FOUND || sd->catch_target_class != md->class_) { + clif->emotion(&md->bl, E_AG); // Mob will do /ag if wrong lure is used on it. + clif->pet_roulette(sd, 0); sd->catch_target_class = -1; return 1; } - pet_catch_rate = (pet->db[i].capture + (sd->status.base_level - md->level)*30 + sd->battle_status.luk*20)*(200 - get_percentage(md->status.hp, md->status.max_hp))/100; + int pet_catch_rate; + int capture = pet->db[i].capture; + int mob_hp_perc = get_percentage(md->status.hp, md->status.max_hp); - if(pet_catch_rate < 1) pet_catch_rate = 1; - if(battle->bc->pet_catch_rate != 100) - pet_catch_rate = (pet_catch_rate*battle->bc->pet_catch_rate)/100; + if (battle_config.pet_catch_rate_official_formula == 1) { + pet_catch_rate = capture * (100 - mob_hp_perc) / 100 + capture; + } else { + int lvl_diff_mod = (sd->status.base_level - md->level) * 30; + int char_luk_mod = sd->battle_status.luk * 20; + pet_catch_rate = (capture + lvl_diff_mod + char_luk_mod) * (200 - mob_hp_perc) / 100; + } - if(rnd()%10000 < pet_catch_rate) - { - unit->remove_map(&md->bl,CLR_OUTSIGHT,ALC_MARK); - status_kill(&md->bl); - clif->pet_roulette(sd,1); - intif->create_pet(sd->status.account_id,sd->status.char_id,pet->db[i].class_,mob->db(pet->db[i].class_)->lv, - pet->db[i].EggID,0,pet->db[i].intimate,100,0,1,pet->db[i].jname); + pet_catch_rate = cap_value(pet_catch_rate, 1, 10000) * battle_config.pet_catch_rate / 100; + if (rnd() % 10000 < pet_catch_rate) { + unit->remove_map(&md->bl, CLR_OUTSIGHT, ALC_MARK); + status_kill(&md->bl); + clif->pet_roulette(sd, 1); + intif->create_pet(sd->status.account_id, sd->status.char_id, pet->db[i].class_, mob->db(pet->db[i].class_)->lv, + pet->db[i].EggID, 0, pet->db[i].intimate, PET_HUNGER_STUFFED, 0, 1, pet->db[i].jname); achievement->validate_taming(sd, pet->db[i].class_); - } - else - { - clif->pet_roulette(sd,0); + } else { + clif->pet_roulette(sd, 0); sd->catch_target_class = -1; } @@ -661,7 +783,7 @@ static bool pet_get_egg(int account_id, int pet_class, int pet_id) tmp_item.card[0] = CARD0_PET; tmp_item.card[1] = GetWord(pet_id,0); tmp_item.card[2] = GetWord(pet_id,1); - tmp_item.card[3] = 0; //New pets are not named. + tmp_item.card[3] = pet->get_card4_value(0, pet->db[i].intimate); if((ret = pc->additem(sd,&tmp_item,1,LOG_TYPE_PICKDROP_PLAYER))) { clif->additem(sd,0,0,ret); map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); @@ -670,42 +792,52 @@ static bool pet_get_egg(int account_id, int pet_class, int pet_id) return true; } +/** + * Performs selected pet menu option. + * + * @param sd The pet's master. + * @param menunum The selected menu option. + * @return 1 on failure, 0 on success. + * + **/ static int pet_menu(struct map_session_data *sd, int menunum) { - struct item_data *egg_id; - nullpo_ret(sd); - if (sd->pd == NULL) - return 1; + nullpo_retr(1, sd); + nullpo_retr(1, sd->pd); - //You lost the pet already. - if(!sd->status.pet_id || sd->pd->pet.intimate <= 0 || sd->pd->pet.incubate) - return 1; + if (sd->status.pet_id == 0 || sd->pd->pet.intimate <= PET_INTIMACY_NONE || sd->pd->pet.incubate != 0) + return 1; // You lost the pet already. - egg_id = itemdb->exists(sd->pd->petDB->EggID); - if (egg_id) { - if ((egg_id->flag.trade_restriction&ITR_NODROP) && !pc->inventoryblank(sd)) { - clif->message(sd->fd, msg_sd(sd,451)); // You can't return your pet because your inventory is full. + struct item_data *egg_id = itemdb->exists(sd->pd->petDB->EggID); + + if (egg_id != NULL) { + if ((egg_id->flag.trade_restriction & ITR_NODROP) != 0 && pc->inventoryblank(sd) == 0) { + clif->message(sd->fd, msg_sd(sd, 451)); // You can't return your pet because your inventory is full. return 1; } } - switch(menunum) { - case 0: - clif->send_petstatus(sd); - break; - case 1: - pet->food(sd, sd->pd); - break; - case 2: - pet->performance(sd, sd->pd); - break; - case 3: - pet->return_egg(sd, sd->pd); - break; - case 4: - pet->unequipitem(sd, sd->pd); - break; + switch (menunum) { + case 0: + clif->send_petstatus(sd); + break; + case 1: + pet->food(sd, sd->pd); + break; + case 2: + pet->performance(sd, sd->pd); + break; + case 3: + pet->return_egg(sd, sd->pd); + break; + case 4: + pet->unequipitem(sd, sd->pd); + break; + default: ; + ShowError("pet_menu: Unexpected menu option: %d\n", menunum); + return 1; } + return 0; } @@ -750,8 +882,6 @@ static int pet_change_name_ack(struct map_session_data *sd, const char *name, in aFree(newname); clif->blname_ack(0,&pd->bl); pd->pet.rename_flag = 1; - clif->send_petdata(NULL, sd->pd, 3, sd->pd->vd.head_bottom); - clif->send_petstatus(sd); return 1; } @@ -830,49 +960,53 @@ static int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) return 0; } +/** + * Feeds a pet and updates its intimacy value. + * + * @param sd The pet's master. + * @param pd The pet. + * @return 1 on failure, 0 on success. + * + **/ static int pet_food(struct map_session_data *sd, struct pet_data *pd) { - int i, food_id; - + nullpo_retr(1, sd); nullpo_retr(1, pd); - food_id = pd->petDB->FoodID; - i = pc->search_inventory(sd, food_id); - if(i == INDEX_NOT_FOUND) { - clif->pet_food(sd, food_id, 0); + Assert_retr(1, sd->status.pet_id == pd->pet.pet_id); + + int i = pc->search_inventory(sd, pd->petDB->FoodID); + + if (i == INDEX_NOT_FOUND) { + clif->pet_food(sd, pd->petDB->FoodID, 0); return 1; } + pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME); - if (pd->pet.hungry > 90) { - pet->set_intimate(pd, pd->pet.intimate - pd->petDB->r_full); - } else { - int add_intimate = 0; - if (battle_config.pet_friendly_rate != 100) - add_intimate = (pd->petDB->r_hungry * battle_config.pet_friendly_rate)/100; - else - add_intimate = pd->petDB->r_hungry; - if (pd->pet.hungry > 75) { - add_intimate = add_intimate >> 1; - if (add_intimate <= 0) - add_intimate = 1; - } - pet->set_intimate(pd, pd->pet.intimate + add_intimate); - } - if (pd->pet.intimate <= 0) { - pd->pet.intimate = 0; - pet_stop_attack(pd); - pd->status.speed = pd->db->status.speed; - } else if (pd->pet.intimate > 1000) { - pd->pet.intimate = 1000; - } - status_calc_pet(pd, SCO_NONE); - pd->pet.hungry += pd->petDB->fullness; - if( pd->pet.hungry > 100 ) - pd->pet.hungry = 100; + int intimacy = 0; + + if (pd->pet.hungry >= PET_HUNGER_STUFFED) + intimacy -= pd->petDB->r_full; // Decrease intimacy by OverFeedDecrement. + else if (pd->pet.hungry > PET_HUNGER_SATISFIED) + intimacy -= pd->petDB->r_full / 2; // Decrease intimacy by 50% of OverFeedDecrement. + else if (pd->pet.hungry > PET_HUNGER_NEUTRAL) + intimacy -= pd->petDB->r_full * 5 / 100; // Decrease intimacy by 5% of OverFeedDecrement. + else if (pd->pet.hungry > PET_HUNGER_HUNGRY) + intimacy += pd->petDB->r_hungry * 75 / 100; // Increase intimacy by 75% of FeedIncrement. + else if (pd->pet.hungry > PET_HUNGER_VERY_HUNGRY) + intimacy += pd->petDB->r_hungry; // Increase intimacy by FeedIncrement. + else + intimacy += pd->petDB->r_hungry / 2; // Increase intimacy by 50% of FeedIncrement. + + intimacy = intimacy * battle_config.pet_friendly_rate / 100; + pet->set_intimate(pd, pd->pet.intimate + intimacy); + + if (sd->pd == NULL) + return 0; - clif->send_petdata(sd,pd,2,pd->pet.hungry); - clif->send_petdata(sd,pd,1,pd->pet.intimate); - clif->pet_food(sd,pd->petDB->FoodID,1); + status_calc_pet(pd, SCO_NONE); + pet->set_hunger(pd, pd->pet.hungry + pd->petDB->fullness); + clif->pet_food(sd, pd->petDB->FoodID, 1); return 0; } @@ -891,7 +1025,8 @@ static int pet_randomwalk(struct pet_data *pd, int64 tick) int r=rnd(); int x=pd->bl.x+r%(d*2+1)-d; int y=pd->bl.y+r/(d*2+1)%(d*2+1)-d; - if(map->getcell (pd->bl.m, &pd->bl, x, y, CELL_CHKPASS) && unit->walktoxy(&pd->bl, x, y, 0)) { + if (map->getcell(pd->bl.m, &pd->bl, x, y, CELL_CHKPASS) != 0 + && unit->walk_toxy(&pd->bl, x, y, 0) == 0) { pd->move_fail_count=0; break; } @@ -918,126 +1053,147 @@ static int pet_randomwalk(struct pet_data *pd, int64 tick) return 0; } +/** + * Performs pet's AI actions. (Moving, attacking, etc.) + * + * @param pd The pet. + * @param sd The pet's master. + * @param tick Timestamp of last support. + * @return Always 0. + * + **/ static int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, int64 tick) { - struct block_list *target = NULL; nullpo_ret(pd); + nullpo_ret(pd->bl.prev); + nullpo_ret(sd); + nullpo_ret(sd->bl.prev); - if(pd->bl.prev == NULL || sd == NULL || sd->bl.prev == NULL) + if (DIFF_TICK(tick, pd->last_thinktime) < MIN_PETTHINKTIME) return 0; - if(DIFF_TICK(tick,pd->last_thinktime) < MIN_PETTHINKTIME) - return 0; - pd->last_thinktime=tick; + pd->last_thinktime = tick; - if(pd->ud.attacktimer != INVALID_TIMER || pd->ud.skilltimer != INVALID_TIMER || pd->bl.m != sd->bl.m) + if (pd->ud.attacktimer != INVALID_TIMER || pd->ud.skilltimer != INVALID_TIMER || pd->bl.m != sd->bl.m) return 0; - if(pd->ud.walktimer != INVALID_TIMER && pd->ud.walkpath.path_pos <= 2) - return 0; //No thinking when you just started to walk. + if (pd->ud.walktimer != INVALID_TIMER && pd->ud.walkpath.path_pos <= 2) + return 0; // No thinking when you just started to walk. - if(pd->pet.intimate <= 0) { - //Pet should just... well, random walk. - pet->randomwalk(pd,tick); + if (pd->pet.intimate <= PET_INTIMACY_NONE) { + pet->randomwalk(pd, tick); // Pet should just... well, random walk. return 0; } - if (!check_distance_bl(&sd->bl, &pd->bl, pd->db->range3)) { - //Master too far, chase. - if(pd->target_id) + if (!check_distance_bl(&sd->bl, &pd->bl, pd->db->range3)) { // Master too far away. Chase him. + if (pd->target_id != 0) pet->unlocktarget(pd); - if(pd->ud.walktimer != INVALID_TIMER && pd->ud.target == sd->bl.id) - return 0; //Already walking to him + + if (pd->ud.walktimer != INVALID_TIMER && pd->ud.target == sd->bl.id) + return 0; // Already walking to him. + if (DIFF_TICK(tick, pd->ud.canmove_tick) < 0) - return 0; //Can't move yet. - pd->status.speed = (sd->battle_status.speed>>1); - if(pd->status.speed <= 0) - pd->status.speed = 1; - if (!unit->walktobl(&pd->bl, &sd->bl, 3, 0)) - pet->randomwalk(pd,tick); + return 0; // Can't move yet. + + pd->status.speed = max(sd->battle_status.speed / 2, MIN_WALK_SPEED); + + if (unit->walktobl(&pd->bl, &sd->bl, 3, 0) == 0) + pet->randomwalk(pd, tick); + return 0; } - //Return speed to normal. - if (pd->status.speed != pd->petDB->speed) { + if (pd->status.speed != pd->petDB->speed) { // Reset speed to normal. if (pd->ud.walktimer != INVALID_TIMER) - return 0; //Wait until the pet finishes walking back to master. + return 0; // Wait until the pet finishes walking back to master. + pd->status.speed = pd->petDB->speed; - pd->ud.state.change_walk_target = pd->ud.state.speed_changed = 1; + pd->ud.state.speed_changed = 1; + pd->ud.state.change_walk_target = 1; } - if (pd->target_id) { - target= map->id2bl(pd->target_id); - if (!target || pd->bl.m != target->m || status->isdead(target) - || !check_distance_bl(&pd->bl, target, pd->db->range3) - ) { + struct block_list *target = NULL; + + if (pd->target_id != 0) { + target = map->id2bl(pd->target_id); + + if (target == NULL || pd->bl.m != target->m || status->isdead(target) == 1 + || !check_distance_bl(&pd->bl, target, pd->db->range3)) { target = NULL; pet->unlocktarget(pd); } } - if(!target && pd->loot && pd->msd && pc_has_permission(pd->msd, PC_PERM_TRADE) && pd->loot->count < pd->loot->max && DIFF_TICK(tick,pd->ud.canact_tick)>0) { - //Use half the pet's range of sight. - map->foreachinrange(pet->ai_sub_hard_lootsearch,&pd->bl, - pd->db->range2/2, BL_ITEM,pd,&target); + if (target == NULL && pd->loot != NULL && pd->msd != NULL && pc_has_permission(pd->msd, PC_PERM_TRADE) + && pd->loot->count < pd->loot->max && DIFF_TICK(tick, pd->ud.canact_tick) > 0) { // Use half the pet's range of sight. + map->foreachinrange(pet->ai_sub_hard_lootsearch, &pd->bl, pd->db->range2 / 2, BL_ITEM, pd, &target); } - if (!target) { - //Just walk around. + if (target == NULL) { // Just walk around. if (check_distance_bl(&sd->bl, &pd->bl, 3)) - return 0; //Already next to master. + return 0; // Already next to master. - if(pd->ud.walktimer != INVALID_TIMER && check_distance_blxy(&sd->bl, pd->ud.to_x,pd->ud.to_y, 3)) - return 0; //Already walking to him + if (pd->ud.walktimer != INVALID_TIMER && check_distance_blxy(&sd->bl, pd->ud.to_x, pd->ud.to_y, 3)) + return 0; // Already walking to him. unit->calc_pos(&pd->bl, sd->bl.x, sd->bl.y, sd->ud.dir); - if(!unit->walktoxy(&pd->bl,pd->ud.to_x,pd->ud.to_y,0)) - pet->randomwalk(pd,tick); + + if (unit->walk_toxy(&pd->bl, pd->ud.to_x, pd->ud.to_y, 0) != 0) + pet->randomwalk(pd, tick); return 0; } - if(pd->ud.target == target->id && - (pd->ud.attacktimer != INVALID_TIMER || pd->ud.walktimer != INVALID_TIMER)) - return 0; //Target already locked. + if (pd->ud.target == target->id && (pd->ud.attacktimer != INVALID_TIMER || pd->ud.walktimer != INVALID_TIMER)) + return 0; // Target already locked. + + if (target->type != BL_ITEM) { // Target is enemy. Chase or attack it. + if (!battle->check_range(&pd->bl, target, pd->status.rhw.range)) { // Chase enemy. + if (unit->walktobl(&pd->bl, target, pd->status.rhw.range, 2) == 0) // Enemy is unreachable. + pet->unlocktarget(pd); - if (target->type != BL_ITEM) - { //enemy targetted - if(!battle->check_range(&pd->bl,target,pd->status.rhw.range)) { - //Chase - if(!unit->walktobl(&pd->bl, target, pd->status.rhw.range, 2)) - pet->unlocktarget(pd); //Unreachable target. return 0; } - //Continuous attack. - unit->attack(&pd->bl, pd->target_id, 1); - } else { - //Item Targeted, attempt loot - if (!check_distance_bl(&pd->bl, target, 1)) { - //Out of range - if(!unit->walktobl(&pd->bl, target, 1, 1)) //Unreachable target. + + unit->attack(&pd->bl, pd->target_id, 1); // Start/continue attacking. + } else { // Target is item. Attempt looting. + if (!check_distance_bl(&pd->bl, target, 1)) { // Item is out of range. + if (unit->walktobl(&pd->bl, target, 1, 1) == 0) // Item is unreachable. pet->unlocktarget(pd); + return 0; - } else{ + } + + if (pd->loot->count < pd->loot->max) { struct flooritem_data *fitem = BL_UCAST(BL_ITEM, target); - if(pd->loot->count < pd->loot->max){ - memcpy(&pd->loot->item[pd->loot->count++],&fitem->item_data,sizeof(pd->loot->item[0])); - pd->loot->weight += itemdb_weight(fitem->item_data.nameid)*fitem->item_data.amount; - map->clearflooritem(target); - } - //Target is unlocked regardless of whether it was picked or not. - pet->unlocktarget(pd); + + memcpy(&pd->loot->item[pd->loot->count++], &fitem->item_data, sizeof(pd->loot->item[0])); + pd->loot->weight += itemdb_weight(fitem->item_data.nameid) * fitem->item_data.amount; + map->clearflooritem(target); } + + pet->unlocktarget(pd); // Target is unlocked regardless of whether the item was picked or not. } + return 0; } +/** + * Calls pet_ai_sub_hard() for a character's pet if conditions are fulfilled. + * + * @param sd The character. + * @param ap Additional arguments. In this case only the time stamp of pet AI timer execution. + * @return Always 0. + * + **/ static int pet_ai_sub_foreachclient(struct map_session_data *sd, va_list ap) { - int64 tick = va_arg(ap,int64); nullpo_ret(sd); - if(sd->status.pet_id && sd->pd) - pet->ai_sub_hard(sd->pd,sd,tick); + + int64 tick = va_arg(ap, int64); + + if (sd->bl.prev != NULL && sd->status.pet_id != 0 && sd->pd != NULL && sd->pd->bl.prev != NULL) + pet->ai_sub_hard(sd->pd, sd, tick); return 0; } @@ -1142,45 +1298,54 @@ static int pet_lootitem_drop(struct pet_data *pd, struct map_session_data *sd) return 1; } -/*========================================== - * pet bonus giving skills [Valaris] / Rewritten by [Skotlex] - *------------------------------------------*/ +/** + * Applies pet's stat bonuses to its master. (See petskillbonus() script command.) + * + * @param tid The timer ID + * @param tick The base amount of ticks to add to the pet's bonus timer. (The timer's current ticks when calling this fuction.) + * @param id The pet's master's account ID. + * @param data Unused. + * @return 1 on failure, 0 on success. + * + **/ static int pet_skill_bonus_timer(int tid, int64 tick, int id, intptr_t data) { - struct map_session_data *sd=map->id2sd(id); - struct pet_data *pd; - int bonus; - int duration = 0; + struct map_session_data *sd = map->id2sd(id); - if(sd == NULL || sd->pd==NULL || sd->pd->bonus == NULL) + if (sd == NULL || sd->pd == NULL || sd->pd->bonus == NULL) return 1; - pd=sd->pd; + struct pet_data *pd = sd->pd; - if(pd->bonus->timer != tid) { - ShowError("pet_skill_bonus_timer %d != %d\n",pd->bonus->timer,tid); + if (pd->bonus->timer != tid) { + ShowError("pet_skill_bonus_timer %d != %d\n", pd->bonus->timer, tid); pd->bonus->timer = INVALID_TIMER; - return 0; + return 1; } - // determine the time for the next timer - if (pd->state.skillbonus && pd->bonus->delay > 0) { + int bonus; + int duration; + + // Determine the time for the next timer. + if (pd->state.skillbonus == 1 && pd->bonus->delay > 0) { bonus = 0; - duration = pd->bonus->delay*1000; // the duration until pet bonuses will be reactivated again - } else if (pd->pet.intimate) { + duration = pd->bonus->delay * 1000; // The duration until pet bonuses will be reactivated again. + } else if (pd->pet.intimate > PET_INTIMACY_NONE) { bonus = 1; - duration = pd->bonus->duration*1000; // the duration for pet bonuses to be in effect - } else { //Lost pet... + duration = pd->bonus->duration * 1000; // The duration for pet bonuses to be in effect. + } else { // Lost pet... pd->bonus->timer = INVALID_TIMER; - return 0; + return 1; } if (pd->state.skillbonus != bonus) { pd->state.skillbonus = bonus; status_calc_pc(sd, SCO_NONE); } - // wait for the next timer - pd->bonus->timer=timer->add(tick+duration,pet->skill_bonus_timer,sd->bl.id,0); + + // Wait for the next timer. + pd->bonus->timer = timer->add(tick + duration, pet->skill_bonus_timer, sd->bl.id, 0); + return 0; } @@ -1326,115 +1491,155 @@ static int pet_read_db_libconfig(const char *filename, bool ignore_missing) return count; } +/** + * Reads a single pet from DB. + * + * @param it The libconfig settings block, which contains the pet's data. + * @param n The pet's index in pet->db[]. + * @param source The pet DB's file name. + * @return 0 on failure, the pet's ID on success. + * + **/ static int pet_read_db_sub(struct config_setting_t *it, int n, const char *source) { - struct config_setting_t *t = NULL; - struct item_data *data = NULL; - const char *str = NULL; - int i32 = 0; - nullpo_ret(it); nullpo_ret(source); Assert_ret(n >= 0 && n < MAX_PET_DB); - if (!libconfig->setting_lookup_int(it, "Id", &i32)) { + int i32 = 0; + + if (libconfig->setting_lookup_int(it, "Id", &i32) == CONFIG_FALSE) { ShowWarning("pet_read_db_sub: Missing Id in \"%s\", entry #%d, skipping.\n", source, n); return 0; } - pet->db[n].class_ = i32; - if (!libconfig->setting_lookup_string(it, "SpriteName", &str) || !*str ) { - ShowWarning("pet_read_db_sub: Missing SpriteName in pet %d of \"%s\", skipping.\n", pet->db[n].class_, source); + if (mob->db_checkid(i32) == 0) { + ShowWarning("pet_read_db_sub: Invalid Id in \"%s\", entry #%d, skipping.\n", source, n); return 0; } - safestrncpy(pet->db[n].name, str, sizeof(pet->db[n].name)); - if (!libconfig->setting_lookup_string(it, "Name", &str) || !*str) { - ShowWarning("pet_read_db_sub: Missing Name in pet %d of \"%s\", skipping.\n", pet->db[n].class_, source); + pet->db[n].class_ = i32; + safestrncpy(pet->db[n].name, mob->db(i32)->sprite, sizeof(pet->db[n].name)); + + const char *str; + + if (libconfig->setting_lookup_string(it, "Name", &str) == CONFIG_FALSE || *str == '\0') { + ShowWarning("pet_read_db_sub: Missing Name in pet %d of \"%s\", skipping.\n", + pet->db[n].class_, source); return 0; } + safestrncpy(pet->db[n].jname, str, sizeof(pet->db[n].jname)); - if (libconfig->setting_lookup_string(it, "TamingItem", &str)) { - if (!(data = itemdb->name2id(str))) { - ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source); - } else { - pet->db[n].itemID = data->nameid; - } + if (libconfig->setting_lookup_string(it, "EggItem", &str) == CONFIG_FALSE || *str == '\0') { + ShowWarning("pet_read_db_sub: Missing EggItem in pet %d of \"%s\", skipping.\n", + pet->db[n].class_, source); + return 0; } - if (libconfig->setting_lookup_string(it, "EggItem", &str)) { - if (!(data = itemdb->name2id(str))) { - ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source); - } else { - pet->db[n].EggID = data->nameid; - } + struct item_data *data; + + if ((data = itemdb->name2id(str)) == NULL) { + ShowWarning("pet_read_db_sub: Invalid EggItem '%s' in pet %d of \"%s\", skipping.\n", + str, pet->db[n].class_, source); + return 0; } - if (libconfig->setting_lookup_string(it, "AccessoryItem", &str)) { - if (!(data = itemdb->name2id(str))) { - ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source); - } else { - pet->db[n].AcceID = data->nameid; - } + pet->db[n].EggID = data->nameid; + + if (libconfig->setting_lookup_string(it, "TamingItem", &str) == CONFIG_TRUE) { + if ((data = itemdb->name2id(str)) == NULL) + ShowWarning("pet_read_db_sub: Invalid TamingItem '%s' in pet %d of \"%s\", defaulting to 0.\n", + str, pet->db[n].class_, source); + else + pet->db[n].itemID = data->nameid; } - if (libconfig->setting_lookup_string(it, "FoodItem", &str)) { - if (!(data = itemdb->name2id(str))) { - ShowWarning("pet_read_db_sub: Invalid item '%s' in pet %d of \"%s\", defaulting to 0.\n", str, pet->db[n].class_, source); - } else { + pet->db[n].FoodID = 537; + + if (libconfig->setting_lookup_string(it, "FoodItem", &str) == CONFIG_TRUE) { + if ((data = itemdb->name2id(str)) == NULL) + ShowWarning("pet_read_db_sub: Invalid FoodItem '%s' in pet %d of \"%s\", defaulting to Pet_Food (ID=537).\n", + str, pet->db[n].class_, source); + else pet->db[n].FoodID = data->nameid; - } } - if (libconfig->setting_lookup_int(it, "FoodEffectiveness", &i32)) - pet->db[n].fullness = i32; + if (libconfig->setting_lookup_string(it, "AccessoryItem", &str) == CONFIG_TRUE) { + if ((data = itemdb->name2id(str)) == NULL) + ShowWarning("pet_read_db_sub: Invalid AccessoryItem '%s' in pet %d of \"%s\", defaulting to 0.\n", + str, pet->db[n].class_, source); + else + pet->db[n].AcceID = data->nameid; + } - if (libconfig->setting_lookup_int(it, "HungerDelay", &i32)) - pet->db[n].hungry_delay = i32 * 1000; + int ret = libconfig->setting_lookup_int(it, "FoodEffectiveness", &i32); + pet->db[n].fullness = (ret == CONFIG_FALSE) ? 80 : cap_value(i32, 1, PET_HUNGER_STUFFED); - if ((t = libconfig->setting_get_member(it, "Intimacy"))) { - if (config_setting_is_group(t)) { - pet->read_db_sub_intimacy(n, t); - } - } - if (pet->db[n].r_hungry <= 0) - pet->db[n].r_hungry = 1; + ret = libconfig->setting_lookup_int(it, "HungerDelay", &i32); + pet->db[n].hungry_delay = (ret == CONFIG_FALSE) ? 60000 : cap_value(1000 * i32, 0, INT_MAX); - if (libconfig->setting_lookup_int(it, "CaptureRate", &i32)) - pet->db[n].capture = i32; + ret = libconfig->setting_lookup_int(it, "HungerDecrement", &i32); + pet->db[n].hunger_decrement = (ret == CONFIG_FALSE) ? 1 : cap_value(i32, PET_HUNGER_STARVING, PET_HUNGER_STUFFED - 1); - if (libconfig->setting_lookup_int(it, "Speed", &i32)) - pet->db[n].speed = i32; + if (pet->db[n].hunger_decrement == PET_HUNGER_STARVING) + pet->db[n].hungry_delay = 0; - if ((t = libconfig->setting_get_member(it, "SpecialPerformance")) && (i32 = libconfig->setting_get_bool(t))) - pet->db[n].s_perfor = (char)i32; + /** + * Preventively set default intimacy values here, just in case that 'Intimacy' block is not defined, + * or pet_read_db_sub_intimacy() fails execution. + * + **/ + pet->db[n].intimate = PET_INTIMACY_NEUTRAL; + pet->db[n].r_hungry = 10; + pet->db[n].r_full = 100; + pet->db[n].die = 20; + pet->db[n].starving_delay = min(20000, pet->db[n].hungry_delay); + pet->db[n].starving_decrement = 20; - if ((t = libconfig->setting_get_member(it, "TalkWithEmotes")) && (i32 = libconfig->setting_get_bool(t))) - pet->db[n].talk_convert_class = i32; + struct config_setting_t *t; - if (libconfig->setting_lookup_int(it, "AttackRate", &i32)) - pet->db[n].attack_rate = i32; + if ((t = libconfig->setting_get_member(it, "Intimacy")) != NULL && config_setting_is_group(t)) + pet->read_db_sub_intimacy(n, t); - if (libconfig->setting_lookup_int(it, "DefendRate", &i32)) - pet->db[n].defence_attack_rate = i32; + ret = libconfig->setting_lookup_int(it, "CaptureRate", &i32); + pet->db[n].capture = (ret == CONFIG_FALSE) ? 1000 : cap_value(i32, 1, 10000); - if (libconfig->setting_lookup_int(it, "ChangeTargetRate", &i32)) - pet->db[n].change_target_rate = i32; + ret = libconfig->setting_lookup_int(it, "Speed", &i32); + pet->db[n].speed = (ret == CONFIG_FALSE) ? DEFAULT_WALK_SPEED : cap_value(i32, MIN_WALK_SPEED, MAX_WALK_SPEED); - // Pet Evolution - if ((t = libconfig->setting_get_member(it, "Evolve")) && config_setting_is_group(t)) { - pet->read_db_sub_evolution(t, n); + if ((t = libconfig->setting_get_member(it, "SpecialPerformance")) != NULL + && (i32 = libconfig->setting_get_bool(t)) != 0) { + pet->db[n].s_perfor = (char)i32; + } + + if ((t = libconfig->setting_get_member(it, "TalkWithEmotes")) != NULL + && (i32 = libconfig->setting_get_bool(t)) != 0) { + pet->db[n].talk_convert_class = i32; } - if ((t = libconfig->setting_get_member(it, "AutoFeed")) && (i32 = libconfig->setting_get_bool(t))) + ret = libconfig->setting_lookup_int(it, "AttackRate", &i32); + pet->db[n].attack_rate = (ret == CONFIG_FALSE) ? 300 : cap_value(i32, 0, 10000); + + ret = libconfig->setting_lookup_int(it, "DefendRate", &i32); + pet->db[n].defence_attack_rate = (ret == CONFIG_FALSE) ? 300 : cap_value(i32, 0, 10000); + + ret = libconfig->setting_lookup_int(it, "ChangeTargetRate", &i32); + pet->db[n].change_target_rate = (ret == CONFIG_FALSE) ? 800 : cap_value(i32, 0, 10000); + + if ((t = libconfig->setting_get_member(it, "AutoFeed")) != NULL && (i32 = libconfig->setting_get_bool(t)) != 0) pet->db[n].autofeed = i32; - if (libconfig->setting_lookup_string(it, "PetScript", &str)) - pet->db[n].pet_script = *str ? script->parse(str, source, -pet->db[n].class_, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL; + pet->db[n].pet_script = NULL; + if (libconfig->setting_lookup_string(it, "PetScript", &str) == CONFIG_TRUE && *str != '\0') + pet->db[n].pet_script = script->parse(str, source, -pet->db[n].class_, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL); - if (libconfig->setting_lookup_string(it, "EquipScript", &str)) - pet->db[n].equip_script = *str ? script->parse(str, source, -pet->db[n].class_, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL; + pet->db[n].equip_script = NULL; + if (libconfig->setting_lookup_string(it, "EquipScript", &str) == CONFIG_TRUE && *str != '\0') + pet->db[n].equip_script = script->parse(str, source, -pet->db[n].class_, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL); + + if ((t = libconfig->setting_get_member(it, "Evolve")) != NULL && config_setting_is_group(t)) + pet->read_db_sub_evolution(t, n); return pet->db[n].class_; } @@ -1514,24 +1719,41 @@ static void pet_read_db_sub_evolution(struct config_setting_t *t, int n) } } +/** + * Reads a pet's intimacy data from DB. + * + * @param idx The pet's index in pet->db[]. + * @param t The libconfig settings block, which contains the pet's intimacy data. + * @return false on failure, true on success. + * + **/ static bool pet_read_db_sub_intimacy(int idx, struct config_setting_t *t) { + nullpo_retr(false, t); + Assert_retr(false, idx >= 0 && idx < MAX_PET_DB); + int i32 = 0; - nullpo_retr(false, t); - Assert_ret(idx >= 0 && idx < MAX_PET_DB); + if (libconfig->setting_lookup_int(t, "Initial", &i32) == CONFIG_TRUE) + pet->db[idx].intimate = cap_value(i32, PET_INTIMACY_AWKWARD, PET_INTIMACY_MAX); + + if (libconfig->setting_lookup_int(t, "FeedIncrement", &i32) == CONFIG_TRUE) + pet->db[idx].r_hungry = cap_value(i32, PET_INTIMACY_AWKWARD, PET_INTIMACY_MAX); + + if (libconfig->setting_lookup_int(t, "OverFeedDecrement", &i32) == CONFIG_TRUE) + pet->db[idx].r_full = cap_value(i32, PET_INTIMACY_NONE, PET_INTIMACY_MAX); - if (libconfig->setting_lookup_int(t, "Initial", &i32)) - pet->db[idx].intimate = i32; + if (libconfig->setting_lookup_int(t, "OwnerDeathDecrement", &i32) == CONFIG_TRUE) + pet->db[idx].die = cap_value(i32, PET_INTIMACY_NONE, PET_INTIMACY_MAX); - if (libconfig->setting_lookup_int(t, "FeedIncrement", &i32)) - pet->db[idx].r_hungry = i32; + if (libconfig->setting_lookup_int(t, "StarvingDelay", &i32) == CONFIG_TRUE) + pet->db[idx].starving_delay = cap_value(1000 * i32, 0, pet->db[idx].hungry_delay); - if (libconfig->setting_lookup_int(t, "OverFeedDecrement", &i32)) - pet->db[idx].r_full = i32; + if (libconfig->setting_lookup_int(t, "StarvingDecrement", &i32) == CONFIG_TRUE) + pet->db[idx].starving_decrement = cap_value(i32, PET_INTIMACY_NONE, PET_INTIMACY_MAX); - if (libconfig->setting_lookup_int(t, "OwnerDeathDecrement", &i32)) - pet->db[idx].die = i32; + if (pet->db[idx].starving_decrement == PET_INTIMACY_NONE) + pet->db[idx].starving_delay = 0; return true; } @@ -1625,6 +1847,8 @@ void pet_defaults(void) pet->final = do_final_pet; pet->hungry_val = pet_hungry_val; + pet->set_hunger = pet_set_hunger; + pet->get_card4_value = pet_get_card4_value; pet->set_intimate = pet_set_intimate; pet->create_egg = pet_create_egg; pet->unlocktarget = pet_unlocktarget; @@ -1637,6 +1861,7 @@ void pet_defaults(void) pet->performance = pet_performance; pet->return_egg = pet_return_egg; pet->data_init = pet_data_init; + pet->spawn = pet_spawn; pet->birth_process = pet_birth_process; pet->recv_petdata = pet_recv_petdata; pet->select_egg = pet_select_egg; diff --git a/src/map/pet.h b/src/map/pet.h index e0a5529a6..c57df9de3 100644 --- a/src/map/pet.h +++ b/src/map/pet.h @@ -57,6 +57,9 @@ struct s_pet_db { int defence_attack_rate; int change_target_rate; int autofeed; + int hunger_decrement; + int starving_delay; + int starving_decrement; struct script_code *equip_script; struct script_code *pet_script; @@ -143,6 +146,8 @@ struct pet_interface { int (*final) (void); /* */ int (*hungry_val) (struct pet_data *pd); + void (*set_hunger) (struct pet_data *pd, int value); + int (*get_card4_value) (int rename_flag, int intimacy); void (*set_intimate) (struct pet_data *pd, int value); int (*create_egg) (struct map_session_data *sd, int item_id); int (*unlocktarget) (struct pet_data *pd); @@ -155,6 +160,7 @@ struct pet_interface { int (*performance) (struct map_session_data *sd, struct pet_data *pd); int (*return_egg) (struct map_session_data *sd, struct pet_data *pd); int (*data_init) (struct map_session_data *sd, struct s_pet *petinfo); + int (*spawn) (struct map_session_data *sd, bool birth_process); int (*birth_process) (struct map_session_data *sd, struct s_pet *petinfo); int (*recv_petdata) (int account_id, struct s_pet *p, int flag); int (*select_egg) (struct map_session_data *sd, int egg_index); diff --git a/src/map/quest.c b/src/map/quest.c index 10ea668a6..217acfa19 100644 --- a/src/map/quest.c +++ b/src/map/quest.c @@ -675,7 +675,7 @@ static void quest_questinfo_refresh(struct map_session_data *sd) nullpo_retv(sd); for (int i = 0; i < VECTOR_LENGTH(map->list[sd->bl.m].qi_list); i++) { - struct npc_data *nd = &VECTOR_INDEX(map->list[sd->bl.m].qi_list, i); + struct npc_data *nd = VECTOR_INDEX(map->list[sd->bl.m].qi_list, i); int j; ARR_FIND(0, VECTOR_LENGTH(nd->qi_data), j, quest->questinfo_validate(sd, &VECTOR_INDEX(nd->qi_data, j)) == true); diff --git a/src/map/rodex.c b/src/map/rodex.c index 1ebed0623..f2bb8a0d4 100644 --- a/src/map/rodex.c +++ b/src/map/rodex.c @@ -231,7 +231,7 @@ static int rodex_send_mail(struct map_session_data *sd, const char *receiver_nam nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, body); nullpo_retr(RODEX_SEND_MAIL_FATAL_ERROR, title); - if (!rodex->isenabled() || sd->npc_id > 0) { + if (!rodex->isenabled() || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { rodex->clean(sd, 1); return RODEX_SEND_MAIL_FATAL_ERROR; } @@ -575,6 +575,7 @@ static void rodex_clean(struct map_session_data *sd, int8 flag) if (flag == 0) VECTOR_CLEAR(sd->rodex.messages); + sd->state.workinprogress &= ~2; memset(&sd->rodex.tmp, 0x0, sizeof(sd->rodex.tmp)); } diff --git a/src/map/script.c b/src/map/script.c index c1eb2e8b7..9372299bb 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -848,79 +848,134 @@ static const char *parse_callfunc(const char *p, int require_paren, int is_custo nullpo_retr(NULL, p); // is need add check for arg null pointer below? - func = script->add_word(p); - if (script->str_data[func].type == C_FUNC) { - script->syntax.nested_call++; - if (script->syntax.last_func != -1) { - if (script->str_data[func].val == script->buildin_lang_macro_offset) { - script->syntax.lang_macro_active = true; - macro = true; - } else if (script->str_data[func].val == script->buildin_lang_macro_fmtstring_offset) { - script->syntax.lang_macro_fmtstring_active = true; - macro = true; - } + + if (*p == '"') { + p2 = ++p; // jump to the start of the word + + // find the closing quote + while (*p2 != '"') { + ++p2; } - if( !macro ) { - // buildin function + if (p2[1] == ':' && p2[2] == ':') { + func = script->add_str("callfunctionofnpc"); + arg = "*"; // we already take care of the "vs" part of "vs*" + + script->syntax.nested_call++; script->syntax.last_func = script->str_data[func].val; script->addl(func); script->addc(C_ARG); - } - arg = script->buildin[script->str_data[func].val]; - if (script->str_data[func].deprecated) - DeprecationWarning(p); - if( !arg ) arg = &null_arg; // Use a dummy, null string - } else if( script->str_data[func].type == C_USERFUNC || script->str_data[func].type == C_USERFUNC_POS ) { - // script defined function - script->addl(script->buildin_callsub_ref); - script->addc(C_ARG); - script->addl(func); - arg = script->buildin[script->str_data[script->buildin_callsub_ref].val]; - if( *arg == 0 ) - disp_error_message("parse_callfunc: callsub has no arguments, please review its definition",p); - if( *arg != '*' ) - ++arg; // count func as argument + script->addc(C_STR); + do { + script->addb(*p++); // npc name + } while (p < p2); + script->addb(0); + + p = p2 + 3; // skip to start of func name + p2 = script->skip_word(p); + + script->addc(C_STR); + do { + script->addb(*p++); // func name + } while (p < p2); + script->addb(0); + + p = p2; // skip to just before the () + } else { + disp_error_message("script:parse_callfunc: invalid public function call syntax!", p2 + 1); + } } else { + func = script->add_word(p); + if (script->str_data[func].type == C_FUNC) { + script->syntax.nested_call++; + + if (script->syntax.last_func != -1) { + if (script->str_data[func].val == script->buildin_lang_macro_offset) { + script->syntax.lang_macro_active = true; + macro = true; + } else if (script->str_data[func].val == script->buildin_lang_macro_fmtstring_offset) { + script->syntax.lang_macro_fmtstring_active = true; + macro = true; + } + } + + if (!macro) { + // buildin function + script->syntax.last_func = script->str_data[func].val; + script->addl(func); + script->addc(C_ARG); + } + + arg = script->buildin[script->str_data[func].val]; + + if (script->str_data[func].deprecated == 1) { + DeprecationWarning(p); + } + + if (arg == NULL) { + arg = &null_arg; // Use a dummy, null string + } + } else if (script->str_data[func].type == C_USERFUNC || script->str_data[func].type == C_USERFUNC_POS) { + // script defined function + script->addl(script->buildin_callsub_ref); + script->addc(C_ARG); + script->addl(func); + arg = script->buildin[script->str_data[script->buildin_callsub_ref].val]; + + if (*arg == 0) { + disp_error_message("script:parse_callfunc: callsub has no arguments, please review its definition", p); + } + + if (*arg != '*') { + ++arg; // count func as argument + } + } else { #ifdef SCRIPT_CALLFUNC_CHECK - const char* name = script->get_str(func); - if( !is_custom && strdb_get(script->userfunc_db, name) == NULL ) { + const char *name = script->get_str(func); + if (is_custom == 0 && strdb_get(script->userfunc_db, name) == NULL) { #endif - disp_error_message("parse_line: expect command, missing function name or calling undeclared function",p); + disp_error_message("script:parse_callfunc: expect command, missing function name or calling undeclared function", p); #ifdef SCRIPT_CALLFUNC_CHECK - } else {; - script->addl(script->buildin_callfunc_ref); - script->addc(C_ARG); - script->addc(C_STR); - while( *name ) script->addb(*name ++); - script->addb(0); - arg = script->buildin[script->str_data[script->buildin_callfunc_ref].val]; - if( *arg != '*' ) ++ arg; - } + } else { + script->addl(script->buildin_callfunc_ref); + script->addc(C_ARG); + script->addc(C_STR); + + while (*name != '\0') { + script->addb(*name++); + } + + script->addb(0); + arg = script->buildin[script->str_data[script->buildin_callfunc_ref].val]; + + if (*arg != '*') { + ++ arg; + } + } #endif + } } p = script->skip_word(p); p = script->skip_space(p); script->syntax.curly[script->syntax.curly_count].type = TYPE_ARGLIST; script->syntax.curly[script->syntax.curly_count].count = 0; - if( *p == ';' ) - {// <func name> ';' + + if (*p == ';') { + // <func name> ';' script->syntax.curly[script->syntax.curly_count].flag = ARGLIST_NO_PAREN; - } else if( *p == '(' && *(p2=script->skip_space(p+1)) == ')' ) - {// <func name> '(' ')' + } else if (*p == '(' && *(p2 = script->skip_space(p + 1)) == ')') { + // <func name> '(' ')' script->syntax.curly[script->syntax.curly_count].flag = ARGLIST_PAREN; p = p2; - /* - } else if( 0 && require_paren && *p != '(' ) - {// <func name> - script->syntax.curly[script->syntax.curly_count].flag = ARGLIST_NO_PAREN; - */ - } else {// <func name> <arg list> - if( require_paren ) { - if( *p != '(' ) - disp_error_message("need '('",p); + } else { + // <func name> <arg list> + if (require_paren == 1) { + if (*p != '(') { + disp_error_message("script:parse_callfunc: need '('", p); + } + ++p; // skip '(' script->syntax.curly[script->syntax.curly_count].flag = ARGLIST_PAREN; } else if( *p == '(' ) { @@ -928,41 +983,65 @@ static const char *parse_callfunc(const char *p, int require_paren, int is_custo } else { script->syntax.curly[script->syntax.curly_count].flag = ARGLIST_NO_PAREN; } + ++script->syntax.curly_count; - while( *arg ) { - p2=script->parse_subexpr(p,-1); - if( p == p2 ) - break; // not an argument - if( *arg != '*' ) - ++arg; // next argument - p=script->skip_space(p2); - if( *arg == 0 || *p != ',' ) - break; // no more arguments + while (*arg != '\0') { + p2 = script->parse_subexpr(p, -1); + + if (p == p2) { + // not an argument + break; + } + + if (*arg != '*') { + // next argument + ++arg; + } + + p = script->skip_space(p2); + + if (*arg == 0 || *p != ',') { + // no more arguments + break; + } + ++p; // skip comma } + --script->syntax.curly_count; } - if( arg && *arg && *arg != '?' && *arg != '*' ) - disp_error_message2("parse_callfunc: not enough arguments, expected ','", p, script->config.warn_func_mismatch_paramnum); - if( script->syntax.curly[script->syntax.curly_count].type != TYPE_ARGLIST ) - disp_error_message("parse_callfunc: DEBUG last curly is not an argument list",p); - if( script->syntax.curly[script->syntax.curly_count].flag == ARGLIST_PAREN ) { - if( *p != ')' ) - disp_error_message("parse_callfunc: expected ')' to close argument list",p); + + if (arg != NULL && *arg != '\0' && *arg != '?' && *arg != '*') { + disp_error_message2("script:parse_callfunc: not enough arguments, expected ','", p, script->config.warn_func_mismatch_paramnum); + } + + if (script->syntax.curly[script->syntax.curly_count].type != TYPE_ARGLIST) { + disp_error_message("parse_callfunc: DEBUG last curly is not an argument list", p); + } + + if (script->syntax.curly[script->syntax.curly_count].flag == ARGLIST_PAREN) { + if (*p != ')') { + disp_error_message("script:parse_callfunc: expected ')' to close argument list", p); + } + ++p; - if (script->str_data[func].val == script->buildin_lang_macro_offset) + if (script->str_data[func].val == script->buildin_lang_macro_offset) { script->syntax.lang_macro_active = false; - else if (script->str_data[func].val == script->buildin_lang_macro_fmtstring_offset) + } else if (script->str_data[func].val == script->buildin_lang_macro_fmtstring_offset) { script->syntax.lang_macro_fmtstring_active = false; + } } if (!macro) { - if (0 == --script->syntax.nested_call) + if (0 == --script->syntax.nested_call) { script->syntax.last_func = -1; + } + script->addc(C_FUNC); } + return p; } @@ -1161,6 +1240,80 @@ static const char *parse_variable(const char *p) return p; } +/** + * Converts a number expression literal to an actual integer. + * Number separators are skipped. + * + * expects these formats: + * 1337 + * 0x1337 + * 0b1001 + * 0o1337 + * + * example with separating nibbles of a binary literal: + * 0b1101_0111_1001_1111 + * + * @param p - a pointer to the first char of the number literal + * @param lli - a pointer to the resulting long long integer + * @returns a pointer to the first char after the parsed number +*/ +static const char *parse_number(const char *p, long long *lli) { + nullpo_retr(NULL, p); + + const bool unary_plus = (*p == '+'); + const bool unary_minus = (*p == '-'); + + if (unary_plus || unary_minus) { + p++; + } + + if (ISNSEPARATOR(*p)) { + disp_error_message("parse_number: number literals cannot begin with a separator", p); + } + +#define PARSENUMBER(skip, func, radix) \ + for (p += skip; func(*p) || (ISNSEPARATOR(*p) && (func(p[1]) || ISNSEPARATOR(p[1]))); ++p) { \ + if (func(*p)) { \ + *lli *= radix; \ + *lli += (*p < 'A') ? (*p & 0xF) : (9 + (*p & 0x7)); \ + } else if (ISNSEPARATOR(p[1])) { \ + disp_error_message("parse_number: number literals cannot contain two separators in a row", p + 1); \ + } \ + } + + if (*p == '0' && p[1] == 'x') { + PARSENUMBER(2, ISXDIGIT, 16); + } else if (*p == '0' && p[1] == 'o') { + PARSENUMBER(2, ISODIGIT, 8); + } else if (*p == '0' && p[1] == 'b') { + PARSENUMBER(2, ISBDIGIT, 2); + } else { + PARSENUMBER(0, ISDIGIT, 10); + } + +#undef PARSENUMBER + + if (ISNSEPARATOR(*p)) { + disp_error_message("parse_number: number literals cannot end with a separator", p); + } + + if (unary_minus) { + // reverse the sign + *lli = -(*lli); + } + + // make sure we can't underflow/overflow + if (*lli < INT_MIN) { + *lli = INT_MIN; + script->disp_warning_message("parse_number: underflow detected, capping value to INT_MIN", p); + } else if (*lli > INT_MAX) { + *lli = INT_MAX; + script->disp_warning_message("parse_number: overflow detected, capping value to INT_MAX", p); + } + + return p; +} + /* * Checks whether the gives string is a number literal * @@ -1177,24 +1330,44 @@ static const char *parse_variable(const char *p) static bool is_number(const char *p) { const char *np; - if (!p) - return false; - if (*p == '-' || *p == '+') + nullpo_retr(false, p); + + if (*p == '-' || *p == '+') { p++; + } + np = p; + if (*p == '0' && p[1] == 'x') { - p+=2; - np = p; - // Hexadecimal - while (ISXDIGIT(*np)) + // Hexadecimal: 0xFFFF + np = (p += 2); + while (ISXDIGIT(*np) || ISNSEPARATOR(*np)) { np++; - } else { - // Decimal - while (ISDIGIT(*np)) + } + } else if (*p == '0' && p[1] == 'b') { + // Binary: 0b0001 + np = (p += 2); + while (ISBDIGIT(*np) || ISNSEPARATOR(*np)) { + np++; + } + } else if (*p == '0' && p[1] == 'o') { + // Octal: 0o1500 + np = (p += 2); + while (ISODIGIT(*np) || ISNSEPARATOR(*np)) { + np++; + } + } else if (ISDIGIT(*p)) { + // Decimal: 1234 + while (ISDIGIT(*np) || ISNSEPARATOR(*np)) { np++; + } } - if (p != np && *np != '_' && !ISALPHA(*np)) // At least one digit, and next isn't a letter or _ + + if (p != np && *np != '_' && !ISALPHA(*np)) { + // At least one digit, and next isn't a letter or _ return true; + } + return false; } @@ -1230,16 +1403,29 @@ static int script_string_dup(char *str) *------------------------------------------*/ static const char *parse_simpleexpr(const char *p) { - p=script->skip_space(p); + p = script->skip_space(p); nullpo_retr(NULL, p); - if (*p == ';' || *p == ',') - disp_error_message("parse_simpleexpr: unexpected end of expression",p); + + if (*p == ';' || *p == ',') { + disp_error_message("script:parse_simpleexpr: unexpected end of expression", p); + } + if (*p == '(') { return script->parse_simpleexpr_paren(p); } else if (is_number(p)) { return script->parse_simpleexpr_number(p); } else if(*p == '"') { + const char *p2 = p + 1; + + while (*p2 != '"') { + ++p2; + } + + if (p2[1] == ':' && p2[2] == ':') { + return script->parse_callfunc(p, 1, 0); // XXX: why does callfunc use int for booleans? + } + return script->parse_simpleexpr_string(p); } else { return script->parse_simpleexpr_name(p); @@ -1275,21 +1461,9 @@ static const char *parse_simpleexpr_paren(const char *p) static const char *parse_simpleexpr_number(const char *p) { - char *np = NULL; - long long lli; - - nullpo_retr(NULL, p); - while (*p == '0' && ISDIGIT(p[1])) - p++; // Skip leading zeros, we don't support octal literals + long long lli = 0; + const char *np = parse_number(p, &lli); - lli = strtoll(p, &np, 0); - if (lli < INT_MIN) { - lli = INT_MIN; - script->disp_warning_message("parse_simpleexpr: underflow detected, capping value to INT_MIN", p); - } else if (lli > INT_MAX) { - lli = INT_MAX; - script->disp_warning_message("parse_simpleexpr: overflow detected, capping value to INT_MAX", p); - } script->addi((int)lli); // Cast is safe, as it's already been checked for overflows return np; @@ -1577,6 +1751,85 @@ static const char *parse_line(const char *p) return p; } +/** + * parses a local function expression + * + * expects these formats: + * function <name>; + * function <name> { <script> } + * + * this is invoked by script->parse_syntax() after checking whether the function + * is public or not + * + * @param p - a pointer to the start of the function expression + * @param is_public - whether this function should be accessible from outside the NPC scope + */ +static const char *parse_syntax_function (const char *p, bool is_public) +{ + const char *func_name = script->skip_space(p); // the name of the local function + p = script->skip_word(func_name); + + if (p == func_name) { + disp_error_message("script:parse_syntax_function: function name is missing or invalid", p); + } + + const char *p2 = script->skip_space(p); + + if (*p2 == ';') { + // function <name> ; + // function declaration - just register the name + int l = script->add_word(func_name); + + if (script->str_data[l].type == C_NOP) { + // register only, if the name was not used by something else + script->str_data[l].type = C_USERFUNC; + } else if (script->str_data[l].type != C_USERFUNC) { + disp_error_message("script:parse_syntax_function: function name is already in use", func_name); + } + + // Close condition of if, for, while + p = script->parse_syntax_close(p2 + 1); + return p; + } else if (*p2 == '{') { + // function <name> <line/block of code> + script->syntax.curly[script->syntax.curly_count].type = TYPE_USERFUNC; + script->syntax.curly[script->syntax.curly_count].count = 1; + script->syntax.curly[script->syntax.curly_count].index = script->syntax.index++; + script->syntax.curly[script->syntax.curly_count].flag = 0; + ++script->syntax.curly_count; + + // Jump over the function code + char label[256]; + sprintf(label, "goto __FN%x_FIN;", (unsigned int)script->syntax.curly[script->syntax.curly_count - 1].index); + script->syntax.curly[script->syntax.curly_count].type = TYPE_NULL; + ++script->syntax.curly_count; + script->parse_line(label); + --script->syntax.curly_count; + + // Set the position of the function (label) + int l = script->add_word(func_name); + + if (script->str_data[l].type == C_NOP || script->str_data[l].type == C_USERFUNC) { + // register only, if the name was not used by something else + script->str_data[l].type = C_USERFUNC; + script->set_label(l, VECTOR_LENGTH(script->buf), p); + + if ((script->parse_options & SCRIPT_USE_LABEL_DB) != 0) { + script->label_add(l, VECTOR_LENGTH(script->buf), + LABEL_IS_USERFUNC | (is_public ? LABEL_IS_EXTERN : 0)); + } + } else { + disp_error_message("script:parse_syntax_function: function name is already in use", func_name); + } + + return script->skip_space(p); + } else { + disp_error_message("script:parse_syntax_function: expected ';' or '{' at function syntax", p); + } + + return p; +} + // { ... } Closing process static const char *parse_curly_close(const char *p) { @@ -1920,65 +2173,11 @@ static const char *parse_syntax(const char *p) script->set_label(l, VECTOR_LENGTH(script->buf), p); return p; } else if( p2 - p == 8 && strncmp(p, "function", 8) == 0 ) { - // internal script function - const char *func_name; - - func_name = script->skip_space(p2); - p = script->skip_word(func_name); - if( p == func_name ) - disp_error_message("parse_syntax:function: function name is missing or invalid", p); - p2 = script->skip_space(p); - if( *p2 == ';' ) - {// function <name> ; - // function declaration - just register the name - int l; - l = script->add_word(func_name); - if( script->str_data[l].type == C_NOP )// register only, if the name was not used by something else - script->str_data[l].type = C_USERFUNC; - else if( script->str_data[l].type == C_USERFUNC ) - ; // already registered - else - disp_error_message("parse_syntax:function: function name is invalid", func_name); - - // Close condition of if, for, while - p = script->parse_syntax_close(p2 + 1); - return p; - } - else if(*p2 == '{') - {// function <name> <line/block of code> - char label[256]; - int l; - - script->syntax.curly[script->syntax.curly_count].type = TYPE_USERFUNC; - script->syntax.curly[script->syntax.curly_count].count = 1; - script->syntax.curly[script->syntax.curly_count].index = script->syntax.index++; - script->syntax.curly[script->syntax.curly_count].flag = 0; - ++script->syntax.curly_count; - - // Jump over the function code - sprintf(label, "goto __FN%x_FIN;", (unsigned int)script->syntax.curly[script->syntax.curly_count-1].index); - script->syntax.curly[script->syntax.curly_count].type = TYPE_NULL; - ++script->syntax.curly_count; - script->parse_line(label); - --script->syntax.curly_count; - - // Set the position of the function (label) - l=script->add_word(func_name); - if( script->str_data[l].type == C_NOP || script->str_data[l].type == C_USERFUNC )// register only, if the name was not used by something else - { - script->str_data[l].type = C_USERFUNC; - script->set_label(l, VECTOR_LENGTH(script->buf), p); - if( script->parse_options&SCRIPT_USE_LABEL_DB ) - script->label_add(l, VECTOR_LENGTH(script->buf)); - } - else - disp_error_message("parse_syntax:function: function name is invalid", func_name); - - return script->skip_space(p); - } - else - { - disp_error_message("expect ';' or '{' at function syntax",p); + // local function not marked as public or private + if (script->config.functions_private_by_default) { + return script->parse_syntax_function(p2, false); + } else { + return script->parse_syntax_function(p2, true); } } break; @@ -2006,6 +2205,26 @@ static const char *parse_syntax(const char *p) return p; } break; + case 'p': + case 'P': + if (p2 - p == 6 && strncmp(p, "public", 6) == 0) { + p2 = script->skip_space(p2); + const char *p3 = script->skip_word(p2); + + if (p3 - p2 == 8 && strncmp(p2, "function", 8) == 0) { + // local function explicitly marked as public + return script->parse_syntax_function(p3, true); + } + } else if (p2 - p == 7 && strncmp(p, "private", 7) == 0) { + p2 = script->skip_space(p2); + const char *p3 = script->skip_word(p2); + + if (p3 - p2 == 8 && strncmp(p2, "function", 8) == 0) { + // local function explicitly marked as private + return script->parse_syntax_function(p3, false); + } + } + break; case 's': case 'S': if( p2 - p == 6 && strncmp(p, "switch", 6) == 0 ) { @@ -2668,25 +2887,32 @@ static struct script_code *parse_script(const char *src, const char *file, int l } } - while( script->syntax.curly_count != 0 || *p != end ) - { - if( *p == '\0' ) - disp_error_message("unexpected end of script",p); + while (script->syntax.curly_count != 0 || *p != end) { + if (*p == '\0') { + disp_error_message("script:parse_script: unexpected end of script", p); + } + // Special handling only label - tmpp=script->skip_space(script->skip_word(p)); - if(*tmpp==':' && !(strncmp(p,"default:",8) == 0 && p + 7 == tmpp)) { - i=script->add_word(p); + tmpp = script->skip_space(script->skip_word(p)); + + if (*tmpp == ':' && !(strncmp(p, "default:", 8) == 0 && p + 7 == tmpp) + && !(strncmp(p, "function", 8) == 0 && script->skip_space(p + 8) == tmpp)) { + i = script->add_word(p); script->set_label(i, VECTOR_LENGTH(script->buf), p); - if( script->parse_options&SCRIPT_USE_LABEL_DB ) - script->label_add(i, VECTOR_LENGTH(script->buf)); - p=tmpp+1; - p=script->skip_space(p); + + if ((script->parse_options & SCRIPT_USE_LABEL_DB) != 0) { + bool is_extern = ((p[0] == 'O' || p[0] == 'o') && (p[1] == 'N' || p[1] == 'n')); + script->label_add(i, VECTOR_LENGTH(script->buf), is_extern ? LABEL_IS_EXTERN : 0); + } + + p = tmpp + 1; + p = script->skip_space(p); continue; } // All other lumped - p=script->parse_line(p); - p=script->skip_space(p); + p = script->parse_line(p); + p = script->skip_space(p); script->parse_nextline(false, p); } @@ -3395,6 +3621,32 @@ static void set_reg_instance_num(struct script_state *st, int64 num, const char } /** + * Validates if a variable is permanent (stored in database) by passed variable name. + * + * @param name The variable name to validate. + * @return True if variable is permanent, otherwise false. + * + **/ +static bool script_is_permanent_variable(const char *name) +{ + nullpo_retr(false, name); + + if (strlen(name) == 0) + return false; + + if (ISALNUM(name[0]) != 0) + return true; // Permanent characater variable. + + if (name[0] == '#') + return true; // Permanent (global) account variable. + + if (strlen(name) > 1 && name[0] == '$' && ISALNUM(name[1]) != 0) + return true; // Permanent server variable. + + return false; +} + +/** * Stores the value of a script variable * * @param st current script state. @@ -3439,6 +3691,18 @@ static int set_reg(struct script_state *st, struct map_session_data *sd, int64 n if (is_string_variable(name)) {// string variable const char *str = (const char*)value; + if (script->is_permanent_variable(name) && strlen(str) > SCRIPT_STRING_VAR_LENGTH) { + ShowError("script:set_reg: Value of variable %s is too long: %d! Maximum is %d. Skipping...\n", + name, (int)strlen(str), SCRIPT_STRING_VAR_LENGTH); + + if (st != NULL) { + script->reportsrc(st); + st->state = END; + } + + return 0; + } + switch (prefix) { case '@': if (ref) { @@ -4828,6 +5092,8 @@ static bool script_config_read(const char *filename, bool imported) libconfig->setting_lookup_bool_real(setting, "warn_func_mismatch_paramnum", &script->config.warn_func_mismatch_paramnum); libconfig->setting_lookup_bool_real(setting, "warn_func_mismatch_argtypes", &script->config.warn_func_mismatch_argtypes); + libconfig->setting_lookup_bool_real(setting, "functions_private_by_default", &script->config.functions_private_by_default); + libconfig->setting_lookup_bool_real(setting, "functions_as_events", &script->config.functions_as_events); libconfig->setting_lookup_int(setting, "check_cmdcount", &script->config.check_cmdcount); libconfig->setting_lookup_int(setting, "check_gotocount", &script->config.check_gotocount); libconfig->setting_lookup_int(setting, "input_min_value", &script->config.input_min_value); @@ -6397,6 +6663,111 @@ static BUILDIN(callfunc) return true; } + +/** + * Calls a local function within a NPC as if it was part of the current scope. + * Resumes execution in the previous scope once the NPC function returns. This + * is essentially a clone of buildin_callsub that can run in arbitrary NPCs. + * + * Usage: + * callfunctionofnpc("<npc name>", "<function name>"{, <arg>...}) + * callfunctionofnpc(<npc id>, "<function name>"{, <arg>...}) + * + * This buildin is also used internally by this syntax: + * "<npc name>"::<function name>({<arg>...}) + */ +static BUILDIN(callfunctionofnpc) { + struct npc_data *nd = NULL; + + if (script_isstring(st, 2)) { + nd = npc->name2id(script_getstr(st, 2)); + } else { + nd = map->id2nd(script_getnum(st, 2)); + } + + if (nd == NULL) { + ShowError("script:callfunctionofnpc: NPC not found.\n"); + st->state = END; + return false; + } + + const char *function_name = script_getstr(st, 3); + int pos = -1; + + // find the function label within the label list of the NPC + for (int i = 0; i < nd->u.scr.label_list_num; ++i) { + if (strcmp(nd->u.scr.label_list[i].name, function_name) == 0) { + if ((nd->u.scr.label_list[i].flags & LABEL_IS_EXTERN) != 0 + && (nd->u.scr.label_list[i].flags & LABEL_IS_USERFUNC) != 0) { + // function label found: set the start location + pos = nd->u.scr.label_list[i].pos; + } else if ((nd->u.scr.label_list[i].flags & LABEL_IS_USERFUNC) != 0) { + ShowError("script:callfunctionofnpc: function '%s' is not marked as public in NPC '%s'.\n", function_name, nd->name); + st->state = END; + return false; + } + break; + } + } + + if (pos < 0) { + ShowError("script:callfunctionofnpc: function '%s' not found in NPC '%s'!\n", function_name, nd->name); + st->state = END; + return false; + } + + // alloc a reg_db reference of the current scope for the new scope + struct reg_db *ref = (struct reg_db *)aCalloc(sizeof(struct reg_db), 2); + // scope variables (.@var) + ref[0].vars = st->stack->scope.vars; + ref[0].arrays = st->stack->scope.arrays; + // npc variables (.var) + ref[1].vars = st->script->local.vars; + ref[1].arrays = st->script->local.arrays; + + int i = 0; + + // make sure the arguments we push retain their current reg_db references: + // this allows to do things like set(getarg(0), ...) + for (i = st->start + 4; i < st->end; i++) { + struct script_data *data = script->push_copy(st->stack, i); + + if (data_isreference(data) && data->ref == NULL) { + const char *name = reference_getname(data); + + if (name[0] == '.') { + data->ref = (name[1] == '@' ? &ref[0] : &ref[1]); + } + } + } + + // save the previous scope + struct script_retinfo *ri = NULL; + CREATE(ri, struct script_retinfo, 1); + ri->script = st->script; // script code + ri->scope.vars = st->stack->scope.vars; // scope variables + ri->scope.arrays = st->stack->scope.arrays; // scope arrays + ri->pos = st->pos; // script location + ri->nargs = i - st->start - 4; // argument count + ri->defsp = st->stack->defsp; // default stack pointer + script->push_retinfo(st->stack, ri, ref); + + // change the current scope to the scope of the function + st->pos = pos; + st->script = nd->u.scr.script; + st->stack->defsp = st->stack->sp; + st->state = GOTO; + st->stack->scope.vars = i64db_alloc(DB_OPT_RELEASE_DATA); + st->stack->scope.arrays = idb_alloc(DB_OPT_BASE); + + // make sure local reg_db of the other NPC is initialized + if (st->script->local.vars == NULL) { + st->script->local.vars = i64db_alloc(DB_OPT_RELEASE_DATA); + } + + return true; +} + /*========================================== * subroutine call *------------------------------------------*/ @@ -8764,22 +9135,71 @@ static BUILDIN(delitemidx) return true; } -/*========================================== - * Enables/Disables use of items while in an NPC [Skotlex] - *------------------------------------------*/ +/** + * Enable item actions while interacting with NPC. + * + * @code{.herc} + * enableitemuse({<flag>}); + * enable_items({<flag>}); + * @endcode + * + **/ static BUILDIN(enableitemuse) { + int flag = battle_config.item_enabled_npc; + + if (script_hasdata(st, 2)) { + if (!script_isinttype(st, 2)) + return true; + + flag = script_getnum(st, 2); + } + + if (flag < 0) + return true; + struct map_session_data *sd = script->rid2sd(st); - if (sd != NULL) - st->npc_item_flag = sd->npc_item_flag = 1; + + if (sd == NULL) + return true; + + st->npc_item_flag |= flag; + sd->npc_item_flag |= flag; + return true; } +/** + * Disable item actions while interacting with NPC. + * + * @code{.herc} + * disableitemuse({<flag>}); + * disable_items({<flag>}); + * @endcode + * + **/ static BUILDIN(disableitemuse) { + int flag = battle_config.item_enabled_npc; + + if (script_hasdata(st, 2)) { + if (!script_isinttype(st, 2)) + return true; + + flag = script_getnum(st, 2); + } + + if (flag < 0) + return true; + struct map_session_data *sd = script->rid2sd(st); - if (sd != NULL) - st->npc_item_flag = sd->npc_item_flag = 0; + + if (sd == NULL) + return true; + + st->npc_item_flag &= ~flag; + sd->npc_item_flag &= ~flag; + return true; } @@ -10852,7 +11272,8 @@ static BUILDIN(gettimetick) case 0: default: //type 0:(System Ticks) - script_pushint(st,(int)timer->gettick()); // TODO: change this to int64 when we'll support 64 bit script values + // Conjunction with INT_MAX is done to prevent overflow. (Script variables are signed integers.) + script_pushint(st, timer->gettick() & INT_MAX); // TODO: change this to int64 when we'll support 64 bit script values break; } return true; @@ -10998,34 +11419,33 @@ static BUILDIN(itemskill) { struct map_session_data *sd = script->rid2sd(st); - if (sd == NULL || sd->ud.skilltimer != INVALID_TIMER) + if (sd == NULL) return true; - sd->skillitem = script_isstringtype(st, 2) ? skill->name2id(script_getstr(st, 2)) : script_getnum(st, 2); - sd->skillitemlv = script_getnum(st, 3); - sd->state.itemskill_conditions_checked = 0; // Skill casting items will check the conditions prior to the target selection in AEGIS. Thus we need a flag to prevent checking them twice. + sd->auto_cast_current.type = AUTOCAST_ITEM; + sd->auto_cast_current.skill_id = script_isstringtype(st, 2) ? skill->name2id(script_getstr(st, 2)) : script_getnum(st, 2); + sd->auto_cast_current.skill_lv = script_getnum(st, 3); int flag = script_hasdata(st, 4) ? script_getnum(st, 4) : ISF_NONE; - sd->state.itemskill_no_conditions = ((flag & ISF_IGNORECONDITIONS) == ISF_IGNORECONDITIONS) ? 1 : 0; // Unset in pc_itemskill_clear(). + sd->auto_cast_current.itemskill_check_conditions = ((flag & ISF_CHECKCONDITIONS) == ISF_CHECKCONDITIONS); - if (sd->state.itemskill_no_conditions == 0) { - if (skill->check_condition_castbegin(sd, sd->skillitem, sd->skillitemlv) == 0 - || skill->check_condition_castend(sd, sd->skillitem, sd->skillitemlv) == 0) { + if (sd->auto_cast_current.itemskill_check_conditions) { + if (skill->check_condition_castbegin(sd, sd->auto_cast_current.skill_id, sd->auto_cast_current.skill_lv) == 0 + || skill->check_condition_castend(sd, sd->auto_cast_current.skill_id, sd->auto_cast_current.skill_lv) == 0) { return true; } - sd->state.itemskill_conditions_checked = 1; // Unset in pc_itemskill_clear(). + sd->auto_cast_current.itemskill_conditions_checked = true; } - sd->state.itemskill_no_casttime = ((flag & ISF_INSTANTCAST) == ISF_INSTANTCAST) ? 1 : 0; // Unset in pc_itemskill_clear(). - sd->state.itemskill_castonself = ((flag & ISF_CASTONSELF) == ISF_CASTONSELF) ? 1 : 0; // Unset in pc_itemskill_clear(). + sd->auto_cast_current.itemskill_instant_cast = ((flag & ISF_INSTANTCAST) == ISF_INSTANTCAST); + sd->auto_cast_current.itemskill_cast_on_self = ((flag & ISF_CASTONSELF) == ISF_CASTONSELF); - // itemskill_conditions_checked/itemskill_no_conditions/itemskill_no_casttime/itemskill_castonself abuse prevention. Unset in pc_itemskill_clear(). - sd->itemskill_id = sd->skillitem; - sd->itemskill_lv = sd->skillitemlv; + VECTOR_ENSURE(sd->auto_cast, 1, 1); + VECTOR_PUSH(sd->auto_cast, sd->auto_cast_current); - clif->item_skill(sd, sd->skillitem, sd->skillitemlv); + clif->item_skill(sd, sd->auto_cast_current.skill_id, sd->auto_cast_current.skill_lv); return true; } @@ -12114,6 +12534,52 @@ static BUILDIN(mobattached) return true; } +/** + * Announces a colored text in '<char_name> Shouts : <message>' format. + * Default color is white ("FFFFFF"). + * + * This is a special use case of packet 0x009a where the message's first 34 bytes + * are reserved for string "micc" (4B) which identifies the broadcast as megaphone shout, + * the character's name (24B) and the text color (6B). + * + * 009a <packet len>.W <micc>.4B <char name>.24B <color>.6B <message>.?B + * + * @code{.herc} + * loudhailer("<message>"{, "<color>"}); + * @endcode + * + **/ +static BUILDIN(loudhailer) +{ + const char *mes = script_getstr(st, 2); + size_t len_mes = strlen(mes); + + Assert_retr(false, len_mes + 33 < CHAT_SIZE_MAX); // +33 because of the '<char_name> Shouts : ' message prefix. + + const char *color = script_hasdata(st, 3) ? script_getstr(st, 3) : "FFFFFF"; + + Assert_retr(false, strlen(color) == 6); + + struct map_session_data *sd = script->rid2sd(st); + + if (sd == NULL) + return false; + + char mes_formatted[CHAT_SIZE_MAX + 30] = ""; + + strcpy(mes_formatted, sd->status.name); + strcpy(mes_formatted + 24, color); + safesnprintf(mes_formatted + 30, CHAT_SIZE_MAX, "%s Shouts : %s", sd->status.name, mes); + + size_t len_formatted = 30 + strlen(sd->status.name) + 10 + len_mes + 1; + + clif->broadcast(&sd->bl, mes_formatted, (int)len_formatted, BC_MEGAPHONE, ALL_CLIENT); + + sd->state.using_megaphone = 0; + + return true; +} + /*========================================== *------------------------------------------*/ static BUILDIN(announce) @@ -13580,6 +14046,7 @@ static BUILDIN(getmapflag) case MF_PAIRSHIP_ENDABLE: script_pushint(st, map->list[m].flag.pairship_endable); break; case MF_NOSTORAGE: script_pushint(st, map->list[m].flag.nostorage); break; case MF_NOGSTORAGE: script_pushint(st, map->list[m].flag.nogstorage); break; + case MF_NOPET: script_pushint(st, map->list[m].flag.nopet); break; } } @@ -13712,6 +14179,7 @@ static BUILDIN(setmapflag) case MF_PAIRSHIP_ENDABLE: map->list[m].flag.pairship_endable = 1; break; case MF_NOSTORAGE: map->list[m].flag.nostorage = cap_value(val, 0, 3); break; case MF_NOGSTORAGE: map->list[m].flag.nogstorage = cap_value(val, 0, 3); break; + case MF_NOPET: map->list[m].flag.nopet = 1; break; } } @@ -13805,6 +14273,7 @@ static BUILDIN(removemapflag) case MF_NOVIEWID: map->list[m].flag.noviewid = EQP_NONE; break; case MF_NOSTORAGE: map->list[m].flag.nostorage = 0; break; case MF_NOGSTORAGE: map->list[m].flag.nogstorage = 0; break; + case MF_NOPET: map->list[m].flag.nopet = 0; break; } } @@ -14780,24 +15249,34 @@ static BUILDIN(getitemslots) return true; } -// TODO: add matk here if needed - -/*========================================== - * Returns some values of an item [Lupus] - * Price, Weight, etc... - *------------------------------------------*/ +/** + * Returns various information about an item. + * + * @code{.herc} + * getiteminfo(<item ID>, <type>); + * getiteminfo("<item name>", <type>); + * @endcode + * + **/ static BUILDIN(getiteminfo) { - int item_id = script_getnum(st, 2); - int n = script_getnum(st, 3); - struct item_data *it = itemdb->exists(item_id); + struct item_data *it; + + if (script_isstringtype(st, 2)) { /// Item name. + const char *name = script_getstr(st, 2); + it = itemdb->search_name(name); + } else { /// Item ID. + it = itemdb->exists(script_getnum(st, 2)); + } if (it == NULL) { script_pushint(st, -1); return true; } - switch (n) { + int type = script_getnum(st, 3); + + switch (type) { case ITEMINFO_BUYPRICE: script_pushint(st, it->value_buy); break; @@ -14909,16 +15388,24 @@ static BUILDIN(getiteminfo) case ITEMINFO_STACK_AMOUNT: script_pushint(st, it->stack.amount); break; - case ITEMINFO_STACK_FLAG: - { - int stack_flag = 0; - if (it->stack.inventory != 0) stack_flag |= 1; - if (it->stack.cart != 0) stack_flag |= 2; - if (it->stack.storage != 0) stack_flag |= 4; - if (it->stack.guildstorage != 0) stack_flag |= 8; - script_pushint(st, stack_flag); - } + case ITEMINFO_STACK_FLAG: { + int stack_flag = 0; + + if (it->stack.inventory != 0) + stack_flag |= 1; + + if (it->stack.cart != 0) + stack_flag |= 2; + + if (it->stack.storage != 0) + stack_flag |= 4; + + if (it->stack.guildstorage != 0) + stack_flag |= 8; + + script_pushint(st, stack_flag); break; + } case ITEMINFO_ITEM_USAGE_FLAG: script_pushint(st, it->item_usage.flag); break; @@ -14928,11 +15415,21 @@ static BUILDIN(getiteminfo) case ITEMINFO_GM_LV_TRADE_OVERRIDE: script_pushint(st, it->gm_lv_trade_override); break; + case ITEMINFO_ID: + script_pushint(st, it->nameid); + break; + case ITEMINFO_AEGISNAME: + script_pushstrcopy(st, it->name); + break; + case ITEMINFO_NAME: + script_pushstrcopy(st, it->jname); + break; default: - ShowError("buildin_getiteminfo: Invalid item type %d.\n", n); - script_pushint(st,-1); + ShowError("buildin_getiteminfo: Invalid item info type %d.\n", type); + script_pushint(st, -1); return false; } + return true; } @@ -16085,7 +16582,6 @@ static BUILDIN(atcommand) struct map_session_data *sd, *dummy_sd = NULL; int fd; const char* cmd; - bool ret = true; cmd = script_getstr(st,2); @@ -16108,11 +16604,12 @@ static BUILDIN(atcommand) if (!atcommand->exec(fd, sd, cmd, false)) { ShowWarning("script: buildin_atcommand: failed to execute command '%s'\n", cmd); - script->reportsrc(st); - ret = false; + if (dummy_sd != NULL) + aFree(dummy_sd); + return false; } if (dummy_sd) aFree(dummy_sd); - return ret; + return true; } /** @@ -16558,7 +17055,7 @@ static BUILDIN(npcwalkto) } else { status_calc_npc(nd, SCO_NONE); } - unit->walktoxy(&nd->bl, x, y, 0); + unit->walk_toxy(&nd->bl, x, y, 0); } return true; @@ -18836,7 +19333,14 @@ static BUILDIN(npcshopdelitem) size--; } - RECREATE(nd->u.shop.shop_item, struct npc_item_list, size); + int alloc_size = size; + if (size < 0) { + size = 0; + alloc_size = 1; + } else if (size < 1) { + alloc_size = 1; + } + RECREATE(nd->u.shop.shop_item, struct npc_item_list, alloc_size); nd->u.shop.count = size; script_pushint(st,1); @@ -19237,12 +19741,14 @@ static BUILDIN(pcblockmove) static BUILDIN(setpcblock) { - struct map_session_data *sd = script->rid2sd(st); + struct map_session_data *sd = script_hasdata(st, 4) ? script->id2sd(st, script_getnum(st, 4)) : script->rid2sd(st); enum pcblock_action_flag type = script_getnum(st, 2); int state = (script_getnum(st, 3) > 0) ? 1 : 0; - if (sd == NULL) + if (sd == NULL) { + script_pushint(st, 0); return true; + } if ((type & PCBLOCK_MOVE) != 0) sd->block_action.move = state; @@ -19271,12 +19777,13 @@ static BUILDIN(setpcblock) if ((type & PCBLOCK_NPC) != 0) sd->block_action.npc = state; + script_pushint(st, 1); return true; } static BUILDIN(checkpcblock) { - struct map_session_data *sd = script->rid2sd(st); + struct map_session_data *sd = script_hasdata(st, 2) ? script->id2sd(st, script_getnum(st, 2)) : script->rid2sd(st); int retval = PCBLOCK_NONE; if (sd == NULL) { @@ -19385,26 +19892,25 @@ static BUILDIN(getunittype) /** * Sets real-time unit data for a game object. - * Setunitdata <GUID>,<DataType>,<Val1>{,<Val2>,<Val3>} + * + * @code{.herc} + * setunitdata <GUID>, <DataType>, <Val1>{, <Val2>, <Val3>} + * @endcode + * * @param1 GUID GID of the unit. * @param2 DataType Type of Data to be set for the unit. * @param3 Value#1 Value to be passed as change in data. * @param4 Value#2 Optional int value to be passed for certain data types. * @param5 Value#3 Optional int value to be passed for certain data types. * @return 1 on success, 0 on failure. - - Note: Please make this script command only modify ONE INTEGER value. - If need to modify string type data, or having multiple arguments, please - introduce a new script command. - */ + * + * Note: Please make this script command only modify ONE INTEGER value. + * If need to modify string type data, or having multiple arguments, please introduce a new script command. + * + **/ static BUILDIN(setunitdata) { - struct block_list *bl = NULL; - const char *mapname = NULL, *udtype = NULL; - int type = 0, val = 0, val2 = 0, val3 = 0; - struct map_session_data *tsd = NULL; - - bl = map->id2bl(script_getnum(st, 2)); + struct block_list *bl = map->id2bl(script_getnum(st, 2)); if (bl == NULL) { ShowWarning("buildin_setunitdata: Error in finding object with given GID %d!\n", script_getnum(st, 2)); @@ -19412,22 +19918,26 @@ static BUILDIN(setunitdata) return false; } - type = script_getnum(st, 3); + int type = script_getnum(st, 3); - /* type bounds */ + // Type bounds. if (type < UDT_SIZE || type >= UDT_MAX) { // Note: UDT_TYPE is not valid here ShowError("buildin_setunitdata: Invalid unit data type %d provided.\n", type); script_pushint(st, 0); return false; } - /* Mandatory Argument 3. Subject to deprecate. */ + const char *mapname = NULL; + int val = 0; + + // Mandatory argument #3. Subject to deprecate. if (type == UDT_MAPIDXY) { if (!script_isstringtype(st, 4)) { ShowError("buildin_setunitdata: Invalid data type for argument #3.\n"); script_pushint(st, 0); return false; } + mapname = script_getstr(st, 4); } else { if (script_isstringtype(st, 4)) { @@ -19435,68 +19945,87 @@ static BUILDIN(setunitdata) script_pushint(st, 0); return false; } + val = script_getnum(st, 4); } -/* checks if value is out of bounds. */ + +/**************************************************************************************************** + * Define temporary macros. [BEGIN] + ****************************************************************************************************/ + +// Checks if value is out of bounds. #define setunitdata_check_bounds(arg, min, max) \ do { \ if (script_getnum(st, (arg)) < (min) || script_getnum(st, (arg)) > (max)) { \ - ShowError("buildin_setunitdata: Invalid value %d for argument #%d. (min: %d, max: %d)\n", script_getnum(st, (arg)), (arg)-1, (min), (max)); \ + ShowError("buildin_setunitdata: Invalid value %d for argument #%d. (min: %d, max: %d)\n", \ + script_getnum(st, (arg)), (arg) - 1, (min), (max)); \ script_pushint(st, 0); \ return false; \ } \ } while(0); -/* checks if value is out of bounds. */ + +// Checks if value is too low. #define setunitdata_check_min(arg, min) \ do { \ if (script_getnum(st, (arg)) < (min)) { \ - ShowError("buildin_setunitdata: Invalid value %d for argument #%d. (min: %d)\n", script_getnum(st, (arg)), (arg)-1, (min)); \ + ShowError("buildin_setunitdata: Invalid value %d for argument #%d. (min: %d)\n", \ + script_getnum(st, (arg)), (arg) - 1, (min)); \ script_pushint(st, 0); \ return false; \ } \ } while(0); -/* checks if the argument doesn't exist, if required. - * also checks if the argument exists, if not required. */ + +// Checks if the argument doesn't exist, if required. Also checks if the argument exists, if not required. #define setunitdata_assert_arg(arg, required) \ do { \ if (required && !script_hasdata(st, (arg))) { \ - ShowError("buildin_setunitdata: Type %d reqires argument #%d.\n", type, (arg)-1); \ + ShowError("buildin_setunitdata: Type %d reqires argument #%d.\n", type, (arg) - 1); \ script_pushint(st, 0); \ return false; \ } else if (!required && script_hasdata(st, arg)) { \ - ShowError("buildin_setunitdata: Argument %d is not required for type %d.\n", (arg)-1, type); \ + ShowError("buildin_setunitdata: Argument %d is not required for type %d.\n", (arg) - 1, type); \ script_pushint(st, 0); \ return false; \ } \ } while (0); -/* checks if the data is an integer. */ + +// Checks if the data is an integer. #define setunitdata_check_int(arg) \ do { \ setunitdata_assert_arg((arg), true); \ if (script_isstringtype(st, (arg))) { \ - ShowError("buildin_setunitdata: Argument #%d expects integer, string given.\n", (arg)-1); \ + ShowError("buildin_setunitdata: Argument #%d expects integer, string given.\n", (arg) - 1); \ script_pushint(st, 0); \ return false; \ } \ } while(0); -/* checks if the data is a string. */ + +// Checks if the data is a string. #define setunitdata_check_string(arg) \ do { \ setunitdata_assert_arg((arg), true); \ if (script_isinttype(st, (arg))) { \ - ShowError("buildin_setunitdata: Argument #%d expects string, integer given.\n", (arg)-1); \ + ShowError("buildin_setunitdata: Argument #%d expects string, integer given.\n", (arg) - 1); \ script_pushint(st, 0); \ return false; \ } \ } while(0); +/**************************************************************************************************** + * Define temporary macros. [END] + ****************************************************************************************************/ + if (type != UDT_MAPIDXY && type != UDT_WALKTOXY) { setunitdata_assert_arg(5, false); setunitdata_assert_arg(6, false); } - switch (type) - { + int val2 = 0; + int val3 = 0; + + struct map_session_data *tsd = NULL; + + switch (type) { case UDT_SIZE: setunitdata_check_bounds(4, SZ_SMALL, SZ_BIG); break; @@ -19522,30 +20051,36 @@ static BUILDIN(setunitdata) case UDT_MASTERAID: setunitdata_check_min(4, 0); tsd = map->id2sd(val); + if (tsd == NULL) { - ShowWarning("buildin_setunitdata: Account ID %d not found for master change!\n",val); + ShowWarning("buildin_setunitdata: Account ID %d not found for master change!\n", val); script_pushint(st, 0); return false; } + break; case UDT_MASTERCID: setunitdata_check_min(4, 0); tsd = map->charid2sd(val); + if (tsd == NULL) { - ShowWarning("buildin_setunitdata: Character ID %d not found for master change!\n",val); + ShowWarning("buildin_setunitdata: Character ID %d not found for master change!\n", val); script_pushint(st, 0); return false; } + break; case UDT_MAPIDXY: - if ((val = map->mapname2mapid(mapname)) == -1) { + if ((val = map->mapname2mapid(mapname)) == INDEX_NOT_FOUND) { ShowError("buildin_setunitdata: Non-existent map %s provided.\n", mapname); + script_pushint(st, 0); return false; } + setunitdata_check_int(5); setunitdata_check_int(6); - setunitdata_check_bounds(5, 0, MAX_MAP_SIZE/2); - setunitdata_check_bounds(6, 0, MAX_MAP_SIZE/2); + setunitdata_check_bounds(5, 0, MAX_MAP_SIZE / 2); + setunitdata_check_bounds(6, 0, MAX_MAP_SIZE / 2); val2 = script_getnum(st, 5); val3 = script_getnum(st, 6); break; @@ -19553,8 +20088,8 @@ static BUILDIN(setunitdata) setunitdata_assert_arg(6, false); setunitdata_check_int(5); val2 = script_getnum(st, 5); - setunitdata_check_bounds(4, 0, MAX_MAP_SIZE/2); - setunitdata_check_bounds(5, 0, MAX_MAP_SIZE/2); + setunitdata_check_bounds(4, 0, MAX_MAP_SIZE / 2); + setunitdata_check_bounds(5, 0, MAX_MAP_SIZE / 2); break; case UDT_SPEED: setunitdata_check_bounds(4, 0, MAX_WALK_SPEED); @@ -19609,7 +20144,7 @@ static BUILDIN(setunitdata) setunitdata_check_bounds(4, 0, SHRT_MAX); break; case UDT_HUNGER: - setunitdata_check_bounds(4, 0, 99); + setunitdata_check_bounds(4, PET_HUNGER_STARVING, PET_HUNGER_STUFFED); // Pets and Homunculi have the same hunger value bounds. break; case UDT_RACE: case UDT_ELETYPE: @@ -19617,19 +20152,20 @@ static BUILDIN(setunitdata) setunitdata_check_bounds(4, 0, CHAR_MAX); break; case UDT_GROUP: - { setunitdata_check_bounds(4, 0, INT_MAX); + struct unit_data *ud = unit->bl2ud2(bl); + if (ud == NULL) { ShowError("buildin_setunitdata: ud is NULL!\n"); script_pushint(st, 0); return false; } + ud->groupId = script_getnum(st, 4); clif->blname_ack(0, bl); // Send update to client. script_pushint(st, 1); return true; - } case UDT_DAMAGE_TAKEN_RATE: setunitdata_check_bounds(4, 1, INT_MAX); break; @@ -19637,67 +20173,81 @@ static BUILDIN(setunitdata) break; } +/**************************************************************************************************** + * Undefine temporary macros. [BEGIN] + ****************************************************************************************************/ + #undef setunitdata_check_bounds +#undef setunitdata_check_min #undef setunitdata_assert_arg #undef setunitdata_check_int #undef setunitdata_check_string - /* Set the values */ +/**************************************************************************************************** + * Undefine temporary macros. [END] + ****************************************************************************************************/ + + // Set the values. switch (bl->type) { - case BL_MOB: - { + case BL_MOB: { struct mob_data *md = BL_UCAST(BL_MOB, bl); - nullpo_retr(false, md); - switch (type) - { + if (md == NULL) { + ShowError("buildin_setunitdata: Can't find monster for GID %d!\n", script_getnum(st, 2)); + script_pushint(st, 0); + return false; + } + + switch (type) { case UDT_SIZE: - md->status.size = (unsigned char) val; + md->status.size = (unsigned char)val; break; case UDT_LEVEL: md->level = val; - if (battle_config.show_mob_info & 4) + + if ((battle_config.show_mob_info & 4) != 0) clif->blname_ack(0, &md->bl); + break; case UDT_HP: - status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); clif->blname_ack(0, &md->bl); break; case UDT_MAXHP: - md->status.max_hp = (unsigned int) val; + md->status.max_hp = (unsigned int)val; clif->blname_ack(0, &md->bl); break; case UDT_SP: - status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXSP: - md->status.max_sp = (unsigned int) val; + md->status.max_sp = (unsigned int)val; break; case UDT_MASTERAID: md->master_id = val; break; case UDT_MAPIDXY: - unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT); + unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT); break; case UDT_WALKTOXY: - if (!unit->walktoxy(bl, (short) val, (short) val2, 2)) - unit->movepos(bl, (short) val, (short) val2, 0, 0); + if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0) + unit->movepos(bl, (short)val, (short)val2, 0, 0); break; case UDT_SPEED: - md->status.speed = (unsigned short) val; + md->status.speed = (unsigned short)val; status->calc_misc(bl, &md->status, md->level); break; case UDT_MODE: - md->status.mode = (enum e_mode) val; + md->status.mode = (enum e_mode)val; break; case UDT_AI: - md->special_state.ai = (enum ai) val; + md->special_state.ai = (enum ai)val; break; case UDT_SCOPTION: - md->sc.option = (unsigned int) val; + md->sc.option = (unsigned int)val; break; case UDT_SEX: - md->vd->sex = (char) val; + md->vd->sex = (char)val; break; case UDT_CLASS: mob->class_change(md, val); @@ -19727,118 +20277,121 @@ static BUILDIN(setunitdata) clif->changelook(bl, LOOK_WEAPON, val); break; case UDT_LOOKDIR: - unit->setdir(bl, (uint8) val); + unit->set_dir(bl, (enum unit_dir)val); break; case UDT_CANMOVETICK: md->ud.canmove_tick = val; break; case UDT_STR: - md->status.str = (unsigned short) val; + md->status.str = (unsigned short)val; status->calc_misc(bl, &md->status, md->level); break; case UDT_AGI: - md->status.agi = (unsigned short) val; + md->status.agi = (unsigned short)val; status->calc_misc(bl, &md->status, md->level); break; case UDT_VIT: - md->status.vit = (unsigned short) val; + md->status.vit = (unsigned short)val; status->calc_misc(bl, &md->status, md->level); break; case UDT_INT: - md->status.int_ = (unsigned short) val; + md->status.int_ = (unsigned short)val; status->calc_misc(bl, &md->status, md->level); break; case UDT_DEX: - md->status.dex = (unsigned short) val; + md->status.dex = (unsigned short)val; status->calc_misc(bl, &md->status, md->level); break; case UDT_LUK: - md->status.luk = (unsigned short) val; + md->status.luk = (unsigned short)val; status->calc_misc(bl, &md->status, md->level); break; case UDT_ATKRANGE: - md->status.rhw.range = (unsigned short) val; + md->status.rhw.range = (unsigned short)val; break; case UDT_ATKMIN: - md->status.rhw.atk = (unsigned short) val; + md->status.rhw.atk = (unsigned short)val; break; case UDT_ATKMAX: - md->status.rhw.atk2 = (unsigned short) val; + md->status.rhw.atk2 = (unsigned short)val; break; case UDT_MATKMIN: - md->status.matk_min = (unsigned short) val; + md->status.matk_min = (unsigned short)val; break; case UDT_MATKMAX: - md->status.matk_max = (unsigned short) val; + md->status.matk_max = (unsigned short)val; break; case UDT_DEF: - md->status.def = (defType) val; + md->status.def = (defType)val; break; case UDT_MDEF: - md->status.mdef = (defType) val; + md->status.mdef = (defType)val; break; case UDT_HIT: - md->status.hit = (short) val; + md->status.hit = (short)val; break; case UDT_FLEE: - md->status.flee = (short) val; + md->status.flee = (short)val; break; case UDT_PDODGE: - md->status.flee2 = (short) val; + md->status.flee2 = (short)val; break; case UDT_CRIT: - md->status.cri = (short) val; + md->status.cri = (short)val; break; case UDT_RACE: - md->status.race = (unsigned char) val; + md->status.race = (unsigned char)val; break; case UDT_ELETYPE: - md->status.def_ele = (unsigned char) val; + md->status.def_ele = (unsigned char)val; break; case UDT_ELELEVEL: - md->status.ele_lv = (unsigned char) val; + md->status.ele_lv = (unsigned char)val; break; case UDT_AMOTION: - md->status.amotion = (unsigned short) val; + md->status.amotion = (unsigned short)val; break; case UDT_ADELAY: - md->status.adelay = (unsigned short) val; + md->status.adelay = (unsigned short)val; break; case UDT_DMOTION: - md->status.dmotion = (unsigned short) val; + md->status.dmotion = (unsigned short)val; break; case UDT_DAMAGE_TAKEN_RATE: - md->dmg_taken_rate = (int) val; + md->dmg_taken_rate = (int)val; break; default: - ShowWarning("buildin_setunitdata: Invalid data type '%s' for mob unit.\n", udtype); + ShowWarning("buildin_setunitdata: Invalid data type '%d' for mob unit.\n", type); script_pushint(st, 0); return false; } - } + break; - case BL_HOM: - { + } + case BL_HOM: { struct homun_data *hd = BL_UCAST(BL_HOM, bl); - nullpo_retr(false, hd); + if (hd == NULL) { + ShowError("buildin_setunitdata: Can't find Homunculus for GID %d!\n", script_getnum(st, 2)); + script_pushint(st, 0); + return false; + } - switch (type) - { + switch (type) { case UDT_SIZE: - hd->base_status.size = (unsigned char) val; + hd->base_status.size = (unsigned char)val; break; case UDT_LEVEL: - hd->homunculus.level = (short) val; + hd->homunculus.level = (short)val; break; case UDT_HP: - status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXHP: hd->homunculus.max_hp = val; break; case UDT_SP: - status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXSP: hd->homunculus.max_sp = val; @@ -19848,634 +20401,645 @@ static BUILDIN(setunitdata) hd->master = tsd; break; case UDT_MAPIDXY: - unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT); + unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT); break; case UDT_WALKTOXY: - if (!unit->walktoxy(bl, (short) val, (short) val2, 2)) - unit->movepos(bl, (short) val, (short) val2, 0, 0); + if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0) + unit->movepos(bl, (short)val, (short)val2, 0, 0); break; case UDT_SPEED: - hd->base_status.speed = (unsigned short) val; + hd->base_status.speed = (unsigned short)val; status->calc_misc(bl, &hd->base_status, hd->homunculus.level); break; case UDT_LOOKDIR: - unit->setdir(bl, (unsigned char) val); + unit->set_dir(bl, (enum unit_dir)val); break; case UDT_CANMOVETICK: hd->ud.canmove_tick = val; break; case UDT_STR: - hd->base_status.str = (unsigned short) val; + hd->base_status.str = (unsigned short)val; status->calc_misc(bl, &hd->base_status, hd->homunculus.level); break; case UDT_AGI: - hd->base_status.agi = (unsigned short) val; + hd->base_status.agi = (unsigned short)val; status->calc_misc(bl, &hd->base_status, hd->homunculus.level); break; case UDT_VIT: - hd->base_status.vit = (unsigned short) val; + hd->base_status.vit = (unsigned short)val; status->calc_misc(bl, &hd->base_status, hd->homunculus.level); break; case UDT_INT: - hd->base_status.int_ = (unsigned short) val; + hd->base_status.int_ = (unsigned short)val; status->calc_misc(bl, &hd->base_status, hd->homunculus.level); break; case UDT_DEX: - hd->base_status.dex = (unsigned short) val; + hd->base_status.dex = (unsigned short)val; status->calc_misc(bl, &hd->base_status, hd->homunculus.level); break; case UDT_LUK: - hd->base_status.luk = (unsigned short) val; + hd->base_status.luk = (unsigned short)val; status->calc_misc(bl, &hd->base_status, hd->homunculus.level); break; case UDT_ATKRANGE: - hd->base_status.rhw.range = (unsigned short) val; + hd->base_status.rhw.range = (unsigned short)val; break; case UDT_ATKMIN: - hd->base_status.rhw.atk = (unsigned short) val; + hd->base_status.rhw.atk = (unsigned short)val; break; case UDT_ATKMAX: - hd->base_status.rhw.atk2 = (unsigned short) val; + hd->base_status.rhw.atk2 = (unsigned short)val; break; case UDT_MATKMIN: - hd->base_status.matk_min = (unsigned short) val; + hd->base_status.matk_min = (unsigned short)val; break; case UDT_MATKMAX: - hd->base_status.matk_max = (unsigned short) val; + hd->base_status.matk_max = (unsigned short)val; break; case UDT_DEF: - hd->base_status.def = (defType) val; + hd->base_status.def = (defType)val; break; case UDT_MDEF: - hd->base_status.mdef = (defType) val; + hd->base_status.mdef = (defType)val; break; case UDT_HIT: - hd->base_status.hit = (short) val; + hd->base_status.hit = (short)val; break; case UDT_FLEE: - hd->base_status.flee = (short) val; + hd->base_status.flee = (short)val; break; case UDT_PDODGE: - hd->base_status.flee2 = (short) val; + hd->base_status.flee2 = (short)val; break; case UDT_CRIT: - hd->base_status.cri = (short) val; + hd->base_status.cri = (short)val; break; case UDT_RACE: - hd->base_status.race = (unsigned char) val; + hd->base_status.race = (unsigned char)val; break; case UDT_ELETYPE: - hd->base_status.def_ele = (unsigned char) val; + hd->base_status.def_ele = (unsigned char)val; break; case UDT_ELELEVEL: - hd->base_status.ele_lv = (unsigned char) val; + hd->base_status.ele_lv = (unsigned char)val; break; case UDT_AMOTION: - hd->base_status.amotion = (unsigned short) val; + hd->base_status.amotion = (unsigned short)val; break; case UDT_ADELAY: - hd->base_status.adelay = (unsigned short) val; + hd->base_status.adelay = (unsigned short)val; break; case UDT_DMOTION: - hd->base_status.dmotion = (unsigned short) val; + hd->base_status.dmotion = (unsigned short)val; break; case UDT_HUNGER: - hd->homunculus.hunger = (short) val; + hd->homunculus.hunger = (short)val; clif->send_homdata(hd->master, SP_HUNGRY, hd->homunculus.hunger); break; case UDT_INTIMACY: - homun->add_intimacy(hd, (unsigned int) val); + homun->add_intimacy(hd, (unsigned int)val); clif->send_homdata(hd->master, SP_INTIMATE, hd->homunculus.intimacy / 100); break; default: - ShowWarning("buildin_setunitdata: Invalid data type '%s' for homunculus unit.\n", udtype); + ShowWarning("buildin_setunitdata: Invalid data type '%d' for homunculus unit.\n", type); script_pushint(st, 0); return false; } - clif->send_homdata(hd->master, SP_ACK, 0); // send homun data - } + clif->send_homdata(hd->master, SP_ACK, 0); // Send Homunculus data. break; - case BL_PET: - { + } + case BL_PET: { struct pet_data *pd = BL_UCAST(BL_PET, bl); - nullpo_retr(false, pd); + if (pd == NULL) { + ShowError("buildin_setunitdata: Can't find pet for GID %d!\n", script_getnum(st, 2)); + script_pushint(st, 0); + return false; + } - switch (type) - { + switch (type) { case UDT_SIZE: - pd->status.size = (unsigned char) val; + pd->status.size = (unsigned char)val; break; case UDT_LEVEL: - pd->pet.level = (short) val; + pd->pet.level = (short)val; + if (pd->msd != NULL) + clif->send_petstatus(pd->msd); // Send pet data. break; case UDT_HP: - status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXHP: - pd->status.max_hp = (unsigned int) val; + pd->status.max_hp = (unsigned int)val; break; case UDT_SP: - status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXSP: - pd->status.max_sp = (unsigned int) val; + pd->status.max_sp = (unsigned int)val; break; case UDT_MASTERAID: pd->pet.account_id = val; pd->msd = tsd; break; case UDT_MAPIDXY: - unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT); + unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT); break; case UDT_WALKTOXY: - if (!unit->walktoxy(bl, (short) val, (short) val2, 2)) - unit->movepos(bl, (short) val, (short) val2, 0, 0); + if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0) + unit->movepos(bl, (short)val, (short)val2, 0, 0); break; case UDT_SPEED: - pd->status.speed = (unsigned short) val; + pd->status.speed = (unsigned short)val; status->calc_misc(bl, &pd->status, pd->pet.level); break; case UDT_LOOKDIR: - unit->setdir(bl, (unsigned char) val); + unit->set_dir(bl, (enum unit_dir)val); break; case UDT_CANMOVETICK: pd->ud.canmove_tick = val; break; case UDT_STR: - pd->status.str = (unsigned short) val; + pd->status.str = (unsigned short)val; status->calc_misc(bl, &pd->status, pd->pet.level); break; case UDT_AGI: - pd->status.agi = (unsigned short) val; + pd->status.agi = (unsigned short)val; status->calc_misc(bl, &pd->status, pd->pet.level); break; case UDT_VIT: - pd->status.vit = (unsigned short) val; + pd->status.vit = (unsigned short)val; status->calc_misc(bl, &pd->status, pd->pet.level); break; case UDT_INT: - pd->status.int_ = (unsigned short) val; + pd->status.int_ = (unsigned short)val; status->calc_misc(bl, &pd->status, pd->pet.level); break; case UDT_DEX: - pd->status.dex = (unsigned short) val; + pd->status.dex = (unsigned short)val; status->calc_misc(bl, &pd->status, pd->pet.level); break; case UDT_LUK: - pd->status.luk = (unsigned short) val; + pd->status.luk = (unsigned short)val; status->calc_misc(bl, &pd->status, pd->pet.level); break; case UDT_ATKRANGE: - pd->status.rhw.range = (unsigned short) val; + pd->status.rhw.range = (unsigned short)val; break; case UDT_ATKMIN: - pd->status.rhw.atk = (unsigned short) val; + pd->status.rhw.atk = (unsigned short)val; break; case UDT_ATKMAX: - pd->status.rhw.atk2 = (unsigned short) val; + pd->status.rhw.atk2 = (unsigned short)val; break; case UDT_MATKMIN: - pd->status.matk_min = (unsigned short) val; + pd->status.matk_min = (unsigned short)val; break; case UDT_MATKMAX: - pd->status.matk_max = (unsigned short) val; + pd->status.matk_max = (unsigned short)val; break; case UDT_DEF: - pd->status.def = (defType) val; + pd->status.def = (defType)val; break; case UDT_MDEF: - pd->status.mdef = (defType) val; + pd->status.mdef = (defType)val; break; case UDT_HIT: - pd->status.hit = (short) val; + pd->status.hit = (short)val; break; case UDT_FLEE: - pd->status.flee = (short) val; + pd->status.flee = (short)val; break; case UDT_PDODGE: - pd->status.flee2 = (short) val; + pd->status.flee2 = (short)val; break; case UDT_CRIT: - pd->status.cri = (short) val; + pd->status.cri = (short)val; break; case UDT_RACE: - pd->status.race = (unsigned char) val; + pd->status.race = (unsigned char)val; break; case UDT_ELETYPE: - pd->status.def_ele = (unsigned char) val; + pd->status.def_ele = (unsigned char)val; break; case UDT_ELELEVEL: - pd->status.ele_lv = (unsigned char) val; + pd->status.ele_lv = (unsigned char)val; break; case UDT_AMOTION: - pd->status.amotion = (unsigned short) val; + pd->status.amotion = (unsigned short)val; break; case UDT_ADELAY: - pd->status.adelay = (unsigned short) val; + pd->status.adelay = (unsigned short)val; break; case UDT_DMOTION: - pd->status.dmotion = (unsigned short) val; + pd->status.dmotion = (unsigned short)val; break; case UDT_INTIMACY: pet->set_intimate(pd, val); - clif->send_petdata(pd->msd, pd, 1, pd->pet.intimate); break; case UDT_HUNGER: - pd->pet.hungry = (short) val; + pet->set_hunger(pd, val); break; default: - ShowWarning("buildin_setunitdata: Invalid data type '%s' for pet unit.\n", udtype); + ShowWarning("buildin_setunitdata: Invalid data type '%d' for pet unit.\n", type); script_pushint(st, 0); return false; } - clif->send_petstatus(pd->msd); // send pet data - } + break; - case BL_MER: - { + } + case BL_MER: { struct mercenary_data *mc = BL_UCAST(BL_MER, bl); - nullpo_retr(false, mc); + if (mc == NULL) { + ShowError("buildin_setunitdata: Can't find mercenary for GID %d!\n", script_getnum(st, 2)); + script_pushint(st, 0); + return false; + } - switch (type) - { + switch (type) { case UDT_SIZE: - mc->base_status.size = (unsigned char) val; + mc->base_status.size = (unsigned char)val; break; case UDT_HP: - status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXHP: - mc->base_status.max_hp = (unsigned int) val; + mc->base_status.max_hp = (unsigned int)val; break; case UDT_SP: - status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXSP: - mc->base_status.max_sp = (unsigned int) val; + mc->base_status.max_sp = (unsigned int)val; break; case UDT_MASTERCID: mc->mercenary.char_id = val; break; case UDT_MAPIDXY: - unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT); + unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT); break; case UDT_WALKTOXY: - if (!unit->walktoxy(bl, (short) val, (short) val2, 2)) - unit->movepos(bl, (short) val, (short) val2, 0, 0); + if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0) + unit->movepos(bl, (short)val, (short)val2, 0, 0); break; case UDT_SPEED: - mc->base_status.size = (unsigned char) val; + mc->base_status.size = (unsigned char)val; status->calc_misc(bl, &mc->base_status, mc->db->lv); break; case UDT_LOOKDIR: - unit->setdir(bl, (unsigned char) val); + unit->set_dir(bl, (enum unit_dir)val); break; case UDT_CANMOVETICK: mc->ud.canmove_tick = val; break; case UDT_STR: - mc->base_status.str = (unsigned short) val; + mc->base_status.str = (unsigned short)val; status->calc_misc(bl, &mc->base_status, mc->db->lv); break; case UDT_AGI: - mc->base_status.agi = (unsigned short) val; + mc->base_status.agi = (unsigned short)val; status->calc_misc(bl, &mc->base_status, mc->db->lv); break; case UDT_VIT: - mc->base_status.vit = (unsigned short) val; + mc->base_status.vit = (unsigned short)val; status->calc_misc(bl, &mc->base_status, mc->db->lv); break; case UDT_INT: - mc->base_status.int_ = (unsigned short) val; + mc->base_status.int_ = (unsigned short)val; status->calc_misc(bl, &mc->base_status, mc->db->lv); break; case UDT_DEX: - mc->base_status.dex = (unsigned short) val; + mc->base_status.dex = (unsigned short)val; status->calc_misc(bl, &mc->base_status, mc->db->lv); break; case UDT_LUK: - mc->base_status.luk = (unsigned short) val; + mc->base_status.luk = (unsigned short)val; status->calc_misc(bl, &mc->base_status, mc->db->lv); break; case UDT_ATKRANGE: - mc->base_status.rhw.range = (unsigned short) val; + mc->base_status.rhw.range = (unsigned short)val; break; case UDT_ATKMIN: - mc->base_status.rhw.atk = (unsigned short) val; + mc->base_status.rhw.atk = (unsigned short)val; break; case UDT_ATKMAX: - mc->base_status.rhw.atk2 = (unsigned short) val; + mc->base_status.rhw.atk2 = (unsigned short)val; break; case UDT_MATKMIN: - mc->base_status.matk_min = (unsigned short) val; + mc->base_status.matk_min = (unsigned short)val; break; case UDT_MATKMAX: - mc->base_status.matk_max = (unsigned short) val; + mc->base_status.matk_max = (unsigned short)val; break; case UDT_DEF: - mc->base_status.def = (defType) val; + mc->base_status.def = (defType)val; break; case UDT_MDEF: - mc->base_status.mdef = (defType) val; + mc->base_status.mdef = (defType)val; break; case UDT_HIT: - mc->base_status.hit = (short) val; + mc->base_status.hit = (short)val; break; case UDT_FLEE: - mc->base_status.flee = (short) val; + mc->base_status.flee = (short)val; break; case UDT_PDODGE: - mc->base_status.flee2 = (short) val; + mc->base_status.flee2 = (short)val; break; case UDT_CRIT: - mc->base_status.cri = (short) val; + mc->base_status.cri = (short)val; break; case UDT_RACE: - mc->base_status.race = (unsigned char) val; + mc->base_status.race = (unsigned char)val; break; case UDT_ELETYPE: - mc->base_status.def_ele = (unsigned char) val; + mc->base_status.def_ele = (unsigned char)val; break; case UDT_ELELEVEL: - mc->base_status.ele_lv = (unsigned char) val; + mc->base_status.ele_lv = (unsigned char)val; break; case UDT_AMOTION: - mc->base_status.amotion = (unsigned short) val; + mc->base_status.amotion = (unsigned short)val; break; case UDT_ADELAY: - mc->base_status.adelay = (unsigned short) val; + mc->base_status.adelay = (unsigned short)val; break; case UDT_DMOTION: - mc->base_status.dmotion = (unsigned short) val; + mc->base_status.dmotion = (unsigned short)val; break; case UDT_MERC_KILLCOUNT: - mc->mercenary.kill_count = (unsigned int) val; + mc->mercenary.kill_count = (unsigned int)val; break; case UDT_LIFETIME: - mc->mercenary.life_time = (unsigned int) val; + mc->mercenary.life_time = (unsigned int)val; break; default: - ShowWarning("buildin_setunitdata: Invalid data type '%s' for mercenary unit.\n", udtype); + ShowWarning("buildin_setunitdata: Invalid data type '%d' for mercenary unit.\n", type); script_pushint(st, 0); return false; } + // Send mercenary data. clif->mercenary_info(map->charid2sd(mc->mercenary.char_id)); clif->mercenary_skillblock(map->charid2sd(mc->mercenary.char_id)); - } break; - case BL_ELEM: - { + } + case BL_ELEM: { struct elemental_data *ed = BL_UCAST(BL_ELEM, bl); - nullpo_retr(false, ed); + if (ed == NULL) { + ShowError("buildin_setunitdata: Can't find Elemental for GID %d!\n", script_getnum(st, 2)); + script_pushint(st, 0); + return false; + } - switch (type) - { + switch (type) { case UDT_SIZE: - ed->base_status.size = (unsigned char) val; + ed->base_status.size = (unsigned char)val; break; case UDT_HP: - status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXHP: - ed->base_status.max_hp = (unsigned int) val; + ed->base_status.max_hp = (unsigned int)val; break; case UDT_SP: - status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXSP: - ed->base_status.max_sp = (unsigned int) val; + ed->base_status.max_sp = (unsigned int)val; break; case UDT_MASTERCID: ed->elemental.char_id = val; break; case UDT_MAPIDXY: - unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT); + unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT); break; case UDT_WALKTOXY: - if (!unit->walktoxy(bl, (short) val, (short) val2, 2)) - unit->movepos(bl, (short) val, (short) val2, 0, 0); + if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0) + unit->movepos(bl, (short)val, (short)val2, 0, 0); break; case UDT_SPEED: - ed->base_status.speed = (unsigned short) val; + ed->base_status.speed = (unsigned short)val; status->calc_misc(bl, &ed->base_status, ed->db->lv); break; case UDT_LOOKDIR: - unit->setdir(bl, (unsigned char) val); + unit->set_dir(bl, (enum unit_dir)val); break; case UDT_CANMOVETICK: ed->ud.canmove_tick = val; break; case UDT_STR: - ed->base_status.str = (unsigned short) val; + ed->base_status.str = (unsigned short)val; status->calc_misc(bl, &ed->base_status, ed->db->lv); break; case UDT_AGI: - ed->base_status.agi = (unsigned short) val; + ed->base_status.agi = (unsigned short)val; status->calc_misc(bl, &ed->base_status, ed->db->lv); break; case UDT_VIT: - ed->base_status.vit = (unsigned short) val; + ed->base_status.vit = (unsigned short)val; status->calc_misc(bl, &ed->base_status, ed->db->lv); break; case UDT_INT: - ed->base_status.int_ = (unsigned short) val; + ed->base_status.int_ = (unsigned short)val; status->calc_misc(bl, &ed->base_status, ed->db->lv); break; case UDT_DEX: - ed->base_status.dex = (unsigned short) val; + ed->base_status.dex = (unsigned short)val; status->calc_misc(bl, &ed->base_status, ed->db->lv); break; case UDT_LUK: - ed->base_status.luk = (unsigned short) val; + ed->base_status.luk = (unsigned short)val; status->calc_misc(bl, &ed->base_status, ed->db->lv); break; case UDT_ATKRANGE: - ed->base_status.rhw.range = (unsigned short) val; + ed->base_status.rhw.range = (unsigned short)val; break; case UDT_ATKMIN: - ed->base_status.rhw.atk = (unsigned short) val; + ed->base_status.rhw.atk = (unsigned short)val; break; case UDT_ATKMAX: - ed->base_status.rhw.atk2 = (unsigned short) val; + ed->base_status.rhw.atk2 = (unsigned short)val; break; case UDT_MATKMIN: - ed->base_status.matk_min = (unsigned short) val; + ed->base_status.matk_min = (unsigned short)val; break; case UDT_MATKMAX: - ed->base_status.matk_max = (unsigned short) val; + ed->base_status.matk_max = (unsigned short)val; break; case UDT_DEF: - ed->base_status.def = (defType) val; + ed->base_status.def = (defType)val; break; case UDT_MDEF: - ed->base_status.mdef = (defType) val; + ed->base_status.mdef = (defType)val; break; case UDT_HIT: - ed->base_status.hit = (short) val; + ed->base_status.hit = (short)val; break; case UDT_FLEE: - ed->base_status.flee = (short) val; + ed->base_status.flee = (short)val; break; case UDT_PDODGE: - ed->base_status.flee2 = (short) val; + ed->base_status.flee2 = (short)val; break; case UDT_CRIT: - ed->base_status.cri = (short) val; + ed->base_status.cri = (short)val; break; case UDT_RACE: - ed->base_status.race = (unsigned char) val; + ed->base_status.race = (unsigned char)val; break; case UDT_ELETYPE: - ed->base_status.def_ele = (unsigned char) val; + ed->base_status.def_ele = (unsigned char)val; break; case UDT_ELELEVEL: - ed->base_status.ele_lv = (unsigned char) val; + ed->base_status.ele_lv = (unsigned char)val; break; case UDT_AMOTION: - ed->base_status.amotion = (unsigned short) val; + ed->base_status.amotion = (unsigned short)val; break; case UDT_ADELAY: - ed->base_status.adelay = (unsigned short) val; + ed->base_status.adelay = (unsigned short)val; break; case UDT_DMOTION: - ed->base_status.dmotion = (unsigned short) val; + ed->base_status.dmotion = (unsigned short)val; break; case UDT_LIFETIME: ed->elemental.life_time = val; break; default: - ShowWarning("buildin_setunitdata: Invalid data type '%s' for elemental unit.\n", udtype); + ShowWarning("buildin_setunitdata: Invalid data type '%d' for elemental unit.\n", type); script_pushint(st, 0); return false; } - clif->elemental_info(ed->master); - } + + clif->elemental_info(ed->master); // Send Elemental data. break; - case BL_NPC: - { + } + case BL_NPC: { struct npc_data *nd = BL_UCAST(BL_NPC, bl); - nullpo_retr(false, nd); + if (nd == NULL) { + ShowError("buildin_setunitdata: Can't find NPC for GID %d!\n", script_getnum(st, 2)); + script_pushint(st, 0); + return false; + } - switch (type) - { + switch (type) { case UDT_SIZE: - nd->status.size = (unsigned char) val; + nd->status.size = (unsigned char)val; break; case UDT_LEVEL: - nd->level = (unsigned short) val; + nd->level = (unsigned short)val; break; case UDT_HP: - status->set_hp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_hp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXHP: - nd->status.max_hp = (unsigned int) val; + nd->status.max_hp = (unsigned int)val; break; case UDT_SP: - status->set_sp(bl, (unsigned int) val, STATUS_HEAL_DEFAULT); + status->set_sp(bl, (unsigned int)val, STATUS_HEAL_DEFAULT); break; case UDT_MAXSP: - nd->status.max_sp = (unsigned int) val; + nd->status.max_sp = (unsigned int)val; break; case UDT_MAPIDXY: - unit->warp(bl, (short) val, (short) val2, (short) val3, CLR_TELEPORT); + unit->warp(bl, (short)val, (short)val2, (short)val3, CLR_TELEPORT); break; case UDT_WALKTOXY: - if (!unit->walktoxy(bl, (short) val, (short) val2, 2)) - unit->movepos(bl, (short) val, (short) val2, 0, 0); + if (unit->walk_toxy(bl, (short)val, (short)val2, 2) != 0) + unit->movepos(bl, (short)val, (short)val2, 0, 0); break; case UDT_CLASS: - npc->setclass(nd, (short) val); + npc->setclass(nd, (short)val); break; case UDT_SPEED: - nd->speed = (short) val; + nd->speed = (short)val; status->calc_misc(bl, &nd->status, nd->level); break; case UDT_LOOKDIR: - unit->setdir(bl, (unsigned char) val); + unit->set_dir(bl, (enum unit_dir)val); break; case UDT_STR: - nd->status.str = (unsigned short) val; + nd->status.str = (unsigned short)val; status->calc_misc(bl, &nd->status, nd->level); break; case UDT_AGI: - nd->status.agi = (unsigned short) val; + nd->status.agi = (unsigned short)val; status->calc_misc(bl, &nd->status, nd->level); break; case UDT_VIT: - nd->status.vit = (unsigned short) val; + nd->status.vit = (unsigned short)val; status->calc_misc(bl, &nd->status, nd->level); break; case UDT_INT: - nd->status.int_ = (unsigned short) val; + nd->status.int_ = (unsigned short)val; status->calc_misc(bl, &nd->status, nd->level); break; case UDT_DEX: - nd->status.dex = (unsigned short) val; + nd->status.dex = (unsigned short)val; status->calc_misc(bl, &nd->status, nd->level); break; case UDT_LUK: - nd->status.luk = (unsigned short) val; + nd->status.luk = (unsigned short)val; status->calc_misc(bl, &nd->status, nd->level); break; case UDT_STATPOINT: - nd->stat_point = (unsigned short) val; + nd->stat_point = (unsigned short)val; break; case UDT_ATKRANGE: - nd->status.rhw.range = (unsigned short) val; + nd->status.rhw.range = (unsigned short)val; break; case UDT_ATKMIN: - nd->status.rhw.atk = (unsigned short) val; + nd->status.rhw.atk = (unsigned short)val; break; case UDT_ATKMAX: - nd->status.rhw.atk2 = (unsigned short) val; + nd->status.rhw.atk2 = (unsigned short)val; break; case UDT_MATKMIN: - nd->status.matk_min = (unsigned short) val; + nd->status.matk_min = (unsigned short)val; break; case UDT_MATKMAX: - nd->status.matk_max = (unsigned short) val; + nd->status.matk_max = (unsigned short)val; break; case UDT_DEF: - nd->status.def = (defType) val; + nd->status.def = (defType)val; break; case UDT_MDEF: - nd->status.mdef = (defType) val; + nd->status.mdef = (defType)val; break; case UDT_HIT: - nd->status.hit = (short) val; + nd->status.hit = (short)val; break; case UDT_FLEE: - nd->status.flee = (short) val; + nd->status.flee = (short)val; break; case UDT_PDODGE: - nd->status.flee2 = (short) val; + nd->status.flee2 = (short)val; break; case UDT_CRIT: - nd->status.cri = (short) val; + nd->status.cri = (short)val; break; case UDT_RACE: - nd->status.race = (unsigned char) val; + nd->status.race = (unsigned char)val; break; case UDT_ELETYPE: - nd->status.def_ele = (unsigned char) val; + nd->status.def_ele = (unsigned char)val; break; case UDT_ELELEVEL: - nd->status.ele_lv = (unsigned char) val; + nd->status.ele_lv = (unsigned char)val; break; case UDT_AMOTION: - nd->status.amotion = (unsigned short) val; + nd->status.amotion = (unsigned short)val; break; case UDT_ADELAY: - nd->status.adelay = (unsigned short) val; + nd->status.adelay = (unsigned short)val; break; case UDT_DMOTION: - nd->status.dmotion = (unsigned short) val; + nd->status.dmotion = (unsigned short)val; break; case UDT_SEX: nd->vd.sex = (char)val; @@ -20512,19 +21076,21 @@ static BUILDIN(setunitdata) clif->changelook(bl, LOOK_BODY2, val); break; default: - ShowWarning("buildin_setunitdata: Invalid data type '%s' for NPC unit.\n", udtype); + ShowWarning("buildin_setunitdata: Invalid data type '%d' for NPC unit.\n", type); script_pushint(st, 0); return false; } - } + break; + } default: ShowError("buildin_setunitdata: Unknown object!\n"); script_pushint(st, 0); return false; - } // end of bl->type switch + } // End of bl->type switch. script_pushint(st, 1); + return true; } @@ -21121,7 +21687,10 @@ static BUILDIN(unitwalk) if (script_hasdata(st, 4)) { int x = script_getnum(st, 3); int y = script_getnum(st, 4); - script_pushint(st, unit->walktoxy(bl, x, y, 0));// We'll use harder calculations. + if (unit->walk_toxy(bl, x, y, 0) == 0) // We'll use harder calculations. + script_pushint(st, 1); + else + script_pushint(st, 0); } else { int target_id = script_getnum(st, 3); @@ -21131,6 +21700,38 @@ static BUILDIN(unitwalk) return true; } +/** + * Checks if a unit is walking. + * + * Returns 1 if unit is walking, 0 if unit is not walking and -1 on error. + * + * @code{.herc} + * unitiswalking({<GID>}); + * @endcode + * + **/ +static BUILDIN(unitiswalking) +{ + int gid = script_hasdata(st, 2) ? script_getnum(st, 2) : st->rid; + struct block_list *bl = map->id2bl(gid); + + if (bl == NULL) { + ShowWarning("buildin_unitiswalking: Error in finding object for GID %d!\n", gid); + script_pushint(st, -1); + return false; + } + + if (unit->bl2ud(bl) == NULL) { + ShowWarning("buildin_unitiswalking: Error in finding unit_data for GID %d!\n", gid); + script_pushint(st, -1); + return false; + } + + script_pushint(st, unit->is_walking(bl)); + + return true; +} + /// Kills the unit /// /// unitkill <unit_id>; @@ -21364,7 +21965,10 @@ static BUILDIN(unitskilluseid) } else { status_calc_npc(nd, SCO_NONE); } + } else if (bl->type == BL_PC) { + pc->autocast_clear(BL_UCAST(BL_PC, bl)); } + unit->skilluse_id(bl, target_id, skill_id, skill_lv); } @@ -21400,7 +22004,10 @@ static BUILDIN(unitskillusepos) } else { status_calc_npc(nd, SCO_NONE); } + } else if (bl->type == BL_PC) { + pc->autocast_clear(BL_UCAST(BL_PC, bl)); } + unit->skilluse_pos(bl, skill_x, skill_y, skill_id, skill_lv); } @@ -21956,12 +22563,13 @@ static BUILDIN(setquestinfo) return false; } - qi = &VECTOR_LAST(nd->qi_data); - if (qi == NULL) { + if (VECTOR_LENGTH(nd->qi_data) == 0) { ShowWarning("buildin_setquestinfo: no valide questinfo data has been found for this npc.\n"); return false; } + qi = &VECTOR_LAST(nd->qi_data); + switch (type) { case QINFO_JOB: { @@ -23250,7 +23858,6 @@ static BUILDIN(progressbar_unit) } static BUILDIN(pushpc) { - uint8 dir; int cells, dx, dy; struct map_session_data* sd; @@ -23259,14 +23866,14 @@ static BUILDIN(pushpc) return true; } - dir = script_getnum(st,2); - cells = script_getnum(st,3); + enum unit_dir dir = script_getnum(st, 2); + cells = script_getnum(st,3); - if (dir > 7) { + if (dir >= UNIT_DIR_MAX) { ShowWarning("buildin_pushpc: Invalid direction %d specified.\n", dir); script->reportsrc(st); - dir%= 8; // trim spin-over + dir %= UNIT_DIR_MAX; // trim spin-over } if(!cells) @@ -23275,10 +23882,11 @@ static BUILDIN(pushpc) } else if(cells<0) {// pushing backwards - dir = (dir+4)%8; // turn around - cells = -cells; + dir = unit_get_opposite_dir(dir); + cells = -cells; } + Assert_retr(false, dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX); dx = dirx[dir]; dy = diry[dir]; @@ -26688,8 +27296,8 @@ static void script_parse_builtin(void) BUILDIN_DEF(delitem,"vi?"), BUILDIN_DEF(delitem2,"viiiiiiii?"), BUILDIN_DEF(delitemidx, "i??"), - BUILDIN_DEF2(enableitemuse,"enable_items",""), - BUILDIN_DEF2(disableitemuse,"disable_items",""), + BUILDIN_DEF2(enableitemuse, "enable_items", "?"), + BUILDIN_DEF2(disableitemuse, "disable_items", "?"), BUILDIN_DEF(cutin,"si"), BUILDIN_DEF(viewpoint,"iiiii"), BUILDIN_DEF(heal,"ii"), @@ -26794,6 +27402,7 @@ static void script_parse_builtin(void) BUILDIN_DEF(detachnpctimer,"?"), // detached the player id from the npc timer [Celest] BUILDIN_DEF(playerattached,""), // returns id of the current attached player. [Skotlex] BUILDIN_DEF(mobattached, ""), + BUILDIN_DEF(loudhailer, "s?"), BUILDIN_DEF(announce,"si?????"), BUILDIN_DEF(mapannounce,"ssi?????"), BUILDIN_DEF(areaannounce,"siiiisi?????"), @@ -26970,7 +27579,7 @@ static void script_parse_builtin(void) BUILDIN_DEF(setnpcdisplay,"sv??"), BUILDIN_DEF(compare,"ss"), // Lordalfa - To bring strstr to scripting Engine. BUILDIN_DEF(strcmp,"ss"), - BUILDIN_DEF(getiteminfo,"ii"), //[Lupus] returns Items Buy / sell Price, etc info + BUILDIN_DEF(getiteminfo,"vi"), //[Lupus] returns Items Buy / sell Price, etc info BUILDIN_DEF(setiteminfo,"iii"), //[Lupus] set Items Buy / sell Price, etc info BUILDIN_DEF(getequipcardid,"ii"), //[Lupus] returns CARD ID or other info from CARD slot N of equipped item BUILDIN_DEF(getequippedoptioninfo, "i"), @@ -27020,8 +27629,8 @@ static void script_parse_builtin(void) BUILDIN_DEF(pcfollow,"ii"), BUILDIN_DEF(pcstopfollow,"i"), BUILDIN_DEF_DEPRECATED(pcblockmove,"ii"), // Deprecated 2018-05-04 - BUILDIN_DEF(setpcblock, "ii"), - BUILDIN_DEF(checkpcblock, ""), + BUILDIN_DEF(setpcblock, "ii?"), + BUILDIN_DEF(checkpcblock, "?"), // <--- [zBuffer] List of player cont commands // [zBuffer] List of mob control commands ---> BUILDIN_DEF(getunittype,"i"), @@ -27033,6 +27642,7 @@ static void script_parse_builtin(void) BUILDIN_DEF(getunittitle,"i"), BUILDIN_DEF(setunittitle,"is"), BUILDIN_DEF(unitwalk,"ii?"), + BUILDIN_DEF(unitiswalking, "?"), BUILDIN_DEF(unitkill,"i"), BUILDIN_DEF(unitwarp,"isii"), BUILDIN_DEF(unitattack,"iv?"), @@ -27259,6 +27869,8 @@ static void script_parse_builtin(void) BUILDIN_DEF(identify, "i"), BUILDIN_DEF(identifyidx, "i"), BUILDIN_DEF(openlapineddukddakboxui, "i"), + + BUILDIN_DEF(callfunctionofnpc, "vs*"), }; int i, len = ARRAYLENGTH(BUILDIN); RECREATE(script->buildin, char *, script->buildin_count + len); // Pre-alloc to speed up @@ -27270,7 +27882,7 @@ static void script_parse_builtin(void) #undef BUILDIN_DEF #undef BUILDIN_DEF2 -static void script_label_add(int key, int pos) +static void script_label_add(int key, int pos, enum script_label_flags flags) { int idx = script->label_count; @@ -27281,6 +27893,7 @@ static void script_label_add(int key, int pos) script->labels[idx].key = key; script->labels[idx].pos = pos; + script->labels[idx].flags = flags; script->label_count++; } @@ -27615,6 +28228,9 @@ static void script_hardcoded_constants(void) script->set_constant("ITEMINFO_ITEM_USAGE_FLAG", ITEMINFO_ITEM_USAGE_FLAG, false, false); script->set_constant("ITEMINFO_ITEM_USAGE_OVERRIDE", ITEMINFO_ITEM_USAGE_OVERRIDE, false, false); script->set_constant("ITEMINFO_GM_LV_TRADE_OVERRIDE", ITEMINFO_GM_LV_TRADE_OVERRIDE, false, false); + script->set_constant("ITEMINFO_ID", ITEMINFO_ID, false, false); + script->set_constant("ITEMINFO_AEGISNAME", ITEMINFO_AEGISNAME, false, false); + script->set_constant("ITEMINFO_NAME", ITEMINFO_NAME, false, false); script->constdb_comment("getmercinfo options"); script->set_constant("MERCINFO_ID,", MERCINFO_ID, false, false); @@ -27642,6 +28258,23 @@ static void script_hardcoded_constants(void) script->set_constant("PETINFO_EVO_EGGID", PETINFO_EVO_EGGID, false, false); script->set_constant("PETINFO_AUTOFEED", PETINFO_AUTOFEED, false, false); + script->constdb_comment("Pet hunger levels"); + script->set_constant("PET_HUNGER_STARVING", PET_HUNGER_STARVING, false, false); + script->set_constant("PET_HUNGER_VERY_HUNGRY", PET_HUNGER_VERY_HUNGRY, false, false); + script->set_constant("PET_HUNGER_HUNGRY", PET_HUNGER_HUNGRY, false, false); + script->set_constant("PET_HUNGER_NEUTRAL", PET_HUNGER_NEUTRAL, false, false); + script->set_constant("PET_HUNGER_SATISFIED", PET_HUNGER_SATISFIED, false, false); + script->set_constant("PET_HUNGER_STUFFED", PET_HUNGER_STUFFED, false, false); + + script->constdb_comment("Pet intimacy levels"); + script->set_constant("PET_INTIMACY_NONE", PET_INTIMACY_NONE, false, false); + script->set_constant("PET_INTIMACY_AWKWARD", PET_INTIMACY_AWKWARD, false, false); + script->set_constant("PET_INTIMACY_SHY", PET_INTIMACY_SHY, false, false); + script->set_constant("PET_INTIMACY_NEUTRAL", PET_INTIMACY_NEUTRAL, false, false); + script->set_constant("PET_INTIMACY_CORDIAL", PET_INTIMACY_CORDIAL, false, false); + script->set_constant("PET_INTIMACY_LOYAL", PET_INTIMACY_LOYAL, false, false); + script->set_constant("PET_INTIMACY_MAX", PET_INTIMACY_MAX, false, false); + script->constdb_comment("monster skill states"); script->set_constant("MSS_ANY", MSS_ANY, false, false); script->set_constant("MSS_IDLE", MSS_IDLE, false, false); @@ -27679,6 +28312,7 @@ static void script_hardcoded_constants(void) script->set_constant("MSC_MASTERATTACKED", MSC_MASTERATTACKED, false, false); script->set_constant("MSC_ALCHEMIST", MSC_ALCHEMIST, false, false); script->set_constant("MSC_SPAWN", MSC_SPAWN, false, false); + script->set_constant("MSC_MAGICATTACKED", MSC_MAGICATTACKED, false, false); script->constdb_comment("monster skill targets"); script->set_constant("MST_TARGET", MST_TARGET, false, false); @@ -27696,6 +28330,11 @@ static void script_hardcoded_constants(void) script->set_constant("MST_AROUND4", MST_AROUND4, false, false); script->set_constant("MST_AROUND", MST_AROUND , false, false); + script->constdb_comment("Monster group constants"); + script->set_constant("ALL_MOBS_NONBOSS", ALL_MOBS_NONBOSS, false, false); + script->set_constant("ALL_MOBS_BOSS", ALL_MOBS_BOSS, false, false); + script->set_constant("ALL_MOBS", ALL_MOBS, false, false); + script->constdb_comment("pc block constants, use with *setpcblock* and *checkpcblock*"); script->set_constant("PCBLOCK_NONE", PCBLOCK_NONE, false, false); script->set_constant("PCBLOCK_MOVE", PCBLOCK_MOVE, false, false); @@ -27708,6 +28347,16 @@ static void script_hardcoded_constants(void) script->set_constant("PCBLOCK_COMMANDS", PCBLOCK_COMMANDS, false, false); script->set_constant("PCBLOCK_NPC", PCBLOCK_NPC, false, false); + script->constdb_comment("NPC item action constants"); + script->set_constant("ITEMENABLEDNPC_NONE", ITEMENABLEDNPC_NONE, false, false); + script->set_constant("ITEMENABLEDNPC_EQUIP", ITEMENABLEDNPC_EQUIP, false, false); + script->set_constant("ITEMENABLEDNPC_CONSUME", ITEMENABLEDNPC_CONSUME, false, false); + + script->constdb_comment("NPC allowed skill use constants"); + script->set_constant("SKILLENABLEDNPC_NONE", SKILLENABLEDNPC_NONE, false, false); + script->set_constant("SKILLENABLEDNPC_SELF", SKILLENABLEDNPC_SELF, false, false); + script->set_constant("SKILLENABLEDNPC_ALL", SKILLENABLEDNPC_ALL, false, false); + script->constdb_comment("private airship responds"); script->set_constant("P_AIRSHIP_NONE", P_AIRSHIP_NONE, false, false); script->set_constant("P_AIRSHIP_RETRY", P_AIRSHIP_RETRY, false, false); @@ -27715,6 +28364,11 @@ static void script_hardcoded_constants(void) script->set_constant("P_AIRSHIP_INVALID_END_MAP", P_AIRSHIP_INVALID_END_MAP, false, false); script->set_constant("P_AIRSHIP_ITEM_NOT_ENOUGH", P_AIRSHIP_ITEM_NOT_ENOUGH, false, false); script->set_constant("P_AIRSHIP_ITEM_INVALID", P_AIRSHIP_ITEM_INVALID, false, false); + + script->constdb_comment("player allowed actions when dead"); + script->set_constant("PCALLOWACTION_NONE", PCALLOWACTION_NONE, false, false); + script->set_constant("PCALLOWACTION_TRADE", PCALLOWACTION_TRADE, false, false); + script->set_constant("PCALLOWACTION_CHAT", PCALLOWACTION_CHAT, false, false); script->constdb_comment("questinfo types"); script->set_constant("QINFO_JOB", QINFO_JOB, false, false); @@ -27858,10 +28512,17 @@ static void script_hardcoded_constants(void) script->constdb_comment("itemskill option flags"); script->set_constant("ISF_NONE", ISF_NONE, false, false); - script->set_constant("ISF_IGNORECONDITIONS", ISF_IGNORECONDITIONS, false, false); + script->set_constant("ISF_CHECKCONDITIONS", ISF_CHECKCONDITIONS, false, false); script->set_constant("ISF_INSTANTCAST", ISF_INSTANTCAST, false, false); script->set_constant("ISF_CASTONSELF", ISF_CASTONSELF, false, false); + script->constdb_comment("Item Bound Types"); + script->set_constant("IBT_ANY", IBT_NONE, false, false); // for *checkbound() + script->set_constant("IBT_ACCOUNT", IBT_ACCOUNT, false, false); + script->set_constant("IBT_GUILD", IBT_GUILD, false, false); + script->set_constant("IBT_PARTY", IBT_PARTY, false, false); + script->set_constant("IBT_CHARACTER", IBT_CHARACTER, false, false); + script->constdb_comment("Renewal"); #ifdef RENEWAL script->set_constant("RENEWAL", 1, false, false); @@ -28060,6 +28721,7 @@ void script_defaults(void) script->parse_syntax_close = parse_syntax_close; script->parse_syntax_close_sub = parse_syntax_close_sub; script->parse_syntax = parse_syntax; + script->parse_syntax_function = parse_syntax_function; script->get_com = get_com; script->get_num = get_num; script->op2name = script_op2name; @@ -28092,6 +28754,7 @@ void script_defaults(void) script->load_parameters = script_load_parameters; script->print_line = script_print_line; script->errorwarning_sub = script_errorwarning_sub; + script->is_permanent_variable = script_is_permanent_variable; script->set_reg = set_reg; script->set_reg_ref_str = set_reg_npcscope_str; script->set_reg_pc_ref_str = set_reg_pc_ref_str; @@ -28163,6 +28826,8 @@ void script_defaults(void) script->config.ontouch_name = "OnTouch_"; //ontouch_name (runs on first visible char to enter area, picks another char if the first char leaves) script->config.ontouch2_name = "OnTouch"; //ontouch2_name (run whenever a char walks into the OnTouch area) script->config.onuntouch_name = "OnUnTouch"; //onuntouch_name (run whenever a char walks from the OnTouch area) + script->config.functions_private_by_default = true; + script->config.functions_as_events = false; // for ENABLE_CASE_CHECK script->calc_hash_ci = calc_hash_ci; diff --git a/src/map/script.h b/src/map/script.h index 857d22c61..60f403d2d 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -345,7 +345,8 @@ enum { MF_PAIRSHIP_STARTABLE, MF_PAIRSHIP_ENDABLE, MF_NOSTORAGE, - MF_NOGSTORAGE + MF_NOGSTORAGE, + MF_NOPET, }; enum navigation_service { @@ -484,6 +485,9 @@ enum script_iteminfo_types { ITEMINFO_ITEM_USAGE_FLAG, ITEMINFO_ITEM_USAGE_OVERRIDE, ITEMINFO_GM_LV_TRADE_OVERRIDE, + ITEMINFO_ID, + ITEMINFO_AEGISNAME, + ITEMINFO_NAME, ITEMINFO_MAX }; @@ -569,7 +573,7 @@ enum mado_type { **/ enum itemskill_flag { ISF_NONE = 0x00, - ISF_IGNORECONDITIONS = 0x01, // Ignore skill conditions and don't consume them. + ISF_CHECKCONDITIONS = 0x01, // Check skill conditions and consume them. ISF_INSTANTCAST = 0x02, // Cast skill instantaneously. ISF_CASTONSELF = 0x04, // Forcefully cast skill on invoking character without showing the target selection cursor. }; @@ -581,6 +585,8 @@ enum itemskill_flag { struct Script_Config { bool warn_func_mismatch_argtypes; bool warn_func_mismatch_paramnum; + bool functions_private_by_default; + bool functions_as_events; int check_cmdcount; int check_gotocount; int input_min_value; @@ -698,7 +704,7 @@ struct script_state { int bk_npcid; unsigned freeloop : 1;// used by buildin_freeloop unsigned op2ref : 1;// used by op_2 - unsigned npc_item_flag : 1; + unsigned npc_item_flag : 2; unsigned int id; }; @@ -722,8 +728,14 @@ struct str_data_struct { uint8 deprecated : 1; }; +/** a label within a script (does not use the label db) */ struct script_label_entry { - int key,pos; + /** label name (held within str_data) */ + int key; + /** position within the script */ + int pos; + /** optional flags for the label */ + enum script_label_flags flags; }; struct script_syntax_data { @@ -914,7 +926,7 @@ struct script_interface { void (*set_constant) (const char *name, int value, bool is_parameter, bool is_deprecated); void (*set_constant2) (const char *name, int value, bool is_parameter, bool is_deprecated); bool (*get_constant) (const char* name, int* value); - void (*label_add)(int key, int pos); + void (*label_add)(int key, int pos, enum script_label_flags flags); void (*run) (struct script_code *rootscript, int pos, int rid, int oid); void (*run_npc) (struct script_code *rootscript, int pos, int rid, int oid); void (*run_pet) (struct script_code *rootscript, int pos, int rid, int oid); @@ -945,10 +957,11 @@ struct script_interface { int (*queue_create) (void); bool (*queue_clear) (int idx); /* */ - const char * (*parse_curly_close) (const char *p); - const char * (*parse_syntax_close) (const char *p); - const char * (*parse_syntax_close_sub) (const char *p, int *flag); - const char * (*parse_syntax) (const char *p); + const char *(*parse_curly_close) (const char *p); + const char *(*parse_syntax_close) (const char *p); + const char *(*parse_syntax_close_sub) (const char *p, int *flag); + const char *(*parse_syntax) (const char *p); + const char *(*parse_syntax_function) (const char *p, bool is_public); c_op (*get_com) (const struct script_buf *scriptbuf, int *pos); int (*get_num) (const struct script_buf *scriptbuf, int *pos); const char* (*op2name) (int op); @@ -981,6 +994,7 @@ struct script_interface { void (*load_parameters) (void); const char* (*print_line) (StringBuf *buf, const char *p, const char *mark, int line); void (*errorwarning_sub) (StringBuf *buf, const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos); + bool (*is_permanent_variable) (const char *name); int (*set_reg) (struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref); void (*set_reg_ref_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str); void (*set_reg_pc_ref_str) (struct script_state* st, struct reg_db *n, int64 num, const char* name, const char *str); diff --git a/src/map/skill.c b/src/map/skill.c index a8dbefbd7..c2a336d7e 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -47,6 +47,7 @@ #include "map/refine.h" #include "map/script.h" #include "map/status.h" +#include "map/storage.h" #include "map/unit.h" #include "common/cbasetypes.h" #include "common/ers.h" @@ -72,6 +73,34 @@ static struct s_skill_dbs skilldbs; struct skill_interface *skill; +static const struct { + int start; + int end; +} skill_idx_ranges[] = { + { NV_BASIC, NPC_LEX_AETERNA }, + { KN_CHARGEATK, SA_ELEMENTWIND }, + { RK_ENCHANTBLADE, AB_SILENTIUM }, + { WL_WHITEIMPRISON, SC_FEINTBOMB }, + { LG_CANNONSPEAR, SR_GENTLETOUCH_REVITALIZE }, + { WA_SWING_DANCE, WA_MOONLIT_SERENADE }, + { MI_RUSH_WINDMILL, MI_HARMONIZE }, + { WM_LESSON, WM_UNLIMITED_HUMMING_VOICE }, + { SO_FIREWALK, SO_EARTH_INSIGNIA }, + { GN_TRAINING_SWORD, GN_SLINGITEM_RANGEMELEEATK }, + { AB_SECRAMENT, LG_OVERBRAND_PLUSATK }, + { ALL_ODINS_RECALL, ALL_LIGHTGUARD }, + { RL_GLITTERING_GREED, RL_GLITTERING_GREED_ATK }, + { KO_YAMIKUMO, OB_AKAITSUKI }, + { ECL_SNOWFLIP, ALL_THANATOS_RECALL }, + { GC_DARKCROW, NC_MAGMA_ERUPTION_DOTDAMAGE }, + { SU_BASIC_SKILL, SU_SPIRITOFSEA }, + { HLIF_HEAL, MH_VOLCANIC_ASH }, + { MS_BASH, MER_INVINCIBLEOFF2 }, + { EL_CIRCLE_OF_FIRE, EL_STONE_RAIN }, + { GD_APPROVAL, GD_DEVELOPMENT }, + CUSTOM_SKILL_RANGES +}; + //Since only mob-casted splash skills can hit ice-walls static int skill_splash_target(struct block_list *bl) { @@ -96,51 +125,37 @@ static int skill_name2id(const char *name) /// Returns the skill's array index, or 0 (Unknown Skill). static int skill_get_index(int skill_id) { - int skillRange[] = { NV_BASIC, NPC_LEX_AETERNA, - KN_CHARGEATK, SA_ELEMENTWIND, - RK_ENCHANTBLADE, AB_SILENTIUM, - WL_WHITEIMPRISON, SC_FEINTBOMB, - LG_CANNONSPEAR, SR_GENTLETOUCH_REVITALIZE, - WA_SWING_DANCE, WA_MOONLIT_SERENADE, - MI_RUSH_WINDMILL, MI_HARMONIZE, - WM_LESSON, WM_UNLIMITED_HUMMING_VOICE, - SO_FIREWALK, SO_EARTH_INSIGNIA, - GN_TRAINING_SWORD, GN_SLINGITEM_RANGEMELEEATK, - AB_SECRAMENT, LG_OVERBRAND_PLUSATK, - ALL_ODINS_RECALL, ALL_LIGHTGUARD, - RL_GLITTERING_GREED, RL_GLITTERING_GREED_ATK, - KO_YAMIKUMO, OB_AKAITSUKI, - ECL_SNOWFLIP, ALL_THANATOS_RECALL, - GC_DARKCROW, NC_MAGMA_ERUPTION_DOTDAMAGE, - SU_BASIC_SKILL, SU_SPIRITOFSEA, - HLIF_HEAL, MH_VOLCANIC_ASH, - MS_BASH, MER_INVINCIBLEOFF2, - EL_CIRCLE_OF_FIRE, EL_STONE_RAIN, - GD_APPROVAL, GD_DEVELOPMENT - CUSTOM_SKILL_RANGES}; - int length = sizeof(skillRange) / sizeof(int); - STATIC_ASSERT(sizeof(skillRange) / sizeof(int) % 2 == 0, "skill_get_index: skillRange should be multiple of 2"); - - - if (skill_id < skillRange[0] || skill_id > skillRange[length - 1]) { + int length = ARRAYLENGTH(skill_idx_ranges); + + + if (skill_id < skill_idx_ranges[0].start || skill_id > skill_idx_ranges[length - 1].end) { ShowWarning("skill_get_index: skill id '%d' is not being handled!\n", skill_id); + Assert_report(0); return 0; } int skill_idx = 0; + bool found = false; // Map Skill ID to Skill Indexes (in reverse order) - for (int i = 0; i < length; i += 2) { + for (int i = 0; i < length; i++) { // Check if SkillID belongs to this range. - if (skill_id <= skillRange[i + 1] && skill_id >= skillRange[i]) { - skill_idx += (skillRange[i + 1] - skill_id); + if (skill_id <= skill_idx_ranges[i].end && skill_id >= skill_idx_ranges[i].start) { + skill_idx += (skill_idx_ranges[i].end - skill_id); + found = true; break; } // Add the difference of current range - skill_idx += (skillRange[i + 1] - skillRange[i] + 1); + skill_idx += (skill_idx_ranges[i].end - skill_idx_ranges[i].start + 1); } + if (!found) { + ShowWarning("skill_get_index: skill id '%d' (idx: %d) is not handled as it lies outside the defined ranges!\n", skill_id, skill_idx); + Assert_report(0); + return 0; + } if (skill_idx >= MAX_SKILL_DB) { ShowWarning("skill_get_index: skill id '%d'(idx: %d) is not being handled as it exceeds MAX_SKILL_DB!\n", skill_id, skill_idx); + Assert_report(0); return 0; } @@ -162,14 +177,26 @@ static const char *skill_get_desc(int skill_id) // Skill DB -static int skill_get_hit(int skill_id) +/** + * Gets a skill's hit type by its ID and level. (See enum battle_dmg_type.) + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's hit type corresponding to the passed level. Defaults to BDT_NORMAL (0) in case of error. + * + **/ +static int skill_get_hit(int skill_id, int skill_lv) { - int idx; if (skill_id == 0) - return 0; - idx = skill->get_index(skill_id); - Assert_ret(idx != 0); - return skill->dbs->db[idx].hit; + return BDT_NORMAL; + + Assert_retr(BDT_NORMAL, skill_lv > 0); + + int idx = skill->get_index(skill_id); + + Assert_retr(BDT_NORMAL, idx != 0); + + return skill->dbs->db[idx].hit[skill_get_lvl_idx(skill_lv)]; } static int skill_get_inf(int skill_id) @@ -306,14 +333,26 @@ static int skill_get_sp_rate(int skill_id, int skill_lv) return skill->dbs->db[idx].sp_rate[skill_get_lvl_idx(skill_lv)]; } -static int skill_get_state(int skill_id) +/** + * Gets a skill's required state by its ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's required state corresponding to the passed level. Defaults to ST_NONE (0) in case of error. + * + **/ +static int skill_get_state(int skill_id, int skill_lv) { - int idx; if (skill_id == 0) return ST_NONE; - idx = skill->get_index(skill_id); + + Assert_retr(ST_NONE, skill_lv > 0); + + int idx = skill->get_index(skill_id); + Assert_retr(ST_NONE, idx != 0); - return skill->dbs->db[idx].state; + + return skill->dbs->db[idx].state[skill_get_lvl_idx(skill_lv)]; } static int skill_get_spiritball(int skill_id, int skill_lv) @@ -331,26 +370,175 @@ static int skill_get_spiritball(int skill_id, int skill_lv) return skill->dbs->db[idx].spiritball[skill_get_lvl_idx(skill_lv)]; } +/** + * Gets the index of the first required item for a skill at given level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The required item's index. Defaults to INDEX_NOT_FOUND (-1) in case of error or if no appropriate index was found. + * + **/ +static int skill_get_item_index(int skill_id, int skill_lv) +{ + if (skill_id == 0) + return INDEX_NOT_FOUND; + + Assert_retr(INDEX_NOT_FOUND, skill_lv > 0); + + int idx = skill->get_index(skill_id); + + Assert_retr(INDEX_NOT_FOUND, idx != 0); + + int item_index = INDEX_NOT_FOUND; + int level_index = skill_get_lvl_idx(skill_lv); + + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) { + if (skill->dbs->db[idx].req_items.item[i].id == 0) + continue; + + if (skill->dbs->db[idx].req_items.item[i].amount[level_index] != -1) { + item_index = i; + break; + } + } + + return item_index; +} + +/** + * Gets a skill's required item's ID by the skill's ID and the item's index. + * + * @param skill_id The skill's ID. + * @param item_idx The item's index. + * @return The skill's required item's ID corresponding to the passed index. Defaults to 0 in case of error. + * + **/ static int skill_get_itemid(int skill_id, int item_idx) { - int idx; if (skill_id == 0) return 0; - idx = skill->get_index(skill_id); + + Assert_ret(item_idx >= 0 && item_idx < MAX_SKILL_ITEM_REQUIRE); + + int idx = skill->get_index(skill_id); + Assert_ret(idx != 0); + + return skill->dbs->db[idx].req_items.item[item_idx].id; +} + +/** + * Gets a skill's required item's amount by the skill's ID and level and the item's index. + * + * @param skill_id The skill's ID. + * @param item_idx The item's index. + * @param skill_lv The skill's level. + * @return The skill's required item's amount corresponding to the passed index and level. Defaults to 0 in case of error. + * + **/ +static int skill_get_itemqty(int skill_id, int item_idx, int skill_lv) +{ + if (skill_id == 0) + return 0; + Assert_ret(item_idx >= 0 && item_idx < MAX_SKILL_ITEM_REQUIRE); - return skill->dbs->db[idx].itemid[item_idx]; + Assert_ret(skill_lv > 0); + + int idx = skill->get_index(skill_id); + + Assert_ret(idx != 0); + + return skill->dbs->db[idx].req_items.item[item_idx].amount[skill_get_lvl_idx(skill_lv)]; } -static int skill_get_itemqty(int skill_id, int item_idx) +/** + * Gets a skill's required items any-flag by the skill's ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's required items any-flag corresponding to the passed level. Defaults to false in case of error. + * + **/ +static bool skill_get_item_any_flag(int skill_id, int skill_lv) +{ + if (skill_id == 0) + return false; + + Assert_retr(false, skill_lv > 0); + + int idx = skill->get_index(skill_id); + + Assert_retr(false, idx != 0); + + return skill->dbs->db[idx].req_items.any[skill_get_lvl_idx(skill_lv)]; +} + +/** + * Gets a skill's required equipment's ID by the skill's ID and the equipment item's index. + * + * @param skill_id The skill's ID. + * @param item_idx The equipment item's index. + * @return The skill's required equipment's ID corresponding to the passed index. Defaults to 0 in case of error. + * + **/ +static int skill_get_equip_id(int skill_id, int item_idx) { - int idx; if (skill_id == 0) return 0; - idx = skill->get_index(skill_id); + + Assert_ret(item_idx >= 0 && item_idx < MAX_SKILL_ITEM_REQUIRE); + + int idx = skill->get_index(skill_id); + Assert_ret(idx != 0); + + return skill->dbs->db[idx].req_equip.item[item_idx].id; +} + +/** + * Gets a skill's required equipment's amount by the skill's ID and level and the equipment item's index. + * + * @param skill_id The skill's ID. + * @param item_idx The equipment item's index. + * @param skill_lv The skill's level. + * @return The skill's required equipment item's amount corresponding to the passed index and level. Defaults to 0 in case of error. + * + **/ +static int skill_get_equip_amount(int skill_id, int item_idx, int skill_lv) +{ + if (skill_id == 0) + return 0; + Assert_ret(item_idx >= 0 && item_idx < MAX_SKILL_ITEM_REQUIRE); - return skill->dbs->db[idx].amount[item_idx]; + Assert_ret(skill_lv > 0); + + int idx = skill->get_index(skill_id); + + Assert_ret(idx != 0); + + return skill->dbs->db[idx].req_equip.item[item_idx].amount[skill_get_lvl_idx(skill_lv)]; +} + +/** + * Gets a skill's required equipment any-flag by the skill's ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's required equipment's any-flag corresponding to the passed level. Defaults to false in case of error. + * + **/ +static bool skill_get_equip_any_flag(int skill_id, int skill_lv) +{ + if (skill_id == 0) + return false; + + Assert_retr(false, skill_lv > 0); + + int idx = skill->get_index(skill_id); + + Assert_retr(false, idx != 0); + + return skill->dbs->db[idx].req_equip.any[skill_get_lvl_idx(skill_lv)]; } static int skill_get_zeny(int skill_id, int skill_lv) @@ -458,14 +646,26 @@ static int skill_get_time2(int skill_id, int skill_lv) return skill->dbs->db[idx].upkeep_time2[skill_get_lvl_idx(skill_lv)]; } -static int skill_get_castdef(int skill_id) +/** + * Gets a skill's cast defence rate by its ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's cast defence rate corresponding to the passed level. Defaults to 0 in case of error. + * + **/ +static int skill_get_castdef(int skill_id, int skill_lv) { - int idx; if (skill_id == 0) return 0; - idx = skill->get_index(skill_id); + + Assert_ret(skill_lv > 0); + + int idx = skill->get_index(skill_id); + Assert_ret(idx != 0); - return skill->dbs->db[idx].cast_def_rate; + + return skill->dbs->db[idx].cast_def_rate[skill_get_lvl_idx(skill_lv)]; } static int skill_get_weapontype(int skill_id) @@ -513,14 +713,26 @@ static int skill_get_inf2(int skill_id) return skill->dbs->db[idx].inf2; } -static int skill_get_castcancel(int skill_id) +/** + * Gets a skill's cast interruptibility by its ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's cast interruptibility corresponding to the passed level. Defaults to 0 in case of error. + * + **/ +static int skill_get_castcancel(int skill_id, int skill_lv) { - int idx; if (skill_id == 0) return 0; - idx = skill->get_index(skill_id); + + Assert_ret(skill_lv > 0); + + int idx = skill->get_index(skill_id); + Assert_ret(idx != 0); - return skill->dbs->db[idx].castcancel; + + return skill->dbs->db[idx].castcancel[skill_get_lvl_idx(skill_lv)]; } static int skill_get_maxcount(int skill_id, int skill_lv) @@ -568,6 +780,28 @@ static int skill_get_mhp(int skill_id, int skill_lv) return skill->dbs->db[idx].mhp[skill_get_lvl_idx(skill_lv)]; } +/** + * Gets a skill's maximum SP trigger by its ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's maximum SP trigger corresponding to the passed level. Defaults to 0 in case of error. + * + **/ +static int skill_get_msp(int skill_id, int skill_lv) +{ + if (skill_id == 0) + return 0; + + Assert_ret(skill_lv > 0); + + int idx = skill->get_index(skill_id); + + Assert_ret(idx != 0); + + return skill->dbs->db[idx].msp[skill_get_lvl_idx(skill_lv)]; +} + static int skill_get_castnodex(int skill_id, int skill_lv) { int idx; @@ -598,35 +832,72 @@ static int skill_get_delaynodex(int skill_id, int skill_lv) return skill->dbs->db[idx].delaynodex[skill_get_lvl_idx(skill_lv)]; } -static int skill_get_type(int skill_id) +/** + * Gets a skill's attack type by its ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's attack type corresponding to the passed level. Defaults to BF_NONE (0) in case of error. + * + **/ +static int skill_get_type(int skill_id, int skill_lv) { - int idx; if (skill_id == 0) return BF_NONE; - idx = skill->get_index(skill_id); + + Assert_retr(BF_NONE, skill_lv > 0); + + int idx = skill->get_index(skill_id); + Assert_retr(BF_NONE, idx != 0); - return skill->dbs->db[idx].skill_type; + + return skill->dbs->db[idx].skill_type[skill_get_lvl_idx(skill_lv)]; } -static int skill_get_unit_id(int skill_id, int flag) +/** + * Gets a skill's unit ID by its ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @param flag + * @return The skill's unit ID corresponding to the passed level. Defaults to 0 in case of error. + * + **/ +static int skill_get_unit_id(int skill_id, int skill_lv, int flag) { - int idx; if (skill_id == 0) return 0; - idx = skill->get_index(skill_id); + + Assert_ret(skill_lv > 0); + Assert_ret(flag >= 0 && flag < ARRAYLENGTH(skill->dbs->db[0].unit_id[0])); + + int idx = skill->get_index(skill_id); + Assert_ret(idx != 0); - Assert_ret(flag >= 0 && flag < ARRAYLENGTH(skill->dbs->db[0].unit_id)); - return skill->dbs->db[idx].unit_id[flag]; + + return skill->dbs->db[idx].unit_id[skill_get_lvl_idx(skill_lv)][flag]; } -static int skill_get_unit_interval(int skill_id) +/** + * Gets a skill's unit interval by its ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's unit interval corresponding to the passed level. Defaults to 0 in case of error. + * + **/ +static int skill_get_unit_interval(int skill_id, int skill_lv) { - int idx; if (skill_id == 0) return 0; - idx = skill->get_index(skill_id); + + Assert_ret(skill_lv > 0); + + int idx = skill->get_index(skill_id); + Assert_ret(idx != 0); - return skill->dbs->db[idx].unit_interval; + + return skill->dbs->db[idx].unit_interval[skill_get_lvl_idx(skill_lv)]; } static int skill_get_unit_range(int skill_id, int skill_lv) @@ -644,24 +915,48 @@ static int skill_get_unit_range(int skill_id, int skill_lv) return skill->dbs->db[idx].unit_range[skill_get_lvl_idx(skill_lv)]; } -static int skill_get_unit_target(int skill_id) +/** + * Gets a skill's unit target by its ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's unit target corresponding to the passed level. Defaults to BCT_NOONE (0) in case of error. + * + **/ +static int skill_get_unit_target(int skill_id, int skill_lv) { - int idx; if (skill_id == 0) return BCT_NOONE; - idx = skill->get_index(skill_id); + + Assert_retr(BCT_NOONE, skill_lv > 0); + + int idx = skill->get_index(skill_id); + Assert_retr(BCT_NOONE, idx != 0); - return skill->dbs->db[idx].unit_target & BCT_ALL; + + return (skill->dbs->db[idx].unit_target[skill_get_lvl_idx(skill_lv)] & BCT_ALL); } -static int skill_get_unit_bl_target(int skill_id) +/** + * Gets a skill's unit target as bl type by its ID and level. + * + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return The skill's unit target as bl type corresponding to the passed level. Defaults to BL_NUL (0) in case of error. + * + **/ +static int skill_get_unit_bl_target(int skill_id, int skill_lv) { - int idx; if (skill_id == 0) return BL_NUL; - idx = skill->get_index(skill_id); - Assert_retr(BL_NUL, idx != 0); - return skill->dbs->db[idx].unit_target & BL_ALL; + + Assert_retr(BCT_NOONE, skill_lv > 0); + + int idx = skill->get_index(skill_id); + + Assert_retr(BCT_NOONE, idx != 0); + + return (skill->dbs->db[idx].unit_target[skill_get_lvl_idx(skill_lv)] & BL_ALL); } static int skill_get_unit_flag(int skill_id) @@ -935,6 +1230,8 @@ static int skill_calc_heal(struct block_list *src, struct block_list *target, ui hp -= hp * 20/100; if(sc->data[SC_HEALPLUS] && skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN) hp += hp * sc->data[SC_HEALPLUS]->val1/100; // Only affects Heal, Sanctuary and PotionPitcher.(like bHealPower) [Inkfish] + if (sc->data[SC_VITALIZE_POTION] != NULL && skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN) + hp += hp * sc->data[SC_VITALIZE_POTION]->val3 / 100; if(sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 2) hp += hp / 10; if (sc->data[SC_VITALITYACTIVATION]) @@ -1010,14 +1307,17 @@ static int skillnotok(uint16 skill_id, struct map_session_data *sd) if (pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL)) return 0; // can do any damn thing they want - if( skill_id == AL_TELEPORT && sd->skillitem == skill_id && sd->skillitemlv > 2 ) - return 0; // Teleport lv 3 bypasses this check.[Inkfish] + if (map->getcell(sd->bl.m, &sd->bl, sd->bl.x, sd->bl.y, CELL_CHKNOSKILL)) + return 1; // block usage on 'noskill' cells [Wolfie] + + if (skill_id == AL_TELEPORT && sd->auto_cast_current.type == AUTOCAST_ITEM && sd->auto_cast_current.skill_lv > 2) + return 0; // Teleport level 3 and higher bypasses this check if cast by itemskill() script commands. // Epoque: // This code will compare the player's attack motion value which is influenced by ASPD before // allowing a skill to be cast. This is to prevent no-delay ACT files from spamming skills such as // AC_DOUBLE which do not have a skill delay and are not regarded in terms of attack motion. - if( !sd->state.autocast && sd->skillitem != skill_id && sd->canskill_tick && + if (sd->auto_cast_current.type == AUTOCAST_NONE && sd->canskill_tick != 0 && DIFF_TICK(timer->gettick(), sd->canskill_tick) < (sd->battle_status.amotion * (battle_config.skill_amotion_leniency) / 100) ) {// attempted to cast a skill before the attack motion has finished return 1; @@ -1032,7 +1332,7 @@ static int skillnotok(uint16 skill_id, struct map_session_data *sd) * It has been confirmed on a official server (thanks to Yommy) that item-cast skills bypass all the restrictions below * Also, without this check, an exploit where an item casting + healing (or any other kind buff) isn't deleted after used on a restricted map **/ - if( sd->skillitem == skill_id ) + if (sd->auto_cast_current.type == AUTOCAST_ITEM) return 0; if( sd->sc.data[SC_ALL_RIDING] ) @@ -1177,10 +1477,36 @@ static int skillnotok_mercenary(uint16 skill_id, struct mercenary_data *md) return skill->not_ok(skill_id, md->master); } +/** + * Validates the plausibility of auto-cast related data and calls pc_autocast_clear() if necessary. + * + * @param sd The character who cast the skill. + * @param skill_id The cast skill's ID. + * @param skill_lv The cast skill's level. (clif_parse_UseSkillMap() passes 0.) + * + **/ +static void skill_validate_autocast_data(struct map_session_data *sd, int skill_id, int skill_lv) +{ + nullpo_retv(sd); + + // Determine if called by clif_parse_UseSkillMap(). + bool use_skill_map = (skill_lv == 0 && (skill_id == AL_WARP || skill_id == AL_TELEPORT)); + + struct autocast_data *auto_cast = &sd->auto_cast_current; + + if (auto_cast->type == AUTOCAST_NONE) + pc->autocast_clear(sd); // No auto-cast type set. Preventively unset all auto-cast related data. + else if (auto_cast->type == AUTOCAST_TEMP) + pc->autocast_clear(sd); // AUTOCAST_TEMP should have been unset straight after usage. + else if (auto_cast->skill_id == 0 || skill_id == 0 || auto_cast->skill_id != skill_id) + pc->autocast_remove(sd, auto_cast->type, auto_cast->skill_id, auto_cast->skill_lv); // Implausible skill ID. + else if (auto_cast->skill_lv == 0 || (!use_skill_map && (skill_lv == 0 || auto_cast->skill_lv != skill_lv))) + pc->autocast_remove(sd, auto_cast->type, auto_cast->skill_id, auto_cast->skill_lv); // Implausible skill level. +} + static struct s_skill_unit_layout *skill_get_unit_layout(uint16 skill_id, uint16 skill_lv, struct block_list *src, int x, int y) { int pos = skill->get_unit_layout_type(skill_id,skill_lv); - uint8 dir; nullpo_retr(&skill->dbs->unit_layout[0], src); if (pos < -1 || pos >= MAX_SKILL_UNIT_LAYOUT) { @@ -1191,7 +1517,9 @@ static struct s_skill_unit_layout *skill_get_unit_layout(uint16 skill_id, uint16 if (pos != -1) // simple single-definition layout return &skill->dbs->unit_layout[pos]; - dir = (src->x == x && src->y == y) ? 6 : map->calc_dir(src,x,y); // 6 - default aegis direction + enum unit_dir dir = UNIT_DIR_EAST; // default aegis direction + if (src->x != x || src->y != y) + dir = map->calc_dir(src, x, y); if (skill_id == MG_FIREWALL) return &skill->dbs->unit_layout [skill->firewall_unit_pos + dir]; @@ -1321,11 +1649,15 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl if( pc_iswug(sd) && (temp=pc->checkskill(sd,RA_WUGSTRIKE)) > 0 && rnd()%1000 <= sstatus->luk*3 ) skill->castend_damage_id(src,bl,RA_WUGSTRIKE,temp,tick,0); // Gank - if(dstmd && sd->weapontype != W_BOW && - (temp=pc->checkskill(sd,RG_SNATCHER)) > 0 && - (temp*15 + 55) + pc->checkskill(sd,TF_STEAL)*10 > rnd()%1000) { - if(pc->steal_item(sd,bl,pc->checkskill(sd,TF_STEAL))) - clif->skill_nodamage(src,bl,TF_STEAL,temp,1); + if (dstmd && sd->weapontype != W_BOW && + (temp = pc->checkskill(sd, RG_SNATCHER)) > 0 && +#ifdef RENEWAL + (temp * 10) + pc->checkskill(sd, TF_STEAL) * 10 > rnd() % 1000) { +#else + (temp * 15 + 55) + pc->checkskill(sd, TF_STEAL) * 10 > rnd() % 1000) { +#endif + if (pc->steal_item(sd, bl, pc->checkskill(sd, TF_STEAL))) + clif->skill_nodamage(src, bl, TF_STEAL, temp, 1); else clif->skill_fail(sd, RG_SNATCHER, USESKILL_FAIL_LEVEL, 0, 0); } @@ -2064,9 +2396,9 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl temp = (sd->autospell[i].id > 0) ? sd->autospell[i].id : -sd->autospell[i].id; - sd->state.autocast = 1; + sd->auto_cast_current.type = AUTOCAST_TEMP; notok = skill->not_ok(temp, sd); - sd->state.autocast = 0; + sd->auto_cast_current.type = AUTOCAST_NONE; if ( notok ) continue; @@ -2117,11 +2449,12 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl else if (temp == PF_SPIDERWEB) //Special case, due to its nature of coding. type = CAST_GROUND; - sd->state.autocast = 1; + sd->auto_cast_current.type = AUTOCAST_TEMP; skill->consume_requirement(sd,temp,auto_skill_lv,1); - skill->toggle_magicpower(src, temp); + skill->toggle_magicpower(src, temp, auto_skill_lv); skill->castend_type(type, src, tbl, temp, auto_skill_lv, tick, 0); - sd->state.autocast = 0; + sd->auto_cast_current.type = AUTOCAST_NONE; + //Set canact delay. [Skotlex] ud = unit->bl2ud(src); if (ud) { @@ -2190,6 +2523,9 @@ static int skill_onskillusage(struct map_session_data *sd, struct block_list *bl if( sd == NULL || !skill_id ) return 0; + // Preserve auto-cast type if bAutoSpellOnSkill was triggered by a skill which was cast by Abracadabra, Improvised Song or an item. + enum autocast_type ac_type = sd->auto_cast_current.type; + for( i = 0; i < ARRAYLENGTH(sd->autospell3) && sd->autospell3[i].flag; i++ ) { if( sd->autospell3[i].flag != skill_id ) continue; @@ -2199,9 +2535,9 @@ static int skill_onskillusage(struct map_session_data *sd, struct block_list *bl temp = (sd->autospell3[i].id > 0) ? sd->autospell3[i].id : -sd->autospell3[i].id; - sd->state.autocast = 1; + sd->auto_cast_current.type = AUTOCAST_TEMP; notok = skill->not_ok(temp, sd); - sd->state.autocast = 0; + sd->auto_cast_current.type = AUTOCAST_NONE; if ( notok ) continue; @@ -2247,14 +2583,16 @@ static int skill_onskillusage(struct map_session_data *sd, struct block_list *bl !battle->check_range(&sd->bl, tbl, skill->get_range2(&sd->bl, temp,skill_lv) + (temp == RG_CLOSECONFINE?0:1)) ) continue; - sd->state.autocast = 1; sd->autospell3[i].lock = true; + sd->auto_cast_current.type = AUTOCAST_TEMP; skill->consume_requirement(sd,temp,skill_lv,1); skill->castend_type(type, &sd->bl, tbl, temp, skill_lv, tick, 0); + sd->auto_cast_current.type = AUTOCAST_NONE; sd->autospell3[i].lock = false; - sd->state.autocast = 0; } + sd->auto_cast_current.type = ac_type; + if (sd->autobonus3[0].rate) { for( i = 0; i < ARRAYLENGTH(sd->autobonus3); i++ ) { if( rnd()%1000 >= sd->autobonus3[i].rate ) @@ -2401,6 +2739,9 @@ static int skill_counter_additional_effect(struct block_list *src, struct block_ struct unit_data *ud; int i, auto_skill_id, auto_skill_lv, type, notok; + // Preserve auto-cast type if bAutoSpellWhenHit was triggered during cast of a skill which was cast by Abracadabra, Improvised Song or an item. + enum autocast_type ac_type = dstsd->auto_cast_current.type; + for (i = 0; i < ARRAYLENGTH(dstsd->autospell2) && dstsd->autospell2[i].id; i++) { if(!(dstsd->autospell2[i].flag&attack_type&BF_WEAPONMASK && @@ -2416,9 +2757,9 @@ static int skill_counter_additional_effect(struct block_list *src, struct block_ if (attack_type&BF_LONG) rate>>=1; - dstsd->state.autocast = 1; + dstsd->auto_cast_current.type = AUTOCAST_TEMP; notok = skill->not_ok(auto_skill_id, dstsd); - dstsd->state.autocast = 0; + dstsd->auto_cast_current.type = AUTOCAST_NONE; if ( notok ) continue; @@ -2459,10 +2800,11 @@ static int skill_counter_additional_effect(struct block_list *src, struct block_ if( !battle->check_range(src, tbl, skill->get_range2(src, auto_skill_id,auto_skill_lv) + (auto_skill_id == RG_CLOSECONFINE?0:1)) && battle_config.autospell_check_range ) continue; - dstsd->state.autocast = 1; + dstsd->auto_cast_current.type = AUTOCAST_TEMP; skill->consume_requirement(dstsd,auto_skill_id,auto_skill_lv,1); skill->castend_type(type, bl, tbl, auto_skill_id, auto_skill_lv, tick, 0); - dstsd->state.autocast = 0; + dstsd->auto_cast_current.type = AUTOCAST_NONE; + // Set canact delay. [Skotlex] ud = unit->bl2ud(bl); if (ud) { @@ -2474,6 +2816,8 @@ static int skill_counter_additional_effect(struct block_list *src, struct block_ } } } + + dstsd->auto_cast_current.type = ac_type; } //Autobonus when attacked @@ -2626,11 +2970,11 @@ static int skill_strip_equip(struct block_list *bl, unsigned short where, int ra /*========================================================================= * Used to knock back players, monsters, traps, etc * 'count' is the number of squares to knock back - * 'direction' indicates the way OPPOSITE to the knockback direction (or -1 for default behavior) + * 'direction' indicates the way OPPOSITE to the knockback direction (or UNIT_DIR_UNDEFINED for default behavior) * if 'flag&0x1', position update packets must not be sent. * if 'flag&0x2', skill blown ignores players' special_state.no_knockback */ -static int skill_blown(struct block_list *src, struct block_list *target, int count, int8 dir, int flag) +static int skill_blown(struct block_list *src, struct block_list *target, int count, enum unit_dir dir, int flag) { int dx = 0, dy = 0; struct status_change *tsc = status->get_sc(target); @@ -2672,10 +3016,10 @@ static int skill_blown(struct block_list *src, struct block_list *target, int co break; } - if (dir == -1) // <optimized>: do the computation here instead of outside + if (dir == UNIT_DIR_UNDEFINED) // <optimized>: do the computation here instead of outside dir = map->calc_dir(target, src->x, src->y); // direction from src to target, reversed - if (dir >= 0 && dir < 8) { + if (dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX) { // take the reversed 'direction' and reverse it dx = -dirx[dir]; dy = -diry[dir]; @@ -2934,7 +3278,7 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li } //Skill hit type - type=(skill_id==0)?BDT_SPLASH:skill->get_hit(skill_id); + type = (skill_id == 0) ? BDT_SPLASH : skill->get_hit(skill_id, skill_lv); if(damage < dmg.div_ //Only skills that knockback even when they miss. [Skotlex] @@ -3297,7 +3641,7 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li //Only knockback if it's still alive, otherwise a "ghost" is left behind. [Skotlex] //Reflected spells do not bounce back (bl == dsrc since it only happens for direct skills) if (dmg.blewcount > 0 && bl!=dsrc && !status->isdead(bl)) { - int8 dir = -1; // default + enum unit_dir dir = UNIT_DIR_UNDEFINED; // default switch(skill_id) {//direction case MG_FIREWALL: case PR_SANCTUARY: @@ -3310,13 +3654,13 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li // This ensures the storm randomly pushes instead of exactly a cell backwards per official mechanics. case WZ_STORMGUST: if(!battle_config.stormgust_knockback) - dir = rnd()%8; + dir = rnd() % UNIT_DIR_MAX; break; case WL_CRIMSONROCK: dir = map->calc_dir(bl,skill->area_temp[4],skill->area_temp[5]); break; case MC_CARTREVOLUTION: - dir = 6; // Official servers push target to the West + dir = UNIT_DIR_EAST; // Official servers push target to the West break; default: dir = skill->attack_dir_unknown(&attack_type, src, dsrc, bl, &skill_id, &skill_lv, &tick, &flag); @@ -3337,8 +3681,12 @@ static int skill_attack(int attack_type, struct block_list *src, struct block_li case SR_KNUCKLEARROW: if( skill->blown(dsrc,bl,dmg.blewcount,dir,0) && !(flag&4) ) { short dir_x, dir_y; - dir_x = dirx[(dir+4)%8]; - dir_y = diry[(dir+4)%8]; + if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) { + map->freeblock_unlock(); // unblock before assert-returning + return 0; + } + dir_x = dirx[unit_get_opposite_dir(dir)]; + dir_y = diry[unit_get_opposite_dir(dir)]; if (map->getcell(bl->m, bl, bl->x + dir_x, bl->y + dir_y, CELL_CHKNOPASS) != 0) skill->addtimerskill(src, tick + 300 * ((flag&2) ? 1 : 2), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag|4); } @@ -3498,10 +3846,12 @@ static int skill_attack_copy_unknown(int *attack_type, struct block_list *src, s static int skill_attack_dir_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag) { - return -1; + return UNIT_DIR_UNDEFINED; } -static void skill_attack_blow_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir) +static void skill_attack_blow_unknown(int *attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, + uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, + struct Damage *dmg, int64 *damage, enum unit_dir *dir) { nullpo_retv(bl); nullpo_retv(dmg); @@ -3512,7 +3862,7 @@ static void skill_attack_blow_unknown(int *attack_type, struct block_list *src, if (!dmg->blewcount && bl->type == BL_SKILL && *damage > 0){ struct skill_unit *su = BL_UCAST(BL_SKILL, bl); if (su->group && su->group->skill_id == HT_BLASTMINE) - skill->blown(src, bl, 3, -1, 0); + skill->blown(src, bl, 3, UNIT_DIR_UNDEFINED, 0); } } @@ -3708,9 +4058,9 @@ static int skill_check_condition_mercenary(struct block_list *bl, int skill_id, { struct status_data *st; struct map_session_data *sd = NULL; - int i, hp, sp, hp_rate, sp_rate, state, mhp; + int hp, sp, hp_rate, sp_rate, state; int idx; - int itemid[MAX_SKILL_ITEM_REQUIRE], amount[MAX_SKILL_ITEM_REQUIRE], index[MAX_SKILL_ITEM_REQUIRE]; + int itemid[MAX_SKILL_ITEM_REQUIRE], amount[MAX_SKILL_ITEM_REQUIRE]; if( lv < 1 || lv > MAX_SKILL_LEVEL ) return 0; @@ -3726,17 +4076,16 @@ static int skill_check_condition_mercenary(struct block_list *bl, int skill_id, return 0; // Requirements - for (i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) { - itemid[i] = skill->dbs->db[idx].itemid[i]; - amount[i] = skill->dbs->db[idx].amount[i]; + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) { + itemid[i] = skill->get_itemid(skill_id, i); + amount[i] = skill->get_itemqty(skill_id, i, lv); } hp = skill->dbs->db[idx].hp[lv-1]; sp = skill->dbs->db[idx].sp[lv-1]; hp_rate = skill->dbs->db[idx].hp_rate[lv-1]; sp_rate = skill->dbs->db[idx].sp_rate[lv-1]; - state = skill->dbs->db[idx].state; - if( (mhp = skill->dbs->db[idx].mhp[lv-1]) > 0 ) - hp += (st->max_hp * mhp) / 100; + state = skill->dbs->db[idx].state[lv - 1]; + if( hp_rate > 0 ) hp += (st->hp * hp_rate) / 100; else @@ -3769,6 +4118,20 @@ static int skill_check_condition_mercenary(struct block_list *bl, int skill_id, clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0); return 0; } + + int mhp = skill->get_mhp(skill_id, lv); + + if (mhp > 0 && get_percentage(st->hp, st->max_hp) > mhp) { + clif->skill_fail(sd, skill_id, USESKILL_FAIL_HP_INSUFFICIENT, 0, 0); + return 0; + } + + int msp = skill->get_msp(skill_id, lv); + + if (msp > 0 && get_percentage(st->sp, st->max_sp) > msp) { + clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0); + return 0; + } } if( !type ) @@ -3783,23 +4146,32 @@ static int skill_check_condition_mercenary(struct block_list *bl, int skill_id, if( !(type&1) ) return 1; - // Check item existences - for (i = 0; i < ARRAYLENGTH(itemid); i++) { - index[i] = INDEX_NOT_FOUND; - if (itemid[i] < 1) continue; // No item - index[i] = pc->search_inventory(sd, itemid[i]); - if (index[i] == INDEX_NOT_FOUND || sd->status.inventory[index[i]].amount < amount[i]) { - clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_ITEM, amount[i], itemid[i]); - return 0; - } - } + bool items_required = skill->items_required(sd, skill_id, lv); + + if (items_required && skill->check_condition_required_items(sd, skill_id, lv) != 0) + return 0; - // Consume items - for (i = 0; i < ARRAYLENGTH(itemid); i++) { - if (index[i] != INDEX_NOT_FOUND) - pc->delitem(sd, index[i], amount[i], 0, DELITEM_SKILLUSE, LOG_TYPE_CONSUME); + int any_item_index = INDEX_NOT_FOUND; + + if (items_required) + any_item_index = skill->get_any_item_index(sd, skill_id, lv); + + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE && items_required; i++) { + if (itemid[i] == 0) + continue; + + if (any_item_index != INDEX_NOT_FOUND && any_item_index != i) + continue; + + int inventory_index = pc->search_inventory(sd, itemid[i]); + + if (inventory_index != INDEX_NOT_FOUND) + pc->delitem(sd, inventory_index, amount[i], 0, DELITEM_SKILLUSE, LOG_TYPE_CONSUME); } + if (skill->check_condition_required_equip(sd, skill_id, lv) != 0) + return 0; + if( type&2 ) return 1; @@ -3887,7 +4259,7 @@ static int skill_timerskill(int tid, int64 tick, int id, intptr_t data) clif->skill_nodamage(src,target,skl->skill_id,skl->skill_lv,1); break; case WZ_WATERBALL: - skill->toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify + skill->toggle_magicpower(src, skl->skill_id, skl->skill_lv); // only the first hit will be amplify if (!status->isdead(target)) skill->attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag); if (skl->type>1 && !status->isdead(target) && !status->isdead(src)) { @@ -3907,7 +4279,7 @@ static int skill_timerskill(int tid, int64 tick, int id, intptr_t data) **/ case WL_CHAINLIGHTNING_ATK: skill->attack(BF_MAGIC, src, src, target, skl->skill_id, skl->skill_lv, tick, (9-skl->type)); // Hit a Lightning on the current Target - skill->toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify + skill->toggle_magicpower(src, skl->skill_id, skl->skill_lv); // only the first hit will be amplify if (skl->type < (4 + skl->skill_lv - 1) && skl->x < 3) { // Remaining Chains Hit @@ -3927,7 +4299,7 @@ static int skill_timerskill(int tid, int64 tick, int id, intptr_t data) case WL_TETRAVORTEX_GROUND: clif->skill_nodamage(src, target, skl->skill_id, skl->skill_lv, 1); skill->attack(BF_MAGIC, src, src, target, skl->skill_id, skl->skill_lv, tick, skl->flag); - skill->toggle_magicpower(src, skl->skill_id); // only the first hit will be amplify + skill->toggle_magicpower(src, skl->skill_id, skl->skill_lv); // only the first hit will be amplify if( skl->type == 4 ){ const enum sc_type scs[] = { SC_BURNING, SC_BLOODING, SC_FROSTMISTY, SC_STUN }; // status inflicts are depend on what summoned element is used. int rate = skl->y, index = skl->x-1; @@ -3936,7 +4308,7 @@ static int skill_timerskill(int tid, int64 tick, int id, intptr_t data) break; case WM_REVERBERATION_MELEE: case WM_REVERBERATION_MAGIC: - skill->attack(skill->get_type(skl->skill_id),src, src, target, skl->skill_id, skl->skill_lv, 0, SD_LEVEL); + skill->attack(skill->get_type(skl->skill_id, skl->skill_lv), src, src, target, skl->skill_id, skl->skill_lv, 0, SD_LEVEL); break; case SC_FATALMENACE: if( src == target ) // Casters Part @@ -4041,7 +4413,7 @@ static int skill_timerskill(int tid, int64 tick, int id, intptr_t data) case LG_OVERBRAND_BRANDISH: skill->area_temp[1] = 0; map->foreachinpath(skill->attack_area,src->m,src->x,src->y,skl->x,skl->y,4,2,BL_CHAR, - skill->get_type(skl->skill_id),src,src,skl->skill_id,skl->skill_lv,tick,skl->flag,BCT_ENEMY); + skill->get_type(skl->skill_id, skl->skill_lv), src, src, skl->skill_id, skl->skill_lv, tick, skl->flag, BCT_ENEMY); break; default: skill->timerskill_notarget_unknown(tid, tick, src, ud, skl); @@ -4190,11 +4562,6 @@ static void skill_castend_type(int type, struct block_list *src, struct block_li skill->castend_damage_id(src, bl, skill_id, skill_lv, tick, flag); break; } - - struct map_session_data *sd = BL_CAST(BL_PC, src); - - if (sd != NULL) - pc->itemskill_clear(sd); } /*========================================== @@ -4223,12 +4590,12 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl if (status->isdead(bl)) return 1; - if (skill_id && skill->get_type(skill_id) == BF_MAGIC && status->isimmune(bl) == 100) { + if (skill_id != 0 && skill->get_type(skill_id, skill_lv) == BF_MAGIC && status->isimmune(bl) == 100) { //GTB makes all targeted magic display miss with a single bolt. sc_type sct = status->skill2sc(skill_id); if(sct != SC_NONE) status_change_end(bl, sct, INVALID_TIMER); - clif->skill_damage(src, bl, tick, status_get_amotion(src), status_get_dmotion(bl), 0, 1, skill_id, skill_lv, skill->get_hit(skill_id)); + clif->skill_damage(src, bl, tick, status_get_amotion(src), status_get_dmotion(bl), 0, 1, skill_id, skill_lv, skill->get_hit(skill_id, skill_lv)); return 1; } @@ -4406,7 +4773,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl case KN_CHARGEATK: { bool path_exists = path->search_long(NULL, src, src->m, src->x, src->y, bl->x, bl->y,CELL_CHKWALL); unsigned int dist = distance_bl(src, bl); - uint8 dir = map->calc_dir(bl, src->x, src->y); + enum unit_dir dir = map->calc_dir(bl, src->x, src->y); // teleport to target (if not on WoE grounds) if( !map_flag_gvg2(src->m) && !map->list[src->m].flag.battleground && unit->movepos(src, bl->x, bl->y, 0, 1) ) @@ -4418,7 +4785,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl skill->blown(src, bl, dist, dir, 0); //HACK: since knockback officially defaults to the left, the client also turns to the left... therefore, // make the caster look in the direction of the target - unit->setdir(src, (dir+4)%8); + unit->set_dir(src, unit_get_opposite_dir(dir)); } } @@ -4436,7 +4803,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl skill->area_temp[1] = bl->id; map->foreachinpath(skill->attack_area,src->m,src->x,src->y,bl->x,bl->y, skill->get_splash(skill_id, skill_lv),skill->get_maxcount(skill_id,skill_lv), skill->splash_target(src), - skill->get_type(skill_id),src,src,skill_id,skill_lv,tick,flag,BCT_ENEMY); + skill->get_type(skill_id, skill_lv), src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY); break; case NPC_ACIDBREATH: @@ -4447,7 +4814,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl skill->area_temp[1] = bl->id; map->foreachinpath(skill->attack_area,src->m,src->x,src->y,bl->x,bl->y, skill->get_splash(skill_id, skill_lv),skill->get_maxcount(skill_id,skill_lv), skill->splash_target(src), - skill->get_type(skill_id),src,src,skill_id,skill_lv,tick,flag,BCT_ENEMY); + skill->get_type(skill_id, skill_lv), src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY); break; case MO_INVESTIGATE: @@ -4457,12 +4824,13 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl case RG_BACKSTAP: { - uint8 dir = map->calc_dir(src, bl->x, bl->y), t_dir = unit->getdir(bl); - if ((!check_distance_bl(src, bl, 0) && !map->check_dir(dir, t_dir)) || bl->type == BL_SKILL) { + enum unit_dir dir = map->calc_dir(src, bl->x, bl->y); + enum unit_dir t_dir = unit->getdir(bl); + if ((!check_distance_bl(src, bl, 0) && map->check_dir(dir, t_dir) == 0) || bl->type == BL_SKILL) { status_change_end(src, SC_HIDING, INVALID_TIMER); skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); - dir = dir < 4 ? dir+4 : dir-4; // change direction [Celest] - unit->setdir(bl,dir); + dir = unit_get_opposite_dir(dir); // change direction [Celest] + unit->set_dir(bl, dir); } else if (sd) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); @@ -4489,7 +4857,6 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl { short x, y, i = 2; // Move 2 cells for Issen(from target) struct block_list *mbl = bl; - short dir = 0; skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag); @@ -4511,13 +4878,13 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl status->set_hp(src, 1, STATUS_HEAL_DEFAULT); #endif // RENEWAL } - dir = map->calc_dir(src,bl->x,bl->y); - if( dir > 0 && dir < 4) x = -i; - else if( dir > 4 ) x = i; - else x = 0; - if( dir > 2 && dir < 6 ) y = -i; - else if( dir == 7 || dir < 2 ) y = i; - else y = 0; + enum unit_dir dir = map->calc_dir(src, bl->x, bl->y); + if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) { + map->freeblock_unlock(); // unblock before assert-returning + return 0; + } + x = i * dirx[dir]; + y = i * diry[dir]; if ((mbl == src || (!map_flag_gvg2(src->m) && !map->list[src->m].flag.battleground))) { // only NJ_ISSEN don't have slide effect in GVG if (!(unit->movepos(src, mbl->x+x, mbl->y+y, 1, 1))) { // The cell is not reachable (wall, object, ...), move next to the target @@ -4619,7 +4986,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl if ( tsc && tsc->data[SC_HOVERING] && ( skill_id == SR_WINDMILL || skill_id == LG_MOONSLASHER ) ) break; - heal = skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, sflag); + heal = skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, sflag); if (skill_id == NPC_VAMPIRE_GIFT && heal > 0) { clif->skill_nodamage(NULL, src, AL_HEAL, heal, 1); status->heal(src, heal, 0, STATUS_HEAL_DEFAULT); @@ -4694,7 +5061,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl case MS_MAGNUM: if( flag&1 ) { //Damage depends on distance, so add it to flag if it is > 1 - skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag|SD_ANIMATION|distance_bl(src, bl)); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag|SD_ANIMATION|distance_bl(src, bl)); } break; @@ -4702,9 +5069,9 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl case ML_BRANDISH: //Coded apart for it needs the flag passed to the damage calculation. if (skill->area_temp[1] != bl->id) - skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag|SD_ANIMATION); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag|SD_ANIMATION); else - skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag); break; case KN_BOWLINGBASH: @@ -4744,12 +5111,12 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl if(idb_exists(skill->bowling_db, bl->id)) break; // Random direction - dir = rnd()%8; + dir = rnd() % UNIT_DIR_MAX; } else { // Create an empty list of already hit targets db_clear(skill->bowling_db); // Direction is walkpath - dir = (unit->getdir(src)+4)%8; + dir = unit_get_opposite_dir(unit->getdir(src)); } // Add current target to the list of already hit targets idb_put(skill->bowling_db, bl->id, bl); @@ -4758,6 +5125,10 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl ty = bl->y; for(i=0;i<c;i++) { // Target coordinates (get changed even if knockback fails) + if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) { + map->freeblock_unlock(); // unblock before assert-returning + return 0; + } tx -= dirx[dir]; ty -= diry[dir]; // If target cell is a wall then break @@ -4786,18 +5157,24 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl if (bl->id==skill->area_temp[1]) break; if (skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,SD_ANIMATION)) - skill->blown(src,bl,skill->area_temp[2],-1,0); + skill->blown(src, bl, skill->area_temp[2], UNIT_DIR_UNDEFINED, 0); } else { - int x=bl->x,y=bl->y,i,dir; - dir = map->calc_dir(bl,src->x,src->y); + int x = bl->x; + int y = bl->y; + int i; + enum unit_dir dir = map->calc_dir(bl, src->x, src->y); skill->area_temp[1] = bl->id; skill->area_temp[2] = skill->get_blewcount(skill_id,skill_lv); // all the enemies between the caster and the target are hit, as well as the target if (skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,0)) - skill->blown(src,bl,skill->area_temp[2],-1,0); + skill->blown(src, bl, skill->area_temp[2], UNIT_DIR_UNDEFINED, 0); for (i=0;i<4;i++) { map->foreachincell(skill->area_sub,bl->m,x,y,BL_CHAR,src,skill_id,skill_lv, tick,flag|BCT_ENEMY|1,skill->castend_damage_id); + if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) { + map->freeblock_unlock(); // unblock before assert-returning + return 0; + } x += dirx[dir]; y += diry[dir]; } @@ -4954,7 +5331,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl if( (tsc = status->get_sc(bl)) && (tsc->data[SC_HIDING] )) { clif->skill_nodamage(src,src,skill_id,skill_lv,1); } else - skill->attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag); + skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag); } break; case NPC_SELFDESTRUCTION: { @@ -5019,7 +5396,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl if(rnd()%100 < (10 + 3*skill_lv)) { if( !sd || pc->checkskill(sd,KN_SPEARBOOMERANG) == 0 ) break; // Spear Boomerang auto cast chance only works if you have mastered Spear Boomerang. - skill->blown(src,bl,6,-1,0); + skill->blown(src, bl, 6, UNIT_DIR_UNDEFINED, 0); skill->addtimerskill(src,tick+800,bl->id,0,0,skill_id,skill_lv,BF_WEAPON,flag); skill->castend_damage_id(src,bl,KN_SPEARBOOMERANG,1,tick,0); } @@ -5027,7 +5404,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl case RK_PHANTOMTHRUST: { struct map_session_data *tsd = BL_CAST(BL_PC, bl); - unit->setdir(src,map->calc_dir(src, bl->x, bl->y)); + unit->set_dir(src, map->calc_dir(src, bl->x, bl->y)); clif->skill_nodamage(src,bl,skill_id,skill_lv,1); skill->blown(src,bl,distance_bl(src,bl)-1,unit->getdir(src),0); @@ -5041,16 +5418,13 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl case KO_JYUMONJIKIRI: case GC_DARKILLUSION: { - short x, y; - short dir = map->calc_dir(bl, src->x, src->y); - - if ( dir < 4 ) { - x = bl->x + 2 * (dir > 0) - 3 * (dir > 0); - y = bl->y + 1 - (dir / 2) - (dir > 2); - } else { - x = bl->x + 2 * (dir > 4) - 1 * (dir > 4); - y = bl->y + (dir / 6) - 1 + (dir > 6); + enum unit_dir dir = map->calc_dir(bl, src->x, src->y); + if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) { + map->freeblock_unlock(); // unblock before assert-returning + return 0; } + short x = bl->x + dirx[dir]; + short y = bl->y + diry[dir]; if ( unit->movepos(src, x, y, 1, 1) ) { clif->slide(src, x, y); @@ -5092,7 +5466,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl break; case WL_DRAINLIFE: { - int heal = skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); + int heal = skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag); int rate = 70 + 5 * skill_lv; heal = heal * (5 + 5 * skill_lv) / 100; @@ -5138,7 +5512,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl if (sd) { int i; clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); - skill->toggle_magicpower(src, skill_id); + skill->toggle_magicpower(src, skill_id, skill_lv); // Priority is to release SpellBook if (sc && sc->data[SC_READING_SB]) { // SpellBook @@ -5207,14 +5581,16 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl skill->attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag|ELE_DARK); break; case RA_WUGSTRIKE: - if( sd && pc_isridingwug(sd) ){ - short x[8]={0,-1,-1,-1,0,1,1,1}; - short y[8]={1,1,0,-1,-1,-1,0,1}; - uint8 dir = map->calc_dir(bl, src->x, src->y); - - if( unit->movepos(src, bl->x+x[dir], bl->y+y[dir], 1, 1) ) - { - clif->slide(src, bl->x+x[dir], bl->y+y[dir]); + if (sd != NULL && pc_isridingwug(sd)) { + enum unit_dir dir = map->calc_dir(bl, src->x, src->y); + if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) { + map->freeblock_unlock(); // unblock before assert-returning + return 0; + } + short x = bl->x + dirx[dir]; + short y = bl->y + diry[dir]; + if (unit->movepos(src, x, y, 1, 1) != 0) { + clif->slide(src, x, y); clif->fixpos(src); skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); } @@ -5380,7 +5756,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl { struct status_change *tsc = status->get_sc(bl); if( tsc && tsc->data[SC_POISON] ) { - skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag); status_change_end(bl, SC_POISON, INVALID_TIMER); } else if( sd ) clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); @@ -5402,7 +5778,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl case EL_HURRICANE: case EL_TYPOON_MIS: if( flag&1 ) - skill->attack(skill->get_type(skill_id+1),src,src,bl,skill_id+1,skill_lv,tick,flag); + skill->attack(skill->get_type(skill_id + 1, skill_lv), src, src, bl, skill_id + 1, skill_lv, tick, flag); else { int i = skill->get_splash(skill_id,skill_lv); clif->skill_nodamage(src,battle->get_master(src),skill_id,skill_lv,1); @@ -5410,7 +5786,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl if( rnd()%100 < 30 ) map->foreachinrange(skill->area_sub,bl,i,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); else - skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag); } break; @@ -5425,7 +5801,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl case EL_STONE_RAIN: if( flag&1 ) - skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag); else { int i = skill->get_splash(skill_id,skill_lv); clif->skill_nodamage(src,battle->get_master(src),skill_id,skill_lv,1); @@ -5433,7 +5809,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl if( rnd()%100 < 30 ) map->foreachinrange(skill->area_sub,bl,i,BL_CHAR,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill->castend_damage_id); else - skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag); } break; @@ -5443,7 +5819,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl case EL_STONE_HAMMER: clif->skill_nodamage(src,battle->get_master(src),skill_id,skill_lv,1); clif->skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, BDT_SKILL); - skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag); break; case EL_TIDAL_WEAPON: @@ -5460,7 +5836,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl elemental->clean_single_effect(ele, skill_id); } if( rnd()%100 < 50 ) - skill->attack(skill->get_type(skill_id),src,src,bl,skill_id,skill_lv,tick,flag); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag); else { sc_start(src, src,type2,100,skill_lv,skill->get_time(skill_id,skill_lv)); sc_start(src, battle->get_master(src),type,100,ele->bl.id,skill->get_time(skill_id,skill_lv)); @@ -5473,7 +5849,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl case MH_MAGMA_FLOW: case MH_HEILIGE_STANGE: if(flag & 1) - skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag); else { map->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), skill->splash_target(src), src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_SPLASH | 1, skill->castend_damage_id); } @@ -5497,7 +5873,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl break; case SU_SV_STEMSPEAR: - skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); + skill->attack(skill->get_type(skill_id, skill_lv), src, src, bl, skill_id, skill_lv, tick, flag); if (status->get_lv(src) >= 30 && (rnd() % 100 < (int)(status->get_lv(src) / 30) + 10)) // TODO: Need activation chance. skill->addtimerskill(src, tick + skill->get_delay(skill_id, skill_lv), bl->id, 0, 0, skill_id, skill_lv, (skill_id == SU_SV_STEMSPEAR) ? BF_MAGIC : BF_WEAPON, flag); break; @@ -5557,7 +5933,7 @@ static bool skill_castend_damage_id_unknown(struct block_list *src, struct block ShowWarning("skill_castend_damage_id: Unknown skill used:%d\n", *skill_id); clif->skill_damage(src, bl, *tick, status_get_amotion(src), tstatus->dmotion, 0, abs(skill->get_num(*skill_id, *skill_lv)), - *skill_id, *skill_lv, skill->get_hit(*skill_id)); + *skill_id, *skill_lv, skill->get_hit(*skill_id, *skill_lv)); map->freeblock_unlock(); return true; } @@ -5657,8 +6033,9 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data) } if(ud->skill_id == RG_BACKSTAP) { - uint8 dir = map->calc_dir(src,target->x,target->y),t_dir = unit->getdir(target); - if(check_distance_bl(src, target, 0) || map->check_dir(dir,t_dir)) { + enum unit_dir dir = map->calc_dir(src, target->x, target->y); + enum unit_dir t_dir = unit->getdir(target); + if (check_distance_bl(src, target, 0) || map->check_dir(dir, t_dir) != 0) { break; } } @@ -5775,7 +6152,7 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data) if (ud->walktimer != INVALID_TIMER && ud->skill_id != TK_RUN && ud->skill_id != RA_WUGDASH) unit->stop_walking(src, STOPWALKING_FLAG_FIXPOS); - if( !sd || sd->skillitem != ud->skill_id || skill->get_delay(ud->skill_id,ud->skill_lv) ) + if (sd == NULL || sd->auto_cast_current.skill_id != ud->skill_id || skill->get_delay(ud->skill_id, ud->skill_lv) != 0) ud->canact_tick = tick + skill->delay_fix(src, ud->skill_id, ud->skill_lv); // Tests show wings don't overwrite the delay but skill scrolls do. [Inkfish] if (sd) { // Cooldown application int i, cooldown = skill->get_cooldown(ud->skill_id, ud->skill_lv); @@ -5808,7 +6185,7 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data) break; } } - if (skill->get_state(ud->skill_id) != ST_MOVE_ENABLE) + if (skill->get_state(ud->skill_id, ud->skill_lv) != ST_MOVE_ENABLE) unit->set_walkdelay(src, tick, battle_config.default_walk_delay+skill->get_walkdelay(ud->skill_id, ud->skill_lv), 1); if(battle_config.skill_log && battle_config.skill_log&src->type) @@ -5818,7 +6195,7 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data) map->freeblock_lock(); // SC_MAGICPOWER needs to switch states before any damage is actually dealt - skill->toggle_magicpower(src, ud->skill_id); + skill->toggle_magicpower(src, ud->skill_id, ud->skill_lv); #if 0 // On aegis damage skills are also increase by camouflage. Need confirmation on kRO. if( ud->skill_id != RA_CAMOUFLAGE ) // only normal attack and auto cast skills benefit from its bonuses @@ -5843,8 +6220,10 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data) skill->blockpc_start(sd,BD_ADAPTATION,3000); } - if( sd && ud->skill_id != SA_ABRACADABRA && ud->skill_id != WM_RANDOMIZESPELL ) // they just set the data so leave it as it is.[Inkfish] - sd->skillitem = sd->skillitemlv = 0; + if (sd != NULL && ud->skill_id != SA_ABRACADABRA && ud->skill_id != WM_RANDOMIZESPELL + && ud->skill_id == sd->auto_cast_current.skill_id) { // they just set the data so leave it as it is.[Inkfish] + pc->autocast_remove(sd, sd->auto_cast_current.type, ud->skill_id, ud->skill_lv); + } if (ud->skilltimer == INVALID_TIMER) { if(md) md->skill_idx = -1; @@ -5854,7 +6233,7 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data) // Asura Strike caster doesn't look to their target in the end if (src->id != target->id && !is_asura) - unit->setdir(src, map->calc_dir(src, target->x, target->y)); + unit->set_dir(src, map->calc_dir(src, target->x, target->y)); map->freeblock_unlock(); return 1; @@ -5877,25 +6256,13 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data) } if (target && target->m == src->m) { //Move character to target anyway. - int dir, x, y; + enum unit_dir dir = map->calc_dir(src, target->x, target->y); + Assert_ret(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX); int dist = 3; // number of cells that asura caster will walk + int x = dist * dirx[dir]; + int y = dist * diry[dir]; - dir = map->calc_dir(src,target->x,target->y); - if (dir > 0 && dir < 4) - x = -dist; - else if (dir > 4) - x = dist; - else - x = 0; - - if (dir > 2 && dir < 6) - y = -dist; - else if (dir == 7 || dir < 2) - y = dist; - else - y = 0; - - if (unit->movepos(src, src->x + x, src->y + y, 1, 1) == 1) { + if (unit->movepos(src, src->x + x, src->y + y, 1, 1) != 0) { //Display movement + animation. clif->slide(src, src->x, src->y); clif->spiritball(src); @@ -5905,16 +6272,20 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data) } } - if( !sd || sd->skillitem != ud->skill_id || skill->get_delay(ud->skill_id,ud->skill_lv) ) + if (sd == NULL || sd->auto_cast_current.skill_id != ud->skill_id || skill->get_delay(ud->skill_id, ud->skill_lv) != 0) ud->canact_tick = tick; - ud->skill_id = ud->skill_lv = ud->skilltarget = 0; //You can't place a skill failed packet here because it would be //sent in ALL cases, even cases where skill_check_condition fails //which would lead to double 'skill failed' messages u.u [Skotlex] - if(sd) - sd->skillitem = sd->skillitemlv = 0; + if (sd != NULL && ud->skill_id == sd->auto_cast_current.skill_id) + pc->autocast_remove(sd, sd->auto_cast_current.type, ud->skill_id, ud->skill_lv); else if(md) md->skill_idx = -1; + + ud->skill_id = 0; + ud->skill_lv = 0; + ud->skilltarget = 0; + return 0; } @@ -6096,7 +6467,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * if (skill->castend_nodamage_id_undead_unknown(src, bl, &skill_id, &skill_lv, &tick, &flag)) { //Skill is actually ground placed. - if (src == bl && skill->get_unit_id(skill_id,0)) + if (src == bl && skill->get_unit_id(skill_id, skill_lv, 0) != 0) return skill->castend_pos2(src,bl->x,bl->y,skill_id,skill_lv,tick,0); } break; @@ -6294,9 +6665,12 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * if (sd) { // player-casted - sd->state.abra_flag = 1; - sd->skillitem = abra_skill_id; - sd->skillitemlv = abra_skill_lv; + pc->autocast_clear(sd); + sd->auto_cast_current.type = AUTOCAST_ABRA; + sd->auto_cast_current.skill_id = abra_skill_id; + sd->auto_cast_current.skill_lv = abra_skill_lv; + VECTOR_ENSURE(sd->auto_cast, 1, 1); + VECTOR_PUSH(sd->auto_cast, sd->auto_cast_current); clif->item_skill(sd, abra_skill_id, abra_skill_lv); } else { // mob-casted @@ -7344,7 +7718,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * int rate = 100 * (100 - (tstatus->int_ / 2 + tstatus->vit / 3 + tstatus->luk / 10)); int duration = skill->get_time2(skill_id, skill_lv); - duration *= (100 - (tstatus->int_ + tstatus->vit) / 2) / 100; + duration = duration * (100 - (tstatus->int_ + tstatus->vit) / 2) / 100; status->change_start(src, bl, SC_BLIND, rate, 1, 0, 0, 0, duration, SCFLAG_NONE); } @@ -7425,7 +7799,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * map->freeblock_unlock(); return 1; } - if( sd->skillitem != skill_id ) + if (sd->auto_cast_current.type == AUTOCAST_NONE) status_zap(src, 0, skill->get_sp(skill_id, skill_lv)); // consume sp only if succeeded } break; @@ -7462,7 +7836,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * break; } - if( sd->state.autocast || ( (sd->skillitem == AL_TELEPORT || battle_config.skip_teleport_lv1_menu) && skill_lv == 1 ) || skill_lv == 3 ) + if (sd->auto_cast_current.type == AUTOCAST_TEMP || ((sd->auto_cast_current.skill_id == AL_TELEPORT || battle_config.skip_teleport_lv1_menu) && skill_lv == 1) || skill_lv == 3) { if( skill_lv == 1 ) pc->randomwarp(sd,CLR_TELEPORT); @@ -7603,7 +7977,14 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * } if( sd ) { int bonus = 100, potion = min(500+skill_lv,505); - int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE; + int item_idx = skill->get_item_index(skill_id, skill_lv); + + if (item_idx == INDEX_NOT_FOUND) { + clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); + map->freeblock_unlock(); + return 1; + } + int item_id = skill->get_itemid(skill_id, item_idx); int inventory_idx = pc->search_inventory(sd, item_id); if (inventory_idx == INDEX_NOT_FOUND || item_id <= 0) { @@ -7611,7 +7992,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * map->freeblock_unlock(); return 1; } - if (sd->inventory_data[inventory_idx] == NULL || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx)) { + if (sd->inventory_data[inventory_idx] == NULL || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx, skill_lv)) { clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); map->freeblock_unlock(); return 1; @@ -7835,7 +8216,9 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * case TK_HIGHJUMP: { - int x,y, dir = unit->getdir(src); + int x; + int y; + enum unit_dir dir = unit->getdir(src); //Fails on noteleport maps, except for GvG and BG maps [Skotlex] if( map->list[src->m].flag.noteleport @@ -8084,11 +8467,19 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * case NPC_RUN: { - const int mask[8][2] = {{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1}}; - uint8 dir = (bl == src)?unit->getdir(src):map->calc_dir(src,bl->x,bl->y); //If cast on self, run forward, else run away. + enum unit_dir dir; + if (bl == src) //If cast on self, run forward, else run away. + dir = unit->getdir(src); + else + dir = map->calc_dir(src, bl->x, bl->y); + if (Assert_chk(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX)) { + map->freeblock_unlock(); // unblock before assert-returning + return 0; + } unit->stop_attack(src); //Run skillv tiles overriding the can-move check. - if (unit->walktoxy(src, src->x + skill_lv * mask[dir][0], src->y + skill_lv * mask[dir][1], 2) && md) + if (unit->walk_toxy(src, src->x + skill_lv * -dirx[dir], src->y + skill_lv * -diry[dir], 2) == 0 + && md != NULL) md->state.skillstate = MSS_WALK; //Otherwise it isn't updated in the AI. } break; @@ -8229,7 +8620,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * if (nameid > 0) { int success; struct item item_tmp = { 0 }; - int amount = skill->get_itemqty(su->group->skill_id, i); + int amount = skill->get_itemqty(su->group->skill_id, i, skill_lv); item_tmp.nameid = nameid; item_tmp.identify = 1; if ((success = pc->additem(sd, &item_tmp, amount, LOG_TYPE_SKILL)) != 0) { @@ -9449,7 +9840,9 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * case NC_F_SIDESLIDE: case NC_B_SIDESLIDE: { - uint8 dir = (skill_id == NC_F_SIDESLIDE) ? (unit->getdir(src)+4)%8 : unit->getdir(src); + enum unit_dir dir = unit->getdir(src); + if (skill_id == NC_F_SIDESLIDE) + dir = unit_get_opposite_dir(dir); skill->blown(src,bl,skill->get_blewcount(skill_id,skill_lv),dir,0); clif->slide(src,src->x,src->y); clif->skill_nodamage(src,bl,skill_id,skill_lv,1); @@ -10024,9 +10417,12 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * clif->skill_nodamage (src, bl, skill_id, skill_lv, 1); if (sd != NULL) { - sd->state.abra_flag = 2; - sd->skillitem = improv_skill_id; - sd->skillitemlv = improv_skill_lv; + pc->autocast_clear(sd); + sd->auto_cast_current.type = AUTOCAST_IMPROVISE; + sd->auto_cast_current.skill_id = improv_skill_id; + sd->auto_cast_current.skill_lv = improv_skill_lv; + VECTOR_ENSURE(sd->auto_cast, 1, 1); + VECTOR_PUSH(sd->auto_cast, sd->auto_cast_current); clif->item_skill(sd, improv_skill_id, improv_skill_lv); } else { struct unit_data *ud = unit->bl2ud(src); @@ -10419,7 +10815,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list * case KO_KAZEHU_SEIRAN: case KO_DOHU_KOUKAI: if(sd) { - int ttype = skill->get_ele(skill_id, skill_lv); + enum spirit_charm_types ttype = skill->get_ele(skill_id, skill_lv); clif->skill_nodamage(src, bl, skill_id, skill_lv, 1); pc->add_charm(sd, skill->get_time(skill_id, skill_lv), MAX_SPIRITCHARM, ttype); // replace existing charms of other type } @@ -10795,7 +11191,7 @@ static int skill_castend_pos(int tid, int64 tick, int id, intptr_t data) if (ud->walktimer != INVALID_TIMER) unit->stop_walking(src, STOPWALKING_FLAG_FIXPOS); - if( !sd || sd->skillitem != ud->skill_id || skill->get_delay(ud->skill_id,ud->skill_lv) ) + if (sd == NULL || sd->auto_cast_current.skill_id != ud->skill_id || skill->get_delay(ud->skill_id, ud->skill_lv) != 0) ud->canact_tick = tick + skill->delay_fix(src, ud->skill_id, ud->skill_lv); if (sd) { //Cooldown application int i, cooldown = skill->get_cooldown(ud->skill_id, ud->skill_lv); @@ -10824,10 +11220,10 @@ static int skill_castend_pos(int tid, int64 tick, int id, intptr_t data) map->freeblock_lock(); skill->castend_pos2(src,ud->skillx,ud->skilly,ud->skill_id,ud->skill_lv,tick,0); - if( sd && sd->skillitem != AL_WARP ) // Warp-Portal thru items will clear data in skill_castend_map. [Inkfish] - sd->skillitem = sd->skillitemlv = 0; + if (sd != NULL && ud->skill_id != AL_WARP && ud->skill_id == sd->auto_cast_current.skill_id) // Warp-Portal thru items will clear data in skill_castend_map. [Inkfish] + pc->autocast_remove(sd, sd->auto_cast_current.type, ud->skill_id, ud->skill_lv); - unit->setdir(src, map->calc_dir(src, ud->skillx, ud->skilly)); + unit->set_dir(src, map->calc_dir(src, ud->skillx, ud->skilly)); if (ud->skilltimer == INVALID_TIMER) { if (md) md->skill_idx = -1; @@ -10839,13 +11235,17 @@ static int skill_castend_pos(int tid, int64 tick, int id, intptr_t data) return 1; } while(0); - if( !sd || sd->skillitem != ud->skill_id || skill->get_delay(ud->skill_id,ud->skill_lv) ) + if (sd == NULL || sd->auto_cast_current.skill_id != ud->skill_id || skill->get_delay(ud->skill_id, ud->skill_lv) != 0) ud->canact_tick = tick; - ud->skill_id = ud->skill_lv = 0; - if(sd) - sd->skillitem = sd->skillitemlv = 0; + + if (sd != NULL && ud->skill_id == sd->auto_cast_current.skill_id) + pc->autocast_remove(sd, sd->auto_cast_current.type, ud->skill_id, ud->skill_lv); else if(md) md->skill_idx = -1; + + ud->skill_id = 0; + ud->skill_lv = 0; + return 0; } @@ -10876,6 +11276,37 @@ static int skill_count_wos(struct block_list *bl, va_list ap) return 0; } +/** + * Returns the linked song/dance skill ID, if any (for the Bard/Dancer Soul Link). + * + * @param skill_id The skill ID to look up + * + * @return The linked song or dance's skill ID if any + * @retval 0 if the given skill_id doesn't have a linked skill ID + */ +static int skill_get_linked_song_dance_id(int skill_id) +{ + switch (skill_id) { + case BA_WHISTLE: + return DC_HUMMING; + case BA_ASSASSINCROSS: + return DC_DONTFORGETME; + case BA_POEMBRAGI: + return DC_FORTUNEKISS; + case BA_APPLEIDUN: + return DC_SERVICEFORYOU; + case DC_HUMMING: + return BA_WHISTLE; + case DC_DONTFORGETME: + return BA_ASSASSINCROSS; + case DC_FORTUNEKISS: + return BA_POEMBRAGI; + case DC_SERVICEFORYOU: + return BA_APPLEIDUN; + } + return 0; +} + /*========================================== * *------------------------------------------*/ @@ -10928,17 +11359,21 @@ static int skill_castend_map(struct map_session_data *sd, uint16 skill_id, const return 0; } - switch(skill_id) { + switch (skill_id) { case AL_TELEPORT: - // The storage window is closed automatically by the client when there's - // any kind of map change, so we need to restore it automatically - // issue: 8027 - if(strcmp(mapname,"Random")==0) - pc->randomwarp(sd,CLR_TELEPORT); - else if (sd->menuskill_val > 1) //Need lv2 to be able to warp here. - pc->setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,CLR_TELEPORT); - - clif->refresh_storagewindow(sd); + if (strcmp(mapname, "Random") == 0) + pc->randomwarp(sd, CLR_TELEPORT); + else if (sd->menuskill_val > 1) // Need lv2 to be able to warp here. + pc->setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_TELEPORT); + + if (battle_config.teleport_close_storage == 1 && sd->state.storage_flag != STORAGE_FLAG_CLOSED) { + if (sd->state.storage_flag == STORAGE_FLAG_NORMAL) + storage->close(sd); + if (sd->state.storage_flag == STORAGE_FLAG_GUILD) + gstorage->close(sd); + } else { + clif->refresh_storagewindow(sd); + } break; case AL_WARP: @@ -10973,7 +11408,7 @@ static int skill_castend_map(struct map_session_data *sd, uint16 skill_id, const } } - lv = sd->skillitem==skill_id?sd->skillitemlv:pc->checkskill(sd,skill_id); + lv = (sd->auto_cast_current.type > AUTOCAST_TEMP) ? sd->auto_cast_current.skill_lv : pc->checkskill(sd, skill_id); wx = sd->menuskill_val>>16; wy = sd->menuskill_val&0xffff; @@ -10996,7 +11431,10 @@ static int skill_castend_map(struct map_session_data *sd, uint16 skill_id, const } skill->consume_requirement(sd,sd->menuskill_id,lv,2); - sd->skillitem = sd->skillitemlv = 0; // Clear data that's skipped in 'skill_castend_pos' [Inkfish] + + // Clear data which was skipped in skill_castend_pos(). + pc->autocast_remove(sd, sd->auto_cast_current.type, sd->auto_cast_current.skill_id, + sd->auto_cast_current.skill_lv); if((group=skill->unitsetting(&sd->bl,skill_id,lv,wx,wy,0))==NULL) { skill_failed(sd); @@ -11057,7 +11495,7 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill } // SC_MAGICPOWER needs to switch states before any damage is actually dealt - skill->toggle_magicpower(src, skill_id); + skill->toggle_magicpower(src, skill_id, skill_lv); switch(skill_id) { case PR_BENEDICTIO: @@ -11245,7 +11683,7 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill FALLTHROUGH case GS_GROUNDDRIFT: //Ammo should be deleted right away. if ( skill_id == WM_SEVERE_RAINSTORM ) - sc_start(src,src,SC_NO_SWITCH_EQUIP,100,0,skill->get_time(skill_id,skill_lv)); + sc_start(src, src, type, 100, 0, skill->get_time(skill_id, skill_lv)); skill->unitsetting(src,skill_id,skill_lv,x,y,0); break; case WZ_ICEWALL: @@ -11410,13 +11848,19 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill // Slim Pitcher [Celest] case CR_SLIMPITCHER: if (sd) { - int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE; + int item_idx = skill->get_item_index(skill_id, skill_lv); + + if (item_idx == INDEX_NOT_FOUND) { + clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); + return 1; + } + int item_id = skill->get_itemid(skill_id, item_idx); int inventory_idx = pc->search_inventory(sd, item_id); int bonus; if (inventory_idx == INDEX_NOT_FOUND || item_id <= 0 || sd->inventory_data[inventory_idx] == NULL - || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx) + || sd->status.inventory[inventory_idx].amount < skill->get_itemqty(skill_id, item_idx, skill_lv) ) { clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); return 1; @@ -11443,7 +11887,11 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill skill->castend_nodamage_id); } } else { - int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE; + int item_idx = skill->get_item_index(skill_id, skill_lv); + + if (item_idx == INDEX_NOT_FOUND) + return 1; + int item_id = skill->get_itemid(skill_id, item_idx); struct item_data *item = itemdb->search(item_id); int bonus; @@ -11606,17 +12054,16 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill case WL_EARTHSTRAIN: { - int i, wave = skill_lv + 4, dir = map->calc_dir(src,x,y); + int i; + int wave = skill_lv + 4; + enum unit_dir dir = map->calc_dir(src, x, y); + Assert_ret(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX); int sx = x = src->x, sy = y = src->y; // Store first caster's location to avoid glitch on unit setting - for( i = 1; i <= wave; i++ ) - { - switch( dir ){ - case 0: case 1: case 7: sy = y + i; break; - case 3: case 4: case 5: sy = y - i; break; - case 2: sx = x - i; break; - case 6: sx = x + i; break; - } + for (i = 1; i <= wave; i++) { + sy = y + i * diry[dir]; + if (dir == UNIT_DIR_WEST || dir == UNIT_DIR_EAST) + sx = x + i * dirx[dir]; skill->addtimerskill(src,timer->gettick() + (140 * i),0,sx,sy,skill_id,skill_lv,dir,flag&2); } } @@ -11663,7 +12110,7 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill skill->unitsetting(src, skill_id, skill_lv, x, y, 0); // Set bomb on current Position clif->skill_nodamage(src, src, skill_id, skill_lv, 1); if( skill->blown(src, src, 3 * skill_lv, unit->getdir(src), 0) && sc) { - sc_start(src, src, SC__FEINTBOMB_MASTER, 100, 0, skill->get_unit_interval(SC_FEINTBOMB)); + sc_start(src, src, SC__FEINTBOMB_MASTER, 100, 0, skill->get_unit_interval(SC_FEINTBOMB, skill_lv)); } break; @@ -11676,7 +12123,7 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill case LG_OVERBRAND: skill->area_temp[1] = 0; map->foreachinpath(skill->attack_area,src->m,src->x,src->y,x,y,1,5,BL_CHAR, - skill->get_type(skill_id),src,src,skill_id,skill_lv,tick,flag,BCT_ENEMY); + skill->get_type(skill_id, skill_lv), src, src, skill_id, skill_lv, tick, flag, BCT_ENEMY); skill->addtimerskill(src,timer->gettick() + status_get_amotion(src), 0, x, y, LG_OVERBRAND_BRANDISH, skill_lv, 0, flag); break; @@ -11713,7 +12160,7 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill int tmpx = x - area + rnd()%(area * 2 + 1); int tmpy = y - area + rnd()%(area * 2 + 1); - skill->addtimerskill(src,tick+r*250,0,tmpx,tmpy,GN_CRAZYWEED_ATK,skill_lv,-1,0); + skill->addtimerskill(src, tick + (int64)r * 250, 0, tmpx, tmpy, GN_CRAZYWEED_ATK, skill_lv, 0, 0); } } break; @@ -11910,10 +12357,10 @@ static bool skill_dance_switch(struct skill_unit *su, int flag) // replace group->skill_id = skill_id; group->skill_lv = 1; - group->unit_id = skill->get_unit_id(skill_id,0); - group->target_flag = skill->get_unit_target(skill_id); - group->bl_flag = skill->get_unit_bl_target(skill_id); - group->interval = skill->get_unit_interval(skill_id); + group->unit_id = skill->get_unit_id(skill_id, 1, 0); + group->target_flag = skill->get_unit_target(skill_id, 1); + group->bl_flag = skill->get_unit_bl_target(skill_id, 1); + group->interval = skill->get_unit_interval(skill_id, 1); } else { //Restore group->skill_id = backup.skill_id; @@ -11946,8 +12393,8 @@ static struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 limit = skill->get_time(skill_id,skill_lv); range = skill->get_unit_range(skill_id,skill_lv); - interval = skill->get_unit_interval(skill_id); - target = skill->get_unit_target(skill_id); + interval = skill->get_unit_interval(skill_id, skill_lv); + target = skill->get_unit_target(skill_id, skill_lv); unit_flag = skill->get_unit_flag(skill_id); layout = skill->get_unit_layout(skill_id,skill_lv,src,x,y); @@ -12311,12 +12758,12 @@ static struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 } nullpo_retr(NULL, layout); - nullpo_retr(NULL, group=skill->init_unitgroup(src,layout->count,skill_id,skill_lv,skill->get_unit_id(skill_id,flag&1)+subunt, limit, interval)); + nullpo_retr(NULL, group = skill->init_unitgroup(src, layout->count, skill_id, skill_lv, skill->get_unit_id(skill_id, skill_lv, flag & 1) + subunt, limit, interval)); group->val1=val1; group->val2=val2; group->val3=val3; group->target_flag=target; - group->bl_flag= skill->get_unit_bl_target(skill_id); + group->bl_flag= skill->get_unit_bl_target(skill_id, skill_lv); group->state.ammo_consume = (sd && sd->state.arrow_atk && skill_id != GS_GROUNDDRIFT); //Store if this skill needs to consume ammo. group->state.song_dance = ((unit_flag&(UF_DANCE|UF_SONG)) ? 1 : 0)|((unit_flag&UF_ENSEMBLE) ? 2 : 0); //Signals if this is a song/dance/duet group->state.guildaura = ( skill_id >= GD_LEADERSHIP && skill_id <= GD_HAWKEYES )?1:0; @@ -12437,7 +12884,7 @@ static struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 if (!group->alive_count) { //No cells? Something that was blocked completely by Land Protector? - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); return NULL; } @@ -12485,7 +12932,7 @@ static int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int nullpo_ret(sg=src->group); nullpo_ret(ss=map->id2bl(sg->src_id)); - if (skill->get_type(sg->skill_id) == BF_MAGIC && map->getcell(src->bl.m, &src->bl, src->bl.x, src->bl.y, CELL_CHKLANDPROTECTOR) && sg->skill_id != SA_LANDPROTECTOR) + if (skill->get_type(sg->skill_id, sg->skill_lv) == BF_MAGIC && map->getcell(src->bl.m, &src->bl, src->bl.x, src->bl.y, CELL_CHKLANDPROTECTOR) != 0 && sg->skill_id != SA_LANDPROTECTOR) return 0; //AoE skills are ineffective. [Skotlex] sc = status->get_sc(bl); @@ -12553,7 +13000,7 @@ static int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int unsigned short m = sg->val3; if( --count <= 0 ) - skill->del_unitgroup(sg,ALC_MARK); + skill->del_unitgroup(sg); if ( map->mapindex2mapid(sg->val3) == sd->bl.m && x == sd->bl.x && y == sd->bl.y ) working = 1;/* we break it because officials break it, lovely stuff. */ @@ -12684,7 +13131,7 @@ static int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int if( status_get_mode(bl)&MD_BOSS ) break; // iRO Wiki says that this skill don't affect to Boss monsters. if( map_flag_vs(bl->m) || bl->id == src->bl.id || battle->check_target(&src->bl,bl, BCT_ENEMY) == 1 ) - skill->attack(skill->get_type(sg->skill_id), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0); + skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0); break; case UNT_REVERBERATION: @@ -12859,7 +13306,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b sg->val1--; } if (sg->val1 <= 0) - skill->del_unitgroup(sg, ALC_MARK); + skill->del_unitgroup(sg); break; case UNT_EVILLAND: @@ -12920,7 +13367,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b case WZ_STORMGUST: //SG counter does not reset per stormgust. IE: One hit from a SG and two hits from another will freeze you. if (tsc) tsc->sg_counter++; //SG hit counter. - if (skill->attack(skill->get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0) <= 0 && tsc) + if (skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0) <= 0 && tsc != NULL) tsc->sg_counter=0; //Attack absorbed. break; #endif @@ -12929,7 +13376,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b skill->attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); break; default: - skill->attack(skill->get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); + skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0); } break; @@ -13250,7 +13697,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b case UNT_PSYCHIC_WAVE: case UNT_MAGMA_ERUPTION: case UNT_MAKIBISHI: - skill->attack(skill->get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); + skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0); break; case UNT_GROUNDDRIFT_WIND: @@ -13351,7 +13798,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b sec = 3000; // Couldn't trap it? sg->limit = DIFF_TICK32(tick, sg->tick) + sec; } else if( tsc->data[SC_THORNS_TRAP] && bl->id == sg->val2 ) - skill->attack(skill->get_type(GN_THORNS_TRAP), ss, ss, bl, sg->skill_id, sg->skill_lv, tick, SD_LEVEL|SD_ANIMATION); + skill->attack(skill->get_type(GN_THORNS_TRAP, sg->skill_lv), ss, ss, bl, sg->skill_id, sg->skill_lv, tick, SD_LEVEL|SD_ANIMATION); } break; @@ -13363,11 +13810,11 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b default: sc_start4(ss, bl, SC_BURNING, 4 + 4 * sg->skill_lv, sg->skill_lv, 0, ss->id, 0, skill->get_time2(sg->skill_id, sg->skill_lv)); - skill->attack(skill->get_type(sg->skill_id), ss, &src->bl, bl, + skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv + 10 * sg->val2, tick, 0); break; case 3: - skill->attack(skill->get_type(CR_ACIDDEMONSTRATION), ss, &src->bl, bl, + skill->attack(skill->get_type(CR_ACIDDEMONSTRATION, sg->skill_lv), ss, &src->bl, bl, CR_ACIDDEMONSTRATION, sd ? pc->checkskill(sd, CR_ACIDDEMONSTRATION) : sg->skill_lv, tick, 0); break; @@ -13385,7 +13832,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b case UNT_HELLS_PLANT: if( battle->check_target(&src->bl,bl,BCT_ENEMY) > 0 ) - skill->attack(skill->get_type(GN_HELLS_PLANT_ATK), ss, &src->bl, bl, GN_HELLS_PLANT_ATK, sg->skill_lv, tick, 0); + skill->attack(skill->get_type(GN_HELLS_PLANT_ATK, sg->skill_lv), ss, &src->bl, bl, GN_HELLS_PLANT_ATK, sg->skill_lv, tick, 0); if( ss != bl) //The caster is the only one who can step on the Plants, without destroying them sg->limit = DIFF_TICK32(tick, sg->tick) + 100; break; @@ -13393,7 +13840,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b case UNT_CLOUD_KILL: if(tsc && !tsc->data[type]) status->change_start(ss,bl,type,10000,sg->skill_lv,sg->group_id,0,0,skill->get_time2(sg->skill_id,sg->skill_lv),SCFLAG_FIXEDRATE); - skill->attack(skill->get_type(sg->skill_id),ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); + skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0); break; case UNT_WARMER: @@ -13518,7 +13965,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b } sg->limit = DIFF_TICK32(tick, sg->tick) + sec; } else if (tsc->data[type] && bl->id == sg->val2) { - skill->attack(skill->get_type(SU_SV_ROOTTWIST_ATK), ss, &src->bl, bl, SU_SV_ROOTTWIST_ATK, sg->skill_lv, tick, SD_LEVEL|SD_ANIMATION); + skill->attack(skill->get_type(SU_SV_ROOTTWIST_ATK, sg->skill_lv), ss, &src->bl, bl, SU_SV_ROOTTWIST_ATK, sg->skill_lv, tick, SD_LEVEL|SD_ANIMATION); } } break; @@ -13835,12 +14282,14 @@ static int skill_check_condition_char_sub(struct block_list *bl, va_list ap) } else { switch(skill_id) { - case PR_BENEDICTIO: { - uint8 dir = map->calc_dir(&sd->bl,tsd->bl.x,tsd->bl.y); - dir = (unit->getdir(&sd->bl) + dir)%8; //This adjusts dir to account for the direction the sd is facing. - if ((tsd->job & MAPID_BASEMASK) == MAPID_ACOLYTE && (dir == 2 || dir == 6) //Must be standing to the left/right of Priest. - && sd->status.sp >= 10) + case PR_BENEDICTIO: + { + enum unit_dir dir = map->calc_dir(&sd->bl, tsd->bl.x, tsd->bl.y); + dir = (unit->getdir(&sd->bl) + dir) % UNIT_DIR_MAX; //This adjusts dir to account for the direction the sd is facing. + if ((tsd->job & MAPID_BASEMASK) == MAPID_ACOLYTE && (dir == UNIT_DIR_WEST || dir == UNIT_DIR_EAST) //Must be standing to the left/right of Priest. + && sd->status.sp >= 10) { p_sd[(*c)++]=tsd->bl.id; + } return 1; } case AB_ADORAMUS: @@ -13970,16 +14419,16 @@ static int skill_check_condition_mob_master_sub(struct block_list *bl, va_list a * Determines if a given skill should be made to consume ammo * when used by the player. [Skotlex] *------------------------------------------*/ -static int skill_isammotype(struct map_session_data *sd, int skill_id) +static int skill_isammotype(struct map_session_data *sd, int skill_id, int skill_lv) { nullpo_ret(sd); return ( battle_config.arrow_decrement==2 && (sd->weapontype == W_BOW || (sd->weapontype >= W_REVOLVER && sd->weapontype <= W_GRENADE)) && skill_id != HT_PHANTASMIC && - skill->get_type(skill_id) == BF_WEAPON && + skill->get_type(skill_id, skill_lv) == BF_WEAPON && !(skill->get_nk(skill_id)&NK_NO_DAMAGE) && - !skill->get_spiritball(skill_id,1) //Assume spirit spheres are used as ammo instead. + !skill->get_spiritball(skill_id, skill_lv) //Assume spirit spheres are used as ammo instead. ); } @@ -13995,19 +14444,87 @@ static bool skill_is_combo(int skill_id) } /** - * Checks if a skill is casted by an item (itemskill() script command). + * Checks if a skill's equipment requirements are fulfilled. * - * @param sd The charcater's session data. + * @param sd The character who casts the skill. * @param skill_id The skill's ID. * @param skill_lv The skill's level. - * @return true if skill is casted by an item, otherwise false. - */ -static bool skill_is_item_skill(struct map_session_data *sd, int skill_id, int skill_lv) + * @return 0 on success or 1 in case of error. + * + **/ +static int skill_check_condition_required_equip(struct map_session_data *sd, int skill_id, int skill_lv) { - nullpo_retr(false, sd); + nullpo_retr(1, sd); + + struct skill_condition req = skill->get_requirement(sd, skill_id, skill_lv); + bool any_equip_flag = skill->get_equip_any_flag(skill_id, skill_lv); + bool any_equip_found = false; + int fail_id = 0; + int fail_amount = 0; + + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) { + if (req.equip_id[i] == 0) + continue; + + int req_id = req.equip_id[i]; + int req_amount = req.equip_amount[i]; + int found_amount = 0; + + for (int j = 0; j < EQI_MAX; j++) { + int inv_idx = sd->equip_index[j]; + + if (inv_idx == INDEX_NOT_FOUND || sd->inventory_data[inv_idx] == NULL) + continue; + + if ((j == EQI_HAND_R && sd->equip_index[EQI_HAND_L] == inv_idx) + || (j == EQI_HEAD_MID && sd->equip_index[EQI_HEAD_LOW] == inv_idx) + || (j == EQI_HEAD_TOP && sd->equip_index[EQI_HEAD_MID] == inv_idx) + || (j == EQI_HEAD_TOP && sd->equip_index[EQI_HEAD_LOW] == inv_idx) + || (j == EQI_COSTUME_MID && sd->equip_index[EQI_COSTUME_LOW] == inv_idx) + || (j == EQI_COSTUME_TOP && sd->equip_index[EQI_COSTUME_MID] == inv_idx) + || (j == EQI_COSTUME_TOP && sd->equip_index[EQI_COSTUME_LOW] == inv_idx)) { + continue; // Equipment uses more than one slot; only process it once! + } + + if (itemdb_type(req_id) != IT_CARD) { + if (sd->inventory_data[inv_idx]->nameid != req_id) + continue; + + if (itemdb_type(req_id) == IT_AMMO) + found_amount += sd->status.inventory[inv_idx].amount; + else + found_amount++; + } else { + if (itemdb_isspecial(sd->status.inventory[inv_idx].card[0])) + continue; + + for (int k = 0; k < sd->inventory_data[inv_idx]->slot; k++) { + if (sd->status.inventory[inv_idx].card[k] == req_id) + found_amount++; + } + } + } - return (sd->skillitem == skill_id && sd->skillitemlv == skill_lv - && sd->itemskill_id == skill_id && sd->itemskill_lv == skill_lv); + if (any_equip_flag) { + if (found_amount >= req_amount) { + any_equip_found = true; + break; + } else if (fail_id == 0) { // Save ID/amount of first missing equipment for skill fail message. + fail_id = req_id; + fail_amount = req_amount; + } + } else if (found_amount < req_amount) { + clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_EQUIPMENT, req_amount, req_id); + return 1; + } + } + + if (any_equip_flag && !any_equip_found) { + clif->skill_fail(sd, skill_id, USESKILL_FAIL_NEED_EQUIPMENT, fail_amount, fail_id); + return 1; + } + + return 0; } static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) @@ -14024,13 +14541,13 @@ static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 s if (sd->chat_id != 0) return 0; - if ((sd->state.itemskill_conditions_checked == 1 || sd->state.itemskill_no_conditions == 1) - && skill->is_item_skill(sd, skill_id, skill_lv)) { + if (((sd->auto_cast_current.itemskill_conditions_checked || !sd->auto_cast_current.itemskill_check_conditions) + && sd->auto_cast_current.type == AUTOCAST_ITEM) || sd->auto_cast_current.type == AUTOCAST_IMPROVISE) { return 1; } - if (pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL) && sd->skillitem != skill_id) { - //GMs don't override the skillItem check, otherwise they can use items without them being consumed! [Skotlex] + if (pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL) && sd->auto_cast_current.type != AUTOCAST_ITEM) { + // GMs don't override the AUTOCAST_ITEM check, otherwise they can use items without them being consumed! sd->state.arrow_atk = skill->get_ammotype(skill_id)?1:0; //Need to do arrow state check. sd->spiritball_old = sd->spiritball; //Need to do Spiritball check. return 1; @@ -14061,30 +14578,7 @@ static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 s if( !sc->count ) sc = NULL; - if( sd->skillitem == skill_id ) { - if( sd->state.abra_flag ) // Hocus-Pocus was used. [Inkfish] - sd->state.abra_flag = 0; - else { - int i; - // When a target was selected, consume items that were skipped in pc_use_item [Skotlex] - if( (i = sd->itemindex) == -1 || - sd->status.inventory[i].nameid != sd->itemid || - sd->inventory_data[i] == NULL || - sd->status.inventory[i].amount < 1 - ) { - //Something went wrong, item exploit? - sd->itemid = sd->itemindex = -1; - return 0; - } - - //Consume - sd->itemid = sd->itemindex = -1; - if (sd->status.inventory[i].expire_time == 0 && sd->inventory_data[i]->flag.delay_consume == 1) // Rental usable items are not consumed until expiration - pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME); - } - } - - if (pc_is90overweight(sd) && sd->skillitem != skill_id) { /// Skill casting items ignore the overweight restriction. [Kenpachi] + if (pc_is90overweight(sd) && sd->auto_cast_current.type != AUTOCAST_ITEM) { // Skill casting items ignore the overweight restriction. clif->skill_fail(sd, skill_id, USESKILL_FAIL_WEIGHTOVER, 0, 0); return 0; } @@ -14732,22 +15226,6 @@ static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 s require.sp -= require.sp * 20 * count / 100; // -20% each W/M in the party. } break; - case NC_PILEBUNKER: - if (sd->equip_index[EQI_HAND_R] < 0 - || !itemid_is_pilebunker(sd->status.inventory[sd->equip_index[EQI_HAND_R]].nameid) - ) { - clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0); - return 0; - } - break; - case NC_HOVERING: - if (( sd->equip_index[EQI_ACC_L] >= 0 && sd->status.inventory[sd->equip_index[EQI_ACC_L]].nameid == ITEMID_HOVERING_BOOSTER ) || - ( sd->equip_index[EQI_ACC_R] >= 0 && sd->status.inventory[sd->equip_index[EQI_ACC_R]].nameid == ITEMID_HOVERING_BOOSTER )); - else { - clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0, 0); - return 0; - } - break; case SO_FIREWALK: case SO_ELECTRICWALK: // Can't be casted until you've walked all cells. if( sc && sc->data[SC_PROPERTYWALK] && @@ -14950,12 +15428,20 @@ static int skill_check_condition_castbegin(struct map_session_data *sd, uint16 s return 0; } + if (require.msp > 0 && get_percentage(st->sp, st->max_sp) > require.msp) { + clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0); + return 0; + } + if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) { clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0); return 0; } - if (require.sp > 0 && st->sp < (unsigned int)require.sp && sd->skillitem != skill_id) { /// Skill casting items and Hocus-Pocus skills don't consume SP. [Kenpachi] + if (skill->check_condition_required_equip(sd, skill_id, skill_lv) != 0) + return 0; + + if (require.sp > 0 && st->sp < (unsigned int)require.sp && sd->auto_cast_current.type == AUTOCAST_NONE) { // Auto-cast skills don't consume SP. clif->skill_fail(sd, skill_id, USESKILL_FAIL_SP_INSUFFICIENT, 0, 0); return 0; } @@ -15001,25 +15487,140 @@ static int skill_check_condition_castbegin_unknown(struct status_change *sc, uin return -1; } +/** + * Checks if a skill's item requirements are fulfilled. + * + * @param sd The character who casts the skill. + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return 0 on success or 1 in case of error. + * + **/ +static int skill_check_condition_required_items(struct map_session_data *sd, int skill_id, int skill_lv) +{ + nullpo_retr(1, sd); + + struct skill_condition req = skill->get_requirement(sd, skill_id, skill_lv); + + if (skill->get_item_any_flag(skill_id, skill_lv)) { + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) { + if (req.itemid[i] == 0) + continue; + + int inv_idx = pc->search_inventory(sd, req.itemid[i]); + + if (inv_idx == INDEX_NOT_FOUND) + continue; + + if ((req.amount[i] > 0 && sd->status.inventory[inv_idx].amount >= req.amount[i]) + || (req.amount[i] == 0 && sd->status.inventory[inv_idx].amount > 0)) { + return 0; + } + } + } + + /** + * Find first missing item and show skill failed message if item any-flag is false + * or item any-flag check didn't find an item with sufficient amount. + * + **/ + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) { + if (req.itemid[i] == 0) + continue; + + int inv_idx = pc->search_inventory(sd, req.itemid[i]); + + if (inv_idx == INDEX_NOT_FOUND || sd->status.inventory[inv_idx].amount < req.amount[i]) { + useskill_fail_cause cause = USESKILL_FAIL_NEED_ITEM; + + switch (skill_id) { + case NC_SILVERSNIPER: + case NC_MAGICDECOY: + cause = USESKILL_FAIL_STUFF_INSUFFICIENT; + break; + default: + switch (req.itemid[i]) { + case ITEMID_RED_GEMSTONE: + cause = USESKILL_FAIL_REDJAMSTONE; + break; + case ITEMID_BLUE_GEMSTONE: + cause = USESKILL_FAIL_BLUEJAMSTONE; + break; + case ITEMID_HOLY_WATER: + cause = USESKILL_FAIL_HOLYWATER; + break; + case ITEMID_ANSILA: + cause = USESKILL_FAIL_ANCILLA; + break; + case ITEMID_ACCELERATOR: + case ITEMID_HOVERING_BOOSTER: + case ITEMID_SUICIDAL_DEVICE: + case ITEMID_SHAPE_SHIFTER: + case ITEMID_COOLING_DEVICE: + case ITEMID_MAGNETIC_FIELD_GENERATOR: + case ITEMID_BARRIER_BUILDER: + case ITEMID_CAMOUFLAGE_GENERATOR: + case ITEMID_REPAIR_KIT: + case ITEMID_MONKEY_SPANNER: + cause = USESKILL_FAIL_NEED_EQUIPMENT; + FALLTHROUGH + default: + clif->skill_fail(sd, skill_id, cause, max(1, req.amount[i]), req.itemid[i]); + return 1; + } + + break; + } + + clif->skill_fail(sd, skill_id, cause, 0, 0); + return 1; + } + } + + return 0; +} + +/** + * Checks if a skill has item requirements. + * + * @param sd The character who casts the skill. + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return True if skill has item requirements, otherwise false. + * + **/ +static bool skill_items_required(struct map_session_data *sd, int skill_id, int skill_lv) +{ + nullpo_retr(false, sd); + + struct skill_condition req = skill->get_requirement(sd, skill_id, skill_lv); + + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) { + if (req.itemid[i] != 0) + return true; + } + + return false; +} + static int skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv) { struct skill_condition require; struct status_data *st; int i; - int index[MAX_SKILL_ITEM_REQUIRE]; nullpo_ret(sd); if (sd->chat_id != 0) return 0; - if ((sd->state.itemskill_conditions_checked == 1 || sd->state.itemskill_no_conditions == 1) - && skill->is_item_skill(sd, skill_id, skill_lv)) { + if (((sd->auto_cast_current.itemskill_conditions_checked || !sd->auto_cast_current.itemskill_check_conditions) + && sd->auto_cast_current.type == AUTOCAST_ITEM) || sd->auto_cast_current.type == AUTOCAST_IMPROVISE) { return 1; } - if( pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL) && sd->skillitem != skill_id ) { - //GMs don't override the skillItem check, otherwise they can use items without them being consumed! [Skotlex] + if (pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL) && sd->auto_cast_current.type != AUTOCAST_ITEM) { + // GMs don't override the AUTOCAST_ITEM check, otherwise they can use items without them being consumed! sd->state.arrow_atk = skill->get_ammotype(skill_id)?1:0; //Need to do arrow state check. sd->spiritball_old = sd->spiritball; //Need to do Spiritball check. return 1; @@ -15046,7 +15647,7 @@ static int skill_check_condition_castend(struct map_session_data *sd, uint16 ski break; } - if (pc_is90overweight(sd) && sd->skillitem != skill_id) { /// Skill casting items ignore the overweight restriction. [Kenpachi] + if (pc_is90overweight(sd) && sd->auto_cast_current.type != AUTOCAST_ITEM) { // Skill casting items ignore the overweight restriction. clif->skill_fail(sd, skill_id, USESKILL_FAIL_WEIGHTOVER, 0, 0); return 0; } @@ -15152,56 +15753,16 @@ static int skill_check_condition_castend(struct map_session_data *sd, uint16 ski clif->messagecolor_self(sd->fd, COLOR_RED, e_msg); return 0; } - if (!(require.ammo&1<<sd->inventory_data[i]->subtype)) { //Ammo type check. Send the "wrong weapon type" message - //which is the closest we have to wrong ammo type. [Skotlex] - clif->arrow_fail(sd,0); //Haplo suggested we just send the equip-arrows message instead. [Skotlex] - //clif->skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0, 0); + if ((require.ammo & (1 << sd->inventory_data[i]->subtype)) == 0 || !battle->check_arrows(sd)) { // Ammo type check. + clif->arrow_fail(sd, 0); // "Please equip the proper ammunition first." return 0; } } - for( i = 0; i < MAX_SKILL_ITEM_REQUIRE; ++i ) { - if( !require.itemid[i] ) - continue; - index[i] = pc->search_inventory(sd,require.itemid[i]); - if (index[i] == INDEX_NOT_FOUND || sd->status.inventory[index[i]].amount < require.amount[i]) { - useskill_fail_cause cause = USESKILL_FAIL_NEED_ITEM; - switch( skill_id ){ - case NC_SILVERSNIPER: - case NC_MAGICDECOY: - cause = USESKILL_FAIL_STUFF_INSUFFICIENT; - break; - default: - switch(require.itemid[i]){ - case ITEMID_RED_GEMSTONE: - cause = USESKILL_FAIL_REDJAMSTONE; break; - case ITEMID_BLUE_GEMSTONE: - cause = USESKILL_FAIL_BLUEJAMSTONE; break; - case ITEMID_HOLY_WATER: - cause = USESKILL_FAIL_HOLYWATER; break; - case ITEMID_ANSILA: - cause = USESKILL_FAIL_ANCILLA; break; - case ITEMID_ACCELERATOR: - case ITEMID_HOVERING_BOOSTER: - case ITEMID_SUICIDAL_DEVICE: - case ITEMID_SHAPE_SHIFTER: - case ITEMID_COOLING_DEVICE: - case ITEMID_MAGNETIC_FIELD_GENERATOR: - case ITEMID_BARRIER_BUILDER: - case ITEMID_CAMOUFLAGE_GENERATOR: - case ITEMID_REPAIR_KIT: - case ITEMID_MONKEY_SPANNER: - cause = USESKILL_FAIL_NEED_EQUIPMENT; - /* Fall through */ - default: - clif->skill_fail(sd, skill_id, cause, max(1, require.amount[i]), require.itemid[i]); - return 0; - } - } - clif->skill_fail(sd, skill_id, cause, 0, 0); - return 0; - } - } + bool items_required = skill->items_required(sd, skill_id, skill_lv); + + if (items_required && skill->check_condition_required_items(sd, skill_id, skill_lv) != 0) + return 0; return 1; } @@ -15211,6 +15772,43 @@ static bool skill_check_condition_castend_unknown(struct map_session_data *sd, u return false; } +/** + * Gets the array index of the first required item with sufficient amount. + * + * @param sd The character who casts the skill. + * @param skill_id The skill's ID. + * @param skill_lv The skill's level. + * @return A number greater than or equal to 0 on success, otherwise INDEX_NOT_FOUND (-1). + * + **/ +static int skill_get_any_item_index(struct map_session_data *sd, int skill_id, int skill_lv) +{ + nullpo_retr(INDEX_NOT_FOUND, sd); + + int any_item_index = INDEX_NOT_FOUND; + + if (skill->get_item_any_flag(skill_id, skill_lv)) { + struct skill_condition req = skill->get_requirement(sd, skill_id, skill_lv); + + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) { + if (req.itemid[i] == 0) + continue; + + int inv_idx = pc->search_inventory(sd, req.itemid[i]); + + if (inv_idx == INDEX_NOT_FOUND) + continue; + + if (req.amount[i] == 0 || sd->status.inventory[inv_idx].amount >= req.amount[i]) { + any_item_index = i; + break; + } + } + } + + return any_item_index; +} + // type&2: consume items (after skill was used) // type&1: consume the others (before skill was used) static int skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type) @@ -15219,8 +15817,10 @@ static int skill_consume_requirement(struct map_session_data *sd, uint16 skill_i nullpo_ret(sd); - if (sd->state.itemskill_no_conditions == 1 && skill->is_item_skill(sd, skill_id, skill_lv)) + if ((!sd->auto_cast_current.itemskill_check_conditions && sd->auto_cast_current.type == AUTOCAST_ITEM) + || sd->auto_cast_current.type == AUTOCAST_IMPROVISE) { return 1; + } req = skill->get_requirement(sd,skill_id,skill_lv); @@ -15236,7 +15836,7 @@ static int skill_consume_requirement(struct map_session_data *sd, uint16 skill_i break; default: - if (sd->state.autocast == 1 || sd->skillitem == skill_id) /// Skill casting items and Hocus-Pocus skills don't consume SP. [Kenpachi] + if (sd->auto_cast_current.type != AUTOCAST_NONE) // Auto-cast skills don't consume SP. req.sp = 0; break; @@ -15261,16 +15861,24 @@ static int skill_consume_requirement(struct map_session_data *sd, uint16 skill_i if( type&2 ) { struct status_change *sc = &sd->sc; - int n,i; + int n; if( !sc->count ) sc = NULL; - for( i = 0; i < MAX_SKILL_ITEM_REQUIRE; ++i ) - { + bool items_required = skill->items_required(sd, skill_id, skill_lv); + int any_item_index = INDEX_NOT_FOUND; + + if (items_required) + any_item_index = skill->get_any_item_index(sd, skill_id, skill_lv); + + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE && items_required; i++) { if( !req.itemid[i] ) continue; + if (any_item_index != INDEX_NOT_FOUND && any_item_index != i) + continue; + if( itemid_isgemstone(req.itemid[i]) && skill_id != HW_GANBANTEIN && sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_WIZARD ) continue; //Gemstones are checked, but not subtracted from inventory. @@ -15408,61 +16016,36 @@ static struct skill_condition skill_get_requirement(struct map_session_data *sd, req.spiritball = skill->dbs->db[idx].spiritball[skill_lv-1]; - req.state = skill->dbs->db[idx].state; + req.state = skill->dbs->db[idx].state[skill_lv - 1]; req.mhp = skill->dbs->db[idx].mhp[skill_lv-1]; + req.msp = skill->get_msp(skill_id, skill_lv); + req.weapon = skill->dbs->db[idx].weapon; req.ammo_qty = skill->dbs->db[idx].ammo_qty[skill_lv-1]; if (req.ammo_qty) req.ammo = skill->dbs->db[idx].ammo; - if (!req.ammo && skill_id && skill->isammotype(sd, skill_id)) { + if (req.ammo == 0 && skill_id != 0 && skill->isammotype(sd, skill_id, skill_lv)) { //Assume this skill is using the weapon, therefore it requires arrows. req.ammo = 0xFFFFFFFF; //Enable use on all ammo types. req.ammo_qty = 1; } for( i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++ ) { - int item_idx = (skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE; - if ((skill_id == AM_POTIONPITCHER || skill_id == CR_SLIMPITCHER || skill_id == CR_CULTIVATION) && i != item_idx) - continue; - switch( skill_id ) { case AM_CALLHOMUN: if (sd->status.hom_id) //Don't delete items when hom is already out. continue; break; - case NC_SHAPESHIFT: - if( i < 4 ) - continue; - break; - case WZ_FIREPILLAR: // celest - if (skill_lv <= 5) // no gems required at level 1-5 - continue; - break; case AB_ADORAMUS: - if( itemid_isgemstone(skill->dbs->db[idx].itemid[i]) && skill->check_pc_partner(sd,skill_id,&skill_lv, 1, 2) ) + if (itemid_isgemstone(skill->get_itemid(skill_id, i)) && skill->check_pc_partner(sd, skill_id, &skill_lv, 1, 2) != 0) continue; break; case WL_COMET: - if( itemid_isgemstone(skill->dbs->db[idx].itemid[i]) && skill->check_pc_partner(sd,skill_id,&skill_lv, 1, 0) ) - continue; - break; - case GN_FIRE_EXPANSION: - if( i < 5 ) - continue; - break; - case SO_SUMMON_AGNI: - case SO_SUMMON_AQUA: - case SO_SUMMON_VENTUS: - case SO_SUMMON_TERA: - case SO_WATER_INSIGNIA: - case SO_FIRE_INSIGNIA: - case SO_WIND_INSIGNIA: - case SO_EARTH_INSIGNIA: - if( i < 3 ) + if (itemid_isgemstone(skill->get_itemid(skill_id, i)) && skill->check_pc_partner(sd, skill_id, &skill_lv, 1, 0) != 0) continue; break; default: @@ -15473,8 +16056,17 @@ static struct skill_condition skill_get_requirement(struct map_session_data *sd, } } - req.itemid[i] = skill->dbs->db[idx].itemid[i]; - req.amount[i] = skill->dbs->db[idx].amount[i]; + int amount; + + if ((amount = skill->get_itemqty(skill_id, i, skill_lv)) >= 0) { + req.itemid[i] = skill->get_itemid(skill_id, i); + req.amount[i] = amount; + } + + if ((amount = skill->get_equip_amount(skill_id, i, skill_lv)) > 0) { + req.equip_id[i] = skill->get_equip_id(skill_id, i); + req.equip_amount[i] = amount; + } if (itemid_isgemstone(req.itemid[i]) && skill_id != HW_GANBANTEIN) { if (sd->special_state.no_gemstone) { @@ -15506,39 +16098,6 @@ static struct skill_condition skill_get_requirement(struct map_session_data *sd, } } - /* requirements are level-dependent */ - switch( skill_id ) { - case NC_SHAPESHIFT: - case GN_FIRE_EXPANSION: - case SO_SUMMON_AGNI: - case SO_SUMMON_AQUA: - case SO_SUMMON_VENTUS: - case SO_SUMMON_TERA: - case SO_WATER_INSIGNIA: - case SO_FIRE_INSIGNIA: - case SO_WIND_INSIGNIA: - case SO_EARTH_INSIGNIA: - req.itemid[skill_lv-1] = skill->dbs->db[idx].itemid[skill_lv-1]; - req.amount[skill_lv-1] = skill->dbs->db[idx].amount[skill_lv-1]; - break; - } - if (skill_id == NC_REPAIR) { - switch(skill_lv) { - case 1: - case 2: - req.itemid[1] = ITEMID_REPAIRA; - break; - case 3: - case 4: - req.itemid[1] = ITEMID_REPAIRB; - break; - case 5: - req.itemid[1] = ITEMID_REPAIRC; - break; - } - req.amount[1] = 1; - } - // Check for cost reductions due to skills & SCs switch(skill_id) { case MC_MAMMONITE: @@ -15724,6 +16283,8 @@ static int skill_castfix_sc(struct block_list *bl, int time) } if (sc->data[SC_POEMBRAGI]) time -= time * sc->data[SC_POEMBRAGI]->val2 / 100; + if (sc->data[SC_SKF_CAST] != NULL) + time -= time * sc->data[SC_SKF_CAST]->val1 / 100; if (sc->data[SC_IZAYOI]) time -= time * 50 / 100; } @@ -15825,6 +16386,8 @@ static int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, } if (sc->data[SC_MYSTICSCROLL]) VARCAST_REDUCTION(sc->data[SC_MYSTICSCROLL]->val1); + if (sc->data[SC_SKF_CAST] != NULL) + VARCAST_REDUCTION(sc->data[SC_SKF_CAST]->val1); // Fixed cast reduction bonuses if( sc->data[SC__LAZINESS] ) @@ -15976,11 +16539,11 @@ struct square { int val2[5]; }; -static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y) +static void skill_brandishspear_first(struct square *tc, enum unit_dir dir, int16 x, int16 y) { nullpo_retv(tc); - if(dir == 0){ + if (dir == UNIT_DIR_NORTH) { tc->val1[0]=x-2; tc->val1[1]=x-1; tc->val1[2]=x; @@ -15991,7 +16554,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int tc->val2[2]= tc->val2[3]= tc->val2[4]=y-1; - } else if(dir==2){ + } else if (dir == UNIT_DIR_WEST) { tc->val1[0]= tc->val1[1]= tc->val1[2]= @@ -16002,7 +16565,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int tc->val2[2]=y; tc->val2[3]=y-1; tc->val2[4]=y-2; - } else if(dir==4){ + } else if (dir == UNIT_DIR_SOUTH) { tc->val1[0]=x-2; tc->val1[1]=x-1; tc->val1[2]=x; @@ -16013,7 +16576,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int tc->val2[2]= tc->val2[3]= tc->val2[4]=y+1; - } else if(dir==6){ + } else if (dir == UNIT_DIR_EAST) { tc->val1[0]= tc->val1[1]= tc->val1[2]= @@ -16024,7 +16587,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int tc->val2[2]=y; tc->val2[3]=y-1; tc->val2[4]=y-2; - } else if(dir==1){ + } else if (dir == UNIT_DIR_NORTHWEST) { tc->val1[0]=x-1; tc->val1[1]=x; tc->val1[2]=x+1; @@ -16035,7 +16598,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int tc->val2[2]=y-1; tc->val2[3]=y; tc->val2[4]=y+1; - } else if(dir==3){ + } else if (dir == UNIT_DIR_SOUTHWEST) { tc->val1[0]=x+3; tc->val1[1]=x+2; tc->val1[2]=x+1; @@ -16046,7 +16609,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int tc->val2[2]=y+1; tc->val2[3]=y+2; tc->val2[4]=y+3; - } else if(dir==5){ + } else if (dir == UNIT_DIR_SOUTHEAST) { tc->val1[0]=x+1; tc->val1[1]=x; tc->val1[2]=x-1; @@ -16057,7 +16620,7 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int tc->val2[2]=y+1; tc->val2[3]=y; tc->val2[4]=y-1; - } else if(dir==7){ + } else if (dir == UNIT_DIR_NORTHEAST) { tc->val1[0]=x-3; tc->val1[1]=x-2; tc->val1[2]=x-1; @@ -16072,36 +16635,27 @@ static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int } -static void skill_brandishspear_dir(struct square *tc, uint8 dir, int are) +static void skill_brandishspear_dir(struct square *tc, enum unit_dir dir, int are) { - int c; nullpo_retv(tc); + Assert_retv(dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX); - for( c = 0; c < 5; c++ ) { - switch( dir ) { - case 0: tc->val2[c]+=are; break; - case 1: tc->val1[c]-=are; tc->val2[c]+=are; break; - case 2: tc->val1[c]-=are; break; - case 3: tc->val1[c]-=are; tc->val2[c]-=are; break; - case 4: tc->val2[c]-=are; break; - case 5: tc->val1[c]+=are; tc->val2[c]-=are; break; - case 6: tc->val1[c]+=are; break; - case 7: tc->val1[c]+=are; tc->val2[c]+=are; break; - } + for (int c = 0; c < 5; c++) { + tc->val1[c] += dirx[dir] * are; + tc->val2[c] += diry[dir] * are; } } static void skill_brandishspear(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) { int c,n=4; - uint8 dir; struct square tc; int x, y; nullpo_retv(bl); x = bl->x; y = bl->y; - dir = map->calc_dir(src, x, y); + enum unit_dir dir = map->calc_dir(src, x, y); skill->brandishspear_first(&tc,dir,x,y); skill->brandishspear_dir(&tc,dir,4); skill->area_temp[1] = bl->id; @@ -16588,7 +17142,7 @@ static int skill_clear_group(struct block_list *bl, int flag) } for (i=0;i<count;i++) - skill->del_unitgroup(group[i],ALC_MARK); + skill->del_unitgroup(group[i]); return count; } @@ -16947,7 +17501,7 @@ static int skill_trap_splash(struct block_list *bl, va_list ap) } /* Fall through */ default: - skill->attack(skill->get_type(sg->skill_id), ss, src, bl, sg->skill_id, sg->skill_lv, tick, enemy_count); + skill->attack(skill->get_type(sg->skill_id, sg->skill_lv), ss, src, bl, sg->skill_id, sg->skill_lv, tick, enemy_count); break; } return 1; @@ -17236,7 +17790,7 @@ static int skill_delunit(struct skill_unit *su) map->deliddb(&su->bl); idb_remove(skill->unit_db, su->bl.id); if(--group->alive_count==0) - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); return 0; } @@ -17273,13 +17827,20 @@ static int skill_get_new_group_id(void) static struct skill_unit_group *skill_initunitgroup(struct block_list *src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval) { - struct unit_data* ud = unit->bl2ud( src ); struct skill_unit_group* group; int i; if(!(skill_id && skill_lv)) return 0; nullpo_retr(NULL, src); + + struct unit_data *ud; + + if (src->type == BL_NPC) + ud = unit->bl2ud2(src); + else + ud = unit->bl2ud(src); + nullpo_retr(NULL, ud); // find a free spot to store the new unit group @@ -17295,7 +17856,7 @@ static struct skill_unit_group *skill_initunitgroup(struct block_list *src, int j = i; } } - skill->del_unitgroup(ud->skillunit[j],ALC_MARK); + skill->del_unitgroup(ud->skillunit[j]); //Since elements must have shifted, we use the last slot. i = MAX_SKILLUNITGROUP-1; } @@ -17334,18 +17895,13 @@ static struct skill_unit_group *skill_initunitgroup(struct block_list *src, int /*========================================== * *------------------------------------------*/ -static int skill_delunitgroup(struct skill_unit_group *group, const char *file, int line, const char *func) +static int skill_delunitgroup(struct skill_unit_group *group) { struct block_list* src; struct unit_data *ud; int i,j; struct map_session_data *sd = NULL; - if( group == NULL ) { - ShowDebug("skill_delunitgroup: group is NULL (source=%s:%d, %s)! Please report this! (#3504)\n", file, line, func); - return 0; - } - src = map->id2bl(group->src_id); ud = unit->bl2ud(src); sd = BL_CAST(BL_PC, src); @@ -17477,7 +18033,7 @@ static int skill_clear_unitgroup(struct block_list *src) nullpo_ret(ud); while (ud->skillunit[0]) - skill->del_unitgroup(ud->skillunit[0],ALC_MARK); + skill->del_unitgroup(ud->skillunit[0]); return 1; } @@ -17636,7 +18192,7 @@ static int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap case UNT_WARP_ACTIVE: // warp portal opens (morph to a UNT_WARP_WAITING cell) - group->unit_id = skill->get_unit_id(group->skill_id, 1); // UNT_WARP_WAITING + group->unit_id = skill->get_unit_id(group->skill_id, group->skill_lv, 1); // UNT_WARP_WAITING clif->changelook(&su->bl, LOOK_BASE, group->unit_id); // restart timers group->limit = skill->get_time(group->skill_id,group->skill_lv); @@ -18763,12 +19319,12 @@ static int skill_poisoningweapon(struct map_session_data *sd, int nameid) return 0; } -static void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id) +static void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id, int skill_lv) { struct status_change *sc = status->get_sc(bl); // non-offensive and non-magic skills do not affect the status - if (skill->get_nk(skill_id)&NK_NO_DAMAGE || !(skill->get_type(skill_id)&BF_MAGIC)) + if ((skill->get_nk(skill_id) & NK_NO_DAMAGE) != 0 || (skill->get_type(skill_id, skill_lv) & BF_MAGIC) == 0) return; if (sc && sc->count && sc->data[SC_MAGICPOWER]) { @@ -18902,14 +19458,20 @@ static int skill_select_menu(struct map_session_data *sd, uint16 skill_id) idx = skill->get_index(skill_id); - if( skill_id >= GS_GLITTERING || skill->get_type(skill_id) != BF_MAGIC || - (id = sd->status.skill[idx].id) == 0 || sd->status.skill[idx].flag != SKILL_FLAG_PLAGIARIZED ) { + if (skill_id >= GS_GLITTERING || (id = sd->status.skill[idx].id) == 0 + || sd->status.skill[idx].flag != SKILL_FLAG_PLAGIARIZED) { clif->skill_fail(sd, SC_AUTOSHADOWSPELL, 0, 0, 0); return 0; } lv = (aslvl + 1) / 2; // The level the skill will be autocasted - lv = min(lv,sd->status.skill[idx].lv); + lv = min(lv, sd->status.skill[idx].lv); + + if (skill->get_type(skill_id, lv) != BF_MAGIC) { + clif->skill_fail(sd, SC_AUTOSHADOWSPELL, 0, 0, 0); + return 0; + } + prob = (aslvl == 10) ? 15 : (32 - 2 * aslvl); // Probability at level 10 was increased to 15. sc_start4(&sd->bl,&sd->bl,SC__AUTOSHADOWSPELL,100,id,lv,prob,0,skill->get_time(SC_AUTOSHADOWSPELL,aslvl)); return 0; @@ -20050,9 +20612,6 @@ static bool skill_parse_row_changematerialdb(char *split[], int columns, int cur return true; } -#define skilldb_duplicate_warning(name, setting, skill) (ShowError("skill_read_skilldb: Duplicate entry '%s' in setting '%s' for Skill Id %d in '%s', skipping...\n", name, setting, skill, "db/"DBPATH"skill_db.conf")) -#define skilldb_invalid_error(name, setting, skill) (ShowError("skill_read_skilldb: Invalid entry '%s' in setting '%s' for Skill Id %d in '%s', skipping...\n", name, setting, skill, "db/"DBPATH"skill_db.conf")) - /** * Sets Level based configuration for skill groups from skill_db.conf [ Smokexyz/Hercules ] * @param *conf pointer to config setting. @@ -20097,295 +20656,549 @@ static void skill_level_set_value(int *arr, int value) } } -static void skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk) +/** + * Validates a skill's ID when reading the skill DB. + * If validating fails, the ID is set to 0. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the ID should be set it. + * @param conf_index The 1-based index of the currently processed libconfig settings block. + * + **/ +static void skill_validate_id(struct config_setting_t *conf, struct s_skill_db *sk, int conf_index) { - const char *type = NULL; + nullpo_retv(conf); + nullpo_retv(sk); + sk->nameid = 0; + + int id; + + if (libconfig->setting_lookup_int(conf, "Id", &id) == CONFIG_FALSE) + ShowError("%s: No skill ID specified in entry %d in %s! Skipping skill...\n", + __func__, conf_index, conf->file); + else if (id <= 0) + ShowError("%s: Invalid skill ID %d specified in entry %d in %s! Skipping skill...\n", + __func__, id, conf_index, conf->file); + else if(skill->get_index(id) == 0) + ShowError("%s: Skill ID %d in entry %d in %s is out of range, or within a reserved range (for guild, homunculus, mercenary or elemental skills)! Skipping skill...\n", + __func__, id, conf_index, conf->file); + else if (*skill->get_name(id) != '\0') + ShowError("%s: Duplicate skill ID %d in entry %d in %s! Skipping skill...\n", + __func__, id, conf_index, conf->file); + else + sk->nameid = id; +} + +/** + * Validates if a skill's name contains invalid characters when reading the skill DB. + * + * @param name The name to validate. + * @return True if the passed name is a NULL pointer or contains at least one invalid character, otherwise false. + * + **/ +static bool skill_name_contains_invalid_character(const char *name) +{ + nullpo_retr(true, name); + + for (int i = 0; i < MAX_SKILL_NAME_LENGTH && name[i] != '\0'; i++) { + if (ISALNUM(name[i]) == 0 && name[i] != '_') + return true; + } + + return false; +} + +/** + * Validates a skill's name when reading the skill DB. + * If validating fails, the name is set to an enpty string. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the name should be set it. + * + **/ +static void skill_validate_name(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); nullpo_retv(sk); - if (libconfig->setting_lookup_string(conf, "Hit", &type)) { - if (strcmpi(type, "BDT_SKILL") == 0) { - sk->hit = BDT_SKILL; - } else if (strcmpi(type, "BDT_MULTIHIT") == 0) { - sk->hit = BDT_MULTIHIT; - } else if (strcmpi(type, "BDT_NORMAL") == 0) { - sk->hit = BDT_NORMAL; - } else { - skilldb_invalid_error(type, "Hit", sk->nameid); + + *sk->name = '\0'; + + const char *name; + + if (libconfig->setting_lookup_string(conf, "Name", &name) == CONFIG_FALSE || *name == '\0') + ShowError("%s: No name specified for skill ID %d in %s! Skipping skill...\n", + __func__, sk->nameid, conf->file); + else if (strlen(name) >= sizeof(sk->name)) + ShowError("%s: Specified name %s for skill ID %d in %s is too long: %d! Maximum is %d. Skipping skill...\n", + __func__, name, sk->nameid, conf->file, (int)strlen(name), (int)sizeof(sk->name) - 1); + else if (skill->name_contains_invalid_character(name)) + ShowError("%s: Specified name %s for skill ID %d in %s contains invalid characters! Allowed characters are letters, numbers and underscores. Skipping skill...\n", + __func__, name, sk->nameid, conf->file); + else if (skill->name2id(name) != 0) + ShowError("%s: Duplicate name %s for skill ID %d in %s! Skipping skill...\n", + __func__, name, sk->nameid, conf->file); + else + safestrncpy(sk->name, name, sizeof(sk->name)); +} + +/** + * Validates a skill's maximum level when reading the skill DB. + * If validating fails, the maximum level is set to 0. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the maximum level should be set it. + * + **/ +static void skill_validate_max_level(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + sk->max = 0; + + int max_level; + + if (libconfig->setting_lookup_int(conf, "MaxLevel", &max_level) == CONFIG_FALSE) + ShowError("%s: No maximum level specified for skill ID %d in %s! Skipping skill...\n", + __func__, sk->nameid, conf->file); + else if (max_level < 1 || max_level > MAX_SKILL_LEVEL) + ShowError("%s: Invalid maximum level %d specified for skill ID %d in %s! Minimum is 1, maximum is %d. Skipping skill...\n", + __func__, max_level, sk->nameid, conf->file, MAX_SKILL_LEVEL); + else + sk->max = max_level; +} + +/** + * Validates a skill's description when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the description should be set it. + * + **/ +static void skill_validate_description(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + *sk->desc = '\0'; + + const char *description; + + if (libconfig->setting_lookup_string(conf, "Description", &description) == CONFIG_TRUE && *description != '\0') { + if (strlen(description) >= sizeof(sk->desc)) + ShowWarning("%s: Specified description '%s' for skill ID %d in %s is too long: %d! Maximum is %d. Trimming...\n", + __func__, description, sk->nameid, conf->file, (int)strlen(description), (int)sizeof(sk->desc) - 1); + + safestrncpy(sk->desc, description, sizeof(sk->desc)); + } +} + +/** + * Validates a skill's range when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the range should be set it. + * + **/ +static void skill_validate_range(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->range, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Range"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int range; + + if (libconfig->setting_lookup_int(t, lv, &range) == CONFIG_TRUE) { + if (range >= SHRT_MIN && range <= SHRT_MAX) + sk->range[i] = range; + else + ShowWarning("%s: Invalid range %d specified in level %d for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n", + __func__, range, i + 1, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX); + } + } + + return; + } + + int range; + + if (libconfig->setting_lookup_int(conf, "Range", &range) == CONFIG_TRUE) { + if (range >= SHRT_MIN && range <= SHRT_MAX) + skill->level_set_value(sk->range, range); + else + ShowWarning("%s: Invalid range %d specified for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n", + __func__, range, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX); + } +} + +/** + * Validates a skill's hit type when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the hit type should be set it. + * + **/ +static void skill_validate_hittype(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->hit, BDT_NORMAL); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Hit"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + const char *hit_type; + + if (libconfig->setting_lookup_string(t, lv, &hit_type) == CONFIG_TRUE) { + if (strcmpi(hit_type, "BDT_SKILL") == 0) + sk->hit[i] = BDT_SKILL; + else if (strcmpi(hit_type, "BDT_MULTIHIT") == 0) + sk->hit[i] = BDT_MULTIHIT; + else if (strcmpi(hit_type, "BDT_NORMAL") != 0) + ShowWarning("%s: Invalid hit type %s specified in level %d for skill ID %d in %s! Defaulting to BDT_NORMAL...\n", + __func__, hit_type, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + const char *hit_type; + + if (libconfig->setting_lookup_string(conf, "Hit", &hit_type) == CONFIG_TRUE) { + int hit = BDT_NORMAL; + + if (strcmpi(hit_type, "BDT_SKILL") == 0) { + hit = BDT_SKILL; + } else if (strcmpi(hit_type, "BDT_MULTIHIT") == 0) { + hit = BDT_MULTIHIT; + } else if (strcmpi(hit_type, "BDT_NORMAL") != 0) { + ShowWarning("%s: Invalid hit type %s specified for skill ID %d in %s! Defaulting to BDT_NORMAL...\n", + __func__, hit_type, sk->nameid, conf->file); return; } + + skill->level_set_value(sk->hit, hit); } } /** - * Validates "SkillType" when reading skill_db.conf - * @param conf struct, pointer to skill configuration - * @param sk struct, pointer to s_skill_db - * @return (void) - */ + * Validates a skill's types when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the types should be set it. + * + **/ static void skill_validate_skilltype(struct config_setting_t *conf, struct s_skill_db *sk) { - struct config_setting_t *t = NULL, *tt = NULL; - + nullpo_retv(conf); nullpo_retv(sk); - if((t=libconfig->setting_get_member(conf, "SkillType")) && config_setting_is_group(t)) { - int j=0; - while ((tt = libconfig->setting_get_elem(t, j++))) { - const char *type = config_setting_name(tt); + + sk->inf = INF_NONE; + + struct config_setting_t *t = libconfig->setting_get_member(conf, "SkillType"); + + if (t != NULL && config_setting_is_group(t)) { + struct config_setting_t *tt; + int i = 0; + + while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) { + const char *skill_type = config_setting_name(tt); bool on = libconfig->setting_get_bool_real(tt); - if (strcmpi(type, "Enemy") == 0) { - if (on) { + if (strcmpi(skill_type, "Enemy") == 0) { + if (on) sk->inf |= INF_ATTACK_SKILL; - } else { + else sk->inf &= ~INF_ATTACK_SKILL; - } - } else if (strcmpi(type, "Place") == 0) { - if (on) { + } else if (strcmpi(skill_type, "Place") == 0) { + if (on) sk->inf |= INF_GROUND_SKILL; - } else { + else sk->inf &= ~INF_GROUND_SKILL; - } - } else if (strcmpi(type, "Self") == 0) { - if (on) { + } else if (strcmpi(skill_type, "Self") == 0) { + if (on) sk->inf |= INF_SELF_SKILL; - } else { + else sk->inf &= ~INF_SELF_SKILL; - } - } else if (strcmpi(type, "Friend") == 0) { - if (on) { + } else if (strcmpi(skill_type, "Friend") == 0) { + if (on) sk->inf |= INF_SUPPORT_SKILL; - } else { + else sk->inf &= ~INF_SUPPORT_SKILL; - } - } else if (strcmpi(type, "Trap") == 0) { - if (on) { + } else if (strcmpi(skill_type, "Trap") == 0) { + if (on) sk->inf |= INF_TARGET_TRAP; - } else { + else sk->inf &= ~INF_TARGET_TRAP; - } - } else if (strcmpi(type, "Passive") != 0) { - skilldb_invalid_error(type, config_setting_name(t), sk->nameid); + } else if (strcmpi(skill_type, "Passive") != 0) { + ShowWarning("%s: Invalid skill type %s specified for skill ID %d in %s! Skipping type...\n", + __func__, skill_type, sk->nameid, conf->file); } } } } /** - * Validates "SkillInfo" when reading skill_db.conf - * @param conf struct, pointer to skill configuration - * @param sk struct, pointer to s_skill_db - * @return (void) - */ + * Validates a skill's sub-types when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the sub-types should be set it. + * + **/ static void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db *sk) { - struct config_setting_t *t = NULL, *tt = NULL; - + nullpo_retv(conf); nullpo_retv(sk); - if ((t=libconfig->setting_get_member(conf, "SkillInfo")) && config_setting_is_group(t)) { - int j=0; - while ((tt = libconfig->setting_get_elem(t, j++))) { - const char *type = config_setting_name(tt); + + sk->inf2 = INF2_NONE; + + struct config_setting_t *t = libconfig->setting_get_member(conf, "SkillInfo"); + + if (t != NULL && config_setting_is_group(t)) { + struct config_setting_t *tt; + int i = 0; + + while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) { + const char *skill_info = config_setting_name(tt); bool on = libconfig->setting_get_bool_real(tt); - if (strcmpi(type, "Quest") == 0) { - if (on) { + if (strcmpi(skill_info, "Quest") == 0) { + if (on) sk->inf2 |= INF2_QUEST_SKILL; - } else { + else sk->inf2 &= ~INF2_QUEST_SKILL; - } - } else if (strcmpi(type, "NPC") == 0) { - if (on) { + } else if (strcmpi(skill_info, "NPC") == 0) { + if (on) sk->inf2 |= INF2_NPC_SKILL; - } else { + else sk->inf2 &= ~INF2_NPC_SKILL; - } - } else if (strcmpi(type, "Wedding") == 0) { - if (on) { + } else if (strcmpi(skill_info, "Wedding") == 0) { + if (on) sk->inf2 |= INF2_WEDDING_SKILL; - } else { + else sk->inf2 &= ~INF2_WEDDING_SKILL; - } - } else if (strcmpi(type, "Spirit") == 0) { - if (on) { + } else if (strcmpi(skill_info, "Spirit") == 0) { + if (on) sk->inf2 |= INF2_SPIRIT_SKILL; - } else { + else sk->inf2 &= ~INF2_SPIRIT_SKILL; - } - } else if (strcmpi(type, "Guild") == 0) { - if (on) { + } else if (strcmpi(skill_info, "Guild") == 0) { + if (on) sk->inf2 |= INF2_GUILD_SKILL; - } else { + else sk->inf2 &= ~INF2_GUILD_SKILL; - } - } else if (strcmpi(type, "Song") == 0) { - if (on) { + } else if (strcmpi(skill_info, "Song") == 0) { + if (on) sk->inf2 |= INF2_SONG_DANCE; - } else { + else sk->inf2 &= ~INF2_SONG_DANCE; - } - } else if (strcmpi(type, "Ensemble") == 0) { - if (on) { + } else if (strcmpi(skill_info, "Ensemble") == 0) { + if (on) sk->inf2 |= INF2_ENSEMBLE_SKILL; - } else { + else sk->inf2 &= ~INF2_ENSEMBLE_SKILL; - } - } else if (strcmpi(type, "Trap") == 0) { - if (on) { + } else if (strcmpi(skill_info, "Trap") == 0) { + if (on) sk->inf2 |= INF2_TRAP; - } else { + else sk->inf2 &= ~INF2_TRAP; - } - } else if (strcmpi(type, "TargetSelf") == 0) { - if (on) { + } else if (strcmpi(skill_info, "TargetSelf") == 0) { + if (on) sk->inf2 |= INF2_TARGET_SELF; - } else { + else sk->inf2 &= ~INF2_TARGET_SELF; - } - } else if (strcmpi(type, "NoCastSelf") == 0) { - if (on) { + } else if (strcmpi(skill_info, "NoCastSelf") == 0) { + if (on) sk->inf2 |= INF2_NO_TARGET_SELF; - } else { + else sk->inf2 &= ~INF2_NO_TARGET_SELF; - } - } else if (strcmpi(type, "PartyOnly") == 0) { - if (on) { + } else if (strcmpi(skill_info, "PartyOnly") == 0) { + if (on) sk->inf2 |= INF2_PARTY_ONLY; - } else { + else sk->inf2 &= ~INF2_PARTY_ONLY; - } - } else if (strcmpi(type, "GuildOnly") == 0) { - if (on) { + } else if (strcmpi(skill_info, "GuildOnly") == 0) { + if (on) sk->inf2 |= INF2_GUILD_ONLY; - } else { + else sk->inf2 &= ~INF2_GUILD_ONLY; - } - } else if (strcmpi(type, "NoEnemy") == 0) { - if (on) { + } else if (strcmpi(skill_info, "NoEnemy") == 0) { + if (on) sk->inf2 |= INF2_NO_ENEMY; - } else { + else sk->inf2 &= ~INF2_NO_ENEMY; - } - } else if (strcmpi(type, "IgnoreLandProtector") == 0) { - if (on) { + } else if (strcmpi(skill_info, "IgnoreLandProtector") == 0) { + if (on) sk->inf2 |= INF2_NOLP; - } else { + else sk->inf2 &= ~INF2_NOLP; - } - } else if (strcmpi(type, "Chorus") == 0) { - if (on) { + } else if (strcmpi(skill_info, "Chorus") == 0) { + if (on) sk->inf2 |= INF2_CHORUS_SKILL; - } else { + else sk->inf2 &= ~INF2_CHORUS_SKILL; - } - } else if (strcmpi(type, "FreeCastNormal") == 0) { - if (on) { + } else if (strcmpi(skill_info, "FreeCastNormal") == 0) { + if (on) sk->inf2 |= INF2_FREE_CAST_NORMAL; - } else { + else sk->inf2 &= ~INF2_FREE_CAST_NORMAL; - } - } else if (strcmpi(type, "FreeCastReduced") == 0) { - if (on) { + } else if (strcmpi(skill_info, "FreeCastReduced") == 0) { + if (on) sk->inf2 |= INF2_FREE_CAST_REDUCED; - } else { + else sk->inf2 &= ~INF2_FREE_CAST_REDUCED; - } - } else if (strcmpi(type, "ShowSkillScale") == 0) { - if (on) { + } else if (strcmpi(skill_info, "ShowSkillScale") == 0) { + if (on) sk->inf2 |= INF2_SHOW_SKILL_SCALE; - } else { + else sk->inf2 &= ~INF2_SHOW_SKILL_SCALE; - } - } else if (strcmpi(type, "AllowReproduce") == 0) { - if (on) { + } else if (strcmpi(skill_info, "AllowReproduce") == 0) { + if (on) sk->inf2 |= INF2_ALLOW_REPRODUCE; - } else { + else sk->inf2 &= ~INF2_ALLOW_REPRODUCE; - } - } else if (strcmpi(type, "HiddenTrap") == 0) { - if (on) { + } else if (strcmpi(skill_info, "HiddenTrap") == 0) { + if (on) sk->inf2 |= INF2_HIDDEN_TRAP; - } else { + else sk->inf2 &= ~INF2_HIDDEN_TRAP; - } - } else if (strcmpi(type, "IsCombo") == 0) { - if (on) { + } else if (strcmpi(skill_info, "IsCombo") == 0) { + if (on) sk->inf2 |= INF2_IS_COMBO_SKILL; - } else { + else sk->inf2 &= ~INF2_IS_COMBO_SKILL; - } - } else if (strcmpi(type, "None") != 0) { - skilldb_invalid_error(type, config_setting_name(t), sk->nameid); + } else if (strcmpi(skill_info, "None") != 0) { + ShowWarning("%s: Invalid sub-type %s specified for skill ID %d in %s! Skipping sub-type...\n", + __func__, skill_info, sk->nameid, conf->file); } } } } /** - * Validates "AttackType" when reading skill_db.conf - * @param conf struct, pointer to skill configuration - * @param sk struct, pointer to s_skill_db - * @return (void) - */ + * Validates a skill's attack type when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the attack type should be set it. + * + **/ static void skill_validate_attacktype(struct config_setting_t *conf, struct s_skill_db *sk) { - const char *type = NULL; - + nullpo_retv(conf); nullpo_retv(sk); - if (libconfig->setting_lookup_string(conf, "AttackType", &type)) { - if (!strcmpi(type, "Weapon")) { - sk->skill_type = BF_WEAPON; - } else if (!strcmpi(type, "Magic")) { - sk->skill_type = BF_MAGIC; - } else if (!strcmpi(type, "Misc")) { - sk->skill_type = BF_MISC; - } else { - skilldb_invalid_error(type, "AttackType", sk->nameid); + + skill->level_set_value(sk->skill_type, BF_NONE); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "AttackType"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + const char *attack_type; + + if (libconfig->setting_lookup_string(t, lv, &attack_type) == CONFIG_TRUE) { + if (strcmpi(attack_type, "Weapon") == 0) + sk->skill_type[i] = BF_WEAPON; + else if (strcmpi(attack_type, "Magic") == 0) + sk->skill_type[i] = BF_MAGIC; + else if (strcmpi(attack_type, "Misc") == 0) + sk->skill_type[i] = BF_MISC; + else if (strcmpi(attack_type, "None") != 0) + ShowWarning("%s: Invalid attack type %s specified in level %d for skill ID %d in %s! Defaulting to None...\n", + __func__, attack_type, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + const char *attack_type; + + if (libconfig->setting_lookup_string(conf, "AttackType", &attack_type) == CONFIG_TRUE) { + int attack = BF_NONE; + + if (strcmpi(attack_type, "Weapon") == 0) { + attack = BF_WEAPON; + } else if (strcmpi(attack_type, "Magic") == 0) { + attack = BF_MAGIC; + } else if (strcmpi(attack_type, "Misc") == 0) { + attack = BF_MISC; + } else if (strcmpi(attack_type, "None") != 0) { + ShowWarning("%s: Invalid attack type %s specified for skill ID %d in %s! Defaulting to None...\n", + __func__, attack_type, sk->nameid, conf->file); return; } + + skill->level_set_value(sk->skill_type, attack); } } /** - * Validates "Element" when reading skill_db.conf - * @param ele_t struct, pointer to skill configuration - * @param sk struct, pointer to s_skill_db - * @return (void) - */ + * Validates a skill's element when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the element should be set it. + * + **/ static void skill_validate_element(struct config_setting_t *conf, struct s_skill_db *sk) { - const char *type = NULL; - struct config_setting_t *t = NULL; - + nullpo_retv(conf); nullpo_retv(sk); - if ((t=libconfig->setting_get_member(conf, "Element")) && config_setting_is_group(t)) { - int j = 0; - char lv[6]; // enough to contain "Lv100" in case of custom MAX_SKILL_LEVEL - for (j=0; j < MAX_SKILL_LEVEL; j++) { - sprintf(lv, "Lv%d",j+1); - if (libconfig->setting_lookup_string(t, lv, &type)) { - if (strcmpi(type,"Ele_Weapon") == 0) - sk->element[j] = -1; - else if (strcmpi(type,"Ele_Endowed") == 0) - sk->element[j] = -2; - else if (strcmpi(type,"Ele_Random") == 0) - sk->element[j] = -3; - else if (!script->get_constant(type,&sk->element[j])) - skilldb_invalid_error(type, config_setting_name(conf), sk->nameid); + skill->level_set_value(sk->element, ELE_NEUTRAL); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Element"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + const char *element; + + if (libconfig->setting_lookup_string(t, lv, &element) == CONFIG_TRUE) { + if (strcmpi(element, "Ele_Weapon") == 0) + sk->element[i] = -1; + else if (strcmpi(element, "Ele_Endowed") == 0) + sk->element[i] = -2; + else if (strcmpi(element, "Ele_Random") == 0) + sk->element[i] = -3; + else if (!script->get_constant(element, &sk->element[i])) + ShowWarning("%s: Invalid element %s specified in level %d for skill ID %d in %s! Defaulting to Ele_Neutral...\n", + __func__, element, i + 1, sk->nameid, conf->file); } } - } else if (libconfig->setting_lookup_string(conf, "Element", &type)) { - int ele = 0; + return; + } + + const char *element; + + if (libconfig->setting_lookup_string(conf, "Element", &element) == CONFIG_TRUE) { + int ele = ELE_NEUTRAL; - if (strcmpi(type,"Ele_Weapon") == 0) + if (strcmpi(element, "Ele_Weapon") == 0) { ele = -1; - else if (strcmpi(type,"Ele_Endowed") == 0) + } else if (strcmpi(element, "Ele_Endowed") == 0) { ele = -2; - else if (strcmpi(type,"Ele_Random") == 0) + } else if (strcmpi(element, "Ele_Random") == 0) { ele = -3; - else if (!script->get_constant(type, &ele)) { - skilldb_invalid_error(type, config_setting_name(conf), sk->nameid); + } else if (!script->get_constant(element, &ele)) { + ShowWarning("%s: Invalid element %s specified for skill ID %d in %s! Defaulting to Ele_Neutral...\n", + __func__, element, sk->nameid, conf->file); return; } @@ -20394,696 +21207,2513 @@ static void skill_validate_element(struct config_setting_t *conf, struct s_skill } /** - * Validates "DamageType" when reading skill_db.conf - * @param conf struct, pointer to skill configuration - * @param sk struct, pointer to s_skill_db - * @return (void) - */ + * Validates a skill's damage types when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the damage types should be set it. + * + **/ static void skill_validate_damagetype(struct config_setting_t *conf, struct s_skill_db *sk) { - struct config_setting_t *t = NULL, *tt = NULL; - + nullpo_retv(conf); nullpo_retv(sk); - if ((t=libconfig->setting_get_member(conf, "DamageType")) && config_setting_is_group(t)) { - int j=0; - while ((tt = libconfig->setting_get_elem(t, j++))) { - const char *type = config_setting_name(tt); + + sk->nk = NK_NONE; + + struct config_setting_t *t = libconfig->setting_get_member(conf, "DamageType"); + + if (t != NULL && config_setting_is_group(t)) { + struct config_setting_t *tt; + int i = 0; + + while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) { + const char *damage_type = config_setting_name(tt); bool on = libconfig->setting_get_bool_real(tt); - if (strcmpi(type, "NoDamage") == 0) { - if (on) { + if (strcmpi(damage_type, "NoDamage") == 0) { + if (on) sk->nk |= NK_NO_DAMAGE; - } else { + else sk->nk &= ~NK_NO_DAMAGE; - } - } else if (strcmpi(type, "SplashArea") == 0) { - if (on) { + } else if (strcmpi(damage_type, "SplashArea") == 0) { + if (on) sk->nk |= NK_SPLASH_ONLY; - } else { + else sk->nk &= ~NK_SPLASH_ONLY; - } - } else if (strcmpi(type, "SplitDamage") == 0) { - if (on) { + } else if (strcmpi(damage_type, "SplitDamage") == 0) { + if (on) sk->nk |= NK_SPLASHSPLIT; - } else { + else sk->nk &= ~NK_SPLASHSPLIT; - } - } else if (strcmpi(type, "IgnoreCards") == 0) { - if (on) { + } else if (strcmpi(damage_type, "IgnoreCards") == 0) { + if (on) sk->nk |= NK_NO_CARDFIX_ATK; - } else { + else sk->nk &= ~NK_NO_CARDFIX_ATK; - } - } else if (strcmpi(type, "IgnoreElement") == 0) { - if (on) { + } else if (strcmpi(damage_type, "IgnoreElement") == 0) { + if (on) sk->nk |= NK_NO_ELEFIX; - } else { + else sk->nk &= ~NK_NO_ELEFIX; - } - } else if (strcmpi(type, "IgnoreDefense") == 0) { - if (on) { + } else if (strcmpi(damage_type, "IgnoreDefense") == 0) { + if (on) sk->nk |= NK_IGNORE_DEF; - } else { + else sk->nk &= ~NK_IGNORE_DEF; - } - } else if (strcmpi(type, "IgnoreFlee") == 0) { - if (on) { + } else if (strcmpi(damage_type, "IgnoreFlee") == 0) { + if (on) sk->nk |= NK_IGNORE_FLEE; - } else { + else sk->nk &= ~NK_IGNORE_FLEE; - } - } else if (strcmpi(type, "IgnoreDefCards") == 0) { - if (on) { + } else if (strcmpi(damage_type, "IgnoreDefCards") == 0) { + if (on) sk->nk |= NK_NO_CARDFIX_DEF; - } else { + else sk->nk &= ~NK_NO_CARDFIX_DEF; - } } else { - skilldb_invalid_error(type, config_setting_name(t), sk->nameid); + ShowWarning("%s: Invalid damage type %s specified for skill ID %d in %s! Skipping damage type...\n", + __func__, damage_type, sk->nameid, conf->file); } } } } /** - * Validates "SkillCast/DelayOptions" when reading skill_db.conf - * @param conf struct, pointer to skill configuration - * @param sk struct, pointer to s_skill_db - * @param delay boolean, switch for cast/delay setting - * @return (void) - */ -static void skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *sk, bool delay) + * Validates a skill's splash range when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the splash range should be set it. + * + **/ +static void skill_validate_splash_range(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->splash, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "SplashRange"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int splash_range; + + if (libconfig->setting_lookup_int(t, lv, &splash_range) == CONFIG_TRUE) { + if (splash_range >= SHRT_MIN && splash_range <= SHRT_MAX) + sk->splash[i] = splash_range; + else + ShowWarning("%s: Invalid splash range %d specified in level %d for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n", + __func__, splash_range, i + 1, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX); + } + } + + return; + } + + int splash_range; + + if (libconfig->setting_lookup_int(conf, "SplashRange", &splash_range) == CONFIG_TRUE) { + if (splash_range >= SHRT_MIN && splash_range <= SHRT_MAX) + skill->level_set_value(sk->splash, splash_range); + else + ShowWarning("%s: Invalid splash range %d specified for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n", + __func__, splash_range, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX); + } +} + +/** + * Validates a skill's number of hits when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the number of hits should be set it. + * + **/ +static void skill_validate_number_of_hits(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->num, 1); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "NumberOfHits"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int number_of_hits; + + if (libconfig->setting_lookup_int(t, lv, &number_of_hits) == CONFIG_TRUE) { + if (number_of_hits >= SHRT_MIN && number_of_hits <= SHRT_MAX) + sk->num[i] = number_of_hits; + else + ShowWarning("%s: Invalid number of hits %d specified in level %d for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 1...\n", + __func__, number_of_hits, i + 1, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX); + } + } + + return; + } + + int number_of_hits; + + if (libconfig->setting_lookup_int(conf, "NumberOfHits", &number_of_hits) == CONFIG_TRUE) { + if (number_of_hits >= SHRT_MIN && number_of_hits <= SHRT_MAX) + skill->level_set_value(sk->num, number_of_hits); + else + ShowWarning("%s: Invalid number of hits %d specified for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 1...\n", + __func__, number_of_hits, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX); + } +} + +/** + * Validates a skill's cast interruptibility when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the cast interruptibility should be set it. + * + **/ +static void skill_validate_interrupt_cast(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->castcancel, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "InterruptCast"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int interrupt_cast; + + if (libconfig->setting_lookup_bool(t, lv, &interrupt_cast) == CONFIG_TRUE) + sk->castcancel[i] = (interrupt_cast != 0) ? 1 : 0; + } + + return; + } + + int interrupt_cast; + + if (libconfig->setting_lookup_bool(conf, "InterruptCast", &interrupt_cast) == CONFIG_TRUE) { + if (interrupt_cast != 0) + skill->level_set_value(sk->castcancel, 1); + } +} + +/** + * Validates a skill's cast defence rate when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the cast defence rate should be set it. + * + **/ +static void skill_validate_cast_def_rate(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->cast_def_rate, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "CastDefRate"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int cast_def_rate; + + if (libconfig->setting_lookup_int(t, lv, &cast_def_rate) == CONFIG_TRUE) { + if (cast_def_rate >= SHRT_MIN && cast_def_rate <= SHRT_MAX) + sk->cast_def_rate[i] = cast_def_rate; + else + ShowWarning("%s: Invalid cast defence rate %d specified in level %d for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n", + __func__, cast_def_rate, i + 1, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX); + } + } + + return; + } + + int cast_def_rate; + + if (libconfig->setting_lookup_int(conf, "CastDefRate", &cast_def_rate) == CONFIG_TRUE) { + if (cast_def_rate >= SHRT_MIN && cast_def_rate <= SHRT_MAX) + skill->level_set_value(sk->cast_def_rate, cast_def_rate); + else + ShowWarning("%s: Invalid cast defence rate %d specified for skill ID %d in %s! Minimum is %d, maximum is %d. Defaulting to 0...\n", + __func__, cast_def_rate, sk->nameid, conf->file, SHRT_MIN, SHRT_MAX); + } +} + +/** + * Validates a skill's number of instances when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the number of instances should be set it. + * + **/ +static void skill_validate_number_of_instances(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->maxcount, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "SkillInstances"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int number_of_instances; + + if (libconfig->setting_lookup_int(t, lv, &number_of_instances) == CONFIG_TRUE) { + if (number_of_instances >= 0 && number_of_instances <= MAX_SKILLUNITGROUP) + sk->maxcount[i] = number_of_instances; + else + ShowWarning("%s: Invalid number of instances %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, number_of_instances, i + 1, sk->nameid, conf->file, MAX_SKILLUNITGROUP); + } + } + + return; + } + + int number_of_instances; + + if (libconfig->setting_lookup_int(conf, "SkillInstances", &number_of_instances) == CONFIG_TRUE) { + if (number_of_instances >= 0 && number_of_instances <= MAX_SKILLUNITGROUP) + skill->level_set_value(sk->maxcount, number_of_instances); + else + ShowWarning("%s: Invalid number of instances %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, number_of_instances, sk->nameid, conf->file, MAX_SKILLUNITGROUP); + } +} + +/** + * Validates a skill's number of knock back tiles when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the number of knock back tiles should be set it. + * + **/ +static void skill_validate_knock_back_tiles(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->blewcount, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "KnockBackTiles"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int knock_back_tiles; + + if (libconfig->setting_lookup_int(t, lv, &knock_back_tiles) == CONFIG_TRUE) { + if (knock_back_tiles >= 0) + sk->blewcount[i] = knock_back_tiles; + else + ShowWarning("%s: Invalid number of knock back tiles %d specified in level %d for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, knock_back_tiles, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + int knock_back_tiles; + + if (libconfig->setting_lookup_int(conf, "KnockBackTiles", &knock_back_tiles) == CONFIG_TRUE) { + if (knock_back_tiles >= 0) + skill->level_set_value(sk->blewcount, knock_back_tiles); + else + ShowWarning("%s: Invalid number of knock back tiles %d specified for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, knock_back_tiles, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's cast time when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the cast time should be set it. + * + **/ +static void skill_validate_cast_time(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->cast, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "CastTime"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int cast_time; + + if (libconfig->setting_lookup_int(t, lv, &cast_time) == CONFIG_TRUE) { + if (cast_time >= 0) + sk->cast[i] = cast_time; + else + ShowWarning("%s: Invalid cast time %d specified in level %d for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, cast_time, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + int cast_time; + + if (libconfig->setting_lookup_int(conf, "CastTime", &cast_time) == CONFIG_TRUE) { + if (cast_time >= 0) + skill->level_set_value(sk->cast, cast_time); + else + ShowWarning("%s: Invalid cast time %d specified for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, cast_time, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's after cast act delay when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the after cast act delay should be set it. + * + **/ +static void skill_validate_act_delay(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->delay, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "AfterCastActDelay"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int act_delay; + + if (libconfig->setting_lookup_int(t, lv, &act_delay) == CONFIG_TRUE) { + if (act_delay >= 0) + sk->delay[i] = act_delay; + else + ShowWarning("%s: Invalid after cast act delay %d specified in level %d for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, act_delay, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + int act_delay; + + if (libconfig->setting_lookup_int(conf, "AfterCastActDelay", &act_delay) == CONFIG_TRUE) { + if (act_delay >= 0) + skill->level_set_value(sk->delay, act_delay); + else + ShowWarning("%s: Invalid after cast act delay %d specified for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, act_delay, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's after cast walk delay when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the after cast walk delay should be set it. + * + **/ +static void skill_validate_walk_delay(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->walkdelay, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "AfterCastWalkDelay"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int walk_delay; + + if (libconfig->setting_lookup_int(t, lv, &walk_delay) == CONFIG_TRUE) { + if (walk_delay >= 0) + sk->walkdelay[i] = walk_delay; + else + ShowWarning("%s: Invalid after cast walk delay %d specified in level %d for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, walk_delay, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + int walk_delay; + + if (libconfig->setting_lookup_int(conf, "AfterCastWalkDelay", &walk_delay) == CONFIG_TRUE) { + if (walk_delay >= 0) + skill->level_set_value(sk->walkdelay, walk_delay); + else + ShowWarning("%s: Invalid after cast walk delay %d specified for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, walk_delay, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's stay duration when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the stay duration should be set it. + * + **/ +static void skill_validate_skill_data1(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->upkeep_time, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "SkillData1"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int skill_data1; + + if (libconfig->setting_lookup_int(t, lv, &skill_data1) == CONFIG_TRUE) { + if (skill_data1 >= INFINITE_DURATION) + sk->upkeep_time[i] = skill_data1; + else + ShowWarning("%s: Invalid stay duration %d specified in level %d for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n", + __func__, skill_data1, i + 1, sk->nameid, conf->file, INFINITE_DURATION); + } + } + + return; + } + + int skill_data1; + + if (libconfig->setting_lookup_int(conf, "SkillData1", &skill_data1) == CONFIG_TRUE) { + if (skill_data1 >= INFINITE_DURATION) + skill->level_set_value(sk->upkeep_time, skill_data1); + else + ShowWarning("%s: Invalid stay duration %d specified for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n", + __func__, skill_data1, sk->nameid, conf->file, INFINITE_DURATION); + } +} + +/** + * Validates a skill's effect duration when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the effect duration should be set it. + * + **/ +static void skill_validate_skill_data2(struct config_setting_t *conf, struct s_skill_db *sk) { - struct config_setting_t *t = NULL, *tt = NULL; + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->upkeep_time2, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "SkillData2"); + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int skill_data2; + + if (libconfig->setting_lookup_int(t, lv, &skill_data2) == CONFIG_TRUE) { + if (skill_data2 >= INFINITE_DURATION) + sk->upkeep_time2[i] = skill_data2; + else + ShowWarning("%s: Invalid effect duration %d specified in level %d for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n", + __func__, skill_data2, i + 1, sk->nameid, conf->file, INFINITE_DURATION); + } + } + + return; + } + + int skill_data2; + + if (libconfig->setting_lookup_int(conf, "SkillData2", &skill_data2) == CONFIG_TRUE) { + if (skill_data2 >= INFINITE_DURATION) + skill->level_set_value(sk->upkeep_time2, skill_data2); + else + ShowWarning("%s: Invalid effect duration %d specified for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n", + __func__, skill_data2, sk->nameid, conf->file, INFINITE_DURATION); + } +} + +/** + * Validates a skill's cooldown when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the cooldown should be set it. + * + **/ +static void skill_validate_cooldown(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); nullpo_retv(sk); - if ((t=libconfig->setting_get_member(conf, delay?"SkillDelayOptions":"CastTimeOptions")) && config_setting_is_group(t)) { - int j = 0, tmpopt = 0; - while ((tt = libconfig->setting_get_elem(t, j++)) && j < 4) { - const char *type = config_setting_name(tt); + + skill->level_set_value(sk->cooldown, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "CoolDown"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int cooldown; + + if (libconfig->setting_lookup_int(t, lv, &cooldown) == CONFIG_TRUE) { + if (cooldown >= 0) + sk->cooldown[i] = cooldown; + else + ShowWarning("%s: Invalid cooldown %d specified in level %d for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, cooldown, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + int cooldown; + + if (libconfig->setting_lookup_int(conf, "CoolDown", &cooldown) == CONFIG_TRUE) { + if (cooldown >= 0) + skill->level_set_value(sk->cooldown, cooldown); + else + ShowWarning("%s: Invalid cooldown %d specified for skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, cooldown, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's fixed cast time when reading the skill DB. + * If RENEWAL_CAST is not defined, nothing is done. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the fixed cast time should be set it. + * + **/ +static void skill_validate_fixed_cast_time(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + +#ifdef RENEWAL_CAST + skill->level_set_value(sk->fixed_cast, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "FixedCastTime"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int fixed_cast_time; + + if (libconfig->setting_lookup_int(t, lv, &fixed_cast_time) == CONFIG_TRUE) { + if (fixed_cast_time >= INFINITE_DURATION) + sk->fixed_cast[i] = fixed_cast_time; + else + ShowWarning("%s: Invalid fixed cast time %d specified in level %d for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n", + __func__, fixed_cast_time, i + 1, sk->nameid, conf->file, INFINITE_DURATION); + } + } + + return; + } + + int fixed_cast_time; + + if (libconfig->setting_lookup_int(conf, "FixedCastTime", &fixed_cast_time) == CONFIG_TRUE) { + if (fixed_cast_time >= INFINITE_DURATION) + skill->level_set_value(sk->fixed_cast, fixed_cast_time); + else + ShowWarning("%s: Invalid fixed cast time %d specified for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n", + __func__, fixed_cast_time, sk->nameid, conf->file, INFINITE_DURATION); + } +#else +#ifndef RENEWAL /** Check pre-RE skill DB for FixedCastTime. **/ + if (libconfig->setting_get_member(conf, "FixedCastTime") != NULL) + ShowWarning("%s: Fixed cast time was specified for skill ID %d in %s without RENEWAL_CAST being defined! Skipping...\n", __func__, sk->nameid, conf->file); +#endif /** RENEWAL **/ +#endif /** RENEWAL_CAST **/ +} + +/** + * Validates a skill's cast time or delay options when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the cast time or delay options should be set it. + * @param delay If true, the skill's delay options are validated, otherwise its cast time options. + * + **/ +static void skill_validate_castnodex(struct config_setting_t *conf, struct s_skill_db *sk, bool delay) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(delay ? sk->delaynodex : sk->castnodex, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, delay ? "SkillDelayOptions" : "CastTimeOptions"); + + if (t != NULL && config_setting_is_group(t)) { + struct config_setting_t *tt; + int i = 0; + int options = 0; + + while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) { + const char *value = config_setting_name(tt); bool on = libconfig->setting_get_bool_real(tt); - if (strcmpi(type, "IgnoreDex") == 0) { - if (on) { - tmpopt |= 1<<0; - } else { - tmpopt &= ~(1<<0); - } - } else if (strcmpi(type, "IgnoreStatusEffect") == 0) { - if (on) { - tmpopt |= 1<<1; - } else { - tmpopt &= ~(1<<1); - } - } else if (strcmpi(type, "IgnoreItemBonus") == 0) { - if (on) { - tmpopt |= 1<<2; - } else { - tmpopt &= ~(1<<2); - } + if (strcmpi(value, "IgnoreDex") == 0) { + if (on) + options |= 1; + else + options &= ~1; + } else if (strcmpi(value, "IgnoreStatusEffect") == 0) { + if (on) + options |= 2; + else + options &= ~2; + } else if (strcmpi(value, "IgnoreItemBonus") == 0) { + if (on) + options |= 4; + else + options &= ~4; } else { - skilldb_invalid_error(type, config_setting_name(t), sk->nameid); - return; + const char *option_string = delay ? "skill delay" : "cast time"; + ShowWarning("%s: Invalid %s option %s specified for skill ID %d in %s! Skipping option...\n", + __func__, option_string, value, sk->nameid, conf->file); + } + } + + skill->level_set_value(delay ? sk->delaynodex : sk->castnodex, options); + } +} + +/** + * Validates a skill's HP cost when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the HP cost should be set it. + * + **/ +static void skill_validate_hp_cost(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->hp, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "HPCost"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int hp_cost; + + if (libconfig->setting_lookup_int(t, lv, &hp_cost) == CONFIG_TRUE) { + if (hp_cost >= 0 && hp_cost <= battle_config.max_hp) + sk->hp[i] = hp_cost; + else + ShowWarning("%s: Invalid HP cost %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, hp_cost, i + 1, sk->nameid, conf->file, battle_config.max_hp); } + } + + return; + } + + int hp_cost; + + if (libconfig->setting_lookup_int(conf, "HPCost", &hp_cost) == CONFIG_TRUE) { + if (hp_cost >= 0 && hp_cost <= battle_config.max_hp) + skill->level_set_value(sk->hp, hp_cost); + else + ShowWarning("%s: Invalid HP cost %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, hp_cost, sk->nameid, conf->file, battle_config.max_hp); + } +} + +/** + * Validates a skill's SP cost when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the SP cost should be set it. + * + **/ +static void skill_validate_sp_cost(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + skill->level_set_value(sk->sp, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "SPCost"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int sp_cost; + + if (libconfig->setting_lookup_int(t, lv, &sp_cost) == CONFIG_TRUE) { + if (sp_cost >= 0 && sp_cost <= battle_config.max_sp) + sk->sp[i] = sp_cost; + else + ShowWarning("%s: Invalid SP cost %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, sp_cost, i + 1, sk->nameid, conf->file, battle_config.max_sp); + } } - skill->level_set_value(delay?sk->delaynodex:sk->castnodex, tmpopt); + + return; + } + + int sp_cost; + + if (libconfig->setting_lookup_int(conf, "SPCost", &sp_cost) == CONFIG_TRUE) { + if (sp_cost >= 0 && sp_cost <= battle_config.max_sp) + skill->level_set_value(sk->sp, sp_cost); + else + ShowWarning("%s: Invalid SP cost %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, sp_cost, sk->nameid, conf->file, battle_config.max_sp); } } /** - * Validates the "WeaponTypes" flag - * when parsing skill_db.conf - * @param *type const char, weapon type flag - * @param on boolean, switch for the flag - * @param *sk struct, pointer to s_skill_db - * @return void - */ + * Validates a skill's HP rate cost when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the HP rate cost should be set it. + * + **/ +static void skill_validate_hp_rate_cost(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->hp_rate, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "HPRateCost"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int hp_rate_cost; + + if (libconfig->setting_lookup_int(t, lv, &hp_rate_cost) == CONFIG_TRUE) { + if (hp_rate_cost >= -100 && hp_rate_cost <= 100) + sk->hp_rate[i] = hp_rate_cost; + else + ShowWarning("%s: Invalid HP rate cost %d specified in level %d for skill ID %d in %s! Minimum is -100, maximum is 100. Defaulting to 0...\n", + __func__, hp_rate_cost, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + int hp_rate_cost; + + if (libconfig->setting_lookup_int(conf, "HPRateCost", &hp_rate_cost) == CONFIG_TRUE) { + if (hp_rate_cost >= -100 && hp_rate_cost <= 100) + skill->level_set_value(sk->hp_rate, hp_rate_cost); + else + ShowWarning("%s: Invalid HP rate cost %d specified for skill ID %d in %s! Minimum is -100, maximum is 100. Defaulting to 0...\n", + __func__, hp_rate_cost, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's SP rate cost when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the SP rate cost should be set it. + * + **/ +static void skill_validate_sp_rate_cost(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->sp_rate, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "SPRateCost"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int sp_rate_cost; + + if (libconfig->setting_lookup_int(t, lv, &sp_rate_cost) == CONFIG_TRUE) { + if (sp_rate_cost >= -100 && sp_rate_cost <= 100) + sk->sp_rate[i] = sp_rate_cost; + else + ShowWarning("%s: Invalid SP rate cost %d specified in level %d for skill ID %d in %s! Minimum is -100, maximum is 100. Defaulting to 0...\n", + __func__, sp_rate_cost, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + int sp_rate_cost; + + if (libconfig->setting_lookup_int(conf, "SPRateCost", &sp_rate_cost) == CONFIG_TRUE) { + if (sp_rate_cost >= -100 && sp_rate_cost <= 100) + skill->level_set_value(sk->sp_rate, sp_rate_cost); + else + ShowWarning("%s: Invalid SP rate cost %d specified for skill ID %d in %s! Minimum is -100, maximum is 100. Defaulting to 0...\n", + __func__, sp_rate_cost, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's maximum HP trigger when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the maximum HP trigger should be set it. + * + **/ +static void skill_validate_max_hp_trigger(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->mhp, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "MaxHPTrigger"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int max_hp_trigger; + + if (libconfig->setting_lookup_int(t, lv, &max_hp_trigger) == CONFIG_TRUE) { + if (max_hp_trigger >= 0 && max_hp_trigger <= 100) + sk->mhp[i] = max_hp_trigger; + else + ShowWarning("%s: Invalid maximum HP trigger %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is 100. Defaulting to 0...\n", + __func__, max_hp_trigger, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + int max_hp_trigger; + + if (libconfig->setting_lookup_int(conf, "MaxHPTrigger", &max_hp_trigger) == CONFIG_TRUE) { + if (max_hp_trigger >= 0 && max_hp_trigger <= 100) + skill->level_set_value(sk->mhp, max_hp_trigger); + else + ShowWarning("%s: Invalid maximum HP trigger %d specified for skill ID %d in %s! Minimum is 0, maximum is 100. Defaulting to 0...\n", + __func__, max_hp_trigger, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's maximum SP trigger when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the maximum SP trigger should be set it. + * + **/ +static void skill_validate_max_sp_trigger(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->msp, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "MaxSPTrigger"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int max_sp_trigger; + + if (libconfig->setting_lookup_int(t, lv, &max_sp_trigger) == CONFIG_TRUE) { + if (max_sp_trigger >= 0 && max_sp_trigger <= 100) + sk->msp[i] = max_sp_trigger; + else + ShowWarning("%s: Invalid maximum SP trigger %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is 100. Defaulting to 0...\n", + __func__, max_sp_trigger, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + int max_sp_trigger; + + if (libconfig->setting_lookup_int(conf, "MaxSPTrigger", &max_sp_trigger) == CONFIG_TRUE) { + if (max_sp_trigger >= 0 && max_sp_trigger <= 100) + skill->level_set_value(sk->msp, max_sp_trigger); + else + ShowWarning("%s: Invalid maximum SP trigger %d specified for skill ID %d in %s! Minimum is 0, maximum is 100. Defaulting to 0...\n", + __func__, max_sp_trigger, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's Zeny cost when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the Zeny cost should be set it. + * + **/ +static void skill_validate_zeny_cost(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->zeny, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "ZenyCost"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int zeny_cost; + + if (libconfig->setting_lookup_int(t, lv, &zeny_cost) == CONFIG_TRUE) { + if (zeny_cost >= 0 && zeny_cost <= MAX_ZENY) + sk->zeny[i] = zeny_cost; + else + ShowWarning("%s: Invalid Zeny cost %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, zeny_cost, i + 1, sk->nameid, conf->file, MAX_ZENY); + } + } + + return; + } + + int zeny_cost; + + if (libconfig->setting_lookup_int(conf, "ZenyCost", &zeny_cost) == CONFIG_TRUE) { + if (zeny_cost >= 0 && zeny_cost <= MAX_ZENY) + skill->level_set_value(sk->zeny, zeny_cost); + else + ShowWarning("%s: Invalid Zeny cost %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, zeny_cost, sk->nameid, conf->file, MAX_ZENY); + } +} + +/** + * Validates a single weapon type when reading the skill DB. + * + * @param type The weapon type to validate. + * @param on Whether the weapon type is required for the skill. + * @param sk The s_skill_db struct where the weapon type should be set it. + * @return 0 if the passed weapon type is valid, otherwise 1. + * + **/ static int skill_validate_weapontype_sub(const char *type, bool on, struct s_skill_db *sk) { - nullpo_ret(sk); + nullpo_retr(1, type); + nullpo_retr(1, sk); + if (strcmpi(type, "NoWeapon") == 0) { - if (on) { - sk->weapon |= 1<<W_FIST; - } else { - sk->weapon &= ~(1<<W_FIST); - } + if (on) + sk->weapon |= (1 << W_FIST); + else + sk->weapon &= ~(1 << W_FIST); } else if (strcmpi(type, "Daggers") == 0) { - if (on) { - sk->weapon |= 1<<W_DAGGER; - } else { - sk->weapon &= ~(1<<W_DAGGER); - } + if (on) + sk->weapon |= (1 << W_DAGGER); + else + sk->weapon &= ~(1 << W_DAGGER); } else if (strcmpi(type, "1HSwords") == 0) { - if (on) { - sk->weapon |= 1<<W_1HSWORD; - } else { - sk->weapon &= ~(1<<W_1HSWORD); - } + if (on) + sk->weapon |= (1 << W_1HSWORD); + else + sk->weapon &= ~(1 << W_1HSWORD); } else if (strcmpi(type, "2HSwords") == 0) { - if (on) { - sk->weapon |= 1<<W_2HSWORD; - } else { - sk->weapon &= ~(1<<W_2HSWORD); - } + if (on) + sk->weapon |= (1 << W_2HSWORD); + else + sk->weapon &= ~(1 << W_2HSWORD); } else if (strcmpi(type, "1HSpears") == 0) { - if (on) { - sk->weapon |= 1<<W_1HSPEAR; - } else { - sk->weapon &= ~(1<<W_1HSPEAR); - } + if (on) + sk->weapon |= (1 << W_1HSPEAR); + else + sk->weapon &= ~(1 << W_1HSPEAR); } else if (strcmpi(type, "2HSpears") == 0) { - if (on) { - sk->weapon |= 1<<W_2HSPEAR; - } else { - sk->weapon &= ~(1<<W_2HSPEAR); - } + if (on) + sk->weapon |= (1 << W_2HSPEAR); + else + sk->weapon &= ~(1 << W_2HSPEAR); } else if (strcmpi(type, "1HAxes") == 0) { - if (on) { - sk->weapon |= 1<<W_1HAXE; - } else { - sk->weapon &= ~(1<<W_1HAXE); - } + if (on) + sk->weapon |= (1 << W_1HAXE); + else + sk->weapon &= ~(1 << W_1HAXE); } else if (strcmpi(type, "2HAxes") == 0) { - if (on) { - sk->weapon |= 1<<W_2HAXE; - } else { - sk->weapon &= ~(1<<W_2HAXE); - } + if (on) + sk->weapon |= (1 << W_2HAXE); + else + sk->weapon &= ~(1 << W_2HAXE); } else if (strcmpi(type, "Maces") == 0) { - if (on) { - sk->weapon |= 1<<W_MACE; - } else { - sk->weapon &= ~(1<<W_MACE); - } + if (on) + sk->weapon |= (1 << W_MACE); + else + sk->weapon &= ~(1 << W_MACE); } else if (strcmpi(type, "2HMaces") == 0) { - if (on) { - sk->weapon |= 1<<W_2HMACE; - } else { - sk->weapon &= ~(1<<W_2HMACE); - } + if (on) + sk->weapon |= (1 << W_2HMACE); + else + sk->weapon &= ~(1 << W_2HMACE); } else if (strcmpi(type, "Staves") == 0) { - if (on) { - sk->weapon |= 1<<W_STAFF; - } else { - sk->weapon &= ~(1<<W_STAFF); - } + if (on) + sk->weapon |= (1 << W_STAFF); + else + sk->weapon &= ~(1 << W_STAFF); } else if (strcmpi(type, "Bows") == 0) { - if (on) { - sk->weapon |= 1<<W_BOW; - } else { - sk->weapon &= ~(1<<W_BOW); - } + if (on) + sk->weapon |= (1 << W_BOW); + else + sk->weapon &= ~(1 << W_BOW); } else if (strcmpi(type, "Knuckles") == 0) { - if (on) { - sk->weapon |= 1<<W_KNUCKLE; - } else { - sk->weapon &= ~(1<<W_KNUCKLE); - } + if (on) + sk->weapon |= (1 << W_KNUCKLE); + else + sk->weapon &= ~(1 << W_KNUCKLE); } else if (strcmpi(type, "Instruments") == 0) { - if (on) { - sk->weapon |= 1<<W_MUSICAL; - } else { - sk->weapon &= ~(1<<W_MUSICAL); - } + if (on) + sk->weapon |= (1 << W_MUSICAL); + else + sk->weapon &= ~(1 << W_MUSICAL); } else if (strcmpi(type, "Whips") == 0) { - if (on) { - sk->weapon |= 1<<W_WHIP; - } else { - sk->weapon &= ~(1<<W_WHIP); - } + if (on) + sk->weapon |= (1 << W_WHIP); + else + sk->weapon &= ~(1 << W_WHIP); } else if (strcmpi(type, "Books") == 0) { - if (on) { - sk->weapon |= 1<<W_BOOK; - } else { - sk->weapon &= ~(1<<W_BOOK); - } + if (on) + sk->weapon |= (1 << W_BOOK); + else + sk->weapon &= ~(1 << W_BOOK); } else if (strcmpi(type, "Katars") == 0) { - if (on) { - sk->weapon |= 1<<W_KATAR; - } else { - sk->weapon &= ~(1<<W_KATAR); - } + if (on) + sk->weapon |= (1 << W_KATAR); + else + sk->weapon &= ~(1 << W_KATAR); } else if (strcmpi(type, "Revolvers") == 0) { - if (on) { - sk->weapon |= 1<<W_REVOLVER; - } else { - sk->weapon &= ~(1<<W_REVOLVER); - } + if (on) + sk->weapon |= (1 << W_REVOLVER); + else + sk->weapon &= ~(1 << W_REVOLVER); } else if (strcmpi(type, "Rifles") == 0) { - if (on) { - sk->weapon |= 1<<W_RIFLE; - } else { - sk->weapon &= ~(1<<W_RIFLE); - } + if (on) + sk->weapon |= (1 << W_RIFLE); + else + sk->weapon &= ~(1 << W_RIFLE); } else if (strcmpi(type, "GatlingGuns") == 0) { - if (on) { - sk->weapon |= 1<<W_GATLING; - } else { - sk->weapon &= ~(1<<W_GATLING); - } + if (on) + sk->weapon |= (1 << W_GATLING); + else + sk->weapon &= ~(1 << W_GATLING); } else if (strcmpi(type, "Shotguns") == 0) { - if (on) { - sk->weapon |= 1<<W_SHOTGUN; - } else { - sk->weapon &= ~(1<<W_SHOTGUN); - } + if (on) + sk->weapon |= (1 << W_SHOTGUN); + else + sk->weapon &= ~(1 << W_SHOTGUN); } else if (strcmpi(type, "GrenadeLaunchers") == 0) { - if (on) { - sk->weapon |= 1<<W_GRENADE; - } else { - sk->weapon &= ~(1<<W_GRENADE); - } + if (on) + sk->weapon |= (1 << W_GRENADE); + else + sk->weapon &= ~(1 << W_GRENADE); } else if (strcmpi(type, "FuumaShurikens") == 0) { - if (on) { - sk->weapon |= 1<<W_HUUMA; - } else { - sk->weapon &= ~(1<<W_HUUMA); - } + if (on) + sk->weapon |= (1 << W_HUUMA); + else + sk->weapon &= ~(1 << W_HUUMA); } else if (strcmpi(type, "2HStaves") == 0) { - if (on) { - sk->weapon |= 1<<W_2HSTAFF; - } else { - sk->weapon &= ~(1<<W_2HSTAFF); - } - } - /* MAX_SINGLE_WEAPON_TYPE excluded */ - else if (strcmpi(type, "DWDaggers") == 0) { - if (on) { - sk->weapon |= 1<<W_DOUBLE_DD; - } else { - sk->weapon &= ~(1<<W_DOUBLE_DD); - } + if (on) + sk->weapon |= (1 << W_2HSTAFF); + else + sk->weapon &= ~(1 << W_2HSTAFF); + } else if (strcmpi(type, "DWDaggers") == 0) { + if (on) + sk->weapon |= (1 << W_DOUBLE_DD); + else + sk->weapon &= ~(1 << W_DOUBLE_DD); } else if (strcmpi(type, "DWSwords") == 0) { - if (on) { - sk->weapon |= 1<<W_DOUBLE_SS; - } else { - sk->weapon &= ~(1<<W_DOUBLE_SS); - } + if (on) + sk->weapon |= (1 << W_DOUBLE_SS); + else + sk->weapon &= ~(1 << W_DOUBLE_SS); } else if (strcmpi(type, "DWAxes") == 0) { - if (on) { - sk->weapon |= 1<<W_DOUBLE_AA; - } else { - sk->weapon &= ~(1<<W_DOUBLE_AA); - } + if (on) + sk->weapon |= (1 << W_DOUBLE_AA); + else + sk->weapon &= ~(1 << W_DOUBLE_AA); } else if (strcmpi(type, "DWDaggerSword") == 0) { - if (on) { - sk->weapon |= 1<<W_DOUBLE_DS; - } else { - sk->weapon &= ~(1<<W_DOUBLE_DS); - } + if (on) + sk->weapon |= (1 << W_DOUBLE_DS); + else + sk->weapon &= ~(1 << W_DOUBLE_DS); } else if (strcmpi(type, "DWDaggerAxe") == 0) { - if (on) { - sk->weapon |= 1<<W_DOUBLE_DA; - } else { - sk->weapon &= ~(1<<W_DOUBLE_DA); - } + if (on) + sk->weapon |= (1 << W_DOUBLE_DA); + else + sk->weapon &= ~(1 << W_DOUBLE_DA); } else if (strcmpi(type, "DWSwordAxe") == 0) { - if (on) { - sk->weapon |= 1<<W_DOUBLE_SA; - } else { - sk->weapon &= ~(1<<W_DOUBLE_SA); - } + if (on) + sk->weapon |= (1 << W_DOUBLE_SA); + else + sk->weapon &= ~(1 << W_DOUBLE_SA); } else if (strcmpi(type, "All") == 0) { sk->weapon = 0; } else { - ShowError("Item %d. Unknown weapon type %s\n", sk->nameid, type); - return 1; // invalid type + return 1; } return 0; } /** - * Validates "WeaponTypes" - * when parsing skill_db.conf - * @param conf struct, pointer to the skill configuration - * @param sk struct, struct, pointer to s_skill_db - * @return (void) - */ + * Validates a skill's required weapon types when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required weapon types should be set it. + * + **/ static void skill_validate_weapontype(struct config_setting_t *conf, struct s_skill_db *sk) { - struct config_setting_t *tt = NULL; - const char *type = NULL; - + nullpo_retv(conf); nullpo_retv(sk); - if ((tt = libconfig->setting_get_member(conf, "WeaponTypes")) && config_setting_is_group(tt)) { - int j = 0; - struct config_setting_t *wpt = NULL; - while ((wpt = libconfig->setting_get_elem(tt, j++)) != NULL) { - if (skill->validate_weapontype_sub(config_setting_name(wpt), libconfig->setting_get_bool_real(wpt), sk)) - skilldb_invalid_error(config_setting_name(wpt), config_setting_name(tt), sk->nameid); + + sk->weapon = 0; + + struct config_setting_t *t = libconfig->setting_get_member(conf, "WeaponTypes"); + + if (t != NULL && config_setting_is_group(t)) { + struct config_setting_t *tt; + int i = 0; + + while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) { + bool on = libconfig->setting_get_bool_real(tt); + + if (skill->validate_weapontype_sub(config_setting_name(tt), on, sk) != 0) + ShowWarning("%s: Invalid required weapon type %s specified for skill ID %d in %s! Skipping type...\n", + __func__, config_setting_name(tt), sk->nameid, conf->file); } - } else if (libconfig->setting_lookup_string(conf, "WeaponTypes", &type)) { - if (skill->validate_weapontype_sub(type, true, sk)) - skilldb_invalid_error(type, "WeaponTypes", sk->nameid); + + return; + } + + const char *weapon_type; + + if (libconfig->setting_lookup_string(conf, "WeaponTypes", &weapon_type) == CONFIG_TRUE) { + if (skill->validate_weapontype_sub(weapon_type, true, sk) != 0) + ShowWarning("%s: Invalid required weapon type %s specified for skill ID %d in %s! Defaulting to All...\n", + __func__, weapon_type, sk->nameid, conf->file); } } /** - * Validates the "AmmoTypes" flag - * when parsing skill_db.conf - * @param type string, ammo type flag - * @param on boolean, switch for the flag - * @param sk struct, pointer to s_skill_db - * @return void - */ + * Validates a single ammunition type when reading the skill DB. + * + * @param type The ammunition type to validate. + * @param on Whether the ammunition type is required for the skill. + * @param sk The s_skill_db struct where the ammunition type should be set it. + * @return 0 if the passed ammunition type is valid, otherwise 1. + * + **/ static int skill_validate_ammotype_sub(const char *type, bool on, struct s_skill_db *sk) { - nullpo_ret(sk); + nullpo_retr(1, type); + nullpo_retr(1, sk); + if (strcmpi(type, "A_ARROW") == 0) { - if (on) { - sk->ammo |= 1<<A_ARROW; - } else { - sk->ammo &= ~(1<<A_ARROW); - } + if (on) + sk->ammo |= (1 << A_ARROW); + else + sk->ammo &= ~(1 << A_ARROW); } else if (strcmpi(type, "A_DAGGER") == 0) { - if (on) { - sk->ammo |= 1<<A_DAGGER; - } else { - sk->ammo &= ~(1<<A_DAGGER); - } + if (on) + sk->ammo |= (1 << A_DAGGER); + else + sk->ammo &= ~(1 << A_DAGGER); } else if (strcmpi(type, "A_BULLET") == 0) { - if (on) { - sk->ammo |= 1<<A_BULLET; - } else { - sk->ammo &= ~(1<<A_BULLET); - } + if (on) + sk->ammo |= (1 << A_BULLET); + else + sk->ammo &= ~(1 << A_BULLET); } else if (strcmpi(type, "A_SHELL") == 0) { - if (on) { - sk->ammo |= 1<<A_SHELL; - } else { - sk->ammo &= ~(1<<A_SHELL); - } + if (on) + sk->ammo |= (1 << A_SHELL); + else + sk->ammo &= ~(1 << A_SHELL); } else if (strcmpi(type, "A_GRENADE") == 0) { - if (on) { - sk->ammo |= 1<<A_GRENADE; - } else { - sk->ammo &= ~(1<<A_GRENADE); - } + if (on) + sk->ammo |= (1 << A_GRENADE); + else + sk->ammo &= ~(1 << A_GRENADE); } else if (strcmpi(type, "A_SHURIKEN") == 0) { - if (on) { - sk->ammo |= 1<<A_SHURIKEN; - } else { - sk->ammo &= ~(1<<A_SHURIKEN); - } + if (on) + sk->ammo |= (1 << A_SHURIKEN); + else + sk->ammo &= ~(1 << A_SHURIKEN); } else if (strcmpi(type, "A_KUNAI") == 0) { - if (on) { - sk->ammo |= 1<<A_KUNAI; - } else { - sk->ammo &= ~(1<<A_KUNAI); - } + if (on) + sk->ammo |= (1 << A_KUNAI); + else + sk->ammo &= ~(1 << A_KUNAI); } else if (strcmpi(type, "A_CANNONBALL") == 0) { - if (on) { - sk->ammo |= 1<<A_CANNONBALL; - } else { - sk->ammo &= ~(1<<A_CANNONBALL); - } + if (on) + sk->ammo |= (1 << A_CANNONBALL); + else + sk->ammo &= ~(1 << A_CANNONBALL); } else if (strcmpi(type, "A_THROWWEAPON") == 0) { - if (on) { - sk->ammo |= 1<<A_THROWWEAPON; - } else { - sk->ammo &= ~(1<<A_THROWWEAPON); - } + if (on) + sk->ammo |= (1 << A_THROWWEAPON); + else + sk->ammo &= ~(1 << A_THROWWEAPON); } else if (strcmpi(type, "All") == 0) { - if (on) { + if (on) sk->ammo = 0xFFFFFFFF; - } else { + else sk->ammo = 0; - } } else { - return 1; // Invalid Entry + return 1; } return 0; } /** - * Validates the "AmmoTypes" flag - * when parsing skill_db.conf - * @param conf pointer to the skill configuration - * @param sk struct, pointer to s_skill_db - * @return void - */ + * Validates a skill's required ammunition types when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required ammunition types should be set it. + * + **/ static void skill_validate_ammotype(struct config_setting_t *conf, struct s_skill_db *sk) { - struct config_setting_t *tt = NULL; - const char *tstr = NULL; + nullpo_retv(conf); + nullpo_retv(sk); + + sk->ammo = 0; + + struct config_setting_t *t = libconfig->setting_get_member(conf, "AmmoTypes"); + + if (t != NULL && config_setting_is_group(t)) { + struct config_setting_t *tt; + int i = 0; + + while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) { + bool on = libconfig->setting_get_bool_real(tt); + if (skill->validate_ammotype_sub(config_setting_name(tt), on, sk) != 0) + ShowWarning("%s: Invalid required ammunition type %s specified for skill ID %d in %s! Skipping type...\n", + __func__, config_setting_name(tt), sk->nameid, conf->file); + } + } + + const char *ammo_type; + + if (libconfig->setting_lookup_string(conf, "AmmoTypes", &ammo_type) == CONFIG_TRUE) { + if (skill->validate_ammotype_sub(ammo_type, true, sk) != 0) + ShowWarning("%s: Invalid required ammunition type %s specified for skill ID %d in %s! Defaulting to None...\n", + __func__, ammo_type, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's required ammunition amount when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required ammunition amount should be set it. + * + **/ +static void skill_validate_ammo_amount(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); nullpo_retv(sk); - if ((tt = libconfig->setting_get_member(conf, "AmmoTypes")) && config_setting_is_group(tt)) { - int j = 0; - struct config_setting_t *amt = { 0 }; - while ((amt = libconfig->setting_get_elem(tt, j++))) { - if (skill->validate_ammotype_sub(config_setting_name(amt), libconfig->setting_get_bool_real(amt), sk)) - skilldb_invalid_error(config_setting_name(amt), config_setting_name(tt), sk->nameid); + + skill->level_set_value(sk->ammo_qty, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "AmmoAmount"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int ammo_amount; + + if (libconfig->setting_lookup_int(t, lv, &ammo_amount) == CONFIG_TRUE) { + if (ammo_amount >= 0 && ammo_amount <= MAX_AMOUNT) + sk->ammo_qty[i] = ammo_amount; + else + ShowWarning("%s: Invalid required ammunition amount %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, ammo_amount, i + 1, sk->nameid, conf->file, MAX_AMOUNT); + } } - } else if( libconfig->setting_lookup_string(conf, "AmmoTypes", &tstr)) { - if (skill->validate_ammotype_sub(tstr, true, sk)) - skilldb_invalid_error(tstr, "AmmoTypes", sk->nameid); + + return; + } + + int ammo_amount; + + if (libconfig->setting_lookup_int(conf, "AmmoAmount", &ammo_amount) == CONFIG_TRUE) { + if (ammo_amount >= 0 && ammo_amount <= MAX_AMOUNT) + skill->level_set_value(sk->ammo_qty, ammo_amount); + else + ShowWarning("%s: Invalid required ammunition amount %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, ammo_amount, sk->nameid, conf->file, MAX_AMOUNT); } } /** - * Validates the "State" flag - * when parsing skill_db.conf - * @param conf struct, pointer to the skill configuration - * @param sk struct, pointer to s_skill_db - * @return void - */ + * Validates a single required state when reading the skill DB. + * + * @param state The required state to validate. + * @return A number greater than or equal to 0 if the passed required state is valid, otherwise -1. + * + **/ +static int skill_validate_state_sub(const char *state) +{ + nullpo_retr(-1, state); + + int ret_val = ST_NONE; + + if (strcmpi(state, "Hiding") == 0) + ret_val = ST_HIDING; + else if (strcmpi(state, "Cloaking") == 0) + ret_val = ST_CLOAKING; + else if (strcmpi(state, "Hidden") == 0) + ret_val = ST_HIDDEN; + else if (strcmpi(state, "Riding") == 0) + ret_val = ST_RIDING; + else if (strcmpi(state, "Falcon") == 0) + ret_val = ST_FALCON; + else if (strcmpi(state, "Cart") == 0) + ret_val = ST_CART; + else if (strcmpi(state, "Shield") == 0) + ret_val = ST_SHIELD; + else if (strcmpi(state, "Sight") == 0) + ret_val = ST_SIGHT; + else if (strcmpi(state, "ExplosionSpirits") == 0) + ret_val = ST_EXPLOSIONSPIRITS; + else if (strcmpi(state, "CartBoost") == 0) + ret_val = ST_CARTBOOST; + else if (strcmpi(state, "NotOverWeight") == 0) + ret_val = ST_RECOV_WEIGHT_RATE; + else if (strcmpi(state, "Moveable") == 0) + ret_val = ST_MOVE_ENABLE; + else if (strcmpi(state, "InWater") == 0) + ret_val = ST_WATER; + else if (strcmpi(state, "Dragon") == 0) + ret_val = ST_RIDINGDRAGON; + else if (strcmpi(state, "Warg") == 0) + ret_val = ST_WUG; + else if (strcmpi(state, "RidingWarg") == 0) + ret_val = ST_RIDINGWUG; + else if (strcmpi(state, "MadoGear") == 0) + ret_val = ST_MADO; + else if (strcmpi(state, "ElementalSpirit") == 0) + ret_val = ST_ELEMENTALSPIRIT; + else if (strcmpi(state, "PoisonWeapon") == 0) + ret_val = ST_POISONINGWEAPON; + else if (strcmpi(state, "RollingCutter") == 0) + ret_val = ST_ROLLINGCUTTER; + else if (strcmpi(state, "MH_Fighting") == 0) + ret_val = ST_MH_FIGHTING; + else if (strcmpi(state, "MH_Grappling") == 0) + ret_val = ST_MH_GRAPPLING; + else if (strcmpi(state, "Peco") == 0) + ret_val = ST_PECO; + else if (strcmpi(state, "None") != 0) + ret_val = -1; + + return ret_val; +} + +/** + * Validates a skill's required states when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required states should be set it. + * + **/ static void skill_validate_state(struct config_setting_t *conf, struct s_skill_db *sk) { - const char *type = NULL; + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->state, ST_NONE); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "State"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + const char *state; + if (libconfig->setting_lookup_string(t, lv, &state) == CONFIG_TRUE) { + int sta = skill->validate_state_sub(state); + + if (sta > ST_NONE) + sk->state[i] = sta; + else if (sta == -1) + ShowWarning("%s: Invalid required state %s specified in level %d for skill ID %d in %s! Defaulting to None...\n", + __func__, state, i + 1, sk->nameid, conf->file); + } + } + + return; + } + + const char *state; + + if (libconfig->setting_lookup_string(conf, "State", &state) == CONFIG_TRUE) { + int sta = skill->validate_state_sub(state); + + if (sta > ST_NONE) + skill->level_set_value(sk->state, sta); + else if (sta == -1) + ShowWarning("%s: Invalid required state %s specified for skill ID %d in %s! Defaulting to None...\n", + __func__, state, sk->nameid, conf->file); + } +} + +/** + * Validates a skill's Spirit Sphere cost when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the Spirit Sphere cost should be set it. + * + **/ +static void skill_validate_spirit_sphere_cost(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); nullpo_retv(sk); - if (libconfig->setting_lookup_string(conf, "State", &type) && strcmpi(type,"None") != ST_NONE) { - if ( strcmpi(type,"Hiding") == 0 ) sk->state = ST_HIDING; - else if (strcmpi(type,"Cloaking") == 0 ) sk->state = ST_CLOAKING; - else if (strcmpi(type,"Hidden") == 0 ) sk->state = ST_HIDDEN; - else if (strcmpi(type,"Riding") == 0 ) sk->state = ST_RIDING; - else if (strcmpi(type,"Falcon") == 0 ) sk->state = ST_FALCON; - else if (strcmpi(type,"Cart") == 0 ) sk->state = ST_CART; - else if (strcmpi(type,"Shield") == 0 ) sk->state = ST_SHIELD; - else if (strcmpi(type,"Sight") == 0 ) sk->state = ST_SIGHT; - else if (strcmpi(type,"ExplosionSpirits") == 0 ) sk->state = ST_EXPLOSIONSPIRITS; - else if (strcmpi(type,"CartBoost") == 0 ) sk->state = ST_CARTBOOST; - else if (strcmpi(type,"NotOverWeight") == 0 ) sk->state = ST_RECOV_WEIGHT_RATE; - else if (strcmpi(type,"Moveable") == 0 ) sk->state = ST_MOVE_ENABLE; - else if (strcmpi(type,"InWater") == 0 ) sk->state = ST_WATER; - else if (strcmpi(type,"Dragon") == 0 ) sk->state = ST_RIDINGDRAGON; - else if (strcmpi(type,"Warg") == 0 ) sk->state = ST_WUG; - else if (strcmpi(type,"RidingWarg") == 0 ) sk->state = ST_RIDINGWUG; - else if (strcmpi(type,"MadoGear") == 0 ) sk->state = ST_MADO; - else if (strcmpi(type,"ElementalSpirit") == 0 ) sk->state = ST_ELEMENTALSPIRIT; - else if (strcmpi(type,"PoisonWeapon") == 0 ) sk->state = ST_POISONINGWEAPON; - else if (strcmpi(type,"RollingCutter") == 0 ) sk->state = ST_ROLLINGCUTTER; - else if (strcmpi(type,"MH_Fighting") == 0 ) sk->state = ST_MH_FIGHTING; - else if (strcmpi(type,"MH_Grappling") == 0 ) sk->state = ST_MH_GRAPPLING; - else if (strcmpi(type,"Peco") == 0 ) sk->state = ST_PECO; + + skill->level_set_value(sk->spiritball, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "SpiritSphereCost"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int spirit_sphere_cost; + + if (libconfig->setting_lookup_int(t, lv, &spirit_sphere_cost) == CONFIG_TRUE) { + if (spirit_sphere_cost >= 0 && spirit_sphere_cost <= MAX_SPIRITBALL) + sk->spiritball[i] = spirit_sphere_cost; + else + ShowWarning("%s: Invalid Spirit Sphere cost %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, spirit_sphere_cost, i + 1, sk->nameid, conf->file, MAX_SPIRITBALL); + } + } + + return; + } + + int spirit_sphere_cost; + + if (libconfig->setting_lookup_int(conf, "SpiritSphereCost", &spirit_sphere_cost) == CONFIG_TRUE) { + if (spirit_sphere_cost >= 0 && spirit_sphere_cost <= MAX_SPIRITBALL) + skill->level_set_value(sk->spiritball, spirit_sphere_cost); else - skilldb_invalid_error(type, "State", sk->nameid); + ShowWarning("%s: Invalid Spirit Sphere cost %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, spirit_sphere_cost, sk->nameid, conf->file, MAX_SPIRITBALL); } } /** - * Validates the "Items" flag - * when parsing skill_db.conf - * @param conf struct, pointer to the skill configuration - * @param sk struct, pointer to s_skill_db - * @return void - */ + * Validates a skill's required items amounts when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required items amounts should be set it. + * + **/ +static void skill_validate_item_requirements_sub_item_amount(struct config_setting_t *conf, struct s_skill_db *sk, int item_index) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + for (int i = 0; i < MAX_SKILL_LEVEL; i++) + sk->req_items.item[item_index].amount[i] = 0; + + if (config_setting_is_group(conf)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int amount; + + if (libconfig->setting_lookup_int(conf, lv, &amount) == CONFIG_TRUE) { + if (amount >= 0 && amount <= MAX_AMOUNT) + sk->req_items.item[item_index].amount[i] = amount; + else + ShowWarning("%s: Invalid required item amount %d specified in level %d for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, amount, i + 1, sk->nameid, conf->file, MAX_AMOUNT); + } else { + // Items is not required for this skill level. (Not even in inventory!) + sk->req_items.item[item_index].amount[i] = -1; + } + } + + return; + } + + int amount = libconfig->setting_get_int(conf); + + if (amount >= 0 && amount <= MAX_AMOUNT) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) + sk->req_items.item[item_index].amount[i] = amount; + } else { + ShowWarning("%s: Invalid required item amount %d specified for skill ID %d in %s! Minimum is 0, maximum is %d. Defaulting to 0...\n", + __func__, amount, sk->nameid, conf->file, MAX_AMOUNT); + } +} + +/** + * Validates a skill's required items when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required items should be set it. + * + **/ +static void skill_validate_item_requirements_sub_items(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) { + sk->req_items.item[i].id = 0; + + for (int j = 0; j < MAX_SKILL_LEVEL; j++) + sk->req_items.item[i].amount[j] = 0; + } + + int item_index = 0; + int count = libconfig->setting_length(conf); + + for (int i = 0; i < count; i++) { + struct config_setting_t *t = libconfig->setting_get_elem(conf, i); + + if (t != NULL && strcasecmp(config_setting_name(t), "Any") != 0) { + if (item_index >= MAX_SKILL_ITEM_REQUIRE) { + ShowWarning("%s: Too many required items specified for skill ID %d in %s! Skipping item %s...\n", + __func__, sk->nameid, conf->file, config_setting_name(t)); + continue; + } + + int item_id = skill->validate_requirements_item_name(config_setting_name(t)); + + if (item_id == 0) { + ShowWarning("%s: Invalid required item %s specified for skill ID %d in %s! Skipping item...\n", + __func__, config_setting_name(t), sk->nameid, conf->file); + continue; + } + + int j; + + ARR_FIND(0, MAX_SKILL_ITEM_REQUIRE, j, sk->req_items.item[j].id == item_id); + + if (j < MAX_SKILL_ITEM_REQUIRE) { + ShowWarning("%s: Duplicate required item %s specified for skill ID %d in %s! Skipping item...\n", + __func__, config_setting_name(t), sk->nameid, conf->file); + continue; + } + + sk->req_items.item[item_index].id = item_id; + skill->validate_item_requirements_sub_item_amount(t, sk, item_index); + item_index++; + } + } +} + +/** + * Validates a skill's required items any-flag when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required items any-flag should be set it. + * + **/ +static void skill_validate_item_requirements_sub_any_flag(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + for (int i = 0; i < MAX_SKILL_LEVEL; i++) + sk->req_items.any[i] = false; + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Any"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int any_flag; + + if (libconfig->setting_lookup_bool(t, lv, &any_flag) == CONFIG_TRUE) + sk->req_items.any[i] = (any_flag != 0); + } + + return; + } + + int any_flag; + + if (libconfig->setting_lookup_bool(conf, "Any", &any_flag) == CONFIG_TRUE && any_flag != 0) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) + sk->req_items.any[i] = true; + } +} + +/** + * Validates a skill's required items when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required items should be set it. + * + **/ static void skill_validate_item_requirements(struct config_setting_t *conf, struct s_skill_db *sk) { - struct config_setting_t *tt = NULL; + nullpo_retv(conf); + nullpo_retv(sk); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Items"); + if (t != NULL && config_setting_is_group(t)) { + skill->validate_item_requirements_sub_any_flag(t, sk); + skill->validate_item_requirements_sub_items(t, sk); + } +} + +/** + * Validates a skill's required equipment amounts when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required equipment amounts should be set it. + * + **/ +static void skill_validate_equip_requirements_sub_item_amount(struct config_setting_t *conf, struct s_skill_db *sk, int item_index) +{ + nullpo_retv(conf); nullpo_retv(sk); - if ((tt=libconfig->setting_get_member(conf, "Items")) && config_setting_is_group(conf)) { - int itx=-1; - struct config_setting_t *it; - while((it=libconfig->setting_get_elem(tt, ++itx)) && itx < MAX_SKILL_ITEM_REQUIRE) { - const char *type = config_setting_name(it); + for (int i = 0; i < MAX_SKILL_LEVEL; i++) + sk->req_equip.item[item_index].amount[i] = 0; - if( type[0] == 'I' && type[1] == 'D' && itemdb->exists(atoi(type+2)) ) - sk->itemid[itx] = atoi(type+2); - else if(!script->get_constant(type, &sk->itemid[itx])) { - ShowWarning("skill_read_skilldb: Invalid required Item '%s' given for skill Id %d in '%s', skipping...\n",type, sk->nameid, DBPATH"skill_db.conf"); + if (config_setting_is_group(conf)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int amount; + + if (libconfig->setting_lookup_int(conf, lv, &amount) == CONFIG_TRUE) { + if (amount > 0) { + sk->req_equip.item[item_index].amount[i] = amount; + } else { + ShowWarning("%s: Invalid required equipment amount %d specified in level %d for skill ID %d in %s! Must be greater than 0. Defaulting to 1...\n", + __func__, amount, i + 1, sk->nameid, conf->file); + sk->req_equip.item[item_index].amount[i] = 1; + } + } + } + + return; + } + + int amount = libconfig->setting_get_int(conf); + + if (amount <= 0) { + ShowWarning("%s: Invalid required equipment amount %d specified for skill ID %d in %s! Must be greater than 0. Defaulting to 1...\n", + __func__, amount, sk->nameid, conf->file); + amount = 1; + } + + for (int i = 0; i < MAX_SKILL_LEVEL; i++) + sk->req_equip.item[item_index].amount[i] = amount; +} + +/** + * Validates a skill's required equipment when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required equipment should be set it. + * + **/ +static void skill_validate_equip_requirements_sub_items(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + for (int i = 0; i < MAX_SKILL_ITEM_REQUIRE; i++) { + sk->req_equip.item[i].id = 0; + + for (int j = 0; j < MAX_SKILL_LEVEL; j++) + sk->req_equip.item[i].amount[j] = 0; + } + + int item_index = 0; + int count = libconfig->setting_length(conf); + + for (int i = 0; i < count; i++) { + struct config_setting_t *t = libconfig->setting_get_elem(conf, i); + + if (t != NULL && strcasecmp(config_setting_name(t), "Any") != 0) { + if (item_index >= MAX_SKILL_ITEM_REQUIRE) { + ShowWarning("%s: Too many required equipment items specified for skill ID %d in %s! Skipping item %s...\n", + __func__, sk->nameid, conf->file, config_setting_name(t)); continue; } - if (config_setting_is_group(it)) { - // TODO: Per-level item requirements are not implemented yet! - // We just take the first level for the time being (old txt behavior) - sk->amount[itx] = libconfig->setting_get_int_elem(it, 0); - } else { - sk->amount[itx] = libconfig->setting_get_int(it); + int item_id = skill->validate_requirements_item_name(config_setting_name(t)); + struct item_data *it = itemdb->exists(item_id); + + if (item_id == 0 || it == NULL) { + ShowWarning("%s: Invalid required equipment item %s specified for skill ID %d in %s! Skipping item...\n", + __func__, config_setting_name(t), sk->nameid, conf->file); + continue; } + + if (it->type != IT_WEAPON && it->type != IT_AMMO && it->type != IT_ARMOR && it->type != IT_CARD) { + ShowWarning("%s: Non-equipment item %s specified for skill ID %d in %s! Skipping item...\n", + __func__, config_setting_name(t), sk->nameid, conf->file); + continue; + } + + int j; + + ARR_FIND(0, MAX_SKILL_ITEM_REQUIRE, j, sk->req_equip.item[j].id == item_id); + + if (j < MAX_SKILL_ITEM_REQUIRE) { + ShowWarning("%s: Duplicate required equipment item %s specified for skill ID %d in %s! Skipping item...\n", + __func__, config_setting_name(t), sk->nameid, conf->file); + continue; + } + + sk->req_equip.item[item_index].id = item_id; + skill->validate_equip_requirements_sub_item_amount(t, sk, item_index); + item_index++; } } } /** - * Validates the "Unit > Target" flag - * when parsing skill_db.conf - * @param conf struct, pointer to the skill configuration - * @param sk struct, pointer to s_skill_db - * @return void - */ -static void skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk) + * Validates a skill's required equipment any-flag when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required equipment any-flag should be set it. + * + **/ +static void skill_validate_equip_requirements_sub_any_flag(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + for (int i = 0; i < MAX_SKILL_LEVEL; i++) + sk->req_equip.any[i] = false; + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Any"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int any_flag; + + if (libconfig->setting_lookup_bool(t, lv, &any_flag) == CONFIG_TRUE) + sk->req_equip.any[i] = (any_flag != 0); + } + + return; + } + + int any_flag; + + if (libconfig->setting_lookup_bool(conf, "Any", &any_flag) == CONFIG_TRUE && any_flag != 0) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) + sk->req_equip.any[i] = true; + } +} + +/** + * Validates a skill's required equipment when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the required equipment should be set it. + * + **/ +static void skill_validate_equip_requirements(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Equip"); + + if (t != NULL && config_setting_is_group(t)) { + skill->validate_equip_requirements_sub_any_flag(t, sk); + skill->validate_equip_requirements_sub_items(t, sk); + } +} + +/** + * Validates a required item's config setting name when reading the skill DB. + * + * @param name The config setting name to validate. + * @return The corresponding item ID if the passed config setting name is valid, otherwise 0. + * + **/ +static int skill_validate_requirements_item_name(const char *name) { - const char *type = NULL; + nullpo_ret(name); + + int item_id = 0; + + if (strlen(name) > 2 && name[0] == 'I' && name[1] == 'D') { + if ((item_id = atoi(name + 2)) == 0) + return 0; + struct item_data *it = itemdb->exists(item_id); + + if (it == NULL) + return 0; + + return it->nameid; + } + + if (!script->get_constant(name, &item_id)) + return 0; + + return item_id; +} + +/** + * Validates a skill's requirements when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the requirements should be set it. + * + **/ +static void skill_validate_requirements(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); nullpo_retv(sk); - if(libconfig->setting_lookup_string(conf, "Target", &type)) { - if(!strcmpi(type,"NotEnemy")) sk->unit_target = BCT_NOENEMY; - else if(!strcmpi(type,"NotParty")) sk->unit_target = BCT_NOPARTY; - else if (!strcmpi(type,"NotGuild")) sk->unit_target = BCT_NOGUILD; - else if(!strcmpi(type,"Friend")) sk->unit_target = BCT_NOENEMY; - else if(!strcmpi(type,"Party")) sk->unit_target = BCT_PARTY; - else if(!strcmpi(type,"Ally")) sk->unit_target = BCT_PARTY|BCT_GUILD; - else if(!strcmpi(type,"Guild")) sk->unit_target = BCT_GUILD; - else if(!strcmpi(type,"All")) sk->unit_target = BCT_ALL; - else if(!strcmpi(type,"Enemy")) sk->unit_target = BCT_ENEMY; - else if(!strcmpi(type,"Self")) sk->unit_target = BCT_SELF; - else if(!strcmpi(type,"SameGuild")) sk->unit_target = BCT_GUILD|BCT_SAMEGUILD; + struct config_setting_t *t = libconfig->setting_get_member(conf, "Requirements"); + + if (t != NULL && config_setting_is_group(t)) { + skill->validate_hp_cost(t, sk); + skill->validate_sp_cost(t, sk); + skill->validate_hp_rate_cost(t, sk); + skill->validate_sp_rate_cost(t, sk); + skill->validate_max_hp_trigger(t, sk); + skill->validate_max_sp_trigger(t, sk); + skill->validate_zeny_cost(t, sk); + skill->validate_weapontype(t, sk); + skill->validate_ammotype(t, sk); + skill->validate_ammo_amount(t, sk); + skill->validate_state(t, sk); + skill->validate_spirit_sphere_cost(t, sk); + skill->validate_item_requirements(t, sk); + skill->validate_equip_requirements(t, sk); } +} + +/** + * Validates a single unit ID when reading the skill DB. + * + * @param unit_id The unit ID to validate. + * @return A number greater than or equal to 0 if the passed unit ID is valid, otherwise -1. + * + **/ +static int skill_validate_unit_id_sub(int unit_id) +{ + if (unit_id == 0 || (unit_id >= UNT_SAFETYWALL && unit_id <= UNT_SV_ROOTTWIST)) + return unit_id; - if (sk->unit_flag & UF_DEFNOTENEMY && battle_config.defnotenemy) - sk->unit_target = BCT_NOENEMY; + return -1; +} - //By default, target just characters. - sk->unit_target |= BL_CHAR; +/** + * Validates a skill's unit IDs if specified as single value when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's unit ID data. + * @param sk The s_skill_db struct where the unit IDs should be set it. + * @param index The array index to use. (-1 for whole array.) + * @param unit_id The unit ID to validate. + * + **/ +static void skill_validate_unit_id_value(struct config_setting_t *conf, struct s_skill_db *sk, int index, int unit_id) +{ + nullpo_retv(conf); + nullpo_retv(sk); - if (sk->unit_flag & UF_NOPC) - sk->unit_target &= ~BL_PC; - if (sk->unit_flag & UF_NOMOB) - sk->unit_target &= ~BL_MOB; - if (sk->unit_flag & UF_SKILL) - sk->unit_target |= BL_SKILL; + if (skill->validate_unit_id_sub(unit_id) == -1) { + char level_string[14]; // Big enough to contain "in level 999 " in case of custom MAX_SKILL_LEVEL. + + if (index == -1) + *level_string = '\0'; + else + safesnprintf(level_string, sizeof(level_string), "in level %d ", index + 1); + + ShowWarning("%s: Invalid unit ID %d specified %sfor skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, unit_id, level_string, sk->nameid, conf->file); + + return; + } + + if (index == -1) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) + sk->unit_id[i][0] = unit_id; + } else { + sk->unit_id[index][0] = unit_id; + } } /** - * Validates the "Unit > Flag" setting - * when parsing skill_db.conf - * @param type const char, name of the flag being parsed. - * @param on boolean, switch for flag setting - * @param sk struct, pointer to s_skill_db. - * @return (void) - */ + * Validates a skill's unit IDs if specified as array when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's unit ID data. + * @param sk The s_skill_db struct where the unit IDs should be set it. + * @param index The array index to use. (-1 for whole array.) + * + **/ +static void skill_validate_unit_id_array(struct config_setting_t *conf, struct s_skill_db *sk, int index) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + char level_string[14]; // Big enough to contain "in level 999 " in case of custom MAX_SKILL_LEVEL. + + if (index == -1) + *level_string = '\0'; + else + safesnprintf(level_string, sizeof(level_string), "in level %d ", index + 1); + + if (libconfig->setting_length(conf) == 0) { + ShowWarning("%s: No unit ID(s) specified %sfor skill ID %d in %s! Defaulting to 0...\n", + __func__, level_string, sk->nameid, conf->file); + return; + } + + if (libconfig->setting_length(conf) > 2) + ShowWarning("%s: Specified more than two unit IDs %sfor skill ID %d in %s! Reading only the first two...\n", + __func__, level_string, sk->nameid, conf->file); + + int unit_id1 = libconfig->setting_get_int_elem(conf, 0); + + if (skill->validate_unit_id_sub(unit_id1) == -1) { + ShowWarning("%s: Invalid unit ID %d specified %sfor skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, unit_id1, level_string, sk->nameid, conf->file); + unit_id1 = 0; + } + + int unit_id2 = 0; + + if (libconfig->setting_length(conf) > 1) { + unit_id2 = libconfig->setting_get_int_elem(conf, 1); + + if (skill->validate_unit_id_sub(unit_id2) == -1) { + ShowWarning("%s: Invalid unit ID %d specified %sfor skill ID %d in %s! Must be greater than or equal to 0. Defaulting to 0...\n", + __func__, unit_id2, level_string, sk->nameid, conf->file); + unit_id2 = 0; + } + } + + if (unit_id1 == 0 && unit_id2 == 0) + return; + + if (index == -1) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + sk->unit_id[i][0] = unit_id1; + sk->unit_id[i][1] = unit_id2; + } + } else { + sk->unit_id[index][0] = unit_id1; + sk->unit_id[index][1] = unit_id2; + } +} + +/** + * Validates a skill's unit IDs if specified as group when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's unit ID data. + * @param sk The s_skill_db struct where the unit IDs should be set it. + * + **/ +static void skill_validate_unit_id_group(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + struct config_setting_t *t; + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + + if ((t = libconfig->setting_get_member(conf, lv)) != NULL && config_setting_is_array(t)) { + skill_validate_unit_id_array(t, sk, i); + continue; + } + + int unit_id; + + if (libconfig->setting_lookup_int(conf, lv, &unit_id) == CONFIG_TRUE) + skill_validate_unit_id_value(conf, sk, i, unit_id); + } +} + +/** + * Validates a skill's unit IDs when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the unit IDs should be set it. + * + **/ +static void skill_validate_unit_id(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + sk->unit_id[i][0] = 0; + sk->unit_id[i][1] = 0; + } + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Id"); + + if (t != NULL && config_setting_is_group(t)) { + skill_validate_unit_id_group(t, sk); + return; + } + + if (t != NULL && config_setting_is_array(t)) { + skill_validate_unit_id_array(t, sk, -1); + return; + } + + int unit_id; + + if (libconfig->setting_lookup_int(conf, "Id", &unit_id) == CONFIG_TRUE) + skill_validate_unit_id_value(conf, sk, -1, unit_id); +} + +/** + * Validates a skill's unit layout when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the unit layout should be set it. + * + **/ +static void skill_validate_unit_layout(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->unit_layout_type, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Layout"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int unit_layout; + + if (libconfig->setting_lookup_int(t, lv, &unit_layout) == CONFIG_TRUE) { + if (unit_layout >= -1 && unit_layout <= MAX_SKILL_UNIT_LAYOUT) + sk->unit_layout_type[i] = unit_layout; + else + ShowWarning("%s: Invalid unit layout %d specified in level %d for skill ID %d in %s! Minimum is -1, maximum is %d. Defaulting to 0...\n", + __func__, unit_layout, i + 1, sk->nameid, conf->file, MAX_SKILL_UNIT_LAYOUT); + } + } + + return; + } + + int unit_layout; + + if (libconfig->setting_lookup_int(conf, "Layout", &unit_layout) == CONFIG_TRUE) { + if (unit_layout >= -1 && unit_layout <= MAX_SKILL_UNIT_LAYOUT) + skill->level_set_value(sk->unit_layout_type, unit_layout); + else + ShowWarning("%s: Invalid unit layout %d specified for skill ID %d in %s! Minimum is -1, maximum is %d. Defaulting to 0...\n", + __func__, unit_layout, sk->nameid, conf->file, MAX_SKILL_UNIT_LAYOUT); + } +} + +/** + * Validates a skill's unit range when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the unit range should be set it. + * + **/ +static void skill_validate_unit_range(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->unit_range, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Range"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int unit_range; + + if (libconfig->setting_lookup_int(t, lv, &unit_range) == CONFIG_TRUE) { + if (unit_range >= -1 && unit_range <= UCHAR_MAX) + sk->unit_range[i] = unit_range; + else + ShowWarning("%s: Invalid unit range %d specified in level %d for skill ID %d in %s! Minimum is -1, maximum is %d. Defaulting to 0...\n", + __func__, unit_range, i + 1, sk->nameid, conf->file, UCHAR_MAX); + } + } + + return; + } + + int unit_range; + + if (libconfig->setting_lookup_int(conf, "Range", &unit_range) == CONFIG_TRUE) { + if (unit_range >= -1 && unit_range <= UCHAR_MAX) + skill->level_set_value(sk->unit_range, unit_range); + else + ShowWarning("%s: Invalid unit range %d specified for skill ID %d in %s! Minimum is -1, maximum is %d. Defaulting to 0...\n", + __func__, unit_range, sk->nameid, conf->file, UCHAR_MAX); + } +} + +/** + * Validates a skill's unit interval when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the unit interval should be set it. + * + **/ +static void skill_validate_unit_interval(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + skill->level_set_value(sk->unit_interval, 0); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Interval"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + int unit_interval; + + if (libconfig->setting_lookup_int(t, lv, &unit_interval) == CONFIG_TRUE) { + if (unit_interval >= INFINITE_DURATION) + sk->unit_interval[i] = unit_interval; + else + ShowWarning("%s: Invalid unit interval %d specified in level %d for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n", + __func__, unit_interval, i + 1, sk->nameid, conf->file, INFINITE_DURATION); + } + } + + return; + } + + int unit_interval; + + if (libconfig->setting_lookup_int(conf, "Interval", &unit_interval) == CONFIG_TRUE) { + if (unit_interval >= INFINITE_DURATION) + skill->level_set_value(sk->unit_interval, unit_interval); + else + ShowWarning("%s: Invalid unit interval %d specified for skill ID %d in %s! Must be greater than or equal to %d. Defaulting to 0...\n", + __func__, unit_interval, sk->nameid, conf->file, INFINITE_DURATION); + } +} + +/** + * Validates a single unit flag when reading the skill DB. + * + * @param type The unit flag to validate. + * @param on Whether the unit flag is set for the skill. + * @param sk The s_skill_db struct where the unit flag should be set it. + * @return 0 if the passed unit flag is valid, otherwise 1. + * + **/ static int skill_validate_unit_flag_sub(const char *type, bool on, struct s_skill_db *sk) { - nullpo_ret(type); - nullpo_ret(sk); + nullpo_retr(1, type); + nullpo_retr(1, sk); + if (strcmpi(type, "UF_DEFNOTENEMY") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_DEFNOTENEMY; - } else { + else sk->unit_flag &= ~UF_DEFNOTENEMY; - } } else if (strcmpi(type, "UF_NOREITERATION") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_NOREITERATION; - } else { + else sk->unit_flag &= ~UF_NOREITERATION; - } } else if (strcmpi(type, "UF_NOFOOTSET") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_NOFOOTSET; - } else { + else sk->unit_flag &= ~UF_NOFOOTSET; - } } else if (strcmpi(type, "UF_NOOVERLAP") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_NOOVERLAP; - } else { + else sk->unit_flag &= ~UF_NOOVERLAP; - } } else if (strcmpi(type, "UF_PATHCHECK") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_PATHCHECK; - } else { + else sk->unit_flag &= ~UF_PATHCHECK; - } } else if (strcmpi(type, "UF_NOPC") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_NOPC; - } else { + else sk->unit_flag &= ~UF_NOPC; - } } else if (strcmpi(type, "UF_NOMOB") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_NOMOB; - } else { + else sk->unit_flag &= ~UF_NOMOB; - } } else if (strcmpi(type, "UF_SKILL") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_SKILL; - } else { + else sk->unit_flag &= ~UF_SKILL; - } } else if (strcmpi(type, "UF_DANCE") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_DANCE; - } else { + else sk->unit_flag &= ~UF_DANCE; - } } else if (strcmpi(type, "UF_ENSEMBLE") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_ENSEMBLE; - } else { + else sk->unit_flag &= ~UF_ENSEMBLE; - } } else if (strcmpi(type, "UF_SONG") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_SONG; - } else { + else sk->unit_flag &= ~UF_SONG; - } } else if (strcmpi(type, "UF_DUALMODE") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_DUALMODE; - } else { + else sk->unit_flag &= ~UF_DUALMODE; - } } else if (strcmpi(type, "UF_RANGEDSINGLEUNIT") == 0) { - if (on) { + if (on) sk->unit_flag |= UF_RANGEDSINGLEUNIT; - } else { + else sk->unit_flag &= ~UF_RANGEDSINGLEUNIT; - } } else { - return 1; // Invalid Type + return 1; } return 0; } /** - * Validate "Unit > Flag" setting - * when parsing skill_db.conf - * @param conf struct, pointer to the skill configuration - * @param sk struct, struct, pointer to s_skill_db - * @return (void) - */ + * Validates a skill's unit flags when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the unit flags should be set it. + * + **/ static void skill_validate_unit_flag(struct config_setting_t *conf, struct s_skill_db *sk) { - struct config_setting_t *t = NULL; + nullpo_retv(conf); + nullpo_retv(sk); + + sk->unit_flag = 0; + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Flag"); + + if (t != NULL && config_setting_is_group(t)) { + struct config_setting_t *tt; + int i = 0; + + while ((tt = libconfig->setting_get_elem(t, i++)) != NULL) { + bool on = libconfig->setting_get_bool_real(tt); + + if (skill->validate_unit_flag_sub(config_setting_name(tt), on, sk)) + ShowWarning("%s: Invalid unit flag %s specified for skill ID %d in %s! Skipping flag...\n", + __func__, config_setting_name(tt), sk->nameid, conf->file); + } + } +} + +/** + * Validates a single unit target when reading the skill DB. + * + * @param target The unit target to validate. + * @return A number greater than or equal to 0 if the passed unit target is valid, otherwise -1. + * + **/ +static int skill_validate_unit_target_sub(const char *target) +{ + nullpo_retr(-1, target); + + int ret_val = BCT_NOONE; + + if (strcmpi(target, "NotEnemy") == 0) + ret_val = BCT_NOENEMY; + else if (strcmpi(target, "NotParty") == 0) + ret_val = BCT_NOPARTY; + else if (strcmpi(target, "NotGuild") == 0) + ret_val = BCT_NOGUILD; + else if (strcmpi(target, "Friend") == 0) + ret_val = BCT_NOENEMY; + else if (strcmpi(target, "Party") == 0) + ret_val = BCT_PARTY; + else if (strcmpi(target, "Ally") == 0) + ret_val = BCT_PARTY|BCT_GUILD; + else if (strcmpi(target, "Guild") == 0) + ret_val = BCT_GUILD; + else if (strcmpi(target, "All") == 0) + ret_val = BCT_ALL; + else if (strcmpi(target, "Enemy") == 0) + ret_val = BCT_ENEMY; + else if (strcmpi(target, "Self") == 0) + ret_val = BCT_SELF; + else if (strcmpi(target, "SameGuild") == 0) + ret_val = BCT_SAMEGUILD; + else if (strcmpi(target, "GuildAlly") == 0) + ret_val = BCT_GUILDALLY; + else if (strcmpi(target, "Neutral") == 0) + ret_val = BCT_NEUTRAL; + else if (strcmpi(target, "None") != 0) + ret_val = -1; + + return ret_val; +} +/** + * Validates a skill's unit targets when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the unit targets should be set it. + * + **/ +static void skill_validate_unit_target(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); nullpo_retv(sk); - if ((t=libconfig->setting_get_member(conf, "Flag")) && config_setting_is_group(t)) { - int j=0; - struct config_setting_t *tt = NULL; - while ((tt = libconfig->setting_get_elem(t, j++))) { - const char *name = config_setting_name(tt); - if (skill->validate_unit_flag_sub(name, libconfig->setting_get_bool_real(tt), sk)) - skilldb_invalid_error(name, config_setting_name(t), sk->nameid); + skill->level_set_value(sk->unit_target, BCT_NOONE); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Target"); + + if (t != NULL && config_setting_is_group(t)) { + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + char lv[6]; // Big enough to contain "Lv999" in case of custom MAX_SKILL_LEVEL. + safesnprintf(lv, sizeof(lv), "Lv%d", i + 1); + const char *unit_target; + + if (libconfig->setting_lookup_string(t, lv, &unit_target) == CONFIG_TRUE) { + int target = skill->validate_unit_target_sub(unit_target); + + if (target > BCT_NOONE) + sk->unit_target[i] = target; + else if (target == -1) + ShowWarning("%s: Invalid unit target %s specified in level %d for skill ID %d in %s! Defaulting to None...\n", + __func__, unit_target, i + 1, sk->nameid, conf->file); + } + } + } else { + const char *unit_target; + + if (libconfig->setting_lookup_string(conf, "Target", &unit_target) == CONFIG_TRUE) { + int target = skill->validate_unit_target_sub(unit_target); + + if (target > BCT_NOONE) + skill->level_set_value(sk->unit_target, target); + else if (target == -1) + ShowWarning("%s: Invalid unit target %s specified for skill ID %d in %s! Defaulting to None...\n", + __func__, unit_target, sk->nameid, conf->file); } } + + for (int i = 0; i < MAX_SKILL_LEVEL; i++) { + if ((sk->unit_flag & UF_DEFNOTENEMY) != 0 && battle_config.defnotenemy != 0) + sk->unit_target[i] = BCT_NOENEMY; + + // By default target just characters. + sk->unit_target[i] |= BL_CHAR; + + if ((sk->unit_flag & UF_NOPC) != 0) + sk->unit_target[i] &= ~BL_PC; + + if ((sk->unit_flag & UF_NOMOB) != 0) + sk->unit_target[i] &= ~BL_MOB; + + if ((sk->unit_flag & UF_SKILL) != 0) + sk->unit_target[i] |= BL_SKILL; + } } + +/** + * Validates a skill's unit data when reading the skill DB. + * + * @param conf The libconfig settings block which contains the skill's data. + * @param sk The s_skill_db struct where the unit data should be set it. + * + **/ +static void skill_validate_unit(struct config_setting_t *conf, struct s_skill_db *sk) +{ + nullpo_retv(conf); + nullpo_retv(sk); + + struct config_setting_t *t = libconfig->setting_get_member(conf, "Unit"); + + if (t != NULL && config_setting_is_group(t)) { + skill->validate_unit_id(t, sk); + skill->validate_unit_layout(t, sk); + skill->validate_unit_range(t, sk); + skill->validate_unit_interval(t, sk); + skill->validate_unit_flag(t, sk); + skill->validate_unit_target(t, sk); + } +} + /** * Validate additional field settings via plugins * when parsing skill_db.conf @@ -21097,293 +23727,100 @@ static void skill_validate_additional_fields(struct config_setting_t *conf, stru } /** - * Validates a skill entry and adds it to the database. [ Smokexyz/Hercules ] - * @param sk contains skill data to be checked. - * @param *source filepath constant. - * @return boolean true on success. - */ -static bool skill_validate_skilldb(struct s_skill_db *sk, const char *source) + * Reads a skill DB file from relative path. + * + * @param filename The skill DB's file name including the DB path. + * @return True on success, otherwise false. + * + **/ +static bool skill_read_skilldb(const char *filename) { - int idx; + nullpo_retr(false, filename); - nullpo_retr(false, sk); - idx = skill->get_index(sk->nameid); - if (idx == 0) { - ShowWarning("skill_validate_skilldb: Invalid skill Id %d provided in '%s'! ... skipping\n", sk->nameid, source); - ShowInfo("It is possible that the skill Id is 0 or unavailable (interferes with guild/homun/mercenary skill mapping).\n"); - return false; - } else if (sk->max <= 0) { - ShowError("skill_validate_skilldb: Invalid Max Level %d specified for skill Id %d in '%s', skipping...\n", sk->max, sk->nameid, source); - return false; - } + char filepath[256]; - /* Direct assignment of temporary skill storage to skill db */ - skill->dbs->db[idx] = *sk; - /* Put skill name in name2id DB */ - strdb_iput(skill->name2id_db, skill->dbs->db[idx].name, skill->dbs->db[idx].nameid); - /* Set Name to Id script constants */ - script->set_constant2(skill->dbs->db[idx].name, (int)skill->dbs->db[idx].nameid, false, false); + libconfig->format_db_path(filename, filepath, sizeof(filepath)); - return true; -} + if (!exists(filepath)) { + ShowError("%s: Can't find file %s! Abort reading skills...\n", __func__, filepath); + return false; + } -/** - * Reads skill_db.conf from relative filepath and processes [ Smokexyz/Hercules ] - * entries into the skill database. - * @param filename contains the file path and name. - * @return boolean true on success - */ -static bool skill_read_skilldb(const char *filename) -{ struct config_t skilldb; - struct config_setting_t *sk, *conf; - char filepath[256]; - int count=0, index=0; - bool duplicate[MAX_SKILL_DB] = {0}; - - nullpo_retr(false, filename); - - libconfig->format_db_path(filename, filepath, sizeof(filepath)); - if (!libconfig->load_file(&skilldb, filepath)) { + if (libconfig->load_file(&skilldb, filepath) == 0) return false; // Libconfig error report. - } - // Possible Syntax error. - if ((sk=libconfig->setting_get_member(skilldb.root, "skill_db")) == NULL) { - ShowError("skill_read_skilldb: Skill DB could not be loaded, please check '%s'.\n", filepath); + struct config_setting_t *sk = libconfig->setting_get_member(skilldb.root, "skill_db"); + + if (sk == NULL) { + ShowError("%s: Skill DB could not be loaded! Please check %s.\n", __func__, filepath); libconfig->destroy(&skilldb); return false; } - while ((conf = libconfig->setting_get_elem(sk,index++))) { - int idx=0, skill_id=0, temp=0; - struct config_setting_t *t = NULL, *tt = NULL; - struct s_skill_db tmp_db = { 0 }; - - /* Skill ID */ - if (!libconfig->setting_lookup_int(conf, "Id", &skill_id)) { - ShowError("skill_read_skilldb: Skill Id not specified for entry %d in '%s', skipping...\n", index, filepath ); - continue; - } + struct config_setting_t *conf; + int index = 0; + int count = 0; - tmp_db.nameid = skill_id; - - if((idx = skill->get_index(skill_id)) == 0) { - ShowError("skill_read_skilldb: Skill Id %d is out of range, or within a reserved range (for guild, homunculus, mercenary or elemental skills). skipping...\n", idx); - continue; - } + while ((conf = libconfig->setting_get_elem(sk, index++)) != NULL) { + struct s_skill_db tmp_db = {0}; - if (duplicate[idx]) { - ShowWarning("skill_read_skilldb: Duplicate Skill Id %d in entry %d in '%s', skipping...\n", skill_id, index, filepath); + /** Validate mandatory fields. **/ + skill->validate_id(conf, &tmp_db, index); + if (tmp_db.nameid == 0) continue; - } - /* Skill Name Constant */ - if (!libconfig->setting_lookup_mutable_string(conf, "Name", tmp_db.name, sizeof(tmp_db.name))) { - ShowError("skill_read_skilldb: Name not specified for skill Id %d in '%s', skipping...\n", skill_id, filepath); + skill->validate_name(conf, &tmp_db); + if (*tmp_db.name == '\0') continue; - } - - /* Skill Description */ - libconfig->setting_lookup_mutable_string(conf, "Description", tmp_db.desc, sizeof(tmp_db.desc)); - /* Max Level */ - if (!libconfig->setting_lookup_int(conf, "MaxLevel", &temp)) { - ShowError("skill_read_skilldb: MaxLevel not specified for skill Id %d in '%s', skipping...\n", skill_id, filepath); + skill->validate_max_level(conf, &tmp_db); + if (tmp_db.max == 0) continue; - } else { - tmp_db.max = temp; - } - /* Range */ - if ((t=libconfig->setting_get_member(conf, "Range"))) - skill->config_set_level(t, tmp_db.range); - - /* Hit Type */ + /** Validate optional fields. **/ + skill->validate_description(conf, &tmp_db); + skill->validate_range(conf, &tmp_db); skill->validate_hittype(conf, &tmp_db); - - /* Skill Type */ skill->validate_skilltype(conf, &tmp_db); - - /* Skill Info */ skill->validate_skillinfo(conf, &tmp_db); - - /* Skill Attack Type */ skill->validate_attacktype(conf, &tmp_db); - - /* Skill Element */ skill->validate_element(conf, &tmp_db); - - /* Damage Type */ skill->validate_damagetype(conf, &tmp_db); - - /* Splash Range */ - if ((t = libconfig->setting_get_member(conf, "SplashRange"))) - skill->config_set_level(t, tmp_db.splash); - - /* Number of Hits */ - if ((t = libconfig->setting_get_member(conf, "NumberOfHits")) && config_setting_is_group(t)) - skill->config_set_level(t, tmp_db.num); - else if ((libconfig->setting_lookup_int(conf, "NumberOfHits", &temp))) - skill->level_set_value(tmp_db.num, temp); - else - skill->level_set_value(tmp_db.num, 1); // Default 1 - - /* Interrupt Cast */ - if (libconfig->setting_lookup_bool(conf, "InterruptCast", &tmp_db.castcancel) == CONFIG_FALSE) - tmp_db.castcancel = 0; - - /* Cast Defense Rate */ - libconfig->setting_lookup_int(conf, "CastDefRate", &tmp_db.cast_def_rate); - - /* Skill Instances */ - if ((t = libconfig->setting_get_member(conf, "SkillInstances"))) - skill->config_set_level(t, tmp_db.maxcount); - - /* Knock-Back Tiles */ - if ((t = libconfig->setting_get_member(conf, "KnockBackTiles"))) - skill->config_set_level(t, tmp_db.blewcount); - /** - * Skill Cast / Delay data handling - */ - /* Cast Time */ - if ((t=libconfig->setting_get_member(conf, "CastTime"))) - skill->config_set_level(t, tmp_db.cast); - - /* After Cast Act Delay */ - if ((t=libconfig->setting_get_member(conf, "AfterCastActDelay"))) - skill->config_set_level(t, tmp_db.delay); - - /* After Cast Walk Delay */ - if ((t=libconfig->setting_get_member(conf, "AfterCastWalkDelay"))) - skill->config_set_level(t, tmp_db.walkdelay); - - /* Skill Data/Duration */ - if ((t=libconfig->setting_get_member(conf, "SkillData1"))) - skill->config_set_level(t, tmp_db.upkeep_time); - - /* Skill Data/Duration 2 */ - if ((t=libconfig->setting_get_member(conf, "SkillData2"))) - skill->config_set_level(t, tmp_db.upkeep_time2); - - /* Skill Cool Down */ - if ((t=libconfig->setting_get_member(conf, "CoolDown"))) - skill->config_set_level(t, tmp_db.cooldown); - -#ifdef RENEWAL_CAST - /* Fixed Casting Time */ - if ((t=libconfig->setting_get_member(conf, "FixedCastTime"))) - skill->config_set_level(t, tmp_db.fixed_cast); -#endif - /* Cast Time Options */ + skill->validate_splash_range(conf, &tmp_db); + skill->validate_number_of_hits(conf, &tmp_db); + skill->validate_interrupt_cast(conf, &tmp_db); + skill->validate_cast_def_rate(conf, &tmp_db); + skill->validate_number_of_instances(conf, &tmp_db); + skill->validate_knock_back_tiles(conf, &tmp_db); + skill->validate_cast_time(conf, &tmp_db); + skill->validate_act_delay(conf, &tmp_db); + skill->validate_walk_delay(conf, &tmp_db); + skill->validate_skill_data1(conf, &tmp_db); + skill->validate_skill_data2(conf, &tmp_db); + skill->validate_cooldown(conf, &tmp_db); + skill->validate_fixed_cast_time(conf, &tmp_db); skill->validate_castnodex(conf, &tmp_db, false); skill->validate_castnodex(conf, &tmp_db, true); + skill->validate_requirements(conf, &tmp_db); + skill->validate_unit(conf, &tmp_db); - /** - * Skill Requirements data handling - */ - if ((t=libconfig->setting_get_member(conf, "Requirements")) && config_setting_is_group(t)) { - - /* HP Costs */ - if ((tt = libconfig->setting_get_member(t, "HPCost"))) - skill->config_set_level(tt, tmp_db.hp); - - /* Max HP Trigger */ - if ((tt = libconfig->setting_get_member(t, "MaxHPTrigger"))) - skill->config_set_level(tt, tmp_db.mhp); - - /* SP Cost */ - if ((tt = libconfig->setting_get_member(t, "SPCost"))) - skill->config_set_level(tt, tmp_db.sp); - - /* HP Rate */ - if ((tt = libconfig->setting_get_member(t, "HPRateCost"))) - skill->config_set_level(tt, tmp_db.hp_rate); - - /* SP Rate */ - if ((tt = libconfig->setting_get_member(t, "SPRateCost"))) - skill->config_set_level(tt, tmp_db.sp_rate); - - /* Zeny Cost */ - if ((tt = libconfig->setting_get_member(t, "ZenyCost"))) - skill->config_set_level(tt, tmp_db.zeny); - - /* Spirit Sphere Cost */ - if ((tt = libconfig->setting_get_member(t, "SpiritSphereCost"))) - skill->config_set_level(tt, tmp_db.spiritball); - - /* Weapon Types */ - skill->validate_weapontype(t, &tmp_db); - - /* Ammunition Types */ - skill->validate_ammotype(t, &tmp_db); - - /* Ammunition Amount */ - if ((tt = libconfig->setting_get_member(t, "AmmoAmount"))) - skill->config_set_level(tt, tmp_db.ammo_qty); - - /* State */ - skill->validate_state(t, &tmp_db); - - /* Spirit Sphere Cost */ - if ((tt = libconfig->setting_get_member(t, "SpiritSphereCost"))) - skill->config_set_level(tt, tmp_db.spiritball); - - /* Item Requirements and Amounts */ - skill->validate_item_requirements(t, &tmp_db); - } - - /** - * Skill Unit data handling - */ - if ((t=libconfig->setting_get_member(conf, "Unit")) && config_setting_is_group(t)) { - - /* Unit IDs [1,2] */ - if ((tt=libconfig->setting_get_member(t, "Id")) && config_setting_is_array(tt)) { - tmp_db.unit_id[0] = libconfig->setting_get_int_elem(tt, 0); - tmp_db.unit_id[1] = libconfig->setting_get_int_elem(tt, 1); - } else { - libconfig->setting_lookup_int(t, "Id", &tmp_db.unit_id[0]); - } - - /* Layout */ - if((tt=libconfig->setting_get_member(t, "Layout"))) - skill->config_set_level(tt, tmp_db.unit_layout_type); - - /* Range */ - if((tt=libconfig->setting_get_member(t, "Range"))) - skill->config_set_level(tt, tmp_db.unit_range); - - /* Interval */ - if(libconfig->setting_lookup_int(t, "Interval", &temp)) - tmp_db.unit_interval = temp; - - /* Flag */ - skill->validate_unit_flag(t, &tmp_db); - - /* Target */ - skill->validate_unit_target(t, &tmp_db); - } - - /* Additional Fields for Plugins */ + /** Validate additional fields for plugins. **/ skill->validate_additional_fields(conf, &tmp_db); - // Validate the skill entry, add it to the duplicate array and increment count on success. - if ((duplicate[idx] = skill->validate_skilldb(&tmp_db, filepath))) - count++; + /** Add the skill. **/ + skill->dbs->db[skill->get_index(tmp_db.nameid)] = tmp_db; + strdb_iput(skill->name2id_db, tmp_db.name, tmp_db.nameid); + script->set_constant2(tmp_db.name, tmp_db.nameid, false, false); + count++; } libconfig->destroy(&skilldb); - ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filepath); - return true; } -#undef skilldb_duplicate_warning -#undef skilldb_invalid_error - /*=============================== * DB reading. * produce_db.txt @@ -21562,13 +23999,19 @@ void skill_defaults(void) skill->get_splash = skill_get_splash; skill->get_hp = skill_get_hp; skill->get_mhp = skill_get_mhp; + skill->get_msp = skill_get_msp; skill->get_sp = skill_get_sp; skill->get_hp_rate = skill_get_hp_rate; skill->get_sp_rate = skill_get_sp_rate; skill->get_state = skill_get_state; skill->get_spiritball = skill_get_spiritball; + skill->get_item_index = skill_get_item_index; skill->get_itemid = skill_get_itemid; skill->get_itemqty = skill_get_itemqty; + skill->get_item_any_flag = skill_get_item_any_flag; + skill->get_equip_id = skill_get_equip_id; + skill->get_equip_amount = skill_get_equip_amount; + skill->get_equip_any_flag = skill_get_equip_any_flag; skill->get_zeny = skill_get_zeny; skill->get_num = skill_get_num; skill->get_cast = skill_get_cast; @@ -21627,9 +24070,12 @@ void skill_defaults(void) skill->cast_fix_sc = skill_castfix_sc; skill->vf_cast_fix = skill_vfcastfix; skill->delay_fix = skill_delay_fix; - skill->is_item_skill = skill_is_item_skill; + skill->check_condition_required_equip = skill_check_condition_required_equip; skill->check_condition_castbegin = skill_check_condition_castbegin; + skill->check_condition_required_items = skill_check_condition_required_items; + skill->items_required = skill_items_required; skill->check_condition_castend = skill_check_condition_castend; + skill->get_any_item_index = skill_get_any_item_index; skill->consume_requirement = skill_consume_requirement; skill->get_requirement = skill_get_requirement; skill->check_pc_partner = skill_check_pc_partner; @@ -21653,6 +24099,7 @@ void skill_defaults(void) skill->not_ok_hom = skillnotok_hom; skill->not_ok_hom_unknown = skillnotok_hom_unknown; skill->not_ok_mercenary = skillnotok_mercenary; + skill->validate_autocast_data = skill_validate_autocast_data; skill->chastle_mob_changetarget = skill_chastle_mob_changetarget; skill->can_produce_mix = skill_can_produce_mix; skill->produce_mix = skill_produce_mix; @@ -21713,24 +24160,68 @@ void skill_defaults(void) skill->init_unit_layout = skill_init_unit_layout; skill->init_unit_layout_unknown = skill_init_unit_layout_unknown; /* Skill DB Libconfig */ + skill->validate_id = skill_validate_id; + skill->name_contains_invalid_character = skill_name_contains_invalid_character; + skill->validate_name = skill_validate_name; + skill->validate_max_level = skill_validate_max_level; + skill->validate_description = skill_validate_description; + skill->validate_range = skill_validate_range; skill->validate_hittype = skill_validate_hittype; - skill->validate_attacktype = skill_validate_attacktype; - skill->validate_element = skill_validate_element; skill->validate_skilltype = skill_validate_skilltype; skill->validate_skillinfo = skill_validate_skillinfo; + skill->validate_attacktype = skill_validate_attacktype; + skill->validate_element = skill_validate_element; skill->validate_damagetype = skill_validate_damagetype; + skill->validate_splash_range = skill_validate_splash_range; + skill->validate_number_of_hits = skill_validate_number_of_hits; + skill->validate_interrupt_cast = skill_validate_interrupt_cast; + skill->validate_cast_def_rate = skill_validate_cast_def_rate; + skill->validate_number_of_instances = skill_validate_number_of_instances; + skill->validate_knock_back_tiles = skill_validate_knock_back_tiles; + skill->validate_cast_time = skill_validate_cast_time; + skill->validate_act_delay = skill_validate_act_delay; + skill->validate_walk_delay = skill_validate_walk_delay; + skill->validate_skill_data1 = skill_validate_skill_data1; + skill->validate_skill_data2 = skill_validate_skill_data2; + skill->validate_cooldown = skill_validate_cooldown; + skill->validate_fixed_cast_time = skill_validate_fixed_cast_time; skill->validate_castnodex = skill_validate_castnodex; + skill->validate_hp_cost = skill_validate_hp_cost; + skill->validate_sp_cost = skill_validate_sp_cost; + skill->validate_hp_rate_cost = skill_validate_hp_rate_cost; + skill->validate_sp_rate_cost = skill_validate_sp_rate_cost; + skill->validate_max_hp_trigger = skill_validate_max_hp_trigger; + skill->validate_max_sp_trigger = skill_validate_max_sp_trigger; + skill->validate_zeny_cost = skill_validate_zeny_cost; + skill->validate_weapontype_sub = skill_validate_weapontype_sub; skill->validate_weapontype = skill_validate_weapontype; + skill->validate_ammotype_sub = skill_validate_ammotype_sub; skill->validate_ammotype = skill_validate_ammotype; + skill->validate_ammo_amount = skill_validate_ammo_amount; + skill->validate_state_sub = skill_validate_state_sub; skill->validate_state = skill_validate_state; + skill->validate_spirit_sphere_cost = skill_validate_spirit_sphere_cost; + skill->validate_item_requirements_sub_item_amount = skill_validate_item_requirements_sub_item_amount; + skill->validate_item_requirements_sub_items = skill_validate_item_requirements_sub_items; + skill->validate_item_requirements_sub_any_flag = skill_validate_item_requirements_sub_any_flag; skill->validate_item_requirements = skill_validate_item_requirements; - skill->validate_unit_target = skill_validate_unit_target; + skill->validate_equip_requirements_sub_item_amount = skill_validate_equip_requirements_sub_item_amount; + skill->validate_equip_requirements_sub_items = skill_validate_equip_requirements_sub_items; + skill->validate_equip_requirements_sub_any_flag = skill_validate_equip_requirements_sub_any_flag; + skill->validate_equip_requirements = skill_validate_equip_requirements; + skill->validate_requirements_item_name = skill_validate_requirements_item_name; + skill->validate_requirements = skill_validate_requirements; + skill->validate_unit_id_sub = skill_validate_unit_id_sub; + skill->validate_unit_id = skill_validate_unit_id; + skill->validate_unit_layout = skill_validate_unit_layout; + skill->validate_unit_range = skill_validate_unit_range; + skill->validate_unit_interval = skill_validate_unit_interval; + skill->validate_unit_flag_sub = skill_validate_unit_flag_sub; skill->validate_unit_flag = skill_validate_unit_flag; + skill->validate_unit_target_sub = skill_validate_unit_target_sub; + skill->validate_unit_target = skill_validate_unit_target; + skill->validate_unit = skill_validate_unit; skill->validate_additional_fields = skill_validate_additional_fields; - skill->validate_skilldb = skill_validate_skilldb; - skill->validate_weapontype_sub = skill_validate_weapontype_sub; - skill->validate_ammotype_sub = skill_validate_ammotype_sub; - skill->validate_unit_flag_sub = skill_validate_unit_flag_sub; skill->read_skilldb = skill_read_skilldb; skill->config_set_level = skill_config_set_level; skill->level_set_value = skill_level_set_value; @@ -21793,4 +24284,5 @@ void skill_defaults(void) skill->splash_target = skill_splash_target; skill->check_npc_chaospanic = skill_check_npc_chaospanic; skill->count_wos = skill_count_wos; + skill->get_linked_song_dance_id = skill_get_linked_song_dance_id; } diff --git a/src/map/skill.h b/src/map/skill.h index eff9ed7fc..fdeaefe01 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -23,6 +23,7 @@ #include "map/map.h" // struct block_list #include "map/status.h" // enum sc_type +#include "map/unitdefines.h" // enum unit_dir #include "common/hercules.h" #include "common/db.h" #include "common/mmo.h" // MAX_SKILL_DB, struct square @@ -49,7 +50,7 @@ struct status_change_entry; #define MAX_ARROW_RESOURCE 5 #define MAX_SKILL_ABRA_DB 210 #define MAX_SKILL_IMPROVISE_DB 30 -#define MAX_SKILL_LEVEL 10 +#define MAX_SKILL_LEVEL 20 #define MAX_SKILL_UNIT_LAYOUT 45 #define MAX_SQUARE_LAYOUT 5 // 11*11 Placement of a maximum unit #define MAX_SKILL_UNIT_COUNT ((MAX_SQUARE_LAYOUT*2+1)*(MAX_SQUARE_LAYOUT*2+1)) @@ -59,6 +60,10 @@ struct status_change_entry; #define MAX_SKILLUNITGROUPTICKSET 25 #define MAX_SKILL_NAME_LENGTH 32 +#ifndef MAX_SKILL_DESC_LENGTH + #define MAX_SKILL_DESC_LENGTH 50 +#endif + // Custom Skill Ranges is used in skill_get_index, to allocate indexes based on ID and gaps between 2 SkillID #ifndef CUSTOM_SKILL_RANGES #define CUSTOM_SKILL_RANGES @@ -1723,41 +1728,83 @@ enum { UNT_MAX = 0x190 }; +/** Constants to identify the auto-cast type. **/ +enum autocast_type { + AUTOCAST_NONE = 0, + AUTOCAST_TEMP, // Used when type is only required during the execution of the calling instance. (For example bAutoSpell* skills.) + AUTOCAST_ABRA, // Used for Abracadabra (Hocus pocus). + AUTOCAST_IMPROVISE, // Used for Improvised Song. + AUTOCAST_ITEM, // Used for itemskill() script command. +}; + +/** Constants for allowed skill use while interacting with NPC. **/ +enum skill_enabled_npc_flags { + SKILLENABLEDNPC_NONE = 0, //!< Don't allow using any skills while interacting with NPC. + SKILLENABLEDNPC_SELF = 1, //!< Allow using non-damaging self skills while interacting with NPC. + SKILLENABLEDNPC_ALL = 2, //!< Allow using all skills while interacting with NPC. +}; + /** * Structures **/ +/** A container holding all required items. **/ +struct skill_required_item_data { + struct { + int id; + int amount[MAX_SKILL_LEVEL]; + } item[MAX_SKILL_ITEM_REQUIRE]; + bool any[MAX_SKILL_LEVEL]; +}; + struct skill_condition { int weapon,ammo,ammo_qty,hp,sp,zeny,spiritball,mhp,state; + int msp; int itemid[MAX_SKILL_ITEM_REQUIRE],amount[MAX_SKILL_ITEM_REQUIRE]; + int equip_id[MAX_SKILL_ITEM_REQUIRE]; + int equip_amount[MAX_SKILL_ITEM_REQUIRE]; }; // Database skills struct s_skill_db { int nameid; - char name[MAX_SKILL_NAME_LENGTH]; - char desc[40]; - int range[MAX_SKILL_LEVEL],hit,inf,element[MAX_SKILL_LEVEL],nk,splash[MAX_SKILL_LEVEL],max; + char name[MAX_SKILL_NAME_LENGTH + 1]; + char desc[MAX_SKILL_DESC_LENGTH + 1]; + int range[MAX_SKILL_LEVEL]; + int hit[MAX_SKILL_LEVEL]; + int inf; + int element[MAX_SKILL_LEVEL]; + int nk; + int splash[MAX_SKILL_LEVEL]; + int max; int num[MAX_SKILL_LEVEL]; int cast[MAX_SKILL_LEVEL],walkdelay[MAX_SKILL_LEVEL],delay[MAX_SKILL_LEVEL]; #ifdef RENEWAL_CAST int fixed_cast[MAX_SKILL_LEVEL]; #endif int upkeep_time[MAX_SKILL_LEVEL],upkeep_time2[MAX_SKILL_LEVEL],cooldown[MAX_SKILL_LEVEL]; - int castcancel,cast_def_rate; - int inf2,maxcount[MAX_SKILL_LEVEL],skill_type; + int castcancel[MAX_SKILL_LEVEL]; + int cast_def_rate[MAX_SKILL_LEVEL]; + int inf2; + int maxcount[MAX_SKILL_LEVEL]; + int skill_type[MAX_SKILL_LEVEL]; int blewcount[MAX_SKILL_LEVEL]; int hp[MAX_SKILL_LEVEL],sp[MAX_SKILL_LEVEL],mhp[MAX_SKILL_LEVEL],hp_rate[MAX_SKILL_LEVEL],sp_rate[MAX_SKILL_LEVEL],zeny[MAX_SKILL_LEVEL]; - int weapon,ammo,ammo_qty[MAX_SKILL_LEVEL],state,spiritball[MAX_SKILL_LEVEL]; - int itemid[MAX_SKILL_ITEM_REQUIRE],amount[MAX_SKILL_ITEM_REQUIRE]; + int msp[MAX_SKILL_LEVEL]; + int weapon; + int ammo; + int ammo_qty[MAX_SKILL_LEVEL]; + int state[MAX_SKILL_LEVEL]; + int spiritball[MAX_SKILL_LEVEL]; int castnodex[MAX_SKILL_LEVEL], delaynodex[MAX_SKILL_LEVEL]; - int nocast; - int unit_id[2]; + int unit_id[MAX_SKILL_LEVEL][2]; int unit_layout_type[MAX_SKILL_LEVEL]; int unit_range[MAX_SKILL_LEVEL]; - int unit_interval; - int unit_target; + int unit_interval[MAX_SKILL_LEVEL]; + int unit_target[MAX_SKILL_LEVEL]; int unit_flag; + struct skill_required_item_data req_items; + struct skill_required_item_data req_equip; }; struct s_skill_unit_layout { @@ -1943,8 +1990,8 @@ struct skill_interface { int unit_group_newid; /* accesssors */ int (*get_index) (int skill_id); - int (*get_type) (int skill_id); - int (*get_hit) (int skill_id); + int (*get_type) (int skill_id, int skill_lv); + int (*get_hit) (int skill_id, int skill_lv); int (*get_inf) (int skill_id); int (*get_ele) (int skill_id, int skill_lv); int (*get_nk) (int skill_id); @@ -1954,13 +2001,19 @@ struct skill_interface { int (*get_splash) (int skill_id, int skill_lv); int (*get_hp) (int skill_id, int skill_lv); int (*get_mhp) (int skill_id, int skill_lv); + int (*get_msp) (int skill_id, int skill_lv); int (*get_sp) (int skill_id, int skill_lv); int (*get_hp_rate) (int skill_id, int skill_lv); int (*get_sp_rate) (int skill_id, int skill_lv); - int (*get_state) (int skill_id); + int (*get_state) (int skill_id, int skill_lv); int (*get_spiritball) (int skill_id, int skill_lv); + int (*get_item_index) (int skill_id, int skill_lv); int (*get_itemid) (int skill_id, int item_idx); - int (*get_itemqty) (int skill_id, int item_idx); + int (*get_itemqty) (int skill_id, int item_idx, int skill_lv); + bool (*get_item_any_flag) (int skill_id, int skill_lv); + int (*get_equip_id) (int skill_id, int item_idx); + int (*get_equip_amount) (int skill_id, int item_idx, int skill_lv); + bool (*get_equip_any_flag) (int skill_id, int skill_lv); int (*get_zeny) (int skill_id, int skill_lv); int (*get_num) (int skill_id, int skill_lv); int (*get_cast) (int skill_id, int skill_lv); @@ -1970,19 +2023,19 @@ struct skill_interface { int (*get_time2) (int skill_id, int skill_lv); int (*get_castnodex) (int skill_id, int skill_lv); int (*get_delaynodex) (int skill_id, int skill_lv); - int (*get_castdef) (int skill_id); + int (*get_castdef) (int skill_id, int skill_lv); int (*get_weapontype) (int skill_id); int (*get_ammotype) (int skill_id); int (*get_ammo_qty) (int skill_id, int skill_lv); - int (*get_unit_id) (int skill_id, int flag); + int (*get_unit_id) (int skill_id, int skill_lv, int flag); int (*get_inf2) (int skill_id); - int (*get_castcancel) (int skill_id); + int (*get_castcancel) (int skill_id, int skill_lv); int (*get_maxcount) (int skill_id, int skill_lv); int (*get_blewcount) (int skill_id, int skill_lv); int (*get_unit_flag) (int skill_id); - int (*get_unit_target) (int skill_id); - int (*get_unit_interval) (int skill_id); - int (*get_unit_bl_target) (int skill_id); + int (*get_unit_target) (int skill_id, int skill_lv); + int (*get_unit_interval) (int skill_id, int skill_lv); + int (*get_unit_bl_target) (int skill_id, int skill_lv); int (*get_unit_layout_type) (int skill_id, int skill_lv); int (*get_unit_range) (int skill_id, int skill_lv); int (*get_cooldown) (int skill_id, int skill_lv); @@ -1994,7 +2047,7 @@ struct skill_interface { int (*get_casttype2) (int index); bool (*is_combo) (int skill_id); int (*name2id) (const char* name); - int (*isammotype) (struct map_session_data *sd, int skill_id); + int (*isammotype) (struct map_session_data *sd, int skill_id, int skill_lv); int (*castend_id) (int tid, int64 tick, int id, intptr_t data); int (*castend_pos) (int tid, int64 tick, int id, intptr_t data); int (*castend_map) ( struct map_session_data *sd,uint16 skill_id, const char *mapname); @@ -2002,7 +2055,7 @@ struct skill_interface { int (*addtimerskill) (struct block_list *src, int64 tick, int target, int x, int y, uint16 skill_id, uint16 skill_lv, int type, int flag); int (*additional_effect) (struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int dmg_lv, int64 tick); int (*counter_additional_effect) (struct block_list* src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int attack_type, int64 tick); - int (*blown) (struct block_list* src, struct block_list* target, int count, int8 dir, int flag); + int (*blown) (struct block_list* src, struct block_list* target, int count, enum unit_dir dir, int flag); int (*break_equip) (struct block_list *bl, unsigned short where, int rate, int flag); int (*strip_equip) (struct block_list *bl, unsigned short where, int rate, int lv, int time); struct skill_unit_group* (*id2group) (int group_id); @@ -2010,7 +2063,7 @@ struct skill_interface { struct skill_unit *(*initunit) (struct skill_unit_group *group, int idx, int x, int y, int val1, int val2); int (*delunit) (struct skill_unit *su); struct skill_unit_group *(*init_unitgroup) (struct block_list* src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, int limit, int interval); - int (*del_unitgroup) (struct skill_unit_group *group, const char* file, int line, const char* func); + int (*del_unitgroup) (struct skill_unit_group *group); int (*clear_unitgroup) (struct block_list *src); int (*clear_group) (struct block_list *bl, int flag); int (*unit_onplace) (struct skill_unit *src, struct block_list *bl, int64 tick); @@ -2019,9 +2072,12 @@ struct skill_interface { int (*cast_fix_sc) ( struct block_list *bl, int time); int (*vf_cast_fix) ( struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv); int (*delay_fix) ( struct block_list *bl, uint16 skill_id, uint16 skill_lv); - bool (*is_item_skill) (struct map_session_data *sd, int skill_id, int skill_lv); + int (*check_condition_required_equip) (struct map_session_data *sd, int skill_id, int skill_lv); int (*check_condition_castbegin) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv); + int (*check_condition_required_items) (struct map_session_data *sd, int skill_id, int skill_lv); + bool (*items_required) (struct map_session_data *sd, int skill_id, int skill_lv); int (*check_condition_castend) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv); + int (*get_any_item_index) (struct map_session_data *sd, int skill_id, int skill_lv); int (*consume_requirement) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type); struct skill_condition (*get_requirement) (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv); int (*check_pc_partner) (struct map_session_data *sd, uint16 skill_id, uint16* skill_lv, int range, int cast_flag); @@ -2045,6 +2101,7 @@ struct skill_interface { int (*not_ok_hom) (uint16 skill_id, struct homun_data *hd); int (*not_ok_hom_unknown) (uint16 skill_id, struct homun_data *hd); int (*not_ok_mercenary) (uint16 skill_id, struct mercenary_data *md); + void (*validate_autocast_data) (struct map_session_data *sd, int skill_id, int skill_lv); int (*chastle_mob_changetarget) (struct block_list *bl,va_list ap); int (*can_produce_mix) ( struct map_session_data *sd, int nameid, int trigger, int qty); int (*produce_mix) ( struct map_session_data *sd, uint16 skill_id, int nameid, int slot1, int slot2, int slot3, int qty ); @@ -2064,7 +2121,7 @@ struct skill_interface { int (*check_unit_range_sub) (struct block_list *bl, va_list ap); int (*check_unit_range2) (struct block_list *bl, int x, int y, uint16 skill_id, uint16 skill_lv); int (*check_unit_range2_sub) (struct block_list *bl, va_list ap); - void (*toggle_magicpower) (struct block_list *bl, uint16 skill_id); + void (*toggle_magicpower) (struct block_list *bl, uint16 skill_id, int skill_lv); int (*magic_reflect) (struct block_list* src, struct block_list* bl, int type); int (*onskillusage) (struct map_session_data *sd, struct block_list *bl, uint16 skill_id, int64 tick); int (*cell_overlap) (struct block_list *bl, va_list ap); @@ -2085,8 +2142,8 @@ struct skill_interface { bool (*dance_switch) (struct skill_unit* su, int flag); int (*check_condition_char_sub) (struct block_list *bl, va_list ap); int (*check_condition_mob_master_sub) (struct block_list *bl, va_list ap); - void (*brandishspear_first) (struct square *tc, uint8 dir, int16 x, int16 y); - void (*brandishspear_dir) (struct square* tc, uint8 dir, int are); + void (*brandishspear_first) (struct square *tc, enum unit_dir dir, int16 x, int16 y); + void (*brandishspear_dir) (struct square* tc, enum unit_dir dir, int are); int (*get_fixed_cast) (int skill_id, int skill_lv); int (*sit_count) (struct block_list *bl, va_list ap); int (*sit_in) (struct block_list *bl, va_list ap); @@ -2105,24 +2162,68 @@ struct skill_interface { int (*unit_timer_sub) (union DBKey key, struct DBData *data, va_list ap); void (*init_unit_layout) (void); void (*init_unit_layout_unknown) (int skill_idx, int pos); + void (*validate_id) (struct config_setting_t *conf, struct s_skill_db *sk, int conf_index); + bool (*name_contains_invalid_character) (const char *name); + void (*validate_name) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_max_level) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_description) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_range) (struct config_setting_t *conf, struct s_skill_db *sk); void (*validate_hittype) (struct config_setting_t *conf, struct s_skill_db *sk); void (*validate_skilltype) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_skillinfo) (struct config_setting_t *conf, struct s_skill_db *sk); void (*validate_attacktype) (struct config_setting_t *conf, struct s_skill_db *sk); void (*validate_element) (struct config_setting_t *conf, struct s_skill_db *sk); - void (*validate_skillinfo) (struct config_setting_t *conf, struct s_skill_db *sk); void (*validate_damagetype) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_splash_range) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_number_of_hits) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_interrupt_cast) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_cast_def_rate) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_number_of_instances) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_knock_back_tiles) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_cast_time) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_act_delay) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_walk_delay) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_skill_data1) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_skill_data2) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_cooldown) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_fixed_cast_time) (struct config_setting_t *conf, struct s_skill_db *sk); void (*validate_castnodex) (struct config_setting_t *conf, struct s_skill_db *sk, bool delay); + void (*validate_hp_cost) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_sp_cost) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_hp_rate_cost) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_sp_rate_cost) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_max_hp_trigger) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_max_sp_trigger) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_zeny_cost) (struct config_setting_t *conf, struct s_skill_db *sk); + int (*validate_weapontype_sub) (const char *type, bool on, struct s_skill_db *sk); void (*validate_weapontype) (struct config_setting_t *conf, struct s_skill_db *sk); + int (*validate_ammotype_sub) (const char *type, bool on, struct s_skill_db *sk); void (*validate_ammotype) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_ammo_amount) (struct config_setting_t *conf, struct s_skill_db *sk); + int (*validate_state_sub) (const char *state); void (*validate_state) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_spirit_sphere_cost) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_item_requirements_sub_item_amount) (struct config_setting_t *conf, struct s_skill_db *sk, int item_index); + void (*validate_item_requirements_sub_items) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_item_requirements_sub_any_flag) (struct config_setting_t *conf, struct s_skill_db *sk); void (*validate_item_requirements) (struct config_setting_t *conf, struct s_skill_db *sk); - void (*validate_unit_target) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_equip_requirements_sub_item_amount) (struct config_setting_t *conf, struct s_skill_db *sk, int item_index); + void (*validate_equip_requirements_sub_items) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_equip_requirements_sub_any_flag) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_equip_requirements) (struct config_setting_t *conf, struct s_skill_db *sk); + int (*validate_requirements_item_name) (const char *name); + void (*validate_requirements) (struct config_setting_t *conf, struct s_skill_db *sk); + int (*validate_unit_id_sub) (int unit_id); + void (*validate_unit_id) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_unit_layout) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_unit_range) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_unit_interval) (struct config_setting_t *conf, struct s_skill_db *sk); + int (*validate_unit_flag_sub) (const char *type, bool on, struct s_skill_db *sk); void (*validate_unit_flag) (struct config_setting_t *conf, struct s_skill_db *sk); + int (*validate_unit_target_sub) (const char *target); + void (*validate_unit_target) (struct config_setting_t *conf, struct s_skill_db *sk); + void (*validate_unit) (struct config_setting_t *conf, struct s_skill_db *sk); void (*validate_additional_fields) (struct config_setting_t *conf, struct s_skill_db *sk); - bool (*validate_skilldb) (struct s_skill_db *skt, const char *source); - int (*validate_weapontype_sub) (const char *type, bool on, struct s_skill_db *sk); - int (*validate_ammotype_sub) (const char *type, bool on, struct s_skill_db *sk); - int (*validate_unit_flag_sub) (const char *type, bool on, struct s_skill_db *sk); bool (*read_skilldb) (const char *filename); void (*config_set_level) (struct config_setting_t *conf, int *arr); void (*level_set_value) (int *arr, int value); @@ -2163,7 +2264,7 @@ struct skill_interface { void (*attack_display_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage); int (*attack_copy_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag); int (*attack_dir_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag); - void (*attack_blow_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, int8 *dir); + void (*attack_blow_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag, int *type, struct Damage *dmg, int64 *damage, enum unit_dir *dir); void (*attack_post_unknown) (int *attack_type, struct block_list* src, struct block_list *dsrc, struct block_list *bl, uint16 *skill_id, uint16 *skill_lv, int64 *tick, int *flag); bool (*timerskill_dead_unknown) (struct block_list *src, struct unit_data *ud, struct skill_timerskill *skl); void (*timerskill_target_unknown) (int tid, int64 tick, struct block_list *src, struct block_list *target, struct unit_data *ud, struct skill_timerskill *skl); @@ -2190,6 +2291,7 @@ struct skill_interface { int (*splash_target) (struct block_list* bl); int (*check_npc_chaospanic) (struct block_list *bl, va_list args); int (*count_wos) (struct block_list *bl, va_list ap); + int (*get_linked_song_dance_id) (int skill_id); }; #ifdef HERCULES_CORE diff --git a/src/map/status.c b/src/map/status.c index 1f0f31119..589acff5c 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -696,6 +696,7 @@ static void initChangeTables(void) status->set_sc( WM_BEYOND_OF_WARCRY , SC_BEYOND_OF_WARCRY , SCB_STR|SCB_CRI|SCB_MAXHP ); status->set_sc( WM_UNLIMITED_HUMMING_VOICE, SC_UNLIMITED_HUMMING_VOICE, SCB_NONE ); status->set_sc( WM_FRIGG_SONG , SC_FRIGG_SONG , SCB_MAXHP ); + status->set_sc( WM_SEVERE_RAINSTORM , SC_NO_SWITCH_EQUIP , SCB_NONE ); /** * Sorcerer @@ -801,21 +802,21 @@ static void initChangeTables(void) set_sc_with_vfx( GN_ILLUSIONDOPING , SC_ILLUSIONDOPING , SCB_HIT ); // Storing the target job rather than simply SC_SOULLINK simplifies code later on. - status->dbs->Skill2SCTable[SL_ALCHEMIST] = (sc_type)MAPID_ALCHEMIST, - status->dbs->Skill2SCTable[SL_MONK] = (sc_type)MAPID_MONK, - status->dbs->Skill2SCTable[SL_STAR] = (sc_type)MAPID_STAR_GLADIATOR, - status->dbs->Skill2SCTable[SL_SAGE] = (sc_type)MAPID_SAGE, - status->dbs->Skill2SCTable[SL_CRUSADER] = (sc_type)MAPID_CRUSADER, - status->dbs->Skill2SCTable[SL_SUPERNOVICE] = (sc_type)MAPID_SUPER_NOVICE, - status->dbs->Skill2SCTable[SL_KNIGHT] = (sc_type)MAPID_KNIGHT, - status->dbs->Skill2SCTable[SL_WIZARD] = (sc_type)MAPID_WIZARD, - status->dbs->Skill2SCTable[SL_PRIEST] = (sc_type)MAPID_PRIEST, - status->dbs->Skill2SCTable[SL_BARDDANCER] = (sc_type)MAPID_BARDDANCER, - status->dbs->Skill2SCTable[SL_ROGUE] = (sc_type)MAPID_ROGUE, - status->dbs->Skill2SCTable[SL_ASSASIN] = (sc_type)MAPID_ASSASSIN, - status->dbs->Skill2SCTable[SL_BLACKSMITH] = (sc_type)MAPID_BLACKSMITH, - status->dbs->Skill2SCTable[SL_HUNTER] = (sc_type)MAPID_HUNTER, - status->dbs->Skill2SCTable[SL_SOULLINKER] = (sc_type)MAPID_SOUL_LINKER, + status->dbs->Skill2SCTable[skill->get_index(SL_ALCHEMIST)] = (sc_type)MAPID_ALCHEMIST, + status->dbs->Skill2SCTable[skill->get_index(SL_MONK)] = (sc_type)MAPID_MONK, + status->dbs->Skill2SCTable[skill->get_index(SL_STAR)] = (sc_type)MAPID_STAR_GLADIATOR, + status->dbs->Skill2SCTable[skill->get_index(SL_SAGE)] = (sc_type)MAPID_SAGE, + status->dbs->Skill2SCTable[skill->get_index(SL_CRUSADER)] = (sc_type)MAPID_CRUSADER, + status->dbs->Skill2SCTable[skill->get_index(SL_SUPERNOVICE)] = (sc_type)MAPID_SUPER_NOVICE, + status->dbs->Skill2SCTable[skill->get_index(SL_KNIGHT)] = (sc_type)MAPID_KNIGHT, + status->dbs->Skill2SCTable[skill->get_index(SL_WIZARD)] = (sc_type)MAPID_WIZARD, + status->dbs->Skill2SCTable[skill->get_index(SL_PRIEST)] = (sc_type)MAPID_PRIEST, + status->dbs->Skill2SCTable[skill->get_index(SL_BARDDANCER)] = (sc_type)MAPID_BARDDANCER, + status->dbs->Skill2SCTable[skill->get_index(SL_ROGUE)] = (sc_type)MAPID_ROGUE, + status->dbs->Skill2SCTable[skill->get_index(SL_ASSASIN)] = (sc_type)MAPID_ASSASSIN, + status->dbs->Skill2SCTable[skill->get_index(SL_BLACKSMITH)] = (sc_type)MAPID_BLACKSMITH, + status->dbs->Skill2SCTable[skill->get_index(SL_HUNTER)] = (sc_type)MAPID_HUNTER, + status->dbs->Skill2SCTable[skill->get_index(SL_SOULLINKER)] = (sc_type)MAPID_SOUL_LINKER, // Other SC which are not necessarily associated to skills. status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION1] |= SCB_ASPD; @@ -865,6 +866,10 @@ static void initChangeTables(void) status->dbs->ChangeFlagTable[SC_WEDDING] |= SCB_SPEED; status->dbs->ChangeFlagTable[SC_ARMORPROPERTY] |= SCB_ALL; status->dbs->ChangeFlagTable[SC_ARMOR_RESIST] |= SCB_ALL; + status->dbs->ChangeFlagTable[SC_RESIST_PROPERTY_WATER] |= SCB_ALL; + status->dbs->ChangeFlagTable[SC_RESIST_PROPERTY_GROUND] |= SCB_ALL; + status->dbs->ChangeFlagTable[SC_RESIST_PROPERTY_FIRE] |= SCB_ALL; + status->dbs->ChangeFlagTable[SC_RESIST_PROPERTY_WIND] |= SCB_ALL; status->dbs->ChangeFlagTable[SC_ATKER_BLOOD] |= SCB_ALL; status->dbs->ChangeFlagTable[SC_WALKSPEED] |= SCB_SPEED; status->dbs->ChangeFlagTable[SC_TARGET_BLOOD] |= SCB_ALL; @@ -884,6 +889,13 @@ static void initChangeTables(void) status->dbs->ChangeFlagTable[SC_PHI_DEMON] |= SCB_ALL; status->dbs->ChangeFlagTable[SC_MAGIC_CANDY] |= SCB_MATK | SCB_ALL; status->dbs->ChangeFlagTable[SC_MYSTICPOWDER] |= SCB_FLEE | SCB_LUK; + status->dbs->ChangeFlagTable[SC_POPECOOKIE] |= SCB_BASE | SCB_BATK | SCB_MATK; + status->dbs->ChangeFlagTable[SC_VITALIZE_POTION] |= SCB_BATK | SCB_MATK; + status->dbs->ChangeFlagTable[SC_SKF_MATK] |= SCB_MATK; + status->dbs->ChangeFlagTable[SC_SKF_ATK] |= SCB_BATK; + status->dbs->ChangeFlagTable[SC_SKF_ASPD] |= SCB_ASPD; + status->dbs->ChangeFlagTable[SC_SKF_CAST] |= SCB_NONE; + status->dbs->ChangeFlagTable[SC_ALMIGHTY] |= SCB_BATK | SCB_MATK; // Cash Items status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] |= SCB_STR; @@ -1189,7 +1201,7 @@ static int status_damage(struct block_list *src, struct block_list *target, int6 if ((sce=sc->data[SC_GRAVITATION]) && sce->val3 == BCT_SELF) { struct skill_unit_group* sg = skill->id2group(sce->val4); if (sg) { - skill->del_unitgroup(sg, ALC_MARK); + skill->del_unitgroup(sg); sce->val4 = 0; status_change_end(target, SC_GRAVITATION, INVALID_TIMER); } @@ -1584,7 +1596,7 @@ static int status_check_skilluse(struct block_list *src, struct block_list *targ } if( skill_id ) { - if (src != NULL && (sd == NULL || sd->skillitem == 0)) { + if (src != NULL && (sd == NULL || sd->auto_cast_current.type != AUTOCAST_ITEM)) { // Items that cast skills using 'itemskill' will not be handled by map_zone_db. int i; @@ -1628,7 +1640,7 @@ static int status_check_skilluse(struct block_list *src, struct block_list *targ if (src != NULL && map->getcell(src->m, src, src->x, src->y, CELL_CHKLANDPROTECTOR) && !(st->mode&MD_BOSS) - && (src->type != BL_PC || sd->skillitem != skill_id)) + && (src->type != BL_PC || sd->auto_cast_current.type != AUTOCAST_ITEM)) return 0; break; default: @@ -1707,7 +1719,7 @@ static int status_check_skilluse(struct block_list *src, struct block_list *targ return 0; //Can't amp out of Wand of Hermode :/ [Skotlex] } - if (skill_id != 0 /* Do not block item-casted skills.*/ && (src->type != BL_PC || sd->skillitem != skill_id)) { + if (skill_id != 0 /* Do not block item-casted skills.*/ && (src->type != BL_PC || sd->auto_cast_current.type != AUTOCAST_ITEM)) { //Skills blocked through status changes... if (!flag && ( //Blocked only from using the skill (stuff like autospell may still go through sc->data[SC_SILENCE] || @@ -1725,6 +1737,7 @@ static int status_check_skilluse(struct block_list *src, struct block_list *targ (sc->data[SC_MARIONETTE] && skill_id == CG_MARIONETTE) || //Cannot use marionette if you are being buffed by another (sc->data[SC_STASIS] && skill->block_check(src, SC_STASIS, skill_id)) || (sc->data[SC_KG_KAGEHUMI] && skill->block_check(src, SC_KG_KAGEHUMI, skill_id)) + || sc->data[SC_ALL_RIDING] != NULL // New mounts can't attack nor use skills in the client; this check makes it cheat-safe. [Ind] )) return 0; @@ -1773,8 +1786,6 @@ static int status_check_skilluse(struct block_list *src, struct block_list *targ } else if ( skill_id != ST_CHASEWALK ) return 0; } - if( sc->data[SC_ALL_RIDING] ) - return 0;//New mounts can't attack nor use skills in the client; this check makes it cheat-safe [Ind] } if (target == NULL || target == src) //No further checking needed. @@ -2572,12 +2583,16 @@ static int status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt o status->calc_pc_additional(sd, opt); - if( sd->pd ) { // Pet Bonus + if (sd->pd != NULL) { // Pet bonus. struct pet_data *pd = sd->pd; - if( pd && pd->petDB && pd->petDB->equip_script && pd->pet.intimate >= battle_config.pet_equip_min_friendly ) - script->run(pd->petDB->equip_script,0,sd->bl.id,0); - if( pd && pd->pet.intimate > 0 && (!battle_config.pet_equip_required || pd->pet.equip > 0) && pd->state.skillbonus == 1 && pd->bonus ) - pc->bonus(sd,pd->bonus->type, pd->bonus->val); + + if (pd->petDB != NULL && pd->petDB->equip_script != NULL) + script->run(pd->petDB->equip_script, 0, sd->bl.id, 0); + + if (pd->pet.intimate > PET_INTIMACY_NONE && pd->state.skillbonus == 1 && pd->bonus != NULL + && (battle_config.pet_equip_required == 0 || pd->pet.equip > 0)) { + pc->bonus(sd, pd->bonus->type, pd->bonus->val); + } } //param_bonus now holds card bonuses. @@ -3018,6 +3033,22 @@ static int status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt o sd->subele[ELE_FIRE] += sc->data[SC_ARMOR_RESIST]->val3; sd->subele[ELE_WIND] += sc->data[SC_ARMOR_RESIST]->val4; } + if (sc->data[SC_RESIST_PROPERTY_WATER] != NULL) { // Coldproof Potion + sd->subele[ELE_WATER] += sc->data[SC_RESIST_PROPERTY_WATER]->val1; + sd->subele[ELE_WIND] += sc->data[SC_RESIST_PROPERTY_WATER]->val2; + } + if (sc->data[SC_RESIST_PROPERTY_GROUND] != NULL) { // Earthproof Potion + sd->subele[ELE_EARTH] += sc->data[SC_RESIST_PROPERTY_GROUND]->val1; + sd->subele[ELE_FIRE] += sc->data[SC_RESIST_PROPERTY_GROUND]->val2; + } + if (sc->data[SC_RESIST_PROPERTY_FIRE] != NULL) { // Fireproof Potion + sd->subele[ELE_FIRE] += sc->data[SC_RESIST_PROPERTY_FIRE]->val1; + sd->subele[ELE_WATER] += sc->data[SC_RESIST_PROPERTY_FIRE]->val2; + } + if (sc->data[SC_RESIST_PROPERTY_WIND] != NULL) { // Thunderproof Potion + sd->subele[ELE_WIND] += sc->data[SC_RESIST_PROPERTY_WIND]->val1; + sd->subele[ELE_EARTH] += sc->data[SC_RESIST_PROPERTY_WIND]->val2; + } if (sc->data[SC_FIRE_CLOAK_OPTION]) { i = sc->data[SC_FIRE_CLOAK_OPTION]->val2; sd->subele[ELE_FIRE] += i; @@ -3038,6 +3069,18 @@ static int status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt o sd->subele[ELE_EARTH] += i; sd->subele[ELE_FIRE] -= i; } + if (sc->data[SC_POPECOOKIE] != NULL) { + i = sc->data[SC_POPECOOKIE]->val3; + sd->subele[ELE_WATER] += i; + sd->subele[ELE_EARTH] += i; + sd->subele[ELE_FIRE] += i; + sd->subele[ELE_WIND] += i; + sd->subele[ELE_POISON] += i; + sd->subele[ELE_HOLY] += i; + sd->subele[ELE_DARK] += i; + sd->subele[ELE_GHOST] += i; + sd->subele[ELE_UNDEAD] += i; + } if (sc->data[SC_MTF_MLEATKED]) sd->subele[ELE_NEUTRAL] += sc->data[SC_MTF_MLEATKED]->val1; if (sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 3) @@ -4801,6 +4844,10 @@ static int status_calc_batk(struct block_list *bl, struct status_change *sc, int /* some statuses that are hidden in the status window */ if(sc->data[SC_PLUSATTACKPOWER]) batk += sc->data[SC_PLUSATTACKPOWER]->val1; + if (sc->data[SC_POPECOOKIE] != NULL) + batk += batk * sc->data[SC_POPECOOKIE]->val1 / 100; + if (sc->data[SC_VITALIZE_POTION] != NULL) + batk += batk * sc->data[SC_VITALIZE_POTION]->val1 / 100; return cap_value(batk, battle_config.batk_min, battle_config.batk_max); } #ifndef RENEWAL @@ -4880,6 +4927,10 @@ static int status_calc_batk(struct block_list *bl, struct status_change *sc, int batk += batk * sc->data[SC_2011RWC]->val2 / 100; if (sc->data[SC_STEAMPACK]) batk += sc->data[SC_STEAMPACK]->val1; + if (sc->data[SC_SKF_ATK] != NULL) + batk += sc->data[SC_SKF_ATK]->val1; + if (sc->data[SC_ALMIGHTY] != NULL) + batk += sc->data[SC_ALMIGHTY]->val1; if (sc->data[SC_SHRIMP]) batk += batk * sc->data[SC_SHRIMP]->val2 / 100; @@ -5020,6 +5071,10 @@ static int status_calc_matk(struct block_list *bl, struct status_change *sc, int /* some statuses that are hidden in the status window */ if (sc->data[SC_MINDBREAKER]) matk += matk * sc->data[SC_MINDBREAKER]->val2 / 100; + if (sc->data[SC_POPECOOKIE] != NULL) + matk += matk * sc->data[SC_POPECOOKIE]->val2 / 100; + if (sc->data[SC_VITALIZE_POTION] != NULL) + matk += matk * sc->data[SC_VITALIZE_POTION]->val2 / 100; return cap_value(matk, battle_config.matk_min, battle_config.matk_max); } @@ -5077,6 +5132,10 @@ static int status_calc_matk(struct block_list *bl, struct status_change *sc, int matk += matk * sc->data[SC_2011RWC]->val2 / 100; if (sc->data[SC_MAGIC_CANDY]) matk += sc->data[SC_MAGIC_CANDY]->val1; + if (sc->data[SC_SKF_MATK] != NULL) + matk += sc->data[SC_SKF_MATK]->val1; + if (sc->data[SC_ALMIGHTY] != NULL) + matk += sc->data[SC_ALMIGHTY]->val2; return cap_value(matk, battle_config.matk_min, battle_config.matk_max); } @@ -5901,6 +5960,8 @@ static short status_calc_aspd(struct block_list *bl, struct status_change *sc, s bonus += sc->data[SC_BATTLESCROLL]->val1; if (sc->data[SC_STEAMPACK]) bonus += sc->data[SC_STEAMPACK]->val2; + if (sc->data[SC_SKF_ASPD] != NULL) + bonus += sc->data[SC_SKF_ASPD]->val1; } return (bonus + pots); @@ -6068,6 +6129,8 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change * aspd_rate += sc->data[SC_BATTLESCROLL]->val1 * 10; if (sc->data[SC_STEAMPACK]) aspd_rate += sc->data[SC_STEAMPACK]->val2 * 10; + if (sc->data[SC_SKF_ASPD] != NULL) + aspd_rate -= sc->data[SC_SKF_ASPD]->val1 * 10; return (short)cap_value(aspd_rate,0,SHRT_MAX); } @@ -6344,13 +6407,24 @@ static int status_get_class(const struct block_list *bl) { nullpo_ret(bl); switch (bl->type) { - case BL_PC: return BL_UCCAST(BL_PC, bl)->status.class; - case BL_MOB: return BL_UCCAST(BL_MOB, bl)->vd->class; //Class used on all code should be the view class of the mob. - case BL_PET: return BL_UCCAST(BL_PET, bl)->pet.class_; - case BL_HOM: return BL_UCCAST(BL_HOM, bl)->homunculus.class_; - case BL_MER: return BL_UCCAST(BL_MER, bl)->mercenary.class_; - case BL_NPC: return BL_UCCAST(BL_NPC, bl)->class_; - case BL_ELEM: return BL_UCCAST(BL_ELEM, bl)->elemental.class_; + case BL_PC: + return BL_UCCAST(BL_PC, bl)->status.class; + case BL_MOB: + { + const struct view_data *const vd = BL_UCCAST(BL_MOB, bl)->vd; + nullpo_ret(vd); + return vd->class; //Class used on all code should be the view class of the mob. + } + case BL_PET: + return BL_UCCAST(BL_PET, bl)->pet.class_; + case BL_HOM: + return BL_UCCAST(BL_HOM, bl)->homunculus.class_; + case BL_MER: + return BL_UCCAST(BL_MER, bl)->mercenary.class_; + case BL_NPC: + return BL_UCCAST(BL_NPC, bl)->class_; + case BL_ELEM: + return BL_UCCAST(BL_ELEM, bl)->elemental.class_; } return 0; } @@ -6440,7 +6514,7 @@ static defType status_get_def(struct block_list *bl) int def = st ? st->def : 0; ud = unit->bl2ud(bl); if (ud && ud->skilltimer != INVALID_TIMER) - def -= def * skill->get_castdef(ud->skill_id)/100; + def -= def * skill->get_castdef(ud->skill_id, ud->skill_lv) / 100; return cap_value(def, DEFTYPE_MIN, DEFTYPE_MAX); } @@ -7710,6 +7784,10 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl case SC_ENCHANTARMS: case SC_ARMORPROPERTY: case SC_ARMOR_RESIST: + case SC_RESIST_PROPERTY_WATER: + case SC_RESIST_PROPERTY_GROUND: + case SC_RESIST_PROPERTY_FIRE: + case SC_RESIST_PROPERTY_WIND: break; case SC_GOSPEL: //Must not override a casting gospel char. @@ -7765,6 +7843,9 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl calc_flag = status->dbs->ChangeFlagTable[type]; if(!(flag&SCFLAG_LOADED)) { // Do not parse val settings when loading SCs switch(type) { + case SC_AUTOTRADE: + case SC_KSPROTECTED: + break; // Prevent calling status_change_start_unknown_sc(). case SC_ADORAMUS: sc_start(src,bl,SC_BLIND,100,val1,skill->get_time(status->sc2skill(type),val1)); // Fall through to SC_INC_AGI @@ -8009,7 +8090,6 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl // This is done this way because the message that the client displays is hardcoded, and only // shows how many minutes are remaining. [Panikon] total_tick = 60000; - val1 = battle_config.manner_system; //Mute filters. if (sd) { clif->changestatus(sd,SP_MANNER,sd->status.manner); @@ -8656,6 +8736,210 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl //associated, and yet are not wrong/unknown. [Skotlex] //break; } + case SC_ARMOR_RESIST: { + struct status_change_entry *sce_water = sc->data[SC_RESIST_PROPERTY_WATER]; + struct status_change_entry *sce_ground = sc->data[SC_RESIST_PROPERTY_GROUND]; + struct status_change_entry *sce_fire = sc->data[SC_RESIST_PROPERTY_FIRE]; + struct status_change_entry *sce_wind = sc->data[SC_RESIST_PROPERTY_WIND]; + + // Water + int sum_water = val1 + ((sce_fire != NULL) ? sce_fire->val2 : 0); + bool show_icon = true; + if (sce_water != NULL && sce_water->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sce_water->timer); + if (td != NULL) { + sum_water += sce_water->val1; + int left = (int)DIFF_TICK(td->tick, timer->gettick()); + if (left > total_tick && sum_water - val1 > 0) + show_icon = false; + } + } + if (val1 > 0 && sum_water > 0 && show_icon) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WATER); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WATER); + clif->status_change(bl, sc_icn, sc_typ, 1, total_tick, 0, 0, 0); + } else if (sum_water <= 0) { + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WATER)); + } + + // Ground + int sum_ground = val2 + ((sce_wind != NULL) ? sce_wind->val2 : 0); + show_icon = true; + if (sce_ground != NULL && sce_ground->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sce_ground->timer); + if (td != NULL) { + sum_ground += sce_ground->val1; + int left = (int)DIFF_TICK(td->tick, timer->gettick()); + if (left > total_tick && sum_ground - val2 > 0) + show_icon = false; + } + } + if (val2 > 0 && sum_ground > 0 && show_icon) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_GROUND); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_GROUND); + clif->status_change(bl, sc_icn, sc_typ, 1, total_tick, 0, 0, 0); + } else if (sum_ground <= 0) { + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_GROUND)); + } + + // Fire + int sum_fire = val3 + ((sce_ground != NULL) ? sce_ground->val2 : 0); + show_icon = true; + if (sce_fire != NULL && sce_fire->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sce_fire->timer); + if (td != NULL) { + sum_fire += sce_fire->val1; + int left = (int)DIFF_TICK(td->tick, timer->gettick()); + if (left > total_tick && sum_fire - val3 > 0) + show_icon = false; + } + } + if (val3 > 0 && sum_fire > 0 && show_icon) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_FIRE); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_FIRE); + clif->status_change(bl, sc_icn, sc_typ, 1, total_tick, 0, 0, 0); + } else if (sum_fire <= 0) { + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_FIRE)); + } + + // Wind + int sum_wind = val4 + ((sce_water != NULL) ? sce_water->val2 : 0); + show_icon = true; + if (sce_wind != NULL && sce_wind->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sce_wind->timer); + if (td != NULL) { + sum_wind += sce_wind->val1; + int left = (int)DIFF_TICK(td->tick, timer->gettick()); + if (left > total_tick && sum_wind - val4 > 0) + show_icon = false; + } + } + if (val4 > 0 && sum_wind > 0 && show_icon) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WIND); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WIND); + clif->status_change(bl, sc_icn, sc_typ, 1, total_tick, 0, 0, 0); + } else if (sum_wind <= 0) { + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WIND)); + } + + break; + } + case SC_RESIST_PROPERTY_WATER: { + struct status_change_entry *sce_all = sc->data[SC_ARMOR_RESIST]; + struct status_change_entry *sce_fire = sc->data[SC_RESIST_PROPERTY_FIRE]; + struct status_change_entry *sce_wind = sc->data[SC_RESIST_PROPERTY_WIND]; + + // Water + int sum_water = val1 + ((sce_fire != NULL) ? sce_fire->val2 : 0); + if (sce_all != NULL && sce_all->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sce_all->timer); + if (td != NULL) { + sum_water += sce_all->val1; + int left = (int)DIFF_TICK(td->tick, timer->gettick()); + if (left > total_tick && sum_water - val1 > 0) + flag |= SCFLAG_NOICON; + } + } + if (sum_water <= 0) { + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WATER)); + flag |= SCFLAG_NOICON; + } + + // Wind + int sum_wind = val2 + ((sce_wind != NULL) ? sce_wind->val1 : 0); + sum_wind += (sce_all != NULL) ? sce_all->val4 : 0; + if (sum_wind <= 0) + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WIND)); + + break; + } + case SC_RESIST_PROPERTY_GROUND: { + struct status_change_entry *sce_all = sc->data[SC_ARMOR_RESIST]; + struct status_change_entry *sce_wind = sc->data[SC_RESIST_PROPERTY_WIND]; + struct status_change_entry *sce_fire = sc->data[SC_RESIST_PROPERTY_FIRE]; + + // Ground + int sum_ground = val1 + ((sce_wind != NULL) ? sce_wind->val2 : 0); + if (sce_all != NULL && sce_all->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sce_all->timer); + if (td != NULL) { + sum_ground += sce_all->val2; + int left = (int)DIFF_TICK(td->tick, timer->gettick()); + if (left > total_tick && sum_ground - val1 > 0) + flag |= SCFLAG_NOICON; + } + } + if (sum_ground <= 0) { + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_GROUND)); + flag |= SCFLAG_NOICON; + } + + // Fire + int sum_fire = val2 + ((sce_fire != NULL) ? sce_fire->val1 : 0); + sum_fire += (sce_all != NULL) ? sce_all->val3 : 0; + if (sum_fire <= 0) + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_FIRE)); + + break; + } + case SC_RESIST_PROPERTY_FIRE: { + struct status_change_entry *sce_all = sc->data[SC_ARMOR_RESIST]; + struct status_change_entry *sce_ground = sc->data[SC_RESIST_PROPERTY_GROUND]; + struct status_change_entry *sce_water = sc->data[SC_RESIST_PROPERTY_WATER]; + + // Fire + int sum_fire = val1 + ((sce_ground != NULL) ? sce_ground->val2 : 0); + if (sce_all != NULL && sce_all->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sce_all->timer); + if (td != NULL) { + sum_fire += sce_all->val3; + int left = (int)DIFF_TICK(td->tick, timer->gettick()); + if (left > total_tick && sum_fire - val1 > 0) + flag |= SCFLAG_NOICON; + } + } + if (sum_fire <= 0) { + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_FIRE)); + flag |= SCFLAG_NOICON; + } + + // Water + int sum_water = val2 + ((sce_water != NULL) ? sce_water->val1 : 0); + sum_water += (sce_all != NULL) ? sce_all->val1 : 0; + if (sum_water <= 0) + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WATER)); + + break; + } + case SC_RESIST_PROPERTY_WIND: { + struct status_change_entry *sce_all = sc->data[SC_ARMOR_RESIST]; + struct status_change_entry *sce_water = sc->data[SC_RESIST_PROPERTY_WATER]; + struct status_change_entry *sce_ground = sc->data[SC_RESIST_PROPERTY_GROUND]; + + // Wind + int sum_wind = val1 + ((sce_water != NULL) ? sce_water->val2 : 0); + if (sce_all != NULL && sce_all->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sce_all->timer); + if (td != NULL) { + sum_wind += sce_all->val4; + int left = (int)DIFF_TICK(td->tick, timer->gettick()); + if (left > total_tick && sum_wind - val1 > 0) + flag |= SCFLAG_NOICON; + } + } + if (sum_wind <= 0) { + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WIND)); + flag |= SCFLAG_NOICON; + } + + // Ground + int sum_ground = val2 + ((sce_ground != NULL) ? sce_ground->val1 : 0); + sum_ground += (sce_all != NULL) ? sce_all->val2 : 0; + if (sum_ground <= 0) + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_GROUND)); + + break; + } case SC_MER_FLEE: case SC_MER_ATK: case SC_MER_HIT: @@ -10514,7 +10798,7 @@ static int status_change_clear(struct block_list *bl, int type) /*========================================== * Special condition we want to effectuate, check before ending a status. *------------------------------------------*/ -static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, const char *file, int line) +static int status_change_end_(struct block_list *bl, enum sc_type type, int tid) { struct map_session_data *sd; struct status_change *sc; @@ -10582,6 +10866,9 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, vd = status->get_viewdata(bl); calc_flag = status->dbs->ChangeFlagTable[type]; + + bool remove_icon = true; + switch(type) { case SC_GRANITIC_ARMOR: { @@ -10681,23 +10968,9 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, break; case SC_DANCING: { - const char* prevfile = "<unknown>"; - int prevline = 0; struct map_session_data *dsd; struct status_change_entry *dsc; - if (sd) { - if (sd->delunit_prevfile) { - // initially this is NULL, when a character logs in - prevfile = sd->delunit_prevfile; - prevline = sd->delunit_prevline; - } else { - prevfile = "<none>"; - } - sd->delunit_prevfile = file; - sd->delunit_prevline = line; - } - if (sce->val4 && sce->val4 != BCT_SELF && (dsd=map->id2sd(sce->val4)) != NULL) { // end status on partner as well dsc = dsd->sc.data[SC_DANCING]; @@ -10713,19 +10986,10 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, // erase associated land skill struct skill_unit_group *group = skill->id2group(sce->val2); - if (group == NULL) { - ShowDebug("status_change_end: SC_DANCING is missing skill unit group (val1=%d, val2=%d, val3=%d, val4=%d, timer=%d, tid=%d, char_id=%d, map=%s, x=%d, y=%d, prev=%s:%d, from=%s:%d). Please report this! (#3504)\n", - sce->val1, sce->val2, sce->val3, sce->val4, sce->timer, tid, - sd ? sd->status.char_id : 0, - mapindex_id2name(map_id2index(bl->m)), bl->x, bl->y, - prevfile, prevline, - file, line); - } - sce->val2 = 0; if( group ) - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); } if ((sce->val1&0xFFFF) == CG_MOONLIT) @@ -10829,7 +11093,7 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, struct skill_unit_group* group = skill->id2group(sce->val3); sce->val3 = 0; if( group ) - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); } break; case SC_HERMODE: @@ -10848,7 +11112,7 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, struct skill_unit_group* group = skill->id2group(sce->val4); sce->val4 = 0; if( group ) /* might have been cleared before status ended, e.g. land protector */ - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); } break; case SC_KAAHI: @@ -10946,7 +11210,7 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, struct skill_unit_group* group = skill->id2group(sce->val2); sce->val2 = 0; if (group) /* might have been cleared before status ended, e.g. land protector */ - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); } break; case SC_BANDING: @@ -10954,7 +11218,7 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, struct skill_unit_group *group = skill->id2group(sce->val4); sce->val4 = 0; if( group ) /* might have been cleared before status ended, e.g. land protector */ - skill->del_unitgroup(group,ALC_MARK); + skill->del_unitgroup(group); } break; case SC_CURSEDCIRCLE_ATKER: @@ -11013,6 +11277,202 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, break; } break; + case SC_ARMOR_RESIST: { + struct status_change_entry *sce_water = sc->data[SC_RESIST_PROPERTY_WATER]; + struct status_change_entry *sce_ground = sc->data[SC_RESIST_PROPERTY_GROUND]; + struct status_change_entry *sce_fire = sc->data[SC_RESIST_PROPERTY_FIRE]; + struct status_change_entry *sce_wind = sc->data[SC_RESIST_PROPERTY_WIND]; + + // Water + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WATER)); + if (sce_water != NULL && sce_water->timer != INVALID_TIMER) { + int sum_water = sce_water->val1 + ((sce_fire != NULL) ? sce_fire->val2 : 0); + const struct TimerData *td = timer->get(sce_water->timer); + if (td != NULL && sce_water->val1 > 0 && sum_water > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WATER); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WATER); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sce_water->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + } + } + + // Ground + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_GROUND)); + if (sce_ground != NULL && sce_ground->timer != INVALID_TIMER) { + int sum_ground = sce_ground->val1 + ((sce_wind != NULL) ? sce_wind->val2 : 0); + const struct TimerData *td = timer->get(sce_ground->timer); + if (td != NULL && sce_ground->val1 > 0 && sum_ground > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_GROUND); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_GROUND); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sce_ground->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + } + } + + // Fire + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_FIRE)); + if (sce_fire != NULL && sce_fire->timer != INVALID_TIMER) { + int sum_fire = sce_fire->val1 + ((sce_ground != NULL) ? sce_ground->val2 : 0); + const struct TimerData *td = timer->get(sce_fire->timer); + if (td != NULL && sce_fire->val1 > 0 && sum_fire > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_FIRE); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_FIRE); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sce_fire->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + } + } + + // Wind + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_RESIST_PROPERTY_WIND)); + if (sce_wind != NULL && sce_wind->timer != INVALID_TIMER) { + int sum_wind = sce_wind->val1 + ((sce_water != NULL) ? sce_water->val2 : 0); + const struct TimerData *td = timer->get(sce_wind->timer); + if (td != NULL && sce_wind->val1 > 0 && sum_wind > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WIND); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WIND); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sce_wind->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + } + } + + break; + } + case SC_RESIST_PROPERTY_WATER: + if (sc->data[SC_ARMOR_RESIST] != NULL && sc->data[SC_ARMOR_RESIST]->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sc->data[SC_ARMOR_RESIST]->timer); + if (td == NULL) + break; + + // Water + int sum_water = sc->data[SC_ARMOR_RESIST]->val1; + if (sc->data[SC_RESIST_PROPERTY_FIRE] != NULL) + sum_water += sc->data[SC_RESIST_PROPERTY_FIRE]->val2; + if (sc->data[SC_ARMOR_RESIST]->val1 > 0 && sum_water > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WATER); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WATER); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + remove_icon = false; + } + + // Wind + int sum_wind = sc->data[SC_ARMOR_RESIST]->val4; + if (sc->data[SC_RESIST_PROPERTY_WIND] != NULL) + sum_wind += sc->data[SC_RESIST_PROPERTY_WIND]->val1; + if (sc->data[SC_ARMOR_RESIST]->val4 > 0 && sum_wind > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WIND); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WIND); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + } + } + + break; + case SC_RESIST_PROPERTY_GROUND: + if (sc->data[SC_ARMOR_RESIST] != NULL && sc->data[SC_ARMOR_RESIST]->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sc->data[SC_ARMOR_RESIST]->timer); + if (td == NULL) + break; + + // Ground + int sum_ground = sc->data[SC_ARMOR_RESIST]->val2; + if (sc->data[SC_RESIST_PROPERTY_WIND] != NULL) + sum_ground += sc->data[SC_RESIST_PROPERTY_WIND]->val2; + if (sc->data[SC_ARMOR_RESIST]->val2 > 0 && sum_ground > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_GROUND); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_GROUND); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + remove_icon = false; + } + + // Fire + int sum_fire = sc->data[SC_ARMOR_RESIST]->val3; + if (sc->data[SC_RESIST_PROPERTY_FIRE] != NULL) + sum_fire += sc->data[SC_RESIST_PROPERTY_FIRE]->val1; + if (sc->data[SC_ARMOR_RESIST]->val3 > 0 && sum_fire > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_FIRE); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_FIRE); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + } + } + + break; + case SC_RESIST_PROPERTY_FIRE: + if (sc->data[SC_ARMOR_RESIST] != NULL && sc->data[SC_ARMOR_RESIST]->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sc->data[SC_ARMOR_RESIST]->timer); + if (td == NULL) + break; + + // Fire + int sum_fire = sc->data[SC_ARMOR_RESIST]->val3; + if (sc->data[SC_RESIST_PROPERTY_GROUND] != NULL) + sum_fire += sc->data[SC_RESIST_PROPERTY_GROUND]->val2; + if (sc->data[SC_ARMOR_RESIST]->val3 > 0 && sum_fire > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_FIRE); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_FIRE); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + remove_icon = false; + } + + // Water + int sum_water = sc->data[SC_ARMOR_RESIST]->val1; + if (sc->data[SC_RESIST_PROPERTY_WATER] != NULL) + sum_water += sc->data[SC_RESIST_PROPERTY_WATER]->val1; + if (sc->data[SC_ARMOR_RESIST]->val1 > 0 && sum_water > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WATER); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WATER); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + } + } + + break; + case SC_RESIST_PROPERTY_WIND: + if (sc->data[SC_ARMOR_RESIST] != NULL && sc->data[SC_ARMOR_RESIST]->timer != INVALID_TIMER) { + const struct TimerData *td = timer->get(sc->data[SC_ARMOR_RESIST]->timer); + if (td == NULL) + break; + + // Wind + int sum_wind = sc->data[SC_ARMOR_RESIST]->val4; + if (sc->data[SC_RESIST_PROPERTY_WATER] != NULL) + sum_wind += sc->data[SC_RESIST_PROPERTY_WATER]->val2; + if (sc->data[SC_ARMOR_RESIST]->val4 > 0 && sum_wind > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_WIND); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_WIND); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + remove_icon = false; + } + + // Ground + int sum_ground = sc->data[SC_ARMOR_RESIST]->val2; + if (sc->data[SC_RESIST_PROPERTY_GROUND] != NULL) + sum_ground += sc->data[SC_RESIST_PROPERTY_GROUND]->val1; + if (sc->data[SC_ARMOR_RESIST]->val2 > 0 && sum_ground > 0) { + int sc_icn = status->get_sc_icon(SC_RESIST_PROPERTY_GROUND); + int sc_typ = status->get_sc_relevant_bl_types(SC_RESIST_PROPERTY_GROUND); + int sc_tck = (int)DIFF_TICK(td->tick, timer->gettick()); + int sc_ttl = sc->data[SC_ARMOR_RESIST]->total_tick; + clif->status_change_sub(bl, sc_icn, sc_typ, 1, sc_tck, sc_ttl, 0, 0, 0); + } + } + + break; } opt_flag = 1; @@ -11226,7 +11686,8 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid, #endif //On Aegis, when turning off a status change, first goes the sc packet, then the option packet. - clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(type)); + if (remove_icon) + clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(type)); if( opt_flag&8 ) //bugreport:681 clif->changeoption2(bl); diff --git a/src/map/status.h b/src/map/status.h index ada18bc0a..43cfd6931 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -854,6 +854,13 @@ typedef enum sc_type { SC_RESIST_PROPERTY_WIND, SC_CLIENT_ONLY_EQUIP_ARROW, SC_MADOGEAR, + SC_POPECOOKIE, + SC_VITALIZE_POTION, + SC_SKF_MATK, + SC_SKF_ATK, + SC_SKF_ASPD, + SC_SKF_CAST, + SC_ALMIGHTY, #ifndef SC_MAX SC_MAX, //Automatically updated max, used in for's to check we are within bounds. #endif @@ -1207,7 +1214,7 @@ struct status_change { #define sc_start2(src, bl, type, rate, val1, val2, tick) (status->change_start((src),(bl),(type),100*(rate),(val1),(val2),0,0,(tick),SCFLAG_NONE)) #define sc_start4(src, bl, type, rate, val1, val2, val3, val4, tick) (status->change_start((src),(bl),(type),100*(rate),(val1),(val2),(val3),(val4),(tick),SCFLAG_NONE)) -#define status_change_end(bl,type,tid) (status->change_end_((bl),(type),(tid),__FILE__,__LINE__)) +#define status_change_end(bl,type,tid) (status->change_end_((bl),(type),(tid))) #define status_calc_bl(bl, flag) (status->calc_bl_((bl), (enum scb_flag)(flag), SCO_NONE)) #define status_calc_mob(md, opt) (status->calc_bl_(&(md)->bl, SCB_ALL, (opt))) @@ -1301,7 +1308,7 @@ struct status_interface { int (*get_sc_def) (struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int tick, int flag); int (*change_start) (struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int flag); int (*change_start_sub) (struct block_list *src, struct block_list *bl, enum sc_type type, int rate, int val1, int val2, int val3, int val4, int tick, int total_tick, int flag); - int (*change_end_) (struct block_list* bl, enum sc_type type, int tid, const char* file, int line); + int (*change_end_) (struct block_list* bl, enum sc_type type, int tid); bool (*is_immune_to_status) (struct status_change* sc, enum sc_type type); bool (*is_boss_resist_sc) (enum sc_type type); bool (*end_sc_before_start) (struct block_list *bl, struct status_data *st, struct status_change* sc, enum sc_type type, int undead_flag, int val1, int val2, int val3, int val4); diff --git a/src/map/trade.c b/src/map/trade.c index e727c3c70..31970fbf9 100644 --- a/src/map/trade.c +++ b/src/map/trade.c @@ -63,7 +63,7 @@ static void trade_traderequest(struct map_session_data *sd, struct map_session_d return; } - if (target_sd->npc_id) { + if (target_sd->npc_id != 0 && target_sd->state.using_megaphone == 0) { //Trade fails if you are using an NPC. clif->tradestart(sd, 2); return; @@ -166,9 +166,10 @@ static void trade_tradeack(struct map_session_data *sd, int type) } //Check if you can start trade. - if (sd->npc_id || sd->state.vending || sd->state.prevend || sd->state.buyingstore || sd->state.storage_flag != STORAGE_FLAG_CLOSED - || tsd->npc_id || tsd->state.vending || tsd->state.prevend || tsd->state.buyingstore || tsd->state.storage_flag != STORAGE_FLAG_CLOSED - ) { + if ((sd->npc_id != 0 && sd->state.using_megaphone == 0) || sd->state.vending != 0 || sd->state.prevend != 0 + || sd->state.buyingstore != 0 || sd->state.storage_flag != STORAGE_FLAG_CLOSED + || (tsd->npc_id != 0 && tsd->state.using_megaphone == 0) || tsd->state.vending != 0 || tsd->state.prevend != 0 + || tsd->state.buyingstore != 0 || tsd->state.storage_flag != STORAGE_FLAG_CLOSED) { //Fail clif->tradestart(sd, 2); clif->tradestart(tsd, 2); diff --git a/src/map/unit.c b/src/map/unit.c index 29a01aea7..fb6d992ae 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -57,6 +57,7 @@ #include "common/showmsg.h" #include "common/socket.h" #include "common/timer.h" +#include "common/utils.h" #include <stdio.h> #include <stdlib.h> @@ -71,20 +72,69 @@ struct unit_interface *unit; /** * Returns the unit_data for the given block_list. If the object is using * shared unit_data (i.e. in case of BL_NPC), it returns the shared data. - * @param bl block_list to process + * + * __Warning:__ if bl->type is not known or NULL, + * an assertion will be triggered and NULL returned. + * @param bl block_list to process, it is expected to be not NULL. * @return a pointer to the given object's unit_data **/ static struct unit_data *unit_bl2ud(struct block_list *bl) { - if (bl == NULL) return NULL; - if (bl->type == BL_PC) return &BL_UCAST(BL_PC, bl)->ud; - if (bl->type == BL_MOB) return &BL_UCAST(BL_MOB, bl)->ud; - if (bl->type == BL_PET) return &BL_UCAST(BL_PET, bl)->ud; - if (bl->type == BL_NPC) return BL_UCAST(BL_NPC, bl)->ud; - if (bl->type == BL_HOM) return &BL_UCAST(BL_HOM, bl)->ud; - if (bl->type == BL_MER) return &BL_UCAST(BL_MER, bl)->ud; - if (bl->type == BL_ELEM) return &BL_UCAST(BL_ELEM, bl)->ud; - return NULL; + Assert_retr(NULL, bl != NULL); + switch (bl->type) { + case BL_PC: + return &BL_UCAST(BL_PC, bl)->ud; + case BL_MOB: + return &BL_UCAST(BL_MOB, bl)->ud; + case BL_PET: + return &BL_UCAST(BL_PET, bl)->ud; + case BL_NPC: + return BL_UCAST(BL_NPC, bl)->ud; + case BL_HOM: + return &BL_UCAST(BL_HOM, bl)->ud; + case BL_MER: + return &BL_UCAST(BL_MER, bl)->ud; + case BL_ELEM: + return &BL_UCAST(BL_ELEM, bl)->ud; + case BL_SKILL: // No assertion to not spam the server console when attacking a skill type unit such as Ice Wall. + return NULL; + default: + Assert_retr(NULL, false); + } +} + +/** + * Returns the const unit_data for the given const block_list. If the object is using + * shared unit_data (i.e. in case of BL_NPC), it returns the shared data. + * + * __Warning:__ if bl->type is not known or NULL, + * an assertion will be triggered and NULL returned. + * @param bl block_list to process, it is expected to be not NULL. + * @return a pointer to the given object's unit_data + **/ +static const struct unit_data *unit_cbl2ud(const struct block_list *bl) +{ + Assert_retr(NULL, bl != NULL); + switch (bl->type) { + case BL_PC: + return &BL_UCCAST(BL_PC, bl)->ud; + case BL_MOB: + return &BL_UCCAST(BL_MOB, bl)->ud; + case BL_PET: + return &BL_UCCAST(BL_PET, bl)->ud; + case BL_NPC: + return BL_UCCAST(BL_NPC, bl)->ud; + case BL_HOM: + return &BL_UCCAST(BL_HOM, bl)->ud; + case BL_MER: + return &BL_UCCAST(BL_MER, bl)->ud; + case BL_ELEM: + return &BL_UCCAST(BL_ELEM, bl)->ud; + case BL_SKILL: // No assertion to not spam the server console when attacking a skill type unit such as Ice Wall. + return NULL; + default: + Assert_retr(NULL, false); + } } /** @@ -105,42 +155,46 @@ static struct unit_data *unit_bl2ud2(struct block_list *bl) return unit->bl2ud(bl); } -static int unit_walktoxy_sub(struct block_list *bl) +/** + * TODO: understand purpose of this function + * @param bl block_list to process + * @return 0: success, 1: fail, 2: nullpointer + */ +static int unit_walk_toxy_sub(struct block_list *bl) { - int i; - struct walkpath_data wpd; - struct unit_data *ud = NULL; - - nullpo_retr(1, bl); - ud = unit->bl2ud(bl); - if(ud == NULL) return 0; + nullpo_retr(2, bl); + struct unit_data *ud = unit->bl2ud(bl); + if (ud == NULL) + return 2; - memset(&wpd, 0, sizeof(wpd)); + struct walkpath_data wpd = {0}; - if( !path->search(&wpd,bl,bl->m,bl->x,bl->y,ud->to_x,ud->to_y,ud->state.walk_easy,CELL_CHKNOPASS) ) - return 0; + if (!path->search(&wpd, bl, bl->m, bl->x, bl->y, ud->to_x, ud->to_y, ud->state.walk_easy, CELL_CHKNOPASS)) + return 1; #ifdef OFFICIAL_WALKPATH - if( !path->search_long(NULL, bl, bl->m, bl->x, bl->y, ud->to_x, ud->to_y, CELL_CHKNOPASS) // Check if there is an obstacle between - && wpd.path_len > 14 // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett] - && (bl->type != BL_NPC) ) // If type is a NPC, please disregard. - return 0; + if (bl->type != BL_NPC // If type is an NPC, disregard. + && !path->search_long(NULL, bl, bl->m, bl->x, bl->y, ud->to_x, ud->to_y, CELL_CHKNOPASS) // Check if there is an obstacle between + && wpd.path_len > 14) { // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett] + return 1; + } #endif - memcpy(&ud->walkpath,&wpd,sizeof(wpd)); + ud->walkpath = wpd; - if (ud->target_to && ud->chaserange>1) { - //Generally speaking, the walk path is already to an adjacent tile - //so we only need to shorten the path if the range is greater than 1. + if (ud->target_to != 0 && ud->chaserange > 1) { + // Generally speaking, the walk path is already to an adjacent tile + // so we only need to shorten the path if the range is greater than 1. - //Trim the last part of the path to account for range, - //but always move at least one cell when requested to move. - for (i = (ud->chaserange*10)-10; i > 0 && ud->walkpath.path_len>1;) { - uint8 dir; + // Trim the last part of the path to account for range, + // but always move at least one cell when requested to move. + for (int i = ud->chaserange * 10 - 10; i > 0 && ud->walkpath.path_len > 1;) { + enum unit_dir dir; ud->walkpath.path_len--; dir = ud->walkpath.path[ud->walkpath.path_len]; - if (dir&1) - i -= MOVE_COST*20; //When chasing, units will target a diamond-shaped area in range [Playtester] + Assert_retr(1, dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX); + if (unit_is_diagonal_dir(dir)) + i -= MOVE_COST * 20; // When chasing, units will target a diamond-shaped area in range [Playtester] else i -= MOVE_COST; ud->to_x -= dirx[dir]; @@ -148,7 +202,7 @@ static int unit_walktoxy_sub(struct block_list *bl) } } - ud->state.change_walk_target=0; + ud->state.change_walk_target = 0; if (bl->type == BL_PC) { struct map_session_data *sd = BL_UCAST(BL_PC, bl); @@ -157,15 +211,17 @@ static int unit_walktoxy_sub(struct block_list *bl) } clif->move(ud); - if(ud->walkpath.path_pos>=ud->walkpath.path_len) - i = -1; - else if(ud->walkpath.path[ud->walkpath.path_pos]&1) - i = status->get_speed(bl)*MOVE_DIAGONAL_COST/MOVE_COST; + int timer_delay; + if (ud->walkpath.path_pos >= ud->walkpath.path_len) + timer_delay = -1; + else if ((ud->walkpath.path[ud->walkpath.path_pos] & 1) != 0) + timer_delay = status->get_speed(bl) * MOVE_DIAGONAL_COST / MOVE_COST; else - i = status->get_speed(bl); - if( i > 0) - ud->walktimer = timer->add(timer->gettick()+i,unit->walktoxy_timer,bl->id,i); - return 1; + timer_delay = status->get_speed(bl); + + if (timer_delay > 0) + ud->walktimer = timer->add(timer->gettick() + timer_delay, unit->walk_toxy_timer, bl->id, 0); //TODO: check if unit->walk_toxy_timer uses any intptr data + return 0; } /** @@ -173,289 +229,281 @@ static int unit_walktoxy_sub(struct block_list *bl) * @param tid: Timer ID * @param tick: Unused * @param id: ID of bl to do the action - * @param data: Not used - * @return 1: Success 0: Fail (No valid bl) + * @param data: Unused + * @return 0: success, 1: fail, 2: nullpointer */ -static int unit_step_timer(int tid, int64 tick, int id, intptr_t data) +static int unit_steptimer(int tid, int64 tick, int id, intptr_t data) { - struct block_list *bl; - struct unit_data *ud; - int target_id; - - bl = map->id2bl(id); - - if (!bl || bl->prev == NULL) - return 0; - - ud = unit->bl2ud(bl); - - if(!ud) - return 0; + struct block_list *bl = map->id2bl(id); + if (bl == NULL || bl->prev == NULL) + return 2; + struct unit_data *ud = unit->bl2ud(bl); + if (ud == NULL) + return 2; - if(ud->steptimer != tid) { - ShowError("unit_step_timer mismatch %d != %d\n",ud->steptimer,tid); - return 0; + if (ud->steptimer != tid) { + ShowError("unit_steptimer mismatch %d != %d\n", ud->steptimer, tid); + return 1; } ud->steptimer = INVALID_TIMER; - if(!ud->stepaction) - return 0; + if (!ud->stepaction) + return 1; - //Set to false here because if an error occurs, it should not be executed again + // Set to false here because if an error occurs, it should not be executed again ud->stepaction = false; - if(!ud->target_to) - return 0; + if (ud->target_to == 0) + return 1; - //Flush target_to as it might contain map coordinates which should not be used by other functions - target_id = ud->target_to; + // Flush target_to as it might contain map coordinates which should not be used by other functions + int target_id = ud->target_to; ud->target_to = 0; - //If stepaction is set then we remembered a client request that should be executed on the next step - //Execute request now if target is in attack range - if(ud->stepskill_id && skill->get_inf(ud->stepskill_id) & INF_GROUND_SKILL) { - //Execute ground skill + // If stepaction is set then we remembered a client request that should be executed on the next step + // Execute request now if target is in attack range + if (ud->stepskill_id != 0 && (skill->get_inf(ud->stepskill_id) & INF_GROUND_SKILL) != 0) { + // Execute ground skill struct map_data *md = &map->list[bl->m]; - unit->skilluse_pos(bl, target_id%md->xs, target_id/md->xs, ud->stepskill_id, ud->stepskill_lv); + unit->skilluse_pos(bl, target_id % md->xs, target_id / md->xs, ud->stepskill_id, ud->stepskill_lv); } else { - //If a player has target_id set and target is in range, attempt attack + // If a player has target_id set and target is in range, attempt attack struct block_list *tbl = map->id2bl(target_id); - if (!tbl || !status->check_visibility(bl, tbl)) { - return 0; - } - if(ud->stepskill_id == 0) { - //Execute normal attack - unit->attack(bl, tbl->id, (ud->state.attack_continue) + 2); - } else { - //Execute non-ground skill - unit->skilluse_id(bl, tbl->id, ud->stepskill_id, ud->stepskill_lv); - } + if (tbl == NULL || status->check_visibility(bl, tbl) == 0) + return 1; // Target does not exist (player offline, monster died, etc.) or target is not visible to source. + if (ud->stepskill_id == 0) + unit->attack(bl, tbl->id, ud->state.attack_continue + 2); // Execute normal attack + else + unit->skilluse_id(bl, tbl->id, ud->stepskill_id, ud->stepskill_lv); // Execute non-ground skill } - return 1; + return 0; } -static int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) +/** + * Warps homunculus or mercenary towards his master in case he's too far away for 3 seconds. + * @param master_bl: block_list of master + * @param slave_bl: block_list of homunculus/mercenary master owns + * @return 0: success, 1: fail + */ +static int unit_warpto_master(struct block_list *master_bl, struct block_list *slave_bl) { - int i; - int x,y,dx,dy; - unsigned char icewall_walk_block; - uint8 dir; - struct block_list *bl; - struct map_session_data *sd; - struct mob_data *md; - struct unit_data *ud; - struct mercenary_data *mrd; + nullpo_retr(1, master_bl); + nullpo_retr(1, slave_bl); + int64 *masterteleport_timer; + struct homun_data *hd = BL_CAST(BL_HOM, slave_bl); + struct mercenary_data *md = BL_CAST(BL_MER, slave_bl); + + bool check = true; + if (hd != NULL) { + masterteleport_timer = &hd->masterteleport_timer; + check = homun_alive(hd); + } else if (md != NULL) { + masterteleport_timer = &md->masterteleport_timer; + } else { + return 1; + } - bl = map->id2bl(id); - if(bl == NULL) - return 0; - sd = BL_CAST(BL_PC, bl); - md = BL_CAST(BL_MOB, bl); - mrd = BL_CAST(BL_MER, bl); - ud = unit->bl2ud(bl); + if (check && !check_distance_bl(master_bl, slave_bl, MAX_MER_DISTANCE)) { + if (*masterteleport_timer == 0) { + *masterteleport_timer = timer->gettick(); + return 0; + } else if (DIFF_TICK(timer->gettick(), *masterteleport_timer) > 3000) { + unit->warp(slave_bl, master_bl->m, master_bl->x, master_bl->y, CLR_TELEPORT); + } + } + *masterteleport_timer = 0; // resets tick in case he isn't far anymore. - if(ud == NULL) return 0; + return 0; +} + +/** + * Timer for walking to target coordinates or object. + * @param tid: timer id + * @param tick: tick + * @param id: id of bl to do the action + * @param data: unused + * @return 0: success, 1: fail + */ +static int unit_walk_toxy_timer(int tid, int64 tick, int id, intptr_t data) +{ + struct block_list *bl = map->id2bl(id); + if (bl == NULL) + return 1; + struct unit_data *ud = unit->bl2ud(bl); + if (ud == NULL) + return 1; - if(ud->walktimer != tid){ + if (ud->walktimer != tid) { ShowError("unit_walk_timer mismatch %d != %d\n",ud->walktimer,tid); - return 0; + return 1; } + ud->walktimer = INVALID_TIMER; - if (bl->prev == NULL) return 0; // Stop moved because it is missing from the block_list - if(ud->walkpath.path_pos>=ud->walkpath.path_len) - return 0; + if (bl->prev == NULL) // Stop moved because it is missing from the block_list. + return 1; - if(ud->walkpath.path[ud->walkpath.path_pos]>=8) + if (ud->walkpath.path_pos >= ud->walkpath.path_len) return 1; - x = bl->x; - y = bl->y; - dir = ud->walkpath.path[ud->walkpath.path_pos]; + enum unit_dir dir = ud->walkpath.path[ud->walkpath.path_pos]; + Assert_retr(1, dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX); + int x = bl->x; + int y = bl->y; + ud->dir = dir; - dx = dirx[(int)dir]; - dy = diry[(int)dir]; + int dx = dirx[dir]; + int dy = diry[dir]; - //Get icewall walk block depending on boss mode (players can't be trapped) - if(md && md->status.mode&MD_BOSS) - icewall_walk_block = battle_config.boss_icewall_walk_block; - else if(md) - icewall_walk_block = battle_config.mob_icewall_walk_block; - else - icewall_walk_block = 0; + // Get icewall walk block depending on boss mode (players can't be trapped) + unsigned char icewall_walk_block = 0; + struct mob_data *md = BL_CAST(BL_MOB, bl); + if (md != NULL) { + if ((md->status.mode & MD_BOSS) != 0) + icewall_walk_block = battle_config.boss_icewall_walk_block; + else + icewall_walk_block = battle_config.mob_icewall_walk_block; + } - //Monsters will walk into an icewall from the west and south if they already started walking + // Monsters will walk into an icewall from the west and south if they already started walking if (map->getcell(bl->m, bl, x + dx, y + dy, CELL_CHKNOPASS) && (icewall_walk_block == 0 || !map->getcell(bl->m, bl, x + dx, y + dy, CELL_CHKICEWALL) || dx < 0 || dy < 0)) - return unit->walktoxy_sub(bl); + return unit->walk_toxy_sub(bl); - //Monsters can only leave icewalls to the west and south - //But if movement fails more than icewall_walk_block times, they can ignore this rule - if (md && md->walktoxy_fail_count < icewall_walk_block && map->getcell(bl->m, bl, x, y, CELL_CHKICEWALL) && (dx > 0 || dy > 0)) { - //Needs to be done here so that rudeattack skills are invoked + // Monsters can only leave icewalls to the west and south + // But if movement fails more than icewall_walk_block times, they can ignore this rule + if (md != NULL && md->walktoxy_fail_count < icewall_walk_block && map->getcell(bl->m, bl, x, y, CELL_CHKICEWALL) != 0 && (dx > 0 || dy > 0)) { + // Needs to be done here so that rudeattack skills are invoked md->walktoxy_fail_count++; clif->fixpos(bl); - //Monsters in this situation first use a chase skill, then unlock target and then use an idle skill - if (!(++ud->walk_count%WALK_SKILL_INTERVAL)) + // Monsters in this situation first use a chase skill, then unlock target and then use an idle skill + if ((++ud->walk_count % WALK_SKILL_INTERVAL) == 0) mob->skill_use(md, tick, -1); mob->unlocktarget(md, tick); - if (!(++ud->walk_count%WALK_SKILL_INTERVAL)) + if ((++ud->walk_count % WALK_SKILL_INTERVAL) != 0) mob->skill_use(md, tick, -1); - return 0; + return 1; } + struct map_session_data *sd = BL_CAST(BL_PC, bl); //Refresh view for all those we lose sight - map->foreachinmovearea(clif->outsight, bl, AREA_SIZE, dx, dy, sd?BL_ALL:BL_PC, bl); + map->foreachinmovearea(clif->outsight, bl, AREA_SIZE, dx, dy, (sd != NULL ? BL_ALL : BL_PC), bl); x += dx; y += dy; map->moveblock(bl, x, y, tick); - ud->walk_count++; //walked cell counter, to be used for walk-triggered skills. [Skotlex] + ud->walk_count++; // walked cell counter, to be used for walk-triggered skills. [Skotlex] status_change_end(bl, SC_ROLLINGCUTTER, INVALID_TIMER); //If you move, you lose your counters. [malufett] if (bl->x != x || bl->y != y || ud->walktimer != INVALID_TIMER) - return 0; //map->moveblock has altered the object beyond what we expected (moved/warped it) + return 1; // map->moveblock has altered the object beyond what we expected (moved/warped it) ud->walktimer = -2; // arbitrary non-INVALID_TIMER value to make the clif code send walking packets - map->foreachinmovearea(clif->insight, bl, AREA_SIZE, -dx, -dy, sd?BL_ALL:BL_PC, bl); + map->foreachinmovearea(clif->insight, bl, AREA_SIZE, -dx, -dy, (sd != NULL ? BL_ALL : BL_PC), bl); ud->walktimer = INVALID_TIMER; - if(sd) { - if( sd->touching_id ) - npc->touchnext_areanpc(sd,false); + struct mercenary_data *mrd = BL_CAST(BL_MER, bl); + if (sd != NULL) { + if (sd->touching_id != 0) + npc->touchnext_areanpc(sd, false); if (map->getcell(bl->m, bl, x, y, CELL_CHKNPC)) { - npc->touch_areanpc(sd,bl->m,x,y); + npc->touch_areanpc(sd, bl->m, x, y); if (bl->prev == NULL) //Script could have warped char, abort remaining of the function. return 0; - } else + } else { npc->untouch_areanpc(sd, bl->m, x, y); - - if( sd->md ) { // mercenary should be warped after being 3 seconds too far from the master [greenbox] - if( !check_distance_bl(&sd->bl, &sd->md->bl, MAX_MER_DISTANCE) ) { - if (sd->md->masterteleport_timer == 0) - sd->md->masterteleport_timer = timer->gettick(); - else if (DIFF_TICK(timer->gettick(), sd->md->masterteleport_timer) > 3000) { - sd->md->masterteleport_timer = 0; - unit->warp( &sd->md->bl, sd->bl.m, sd->bl.x, sd->bl.y, CLR_TELEPORT ); - } - } else // reset the tick, he is not far anymore - sd->md->masterteleport_timer = 0; - } - if( sd->hd ) { - if( homun_alive(sd->hd) && !check_distance_bl(&sd->bl, &sd->hd->bl, MAX_MER_DISTANCE) ) { - if (sd->hd->masterteleport_timer == 0) - sd->hd->masterteleport_timer = timer->gettick(); - else if (DIFF_TICK(timer->gettick(), sd->hd->masterteleport_timer) > 3000) { - sd->hd->masterteleport_timer = 0; - unit->warp( &sd->hd->bl, sd->bl.m, sd->bl.x, sd->bl.y, CLR_TELEPORT ); - } - } else - sd->hd->masterteleport_timer = 0; } + + if (sd->md != NULL) // mercenary should be warped after being 3 seconds too far from the master [greenbox] + unit->warpto_master(bl, &sd->md->bl); + if (sd->hd != NULL) + unit->warpto_master(bl, &sd->hd->bl); } else if (md) { - //Movement was successful, reset walktoxy_fail_count + // Movement was successful, reset walktoxy_fail_count md->walktoxy_fail_count = 0; - if (map->getcell(bl->m, bl, x, y, CELL_CHKNPC)) { - if( npc->touch_areanpc2(md) ) return 0; // Warped - } else + + if (map->getcell(bl->m, bl, x, y, CELL_CHKNPC) != 0 && npc->touch_areanpc2(md)) + return 0; // Warped + else md->areanpc_id = 0; - if (md->min_chase > md->db->range3) md->min_chase--; - //Walk skills are triggered regardless of target due to the idle-walk mob state. - //But avoid triggering on stop-walk calls. - if (tid != INVALID_TIMER - && !(ud->walk_count%WALK_SKILL_INTERVAL) - && map->list[bl->m].users > 0 - && mob->skill_use(md, tick, -1) - ) { + + if (md->min_chase > md->db->range3) + md->min_chase--; + // Walk skills are triggered regardless of target due to the idle-walk mob state. + // But avoid triggering on stop-walk calls. + if (tid != INVALID_TIMER && (ud->walk_count % WALK_SKILL_INTERVAL) == 0 + && map->list[bl->m].users > 0 && mob->skill_use(md, tick, -1) == 0) { + // Walk skills are supposed to be used while walking if (!(ud->skill_id == NPC_SELFDESTRUCTION && ud->skilltimer != INVALID_TIMER) - && md->state.skillstate != MSS_WALK //Walk skills are supposed to be used while walking - ) { - //Skill used, abort walking - clif->fixpos(bl); //Fix position as walk has been canceled. - return 0; + && md->state.skillstate != MSS_WALK) { + // Skill used, abort walking + clif->fixpos(bl); // Fix position as walk has been canceled. + return 1; } - //Resend walk packet for proper Self Destruction display. + // Resend walk packet for proper Self Destruction display. clif->move(ud); } - } - else if( mrd && mrd->master ) - { - if (!check_distance_bl(&mrd->master->bl, bl, MAX_MER_DISTANCE)) - { - // mercenary should be warped after being 3 seconds too far from the master [greenbox] - if (mrd->masterteleport_timer == 0) - { - mrd->masterteleport_timer = timer->gettick(); - } - else if (DIFF_TICK(timer->gettick(), mrd->masterteleport_timer) > 3000) - { - mrd->masterteleport_timer = 0; - unit->warp( bl, mrd->master->bl.m, mrd->master->bl.x, mrd->master->bl.y, CLR_TELEPORT ); - } - } - else - { - mrd->masterteleport_timer = 0; - } + } else if (mrd != NULL && mrd->master != NULL) { + unit->warpto_master(&mrd->master->bl, bl); } - if(tid == INVALID_TIMER) //A directly invoked timer is from battle_stop_walking, therefore the rest is irrelevant. + if(tid == INVALID_TIMER) // A directly invoked timer is from battle_stop_walking, therefore the rest is irrelevant. return 0; - //If stepaction is set then we remembered a client request that should be executed on the next step - if (ud->stepaction && ud->target_to) { - //Delete old stepaction even if not executed yet, the latest command is what counts - if(ud->steptimer != INVALID_TIMER) { - timer->delete(ud->steptimer, unit->step_timer); + // If stepaction is set then we remembered a client request that should be executed on the next step + if (ud->stepaction && ud->target_to != 0) { + // Delete old stepaction even if not executed yet, the latest command is what counts + if (ud->steptimer != INVALID_TIMER) { + timer->delete(ud->steptimer, unit->steptimer); ud->steptimer = INVALID_TIMER; } - //Delay stepactions by half a step (so they are executed at full step) - if(ud->walkpath.path[ud->walkpath.path_pos]&1) - i = status->get_speed(bl)*14/20; + // Delay stepactions by half a step (so they are executed at full step) + int timer_delay; + if ((ud->walkpath.path[ud->walkpath.path_pos] & 1) != 0) + timer_delay = status->get_speed(bl) * 14 / 20; else - i = status->get_speed(bl)/2; - ud->steptimer = timer->add(tick+i, unit->step_timer, bl->id, 0); + timer_delay = status->get_speed(bl) / 2; + ud->steptimer = timer->add(tick + timer_delay, unit->steptimer, bl->id, 0); } - if(ud->state.change_walk_target) { - if(unit->walktoxy_sub(bl)) { - return 1; - } else { - clif->fixpos(bl); + if (ud->state.change_walk_target) { + if (unit->walk_toxy_sub(bl) == 0) return 0; - } + clif->fixpos(bl); + return 1; } + int timer_delay; ud->walkpath.path_pos++; if(ud->walkpath.path_pos>=ud->walkpath.path_len) - i = -1; - else if(ud->walkpath.path[ud->walkpath.path_pos]&1) - i = status->get_speed(bl)*14/10; + timer_delay = -1; + else if ((ud->walkpath.path[ud->walkpath.path_pos] & 1) != 0) + timer_delay = status->get_speed(bl) * 14 / 10; else - i = status->get_speed(bl); + timer_delay = status->get_speed(bl); - if(i > 0) { - ud->walktimer = timer->add(tick+i,unit->walktoxy_timer,id,i); - if( md && DIFF_TICK(tick,md->dmgtick) < 3000 )//not required not damaged recently + if (timer_delay > 0) { + ud->walktimer = timer->add(tick + timer_delay, unit->walk_toxy_timer, id, 0); + if (md != NULL && DIFF_TICK(tick, md->dmgtick) < 3000) // not required not damaged recently clif->move(ud); - } else if(ud->state.running) { - //Keep trying to run. - if ( !(unit->run(bl, NULL, SC_RUN) || unit->run(bl, sd, SC_WUGDASH)) ) + } else if (ud->state.running != 0) { + // Keep trying to run. + if (!(unit->run(bl, NULL, SC_RUN) || unit->run(bl, sd, SC_WUGDASH))) ud->state.running = 0; - } else if (!ud->stepaction && ud->target_to) { - //Update target trajectory. + } else if (!ud->stepaction && ud->target_to != 0) { + // Update target trajectory. struct block_list *tbl = map->id2bl(ud->target_to); - if (!tbl || !status->check_visibility(bl, tbl)) { - //Cancel chase. + if (tbl == NULL || status->check_visibility(bl, tbl) == 0) { // not visible + // Cancel chase. ud->to_x = bl->x; ud->to_y = bl->y; - if (tbl && bl->type == BL_MOB && mob->warpchase(BL_UCAST(BL_MOB, bl), tbl)) + if (tbl != NULL && bl->type == BL_MOB && mob->warpchase(BL_UCAST(BL_MOB, bl), tbl) != 0) return 0; ud->target_to = 0; - return 0; + return 1; } if (tbl->m == bl->m && check_distance_bl(bl, tbl, ud->chaserange)) { //Reached destination. @@ -466,81 +514,106 @@ static int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) clif->fixpos(bl); unit->attack(bl, tbl->id, ud->state.attack_continue); } - } else { //Update chase-path - unit->walktobl(bl, tbl, ud->chaserange, ud->state.walk_easy|(ud->state.attack_continue? 1 : 0)); + } else { // Update chase-path + unit->walktobl(bl, tbl, ud->chaserange, ud->state.walk_easy | ud->state.attack_continue); return 0; } } else { - //Stopped walking. Update to_x and to_y to current location [Skotlex] + // Stopped walking. Update to_x and to_y to current location [Skotlex] ud->to_x = bl->x; ud->to_y = bl->y; - if (battle_config.official_cell_stack_limit && map->count_oncell(bl->m, x, y, BL_CHAR|BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) { - //Walked on occupied cell, call unit_walktoxy again - if(ud->steptimer != INVALID_TIMER) { - //Execute step timer on next step instead - timer->delete(ud->steptimer, unit->step_timer); + if (battle_config.official_cell_stack_limit != 0 && map->count_oncell(bl->m, x, y, BL_CHAR | BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) { + // Walked on occupied cell, call unit->walk_toxy again + if (ud->steptimer != INVALID_TIMER) { + // Execute step timer on next step instead + timer->delete(ud->steptimer, unit->steptimer); ud->steptimer = INVALID_TIMER; } - return unit->walktoxy(bl, x, y, 8); + return unit->walk_toxy(bl, x, y, 8); } } return 0; } -static int unit_delay_walktoxy_timer(int tid, int64 tick, int id, intptr_t data) +/** + * Timer for delayed execution of unit->walk_toxy once triggered + * @param tid: Timer ID, unused + * @param tick: Tick, unused + * @param id: ID of block_list to execute the action + * @param data: uint32 data cast to intptr_t with x-coord in lowest 16 bits and y-coord in highest 16 bits + * @return 0: success, 1: failure + */ +static int unit_delay_walk_toxy_timer(int tid, int64 tick, int id, intptr_t data) { struct block_list *bl = map->id2bl(id); - - if (!bl || bl->prev == NULL) - return 0; - unit->walktoxy(bl, (short)((data>>16)&0xffff), (short)(data&0xffff), 0); - return 1; + if (bl == NULL || bl->prev == NULL) + return 1; + short x = (short)GetWord((uint32)data, 0); + short y = (short)GetWord((uint32)data, 1); + unit->walk_toxy(bl, x, y, 0); + return 0; } -//flag parameter: -//&1 -> 1/0 = easy/hard -//&2 -> force walking -//&4 -> Delay walking if the reason you can't walk is the canwalk delay -//&8 -> Search for an unoccupied cell and cancel if none available -static int unit_walktoxy(struct block_list *bl, short x, short y, int flag) +/** + * Makes a unit walk to (x, y) coordinates + * @param bl: block_list of unit to move + * @param x: x-coordinate + * @param y: y-coordinate + * @param flag: flag paramater with following options: + * - `& 1` -> 1/0 = easy / hard + * - `& 2` -> Force walking + * - `& 4` -> Delay walking, if the reason you can't walk is the `canwalk delay` + * - `& 8` -> Search for an unoccupied cell and cancel if none available + * . + * @return 0: success, 1: failure + */ +static int unit_walk_toxy(struct block_list *bl, short x, short y, int flag) { + // TODO: change flag to enum? [skyleo] struct unit_data* ud = NULL; struct status_change* sc = NULL; struct walkpath_data wpd; - nullpo_ret(bl); + nullpo_retr(1, bl); ud = unit->bl2ud(bl); - if( ud == NULL) return 0; + if (ud == NULL) + return 1; - if (battle_config.check_occupied_cells && (flag&8) && !map->closest_freecell(bl->m, bl, &x, &y, BL_CHAR|BL_NPC, 1)) //This might change x and y - return 0; + if ((flag & 8) != 0 && battle_config.check_occupied_cells != 0) { + if (!map->closest_freecell(bl->m, bl, &x, &y, BL_CHAR | BL_NPC, 1)) // This might change x and y + return 1; + } - if (!path->search(&wpd, bl, bl->m, bl->x, bl->y, x, y, flag&1, CELL_CHKNOPASS)) // Count walk path cells - return 0; + if (!path->search(&wpd, bl, bl->m, bl->x, bl->y, x, y, flag & 1, CELL_CHKNOPASS)) // Count walk path cells + return 1; + if (bl->type != BL_NPC) { #ifdef OFFICIAL_WALKPATH - if( !path->search_long(NULL, bl, bl->m, bl->x, bl->y, x, y, CELL_CHKNOPASS) // Check if there is an obstacle between - && (wpd.path_len > (battle_config.max_walk_path/17)*14) // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett] - && (bl->type != BL_NPC) ) // If type is a NPC, please disregard. - return 0; + // Check if there is an obstacle between + // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett] + if (!path->search_long(NULL, bl, bl->m, bl->x, bl->y, x, y, CELL_CHKNOPASS) + && (wpd.path_len > (battle_config.max_walk_path / 17) * 14)) + return 1; #endif - if ((wpd.path_len > battle_config.max_walk_path) && (bl->type != BL_NPC)) - return 0; + if (wpd.path_len > battle_config.max_walk_path) + return 1; + } - if (flag&4 && DIFF_TICK(ud->canmove_tick, timer->gettick()) > 0 && - DIFF_TICK(ud->canmove_tick, timer->gettick()) < 2000) { + if ((flag & 4) != 0 && DIFF_TICK(ud->canmove_tick, timer->gettick()) > 0 + && DIFF_TICK(ud->canmove_tick, timer->gettick()) < 2000) { // Delay walking command. [Skotlex] - timer->add(ud->canmove_tick+1, unit->delay_walktoxy_timer, bl->id, (x<<16)|(y&0xFFFF)); - return 1; + timer->add(ud->canmove_tick + 1, unit->delay_walk_toxy_timer, bl->id, + (intptr_t)MakeDWord((uint16)x, (uint16)y)); + return 0; } - if(!(flag&2) && (!(status_get_mode(bl)&MD_CANMOVE) || !unit->can_move(bl))) - return 0; + if ((flag & 2) == 0 && ((status_get_mode(bl) & MD_CANMOVE) == 0 || unit->can_move(bl) == 0)) + return 1; - ud->state.walk_easy = flag&1; + ud->state.walk_easy = flag & 1; ud->to_x = x; ud->to_y = y; unit->stop_attack(bl); //Sets target to 0 @@ -548,44 +621,63 @@ static int unit_walktoxy(struct block_list *bl, short x, short y, int flag) unit->stop_stepaction(bl); // unit->walktoxy removes any remembered stepaction and resets ud->target_to sc = status->get_sc(bl); - if( sc ) { - if( sc->data[SC_CONFUSION] || sc->data[SC__CHAOS] ) //Randomize the target position + if (sc != NULL) { + if (sc->data[SC_CONFUSION] != NULL || sc->data[SC__CHAOS] != NULL) // Randomize the target position map->random_dir(bl, &ud->to_x, &ud->to_y); - if( sc->data[SC_COMBOATTACK] ) + if (sc->data[SC_COMBOATTACK] != NULL) status_change_end(bl, SC_COMBOATTACK, INVALID_TIMER); } - if(ud->walktimer != INVALID_TIMER) { + if (ud->walktimer != INVALID_TIMER) { // When you come to the center of the grid because the change of destination while you're walking right now - // Call a function from a timer unit->walktoxy_sub + // Call a function from a timer unit->walk_toxy_sub ud->state.change_walk_target = 1; - return 1; + return 0; } - return unit->walktoxy_sub(bl); + return unit->walk_toxy_sub(bl); } -//To set Mob's CHASE/FOLLOW states (shouldn't be done if there's no path to reach) -static inline void set_mobstate(struct block_list *bl, int flag) +/** + * Sets CHASE / FOLLOW states, in case bl is a mob. + * WARNING: This shouldn't be done if there's no path to reach + * @param bl: block_list of mob + */ +static inline void set_mobstate(struct block_list *bl) { - struct mob_data* md = BL_CAST(BL_MOB,bl); + struct mob_data* md = BL_CAST(BL_MOB, bl); - if( md && flag ) - md->state.skillstate = md->state.aggressive ? MSS_FOLLOW : MSS_RUSH; + if (md != NULL) { + if (md->state.aggressive != 0) + md->state.skillstate = MSS_FOLLOW; + else + md->state.skillstate = MSS_RUSH; + } } -static int unit_walktobl_sub(int tid, int64 tick, int id, intptr_t data) +/** + * Timer used for when a unit can't walk towards its target yet due to it's canmove_tick, + * keeps retrying until it works or target changes. + * @param tid: Timer ID, unused + * @param tick: Tick, unused + * @param id: ID of block_list to execute the action + * @param data: ID of block_list to walk towards + * @return 0: success, 1: failure + */ +static int unit_walktobl_timer(int tid, int64 tick, int id, intptr_t data) { struct block_list *bl = map->id2bl(id); - struct unit_data *ud = bl?unit->bl2ud(bl):NULL; - - if (ud && ud->walktimer == INVALID_TIMER && ud->target == data) { - if (DIFF_TICK(ud->canmove_tick, tick) > 0) //Keep waiting? - timer->add(ud->canmove_tick+1, unit->walktobl_sub, id, data); - else if (unit->can_move(bl)) { - if (unit->walktoxy_sub(bl)) - set_mobstate(bl, ud->state.attack_continue); - } + if (bl == NULL) + return 1; + struct unit_data *ud = unit->bl2ud(bl); + if (ud == NULL) + return 1; + + if (ud->walktimer == INVALID_TIMER && ud->target == data) { + if (DIFF_TICK(ud->canmove_tick, tick) > 0) // Keep waiting? + timer->add(ud->canmove_tick + 1, unit->walktobl_timer, id, data); + else if (unit->can_move(bl) != 0 && unit->walk_toxy_sub(bl) == 0 && ud->state.attack_continue != 0) + set_mobstate(bl); } return 0; } @@ -629,23 +721,27 @@ static int unit_walktobl(struct block_list *bl, struct block_list *tbl, int rang if(ud->walktimer != INVALID_TIMER) { ud->state.change_walk_target = 1; - set_mobstate(bl, flag&2); + if ((flag & 2) != 0) + set_mobstate(bl); return 1; } if (DIFF_TICK(ud->canmove_tick, timer->gettick()) > 0) { //Can't move, wait a bit before invoking the movement. - timer->add(ud->canmove_tick+1, unit->walktobl_sub, bl->id, ud->target); + timer->add(ud->canmove_tick + 1, unit->walktobl_timer, bl->id, ud->target); return 1; } if(!unit->can_move(bl)) return 0; - if (unit->walktoxy_sub(bl)) { - set_mobstate(bl, flag&2); + if (unit->walk_toxy_sub(bl) == 0) { + if ((flag & 2) != 0) + set_mobstate(bl); + return 1; } + return 0; } @@ -732,14 +828,14 @@ static bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc return false; } - if( unit->walktoxy(bl, to_x, to_y, 1) ) + if (unit->walk_toxy(bl, to_x, to_y, 1) == 0) return true; //There must be an obstacle nearby. Attempt walking one cell at a time. do { to_x -= dir_x; to_y -= dir_y; - } while (--i > 0 && !unit->walktoxy(bl, to_x, to_y, 1)); + } while (--i > 0 && unit->walk_toxy(bl, to_x, to_y, 1) != 0); if ( i == 0 ) { unit->run_hit(bl, sc, sd, type); @@ -752,19 +848,21 @@ static bool unit_run(struct block_list *bl, struct map_session_data *sd, enum sc //Makes bl attempt to run dist cells away from target. Uses hard-paths. static int unit_escape(struct block_list *bl, struct block_list *target, short dist) { - uint8 dir; nullpo_ret(bl); - dir = map->calc_dir(target, bl->x, bl->y); + enum unit_dir dir = map->calc_dir(target, bl->x, bl->y); + Assert_retr(1, dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX); while (dist > 0 && map->getcell(bl->m, bl, bl->x + dist * dirx[dir], bl->y + dist * diry[dir], CELL_CHKNOREACH)) dist--; - return ( dist > 0 && unit->walktoxy(bl, bl->x + dist*dirx[dir], bl->y + dist*diry[dir], 0) ); + if (dist > 0 && unit->walk_toxy(bl, bl->x + dist * dirx[dir], bl->y + dist * diry[dir], 0) == 0) + return 1; + else + return 0; } //Instant warp function. static int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath) { short dx,dy; - uint8 dir; struct unit_data *ud = NULL; struct map_session_data *sd = NULL; @@ -783,7 +881,7 @@ static int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int eas ud->to_x = dst_x; ud->to_y = dst_y; - dir = map->calc_dir(bl, dst_x, dst_y); + enum unit_dir dir = map->calc_dir(bl, dst_x, dst_y); ud->dir = dir; dx = dst_x - bl->x; @@ -807,7 +905,7 @@ static int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int eas } else npc->untouch_areanpc(sd, bl->m, bl->x, bl->y); - if( sd->status.pet_id > 0 && sd->pd && sd->pd->pet.intimate > 0 ) + if (sd->status.pet_id > 0 && sd->pd && sd->pd->pet.intimate > PET_INTIMACY_NONE) { // Check if pet needs to be teleported. [Skotlex] int flag = 0; struct block_list* pbl = &sd->pd->bl; @@ -825,12 +923,18 @@ static int unit_movepos(struct block_list *bl, short dst_x, short dst_y, int eas return 1; } -static int unit_setdir(struct block_list *bl, unsigned char dir) +/** + * Sets the facing direction of a unit + * @param bl: unit to modify + * @param dir: the facing direction @see enum unit_dir + * @return 0: success, 1: failure + */ +static int unit_set_dir(struct block_list *bl, enum unit_dir dir) { - struct unit_data *ud; - nullpo_ret(bl ); - ud = unit->bl2ud(bl); - if (!ud) return 0; + nullpo_retr(1, bl); + struct unit_data *ud = unit->bl2ud(bl); + if (ud == NULL) + return 1; ud->dir = dir; if (bl->type == BL_PC) BL_UCAST(BL_PC, bl)->head_dir = 0; @@ -838,15 +942,20 @@ static int unit_setdir(struct block_list *bl, unsigned char dir) return 0; } -static uint8 unit_getdir(struct block_list *bl) +/** + * Get the facing direction of a unit + * @param bl: unit to request data from + * @return the facing direction @see enum unit_dir + */ +static enum unit_dir unit_getdir(const struct block_list *bl) { - struct unit_data *ud; - nullpo_ret(bl); + nullpo_retr(UNIT_DIR_NORTH, bl); - if( bl->type == BL_NPC ) + if (bl->type == BL_NPC) return BL_UCCAST(BL_NPC, bl)->dir; - ud = unit->bl2ud(bl); - if (!ud) return 0; + const struct unit_data *ud = unit->cbl2ud(bl); + if (ud == NULL) + return UNIT_DIR_NORTH; return ud->dir; } @@ -1010,7 +1119,7 @@ static int unit_stop_walking(struct block_list *bl, int flag) //timer->delete function does not messes with it. If the function's //behavior changes in the future, this code could break! td = timer->get(ud->walktimer); - timer->delete(ud->walktimer, unit->walktoxy_timer); + timer->delete(ud->walktimer, unit->walk_toxy_timer); ud->walktimer = INVALID_TIMER; ud->state.change_walk_target = 0; tick = timer->gettick(); @@ -1018,7 +1127,7 @@ static int unit_stop_walking(struct block_list *bl, int flag) || (flag&STOPWALKING_FLAG_NEXTCELL && td && DIFF_TICK(td->tick, tick) <= td->data/2) //Enough time has passed to cover half-cell ) { ud->walkpath.path_len = ud->walkpath.path_pos+1; - unit->walktoxy_timer(INVALID_TIMER, tick, bl->id, ud->walkpath.path_pos); + unit->walk_toxy_timer(INVALID_TIMER, tick, bl->id, ud->walkpath.path_pos); } if(flag&STOPWALKING_FLAG_FIXPOS) @@ -1042,12 +1151,13 @@ static int unit_stop_walking(struct block_list *bl, int flag) static int unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv) { int casttime = skill->cast_fix(src, skill_id, skill_lv); - int castcancel = skill->get_castcancel(skill_id); + int castcancel = skill->get_castcancel(skill_id, skill_lv); int ret = unit->skilluse_id2(src, target_id, skill_id, skill_lv, casttime, castcancel); struct map_session_data *sd = BL_CAST(BL_PC, src); if (sd != NULL) - pc->itemskill_clear(sd); + pc->autocast_remove(sd, sd->auto_cast_current.type, sd->auto_cast_current.skill_id, + sd->auto_cast_current.skill_lv); return ret; } @@ -1235,7 +1345,7 @@ static int unit_set_walkdelay(struct block_list *bl, int64 tick, int delay, int } else { unit->stop_walking(bl, STOPWALKING_FLAG_NEXTCELL); if (ud->target) - timer->add(ud->canmove_tick+1, unit->walktobl_sub, bl->id, ud->target); + timer->add(ud->canmove_tick + 1, unit->walktobl_timer, bl->id, ud->target); } } } @@ -1450,13 +1560,13 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill ud->target_to = target_id; ud->stepskill_id = skill_id; ud->stepskill_lv = skill_lv; - return 0; // Attacking will be handled by unit_walktoxy_timer in this case + return 0; // Attacking will be handled by unit_walk_toxy_timer in this case } //Check range when not using skill on yourself or is a combo-skill during attack //(these are supposed to always have the same range as your attack) if( src->id != target_id && (!temp || ud->attacktimer == INVALID_TIMER) ) { - if( skill->get_state(ud->skill_id) == ST_MOVE_ENABLE ) { + if (skill->get_state(skill_id, skill_lv) == ST_MOVE_ENABLE) { if( !unit->can_reach_bl(src, target, range + 1, 1, NULL, NULL) ) return 0; // Walk-path check failed. } else if( src->type == BL_MER && skill_id == MA_REMOVETRAP ) { @@ -1606,7 +1716,7 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill if (!ud->state.running) //need TK_RUN or WUGDASH handler to be done before that, see bugreport:6026 unit->stop_walking(src, STOPWALKING_FLAG_FIXPOS);// even though this is not how official works but this will do the trick. bugreport:6829 - if (sd != NULL && sd->state.itemskill_no_casttime == 1 && skill->is_item_skill(sd, skill_id, skill_lv)) + if (sd != NULL && sd->auto_cast_current.itemskill_instant_cast && sd->auto_cast_current.type == AUTOCAST_ITEM) casttime = 0; // in official this is triggered even if no cast time. @@ -1644,7 +1754,7 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill if( casttime <= 0 ) ud->state.skillcastcancel = 0; - if( !sd || sd->skillitem != skill_id || skill->get_cast(skill_id,skill_lv) ) + if (sd == NULL || sd->auto_cast_current.type < AUTOCAST_ABRA || skill->get_cast(skill_id, skill_lv) != 0) ud->canact_tick = tick + casttime + 100; if( sd ) { @@ -1663,7 +1773,7 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill if( casttime > 0 ) { if (src->id != target->id) // self-targeted skills shouldn't show different direction - unit->setdir(src, map->calc_dir(src, target->x, target->y)); + unit->set_dir(src, map->calc_dir(src, target->x, target->y)); ud->skilltimer = timer->add( tick+casttime, skill->castend_id, src->id, 0 ); if (sd && (pc->checkskill(sd, SA_FREECAST) > 0 || skill_id == LG_EXEEDBREAK || (skill->get_inf2(ud->skill_id) & INF2_FREE_CAST_REDUCED) != 0)) status_calc_bl(&sd->bl, SCB_SPEED|SCB_ASPD); @@ -1679,12 +1789,13 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill static int unit_skilluse_pos(struct block_list *src, short skill_x, short skill_y, uint16 skill_id, uint16 skill_lv) { int casttime = skill->cast_fix(src, skill_id, skill_lv); - int castcancel = skill->get_castcancel(skill_id); + int castcancel = skill->get_castcancel(skill_id, skill_lv); int ret = unit->skilluse_pos2(src, skill_x, skill_y, skill_id, skill_lv, casttime, castcancel); struct map_session_data *sd = BL_CAST(BL_PC, src); if (sd != NULL) - pc->itemskill_clear(sd); + pc->autocast_remove(sd, sd->auto_cast_current.type, sd->auto_cast_current.skill_id, + sd->auto_cast_current.skill_lv); return ret; } @@ -1757,10 +1868,10 @@ static int unit_skilluse_pos2(struct block_list *src, short skill_x, short skill ud->target_to = (skill_x + skill_y*md->xs); ud->stepskill_id = skill_id; ud->stepskill_lv = skill_lv; - return 0; // Attacking will be handled by unit_walktoxy_timer in this case + return 0; // Attacking will be handled by unit_walk_toxy_timer in this case } - if( skill->get_state(ud->skill_id) == ST_MOVE_ENABLE ) { + if (skill->get_state(skill_id, skill_lv) == ST_MOVE_ENABLE) { if( !unit->can_reach_bl(src, &bl, range + 1, 1, NULL, NULL) ) return 0; //Walk-path check failed. } else if( !battle->check_range(src, &bl, range) ) @@ -1781,7 +1892,7 @@ static int unit_skilluse_pos2(struct block_list *src, short skill_x, short skill } ud->state.skillcastcancel = castcancel&&casttime>0?1:0; - if( !sd || sd->skillitem != skill_id || skill->get_cast(skill_id,skill_lv) ) + if (sd == NULL || sd->auto_cast_current.type < AUTOCAST_ABRA || skill->get_cast(skill_id, skill_lv) != 0) ud->canact_tick = tick + casttime + 100; #if 0 if (sd) { @@ -1812,13 +1923,13 @@ static int unit_skilluse_pos2(struct block_list *src, short skill_x, short skill unit->stop_walking(src, STOPWALKING_FLAG_FIXPOS); - if (sd != NULL && sd->state.itemskill_no_casttime == 1 && skill->is_item_skill(sd, skill_id, skill_lv)) + if (sd != NULL && sd->auto_cast_current.itemskill_instant_cast && sd->auto_cast_current.type == AUTOCAST_ITEM) casttime = 0; // in official this is triggered even if no cast time. clif->useskill(src, src->id, 0, skill_x, skill_y, skill_id, skill_lv, casttime); if( casttime > 0 ) { - unit->setdir(src, map->calc_dir(src, skill_x, skill_y)); + unit->set_dir(src, map->calc_dir(src, skill_x, skill_y)); ud->skilltimer = timer->add( tick+casttime, skill->castend_pos, src->id, 0 ); if ((sd && pc->checkskill(sd, SA_FREECAST) > 0) || skill_id == LG_EXEEDBREAK || (skill->get_inf2(ud->skill_id) & INF2_FREE_CAST_REDUCED) != 0) { status_calc_bl(&sd->bl, SCB_SPEED|SCB_ASPD); @@ -1897,7 +2008,7 @@ static void unit_stop_stepaction(struct block_list *bl) return; //Clear timer - timer->delete(ud->steptimer, unit->step_timer); + timer->delete(ud->steptimer, unit->steptimer); ud->steptimer = INVALID_TIMER; } @@ -1981,7 +2092,7 @@ static int unit_attack(struct block_list *src, int target_id, int continuous) ud->target_to = ud->target; ud->stepskill_id = 0; ud->stepskill_lv = 0; - return 0; // Attacking will be handled by unit_walktoxy_timer in this case + return 0; // Attacking will be handled by unit_walk_toxy_timer in this case } if(DIFF_TICK(ud->attackabletime, timer->gettick()) > 0) @@ -2082,14 +2193,13 @@ static bool unit_can_reach_bl(struct block_list *bl, struct block_list *tbl, int /*========================================== * Calculates position of Pet/Mercenary/Homunculus/Elemental *------------------------------------------*/ -static int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir) +static int unit_calc_pos(struct block_list *bl, int tx, int ty, enum unit_dir dir) { int dx, dy, x, y; struct unit_data *ud = unit->bl2ud(bl); nullpo_ret(ud); - if(dir > 7) - return 1; + Assert_retr(1, dir >= UNIT_DIR_FIRST && dir < UNIT_DIR_MAX); ud->to_x = tx; ud->to_y = ty; @@ -2106,7 +2216,7 @@ static int unit_calc_pos(struct block_list *bl, int tx, int ty, uint8 dir) if (!unit->can_reach_pos(bl, x, y, 0)) { int i; for (i = 0; i < 12; i++) { - int k = rnd()%8; // Pick a Random Dir + enum unit_dir k = rnd() % UNIT_DIR_MAX; // Pick a Random Dir dx = -dirx[k] * 2; dy = -diry[k] * 2; x = tx + dx; @@ -2232,7 +2342,7 @@ static int unit_attack_timer_sub(struct block_list *src, int tid, int64 tick) if(md) { //First attack is always a normal attack if(md->state.skillstate == MSS_ANGRY || md->state.skillstate == MSS_BERSERK) { - if (mob->skill_use(md,tick,-1)) { + if (mob->skill_use(md, tick, -1) == 0) { map->freeblock_unlock(); return 1; } @@ -2272,7 +2382,7 @@ static int unit_attack_timer_sub(struct block_list *src, int tid, int64 tick) } if(ud->state.attack_continue) { - unit->setdir(src, map->calc_dir(src, target->x, target->y)); + unit->set_dir(src, map->calc_dir(src, target->x, target->y)); if( src->type == BL_PC ) pc->update_idle_time(sd, BCIDLE_ATTACK); ud->attacktimer = timer->add(ud->attackabletime,unit->attack_timer,src->id,0); @@ -2617,7 +2727,7 @@ static int unit_remove_map(struct block_list *bl, enum clr_type clrtype, const c case BL_PET: { struct pet_data *pd = BL_UCAST(BL_PET, bl); - if( pd->pet.intimate <= 0 && !(pd->msd && !pd->msd->state.active) ) { + if (pd->pet.intimate <= PET_INTIMACY_NONE && !(pd->msd && !pd->msd->state.active)) { //If logging out, this is deleted on unit->free clif->clearunit_area(bl,clrtype); map->delblock(bl); @@ -2776,6 +2886,8 @@ static int unit_free(struct block_list *bl, enum clr_type clrtype) aFree(sd->instance); sd->instance = NULL; } + + VECTOR_CLEAR(sd->auto_cast); // Clear auto-cast vector. VECTOR_CLEAR(sd->channels); VECTOR_CLEAR(sd->script_queues); VECTOR_CLEAR(sd->achievement); // Achievement [Smokexyz/Hercules] @@ -2831,7 +2943,7 @@ static int unit_free(struct block_list *bl, enum clr_type clrtype) aFree (pd->loot); pd->loot = NULL; } - if (pd->pet.intimate > 0) { + if (pd->pet.intimate > PET_INTIMACY_NONE) { intif->save_petdata(pd->pet.account_id,&pd->pet); } else { //Remove pet. @@ -2969,10 +3081,10 @@ static int do_init_unit(bool minimal) return 0; timer->add_func_list(unit->attack_timer, "unit_attack_timer"); - timer->add_func_list(unit->walktoxy_timer,"unit_walktoxy_timer"); - timer->add_func_list(unit->walktobl_sub, "unit_walktobl_sub"); - timer->add_func_list(unit->delay_walktoxy_timer,"unit_delay_walktoxy_timer"); - timer->add_func_list(unit->step_timer,"unit_step_timer"); + timer->add_func_list(unit->walk_toxy_timer, "unit_walk_toxy_timer"); + timer->add_func_list(unit->walktobl_timer, "unit_walktobl_timer"); + timer->add_func_list(unit->delay_walk_toxy_timer, "unit_delay_walk_toxy_timer"); + timer->add_func_list(unit->steptimer, "unit_steptimer"); return 0; } @@ -2990,26 +3102,28 @@ void unit_defaults(void) unit->final = do_final_unit; /* */ unit->bl2ud = unit_bl2ud; + unit->cbl2ud = unit_cbl2ud; unit->bl2ud2 = unit_bl2ud2; unit->init_ud = unit_init_ud; unit->attack_timer = unit_attack_timer; - unit->walktoxy_timer = unit_walktoxy_timer; - unit->walktoxy_sub = unit_walktoxy_sub; - unit->delay_walktoxy_timer = unit_delay_walktoxy_timer; - unit->walktoxy = unit_walktoxy; - unit->walktobl_sub = unit_walktobl_sub; + unit->walk_toxy_timer = unit_walk_toxy_timer; + unit->walk_toxy_sub = unit_walk_toxy_sub; + unit->delay_walk_toxy_timer = unit_delay_walk_toxy_timer; + unit->walk_toxy = unit_walk_toxy; + unit->walktobl_timer = unit_walktobl_timer; unit->walktobl = unit_walktobl; unit->run = unit_run; unit->run_hit = unit_run_hit; unit->escape = unit_escape; unit->movepos = unit_movepos; - unit->setdir = unit_setdir; + unit->set_dir = unit_set_dir; unit->getdir = unit_getdir; unit->blown = unit_blown; unit->warp = unit_warp; + unit->warpto_master = unit_warpto_master; unit->stop_walking = unit_stop_walking; unit->skilluse_id = unit_skilluse_id; - unit->step_timer = unit_step_timer; + unit->steptimer = unit_steptimer; unit->stop_stepaction = unit_stop_stepaction; unit->is_walking = unit_is_walking; unit->can_move = unit_can_move; diff --git a/src/map/unit.h b/src/map/unit.h index 5437a172a..3f288e0d3 100644 --- a/src/map/unit.h +++ b/src/map/unit.h @@ -24,6 +24,7 @@ #include "map/clif.h" // clr_type #include "map/path.h" // struct walkpath_data #include "map/skill.h" // 'MAX_SKILLTIMERSKILL, struct skill_timerskill, struct skill_unit_group, struct skill_unit_group_tickset +#include "map/unitdefines.h" // enum unit_dir #include "common/hercules.h" struct map_session_data; @@ -67,7 +68,7 @@ struct unit_data { int64 attackabletime; int64 canact_tick; int64 canmove_tick; - uint8 dir; + enum unit_dir dir; unsigned char walk_count; unsigned char target_count; struct { @@ -102,26 +103,28 @@ struct unit_interface { int (*final) (void); /* */ struct unit_data* (*bl2ud) (struct block_list *bl); + const struct unit_data* (*cbl2ud) (const struct block_list *bl); struct unit_data* (*bl2ud2) (struct block_list *bl); void (*init_ud) (struct unit_data *ud); int (*attack_timer) (int tid, int64 tick, int id, intptr_t data); - int (*walktoxy_timer) (int tid, int64 tick, int id, intptr_t data); - int (*walktoxy_sub) (struct block_list *bl); - int (*delay_walktoxy_timer) (int tid, int64 tick, int id, intptr_t data); - int (*walktoxy) (struct block_list *bl, short x, short y, int flag); - int (*walktobl_sub) (int tid, int64 tick, int id, intptr_t data); + int (*walk_toxy_timer) (int tid, int64 tick, int id, intptr_t data); + int (*walk_toxy_sub) (struct block_list *bl); + int (*delay_walk_toxy_timer) (int tid, int64 tick, int id, intptr_t data); + int (*walk_toxy) (struct block_list *bl, short x, short y, int flag); + int (*walktobl_timer) (int tid, int64 tick, int id, intptr_t data); int (*walktobl) (struct block_list *bl, struct block_list *tbl, int range, int flag); bool (*run) (struct block_list *bl, struct map_session_data *sd, enum sc_type type); void (*run_hit) (struct block_list *bl, struct status_change *sc, struct map_session_data *sd, enum sc_type type); int (*escape) (struct block_list *bl, struct block_list *target, short dist); int (*movepos) (struct block_list *bl, short dst_x, short dst_y, int easy, bool checkpath); - int (*setdir) (struct block_list *bl, unsigned char dir); - uint8 (*getdir) (struct block_list *bl); + int (*set_dir) (struct block_list *bl, enum unit_dir dir); + enum unit_dir (*getdir) (const struct block_list *bl); int (*blown) (struct block_list *bl, int dx, int dy, int count, int flag); int (*warp) (struct block_list *bl, short m, short x, short y, enum clr_type type); + int (*warpto_master) (struct block_list *master_bl, struct block_list *slave_bl); int (*stop_walking) (struct block_list *bl, int type); int (*skilluse_id) (struct block_list *src, int target_id, uint16 skill_id, uint16 skill_lv); - int (*step_timer) (int tid, int64 tick, int id, intptr_t data); + int (*steptimer) (int tid, int64 tick, int id, intptr_t data); void (*stop_stepaction) (struct block_list *bl); int (*is_walking) (struct block_list *bl); int (*can_move) (struct block_list *bl); @@ -137,7 +140,7 @@ struct unit_interface { int (*cancel_combo) (struct block_list *bl); bool (*can_reach_pos) (struct block_list *bl, int x, int y, int easy); bool (*can_reach_bl) (struct block_list *bl, struct block_list *tbl, int range, int easy, short *x, short *y); - int (*calc_pos) (struct block_list *bl, int tx, int ty, uint8 dir); + int (*calc_pos) (struct block_list *bl, int tx, int ty, enum unit_dir dir); int (*attack_timer_sub) (struct block_list *src, int tid, int64 tick); int (*skillcastcancel) (struct block_list *bl, int type); void (*dataset) (struct block_list *bl); diff --git a/src/map/unitdefines.h b/src/map/unitdefines.h new file mode 100644 index 000000000..0ee30998c --- /dev/null +++ b/src/map/unitdefines.h @@ -0,0 +1,58 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2012-2019 Hercules Dev Team + * Copyright (C) Athena Dev Teams + * + * Hercules is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef MAP_UNITDEFINES_H +#define MAP_UNITDEFINES_H + +/** + * Used for directions, @see unit_data.dir + */ +enum unit_dir { + UNIT_DIR_UNDEFINED = -1, + UNIT_DIR_FIRST = 0, + UNIT_DIR_NORTH = 0, + UNIT_DIR_NORTHWEST = 1, + UNIT_DIR_WEST = 2, + UNIT_DIR_SOUTHWEST = 3, + UNIT_DIR_SOUTH = 4, + UNIT_DIR_SOUTHEAST = 5, + UNIT_DIR_EAST = 6, + UNIT_DIR_NORTHEAST = 7, + UNIT_DIR_MAX = 8, + /* IMPORTANT: Changing the order would break the above macros + * and several usages of directions anywhere */ +}; + +/* Returns the opposite of the facing direction */ +#define unit_get_opposite_dir(dir) ( ((dir) + 4) % UNIT_DIR_MAX ) + +/* Returns true when direction is diagonal/combined (ex. UNIT_DIR_NORTHWEST, UNIT_DIR_SOUTHWEST, ...) */ +#define unit_is_diagonal_dir(dir) ( ((dir) % 2) == UNIT_DIR_NORTHWEST ) + +/* Returns true if direction equals val or the opposite direction of val */ +#define unit_is_dir_or_opposite(dir, val) ( ((dir) % 4) == (val) ) + +/* Returns the next direction after 90° CCW on a compass */ +#define unit_get_ccw90_dir(dir) ( ((dir) + 2) % UNIT_DIR_MAX ) + +/* Returns a random diagonal direction */ +#define unit_get_rnd_diagonal_dir() ( UNIT_DIR_NORTHWEST + 2 * (rnd() % 4) ) + +#endif /* MAP_UNITDEFINES_H */ diff --git a/src/map/vending.c b/src/map/vending.c index 4fd009025..9b3f48f38 100644 --- a/src/map/vending.c +++ b/src/map/vending.c @@ -251,8 +251,10 @@ static void vending_openvending(struct map_session_data *sd, const char *message int vending_skill_lvl; nullpo_retv(sd); - if ( pc_isdead(sd) || !sd->state.prevend || pc_istrading(sd)) - return; // can't open vendings lying dead || didn't use via the skill (wpe/hack) || can't have 2 shops at once + if (pc_isdead(sd) || sd->state.prevend == 0 || pc_istrading_except_npc(sd) + || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { + return; // Can't open vendings lying dead. || Didn't use via the skill. (wpe/hack) || Can't have 2 shops at once. + } vending_skill_lvl = pc->checkskill(sd, MC_VENDING); // skill level and cart check |