diff options
Diffstat (limited to 'src/map')
40 files changed, 8222 insertions, 1757 deletions
diff --git a/src/map/HPMmap.c b/src/map/HPMmap.c index 381dbf599..17b4fd813 100644 --- a/src/map/HPMmap.c +++ b/src/map/HPMmap.c @@ -54,6 +54,7 @@ #include "map/channel.h" #include "map/chat.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/clif.h" #include "map/date.h" #include "map/duel.h" @@ -114,21 +115,22 @@ unsigned int atcommand_list_items = 0; bool HPM_map_data_store_validate(enum HPluginDataTypes type, struct hplugin_data_store **storeptr, bool initialize) { switch (type) { - case HPDT_MSD: - case HPDT_NPCD: - case HPDT_MAP: - case HPDT_PARTY: - case HPDT_GUILD: - case HPDT_INSTANCE: - case HPDT_MOBDB: - case HPDT_MOBDATA: - case HPDT_ITEMDATA: - case HPDT_BGDATA: - case HPDT_AUTOTRADE_VEND: - // Initialized by the caller. - return true; - default: - break; + case HPDT_MSD: + case HPDT_NPCD: + case HPDT_MAP: + case HPDT_PARTY: + case HPDT_GUILD: + case HPDT_INSTANCE: + case HPDT_MOBDB: + case HPDT_MOBDATA: + case HPDT_ITEMDATA: + case HPDT_BGDATA: + case HPDT_AUTOTRADE_VEND: + case HPDT_CLAN: + // Initialized by the caller. + return true; + default: + break; } return false; } diff --git a/src/map/Makefile.in b/src/map/Makefile.in index 58d91506f..e6966d9a2 100644 --- a/src/map/Makefile.in +++ b/src/map/Makefile.in @@ -41,18 +41,19 @@ MT19937AR_OBJ = $(MT19937AR_D)/mt19937ar.o MT19937AR_H = $(MT19937AR_D)/mt19937ar.h MAP_C = atcommand.c battle.c battleground.c buyingstore.c channel.c chat.c \ - chrif.c clif.c date.c duel.c elemental.c guild.c homunculus.c HPMmap.c \ + chrif.c clan.c clif.c date.c duel.c elemental.c guild.c homunculus.c HPMmap.c \ instance.c intif.c irc-bot.c itemdb.c log.c mail.c map.c mapreg_sql.c \ mercenary.c mob.c npc.c npc_chat.c party.c path.c pc.c pc_groups.c \ pet.c quest.c rodex.c script.c searchstore.c skill.c status.c storage.c \ trade.c unit.c vending.c MAP_OBJ = $(addprefix obj_sql/, $(patsubst %c,%o,$(MAP_C))) MAP_H = atcommand.h battle.h battleground.h buyingstore.h channel.h chat.h \ - chrif.h clif.h date.h duel.h elemental.h guild.h homunculus.h HPMmap.h \ + chrif.h clan.h clif.h date.h duel.h elemental.h guild.h homunculus.h HPMmap.h \ instance.h intif.h irc-bot.h itemdb.h log.h mail.h map.h mapreg.h \ - mercenary.h mob.h npc.h packets.h packets_keys.h packets_shuffle.h \ - packets_struct.h party.h path.h pc.h pc_groups.h pet.h quest.h rodex.h \ - script.h searchstore.h skill.h status.h storage.h trade.h unit.h vending.h + mercenary.h mob.h npc.h packets.h packets_keys_main.h packets_keys_zero.h \ + packets_shuffle_main.h packets_shuffle_zero.h packets_struct.h party.h \ + path.h pc.h pc_groups.h pet.h quest.h rodex.h script.h searchstore.h \ + skill.h status.h storage.h trade.h unit.h vending.h MAP_PH = HAVE_MYSQL=@HAVE_MYSQL@ diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 1590c3f0c..b0ad24c11 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -28,6 +28,7 @@ #include "map/channel.h" #include "map/chat.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/clif.h" #include "map/duel.h" #include "map/elemental.h" @@ -950,6 +951,7 @@ ACMD(hide) { //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 @@ -1677,6 +1679,45 @@ ACMD(gvgon) /*========================================== * *------------------------------------------*/ +ACMD(cvcoff) +{ + if (!map->list[sd->bl.m].flag.cvc) { + clif->message(fd, msg_fd(fd, 141)); // CvC is already Off. + return false; + } + + map->zone_change2(sd->bl.m, map->list[sd->bl.m].prev_zone); + map->list[sd->bl.m].flag.cvc = 0; + clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING); + clif->maptypeproperty2(&sd->bl, ALL_SAMEMAP); + map->foreachinmap(atcommand->stopattack, sd->bl.m, BL_CHAR, 0); + clif->message(fd, msg_fd(fd, 137)); // CvC: Off. + + return true; +} + +/*========================================== + * + *------------------------------------------*/ +ACMD(cvcon) +{ + if (map->list[sd->bl.m].flag.cvc) { + clif->message(fd, msg_fd(fd, 142)); // CvC is already On. + return false; + } + + map->zone_change2(sd->bl.m, strdb_get(map->zone_db, MAP_ZONE_CVC_NAME)); + map->list[sd->bl.m].flag.cvc = 1; + clif->map_property_mapall(sd->bl.m, MAPPROPERTY_AGITZONE); + clif->maptypeproperty2(&sd->bl, ALL_SAMEMAP); + clif->message(fd, msg_fd(fd, 138)); // CvC: On. + + return true; +} + +/*========================================== + * + *------------------------------------------*/ ACMD(model) { int hair_style = 0, hair_color = 0, cloth_color = 0; @@ -3798,6 +3839,9 @@ ACMD(mapinfo) if (map->list[m_id].flag.battleground) clif->message(fd, msg_fd(fd,1045)); // Battlegrounds ON + if (map->list[m_id].flag.cvc) + clif->message(fd, msg_fd(fd, 139)); // CvC ON + strcpy(atcmd_output,msg_fd(fd,1046)); // PvP Flags: if (map->list[m_id].flag.pvp) strcat(atcmd_output, msg_fd(fd,1047)); // Pvp ON | @@ -5457,7 +5501,7 @@ void atcommand_getring(struct map_session_data* sd) { if((flag = pc->additem(sd,&item_tmp,1,LOG_TYPE_COMMAND))) { clif->additem(sd,0,0,flag); - map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } @@ -7551,11 +7595,11 @@ ACMD(mapflag) { CHECKFLAG(noreturn); CHECKFLAG(monster_noteleport); CHECKFLAG(nosave); CHECKFLAG(nobranch); CHECKFLAG(noexppenalty); CHECKFLAG(pvp); CHECKFLAG(pvp_noparty); CHECKFLAG(pvp_noguild); CHECKFLAG(pvp_nightmaredrop); CHECKFLAG(pvp_nocalcrank); CHECKFLAG(gvg_castle); CHECKFLAG(gvg); - CHECKFLAG(gvg_dungeon); CHECKFLAG(gvg_noparty); CHECKFLAG(battleground); CHECKFLAG(nozenypenalty); - CHECKFLAG(notrade); CHECKFLAG(noskill); CHECKFLAG(nowarp); CHECKFLAG(nowarpto); - CHECKFLAG(noicewall); CHECKFLAG(snow); CHECKFLAG(clouds); CHECKFLAG(clouds2); - CHECKFLAG(fog); CHECKFLAG(fireworks); CHECKFLAG(sakura); CHECKFLAG(leaves); - CHECKFLAG(nobaseexp); + CHECKFLAG(gvg_dungeon); CHECKFLAG(gvg_noparty); CHECKFLAG(battleground); CHECKFLAG(cvc); + CHECKFLAG(nozenypenalty); CHECKFLAG(notrade); CHECKFLAG(noskill); CHECKFLAG(nowarp); + CHECKFLAG(nowarpto); CHECKFLAG(noicewall); CHECKFLAG(snow); CHECKFLAG(clouds); + CHECKFLAG(clouds2); CHECKFLAG(fog); CHECKFLAG(fireworks); CHECKFLAG(sakura); + CHECKFLAG(leaves); CHECKFLAG(nobaseexp); CHECKFLAG(nojobexp); CHECKFLAG(nomobloot); CHECKFLAG(nomvploot); CHECKFLAG(nightenabled); CHECKFLAG(nodrop); CHECKFLAG(novending); CHECKFLAG(loadevent); CHECKFLAG(nochat); CHECKFLAG(partylock); CHECKFLAG(guildlock); CHECKFLAG(src4instance); @@ -7567,48 +7611,53 @@ ACMD(mapflag) { } for (i = 0; flag_name[i]; i++) flag_name[i] = TOLOWER(flag_name[i]); //lowercase - if (strcmp( flag_name , "gvg" ) == 0) { - if( flag && !map->list[sd->bl.m].flag.gvg ) - map->zone_change2(sd->bl.m,strdb_get(map->zone_db, MAP_ZONE_GVG_NAME)); - else if ( !flag && map->list[sd->bl.m].flag.gvg ) - map->zone_change2(sd->bl.m,map->list[sd->bl.m].prev_zone); - } else if ( strcmp( flag_name , "pvp" ) == 0 ) { - if ( flag && !map->list[sd->bl.m].flag.pvp ) - map->zone_change2(sd->bl.m,strdb_get(map->zone_db, MAP_ZONE_PVP_NAME)); - else if ( !flag && map->list[sd->bl.m].flag.pvp ) - map->zone_change2(sd->bl.m,map->list[sd->bl.m].prev_zone); - } else if ( strcmp( flag_name , "battleground" ) == 0 ) { - if ( flag && !map->list[sd->bl.m].flag.battleground ) - map->zone_change2(sd->bl.m,strdb_get(map->zone_db, MAP_ZONE_BG_NAME)); - else if ( !flag && map->list[sd->bl.m].flag.battleground ) - map->zone_change2(sd->bl.m,map->list[sd->bl.m].prev_zone); + if (strcmp(flag_name, "gvg") == 0) { + if (flag && !map->list[sd->bl.m].flag.gvg) + map->zone_change2(sd->bl.m, strdb_get(map->zone_db, MAP_ZONE_GVG_NAME)); + else if (!flag && map->list[sd->bl.m].flag.gvg) + map->zone_change2(sd->bl.m, map->list[sd->bl.m].prev_zone); + } else if (strcmp(flag_name, "pvp") == 0) { + if (flag && !map->list[sd->bl.m].flag.pvp) + map->zone_change2(sd->bl.m, strdb_get(map->zone_db, MAP_ZONE_PVP_NAME)); + else if (!flag && map->list[sd->bl.m].flag.pvp) + map->zone_change2(sd->bl.m, map->list[sd->bl.m].prev_zone); + } else if (strcmp(flag_name, "battleground") == 0) { + if (flag && !map->list[sd->bl.m].flag.battleground) + map->zone_change2(sd->bl.m, strdb_get(map->zone_db, MAP_ZONE_BG_NAME)); + else if (!flag && map->list[sd->bl.m].flag.battleground) + map->zone_change2(sd->bl.m, map->list[sd->bl.m].prev_zone); + } else if (strcmp(flag_name, "cvc") == 0) { + if (flag && !map->list[sd->bl.m].flag.cvc) + map->zone_change2(sd->bl.m, strdb_get(map->zone_db, MAP_ZONE_CVC_NAME)); + else if (!flag && map->list[sd->bl.m].flag.cvc) + map->zone_change2(sd->bl.m, map->list[sd->bl.m].prev_zone); } SETFLAG(autotrade); SETFLAG(allowks); SETFLAG(nomemo); SETFLAG(noteleport); SETFLAG(noreturn); SETFLAG(monster_noteleport); SETFLAG(nosave); SETFLAG(nobranch); SETFLAG(noexppenalty); SETFLAG(pvp); SETFLAG(pvp_noparty); SETFLAG(pvp_noguild); SETFLAG(pvp_nightmaredrop); SETFLAG(pvp_nocalcrank); SETFLAG(gvg_castle); SETFLAG(gvg); - SETFLAG(gvg_dungeon); SETFLAG(gvg_noparty); SETFLAG(battleground); SETFLAG(nozenypenalty); - SETFLAG(notrade); SETFLAG(noskill); SETFLAG(nowarp); SETFLAG(nowarpto); - SETFLAG(noicewall); SETFLAG(snow); SETFLAG(clouds); SETFLAG(clouds2); - SETFLAG(fog); SETFLAG(fireworks); SETFLAG(sakura); SETFLAG(leaves); - SETFLAG(nobaseexp); - SETFLAG(nojobexp); SETFLAG(nomobloot); SETFLAG(nomvploot); SETFLAG(nightenabled); - SETFLAG(nodrop); SETFLAG(novending); SETFLAG(loadevent); - SETFLAG(nochat); SETFLAG(partylock); SETFLAG(guildlock); SETFLAG(src4instance); - SETFLAG(notomb); SETFLAG(nocashshop); SETFLAG(noviewid); - - clif->message(sd->fd,msg_fd(fd,1314)); // Invalid flag name or flag. - clif->message(sd->fd,msg_fd(fd,1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On) - clif->message(sd->fd,msg_fd(fd,1315)); // Available Flags: - clif->message(sd->fd,"----------------------------------"); - clif->message(sd->fd,"town, autotrade, allowks, nomemo, noteleport, noreturn, monster_noteleport, nosave,"); - clif->message(sd->fd,"nobranch, noexppenalty, pvp, pvp_noparty, pvp_noguild, pvp_nightmaredrop,"); - clif->message(sd->fd,"pvp_nocalcrank, gvg_castle, gvg, gvg_dungeon, gvg_noparty, battleground,"); - clif->message(sd->fd,"nozenypenalty, notrade, noskill, nowarp, nowarpto, noicewall, snow, clouds, clouds2,"); - clif->message(sd->fd,"fog, fireworks, sakura, leaves, nobaseexp, nojobexp, nomobloot,"); - clif->message(sd->fd,"nomvploot, nightenabled, nodrop, novending, loadevent, nochat, partylock,"); - clif->message(sd->fd,"guildlock, src4instance, notomb, nocashshop, noviewid"); + SETFLAG(gvg_dungeon); SETFLAG(gvg_noparty); SETFLAG(battleground); SETFLAG(cvc); + SETFLAG(nozenypenalty); SETFLAG(notrade); SETFLAG(noskill); SETFLAG(nowarp); + SETFLAG(nowarpto); SETFLAG(noicewall); SETFLAG(snow); SETFLAG(clouds); + SETFLAG(clouds2); SETFLAG(fog); SETFLAG(fireworks); SETFLAG(sakura); + SETFLAG(leaves); SETFLAG(nobaseexp); SETFLAG(nojobexp); SETFLAG(nomobloot); + SETFLAG(nomvploot); SETFLAG(nightenabled); SETFLAG(nodrop); SETFLAG(novending); + SETFLAG(loadevent); SETFLAG(nochat); SETFLAG(partylock); SETFLAG(guildlock); + SETFLAG(src4instance); SETFLAG(notomb); SETFLAG(nocashshop); SETFLAG(noviewid); + + + clif->message(sd->fd, msg_fd(fd, 1314)); // Invalid flag name or flag. + clif->message(sd->fd, msg_fd(fd, 1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On) + clif->message(sd->fd, msg_fd(fd, 1315)); // Available Flags: + clif->message(sd->fd, "----------------------------------"); + clif->message(sd->fd, "town, autotrade, allowks, nomemo, noteleport, noreturn, monster_noteleport, nosave,"); + clif->message(sd->fd, "nobranch, noexppenalty, pvp, pvp_noparty, pvp_noguild, pvp_nightmaredrop,"); + clif->message(sd->fd, "pvp_nocalcrank, gvg_castle, gvg, gvg_dungeon, gvg_noparty, battleground, cvc,"); + clif->message(sd->fd, "nozenypenalty, notrade, noskill, nowarp, nowarpto, noicewall, snow, clouds, clouds2,"); + clif->message(sd->fd, "fog, fireworks, sakura, leaves, nobaseexp, nojobexp, nomobloot,"); + clif->message(sd->fd, "nomvploot, nightenabled, nodrop, novending, loadevent, nochat, partylock,"); + clif->message(sd->fd, "guildlock, src4instance, notomb, nocashshop, noviewid"); #undef CHECKFLAG #undef SETFLAG @@ -8424,7 +8473,7 @@ void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommand } } if (count_bind > 0) - clif->message(fd, line_buff); // Last Line + clif->message(fd, line_buff); // Last Line count += count_bind; } @@ -9451,6 +9500,139 @@ ACMD(lang) { return true; } + +ACMD(claninfo) +{ + struct DBIterator *iter = db_iterator(clan->db); + struct clan *c; + int i, count; + + for (c = dbi_first(iter); dbi_exists(iter); c = dbi_next(iter)) { + safesnprintf(atcmd_output, sizeof(atcmd_output), "Clan #%d:", c->clan_id); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Name: %s", c->name); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Constant: %s", c->constant); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Master: %s", c->master); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Map: %s", c->map); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Max Member: %d", c->max_member); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Kick Time: %dh", c->kick_time / 3600); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Check Time: %dh", c->check_time / 3600000); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Connected Members: %d", c->connect_member); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Total Members: %d", c->member_count); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Allies: %d", VECTOR_LENGTH(c->allies)); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + count = 0; + for (i = 0; i < VECTOR_LENGTH(c->allies); i++) { + struct clan_relationship *ally = &VECTOR_INDEX(c->allies, i); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- - Ally #%d (Id: %d): %s", i + 1, ally->clan_id, ally->constant); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + count++; + } + + if (count == 0) { + clif->messagecolor_self(fd, COLOR_DEFAULT, "- - No Allies Found!"); + } + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- Antagonists: %d", VECTOR_LENGTH(c->antagonists)); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + + count = 0; + for (i = 0; i < VECTOR_LENGTH(c->antagonists); i++) { + struct clan_relationship *antagonist = &VECTOR_INDEX(c->antagonists, i); + + safesnprintf(atcmd_output, sizeof(atcmd_output), "- - Antagonist #%d (Id: %d): %s", i + 1, antagonist->clan_id, antagonist->constant); + clif->messagecolor_self(fd, COLOR_DEFAULT, atcmd_output); + count++; + } + + if (count == 0) { + clif->messagecolor_self(fd, COLOR_DEFAULT, "- - No Antagonists Found!"); + } + + clif->messagecolor_self(fd, COLOR_DEFAULT, "============================"); + } + dbi_destroy(iter); + return true; +} + +/** + * Clan System: Joins in the given clan + */ +ACMD(joinclan) +{ + int clan_id; + + if (*message == '\0') { + clif->message(fd, "Please enter a Clan ID (usage: @joinclan <clan ID>)."); + return false; + } + if (sd->status.clan_id != 0) { + clif->messagecolor_self(fd, COLOR_RED, "You are already in a clan."); + return false; + } else if (sd->status.guild_id != 0) { + clif->messagecolor_self(fd, COLOR_RED, "You must leave your guild before enter in a clan."); + return false; + } + + clan_id = atoi(message); + if (clan_id <= 0) { + clif->messagecolor_self(fd, COLOR_RED, "Invalid Clan ID."); + return false; + } + if (!clan->join(sd, clan_id)) { + clif->messagecolor_self(fd, COLOR_RED, "The clan couldn't be joined."); + return false; + } + return true; +} + +/** + * Clan System: Leaves current clan + */ +ACMD(leaveclan) +{ + if (sd->status.clan_id == 0) { + clif->messagecolor_self(fd, COLOR_RED, "You aren't in a clan."); + return false; + } + if (!clan->leave(sd, false)) { + clif->messagecolor_self(fd, COLOR_RED, "Failed on leaving clan."); + return false; + } + return true; +} + +/** + * Clan System: Reloads clan db + */ +ACMD(reloadclans) +{ + clan->reload(); + clif->messagecolor_self(fd, COLOR_DEFAULT, "Clan configuration and database have been reloaded."); + return true; +} + /** * Fills the reference of available commands in atcommand DBMap **/ @@ -9723,6 +9905,12 @@ void atcommand_basecommands(void) { ACMD_DEF(cddebug), ACMD_DEF(lang), ACMD_DEF(bodystyle), + ACMD_DEF(cvcoff), + ACMD_DEF(cvcon), + ACMD_DEF(claninfo), + ACMD_DEF(joinclan), + ACMD_DEF(leaveclan), + ACMD_DEF(reloadclans), }; int i; @@ -9868,6 +10056,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa { char params[100], command[100]; char output[CHAT_SIZE_MAX]; + bool logCommand; // Reconstructed message char atcmd_msg[CHAT_SIZE_MAX]; @@ -10011,6 +10200,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa } } + logCommand = info->log; //Attempt to use the command if ((info->func(fd, ssd, command, params,info) != true)) { #ifdef AUTOTRADE_PERSISTENCY @@ -10022,7 +10212,8 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa return true; } - if (info->log) /* log only if this command should be logged [Ind/Hercules] */ + // info->log cant be used here, because info can be freed [4144] + if (logCommand) /* log only if this command should be logged [Ind/Hercules] */ logs->atcommand(sd, is_atcommand ? atcmd_msg : message); return true; diff --git a/src/map/battle.c b/src/map/battle.c index 70ebc4a08..bd7e31d05 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -25,6 +25,7 @@ #include "map/battleground.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/clif.h" #include "map/elemental.h" #include "map/guild.h" @@ -6774,14 +6775,17 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f return (flag&state)?1:-1; } - if( map_flag_vs(m) ) { + if (map_flag_vs(m)) { //Check rivalry settings. - int sbg_id = 0, tbg_id = 0; - if( map->list[m].flag.battleground ) { + int sbg_id = 0, tbg_id = 0, s_clan = 0, t_clan = 0; + if (map->list[m].flag.battleground) { sbg_id = bg->team_get_id(s_bl); tbg_id = bg->team_get_id(t_bl); + } else if (map->list[m].flag.cvc) { + s_clan = clan->get_id(s_bl); + t_clan = clan->get_id(t_bl); } - if( flag&(BCT_PARTY|BCT_ENEMY) ) { + if (flag & (BCT_PARTY | BCT_ENEMY)) { int s_party = status->get_party_id(s_bl); int s_guild = status->get_guild_id(s_bl); int t_guild = status->get_guild_id(t_bl); @@ -6791,10 +6795,12 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f if (s_guild != 0 && t_guild != 0 && (s_guild == t_guild || guild->isallied(s_guild, t_guild))) state |= BCT_PARTY; else - state |= flag&BCT_ENEMY ? BCT_ENEMY : BCT_PARTY; + state |= flag & BCT_ENEMY ? BCT_ENEMY : BCT_PARTY; } else if (!(map->list[m].flag.pvp && map->list[m].flag.pvp_noparty) && (!map->list[m].flag.battleground || sbg_id == tbg_id)) { state |= BCT_PARTY; + } else if (!map->list[m].flag.cvc || s_clan == t_clan) { + state |= BCT_PARTY; } else { state |= BCT_ENEMY; } @@ -6802,18 +6808,22 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f state |= BCT_ENEMY; } } - if( flag&(BCT_GUILD|BCT_ENEMY) ) { + if (flag & (BCT_GUILD | BCT_ENEMY)) { int s_guild = status->get_guild_id(s_bl); int t_guild = status->get_guild_id(t_bl); - if( !(map->list[m].flag.pvp && map->list[m].flag.pvp_noguild) + if (!(map->list[m].flag.pvp && map->list[m].flag.pvp_noguild) && s_guild && t_guild - && (s_guild == t_guild || (!(flag&BCT_SAMEGUILD) && guild->isallied(s_guild, t_guild))) - && (!map->list[m].flag.battleground || sbg_id == tbg_id) ) + && (s_guild == t_guild || (!(flag & BCT_SAMEGUILD) && guild->isallied(s_guild, t_guild))) + && (!map->list[m].flag.battleground || sbg_id == tbg_id) + && (!map->list[m].flag.cvc || s_clan == t_clan) + ) { state |= BCT_GUILD; - else + } else { state |= BCT_ENEMY; + } } - if( state&BCT_ENEMY && map->list[m].flag.battleground && sbg_id && sbg_id == tbg_id ) + + if (state & BCT_ENEMY && ((map->list[m].flag.battleground && sbg_id && sbg_id == tbg_id) || (map->list[m].flag.cvc && s_clan && s_clan == t_clan))) state &= ~BCT_ENEMY; if (state&BCT_ENEMY && battle_config.pk_mode && !map_flag_gvg(m) && s_bl->type == BL_PC && t_bl->type == BL_PC) { @@ -7299,7 +7309,7 @@ static const struct battle_data { { "max_body_style", &battle_config.max_body_style, 4, 0, SHRT_MAX, }, { "save_body_style", &battle_config.save_body_style, 0, 0, 1, }, { "player_warp_keep_direction", &battle_config.player_warp_keep_direction, 0, 0, 1, }, - { "atcommand_levelup_events", &battle_config.atcommand_levelup_events, 0, 0, 1, }, + { "atcommand_levelup_events", &battle_config.atcommand_levelup_events, 0, 0, 1, }, { "bow_unequip_arrow", &battle_config.bow_unequip_arrow, 1, 0, 1, }, { "max_summoner_parameter", &battle_config.max_summoner_parameter, 120, 10, 10000, }, { "mvp_exp_reward_message", &battle_config.mvp_exp_reward_message, 0, 0, 1, }, diff --git a/src/map/battle.h b/src/map/battle.h index 429249dca..8b7fea29f 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -546,7 +546,7 @@ struct Battle_Config { // Warp Face Direction int player_warp_keep_direction; - int atcommand_levelup_events; // Enable atcommands trigger level up events for NPCs + int atcommand_levelup_events; // Enable atcommands trigger level up events for NPCs int bow_unequip_arrow; diff --git a/src/map/clan.c b/src/map/clan.c new file mode 100644 index 000000000..7aa9be5d4 --- /dev/null +++ b/src/map/clan.c @@ -0,0 +1,1075 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2017 Hercules Dev Team + * + * 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/>. + */ +#define HERCULES_CORE + +#include "config/core.h" +#include "clan.h" + +#include "map/clif.h" +#include "map/chrif.h" +#include "map/homunculus.h" +#include "map/intif.h" +#include "map/log.h" +#include "map/mercenary.h" +#include "map/mob.h" +#include "map/npc.h" +#include "map/pc.h" +#include "map/pet.h" +#include "map/script.h" +#include "map/skill.h" +#include "map/status.h" +#include "common/HPM.h" +#include "common/conf.h" +#include "common/cbasetypes.h" +#include "common/db.h" +#include "common/memmgr.h" +#include "common/mapindex.h" +#include "common/nullpo.h" +#include "common/showmsg.h" +#include "common/socket.h" +#include "common/strlib.h" +#include "common/timer.h" +#include "common/utils.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +struct clan_interface clan_s; +struct clan_interface *clan; + +/** + * Searches a Clan by clan_id + * + * @param clan_id Clan ID + * @return struct clan* + */ +struct clan *clan_search(int clan_id) +{ + if (clan_id <= 0) { + return NULL; + } + return (struct clan *)idb_get(clan->db, clan_id); +} + +/** + * Searches a Clan by clan_name or constant + * + * @param name Clan Name + * @return struct clan* + */ +struct clan *clan_searchname(const char *name) +{ + struct clan *c; + struct DBIterator *iter; + + nullpo_retr(NULL, name); + + iter = db_iterator(clan->db); + for (c = dbi_first(iter); dbi_exists(iter); c = dbi_next(iter)) { + if (strncmpi(c->name, name, NAME_LENGTH) == 0 || strncmpi(c->constant, name, NAME_LENGTH) == 0) { + break; + } + } + dbi_destroy(iter); + return c; +} + +/** + * Returns the first online character of clan + * + * @param (struct clan *) c clan structure + * @return (struct map_session_data *) + */ +struct map_session_data *clan_getonlinesd(struct clan *c) +{ + int i; + nullpo_retr(NULL, c); + + ARR_FIND(0, VECTOR_LENGTH(c->members), i, (VECTOR_INDEX(c->members, i).sd != NULL && VECTOR_INDEX(c->members, i).online == 1)); + return (i < VECTOR_LENGTH(c->members)) ? VECTOR_INDEX(c->members, i).sd : NULL; +} + +/** + * Returns the member index of given Player + * + * @param c Clan Data + * @param char_id Player's Char ID + * @return int + */ +int clan_getindex(const struct clan *c, int char_id) +{ + int i; + nullpo_retr(INDEX_NOT_FOUND, c); + + ARR_FIND(0, VECTOR_LENGTH(c->members), i, VECTOR_INDEX(c->members, i).char_id == char_id); + + if (i == VECTOR_LENGTH(c->members)) { + return INDEX_NOT_FOUND; + } + return i; +} + +/** + * Starts clan buff + */ +void clan_buff_start(struct map_session_data *sd, struct clan *c) +{ + nullpo_retv(sd); + nullpo_retv(c); + + if (c->buff.icon <= 0) { + return; + } + + clif->sc_load(&sd->bl, sd->bl.id, SELF, c->buff.icon, 0, c->clan_id, 0); + script->run(c->buff.script, 0, sd->bl.id, npc->fake_nd->bl.id); +} + +/** + * Ends clan buff + */ +void clan_buff_end(struct map_session_data *sd, struct clan *c) +{ + nullpo_retv(sd); + nullpo_retv(c); + + if (c->buff.icon <= 0) { + return; + } + + clif->sc_end(&sd->bl, sd->bl.id, SELF, c->buff.icon); +} + +/** + * Joins a Player into a Clan + * + * @param sd Player's Map Session Data + * @param clan_id Clan which will add this player + * @return bool + */ +bool clan_join(struct map_session_data *sd, int clan_id) +{ + struct clan *c; + struct clan_member m; + + nullpo_ret(sd); + + // Already joined a guild or clan + if (sd->status.guild_id > 0 || sd->guild != NULL) { + ShowError("clan_join: Player already joined in a guild. char_id: %d\n", sd->status.char_id); + return false; + } else if ( sd->status.clan_id > 0 || sd->clan != NULL) { + ShowError("clan_join: Player already joined in a clan. char_id: %d\n", sd->status.char_id); + return false; + } + + c = clan->search(clan_id); + if (c == NULL) { + ShowError("clan_join: Invalid Clan ID: %d\n", clan_id); + return false; + } + + if (!c->received) { + return false; + } + + if (clan->getindex(c, sd->status.char_id) != INDEX_NOT_FOUND) { + ShowError("clan_join: Player already joined this clan. char_id: %d clan_id: %d\n", sd->status.char_id, clan_id); + return false; + } + + if (VECTOR_LENGTH(c->members) >= c->max_member || c->member_count >= c->max_member) { + ShowError("clan_join: Clan '%s' already reached its max capacity!\n", c->name); + return false; + } + + VECTOR_ENSURE(c->members, 1, 1); + + m.sd = sd; + m.char_id = sd->status.char_id; + m.online = 1; + m.last_login = sd->status.last_login; + VECTOR_PUSH(c->members, m); + + c->connect_member++; + c->member_count++; + + sd->status.clan_id = c->clan_id; + sd->clan = c; + + sc_start2(NULL, &sd->bl, SC_CLAN_INFO, 10000, 0, c->clan_id, INFINITE_DURATION); + status_calc_pc(sd, SCO_FORCE); + + chrif->save(sd, 0); + clif->clan_basicinfo(sd); + clif->clan_onlinecount(c); + return true; +} + +/** + * Invoked when a player joins + * It assumes that clan_id is not 0 + * + * @param sd Player Data + */ +void clan_member_online(struct map_session_data *sd, bool first) +{ + struct clan *c; + int i, inactivity; + nullpo_retv(sd); + + // For invalid values we must reset it to 0 (no clan) + if (sd->status.clan_id < 0) { + ShowError("clan_member_online: Invalid clan id, changing to '0'. clan_id='%d' char_id='%d'\n", sd->status.clan_id, sd->status.char_id); + sd->status.clan_id = 0; + return; + } + + c = clan->search(sd->status.clan_id); + if (c == NULL) { + // This is a silent return because it will reset clan_id in case + // a custom clan that was removed and this is a remaining member + sd->status.clan_id = 0; + sd->clan = NULL; + if (!first) { + status_change_end(&sd->bl, SC_CLAN_INFO, INVALID_TIMER); // Remove the status + status_calc_pc(sd, SCO_FORCE); + } + clif->clan_leave(sd); + return; + } + + if (!c->received) { + return; + } + + if (c->max_member <= c->member_count || VECTOR_LENGTH(c->members) >= c->max_member) { + ShowError("Clan System: More members than the maximum allowed in clan #%d\n", c->clan_id); + return; + } + + i = clan->getindex(c, sd->status.char_id); + inactivity = (int)(time(NULL) - sd->status.last_login); + if (i == INDEX_NOT_FOUND) { + struct clan_member m; + + if (c->kick_time > 0 && inactivity > c->kick_time) { + sd->status.clan_id = 0; + sd->clan = NULL; + clan->buff_end(sd, c); + status_change_end(&sd->bl, SC_CLAN_INFO, INVALID_TIMER); + clif->clan_leave(sd); + return; + } + + VECTOR_ENSURE(c->members, 1, 1); + + m.sd = sd; + m.char_id = sd->status.char_id; + m.online = 1; + m.last_login = sd->status.last_login; + VECTOR_PUSH(c->members, m); + } else { + struct clan_member *m = &VECTOR_INDEX(c->members, i); + + + if (c->kick_time > 0 && inactivity > c->kick_time) { + if (m->online == 1) { + m->online = 0; + m->sd = NULL; + c->connect_member--; + c->member_count--; + } + clan->buff_end(sd, c); + sd->status.clan_id = 0; + sd->clan = NULL; + status_change_end(&sd->bl, SC_CLAN_INFO, INVALID_TIMER); + VECTOR_ERASE(c->members, i); + clif->clan_leave(sd); + return; + } + + m->sd = sd; + m->online = 1; + m->last_login = sd->status.last_login; + } + + sd->clan = c; + c->connect_member++; + + sc_start2(NULL, &sd->bl, SC_CLAN_INFO, 10000, 0, c->clan_id, INFINITE_DURATION); + + if (!first) { + // When first called from pc.c we don't need to do status_calc + status_calc_pc(sd, SCO_FORCE); + } + + clif->clan_basicinfo(sd); + clif->clan_onlinecount(c); +} + +/** + * Re-join a player on its clan + */ +int clan_rejoin(struct map_session_data *sd, va_list ap) +{ + nullpo_ret(sd); + + if (sd->status.clan_id != 0) { + // Note: Even if the value is invalid (lower than zero) + // the function will fix the invalid value + clan->member_online(sd, false); + } + return 0; +} + +/** + * Removes Player from clan + */ +bool clan_leave(struct map_session_data *sd, bool first) +{ + int i; + struct clan *c; + + nullpo_ret(sd); + + c = sd->clan; + + if (c == NULL) { + return false; + } + + if (!c->received) { + return false; + } + + i = clan->getindex(c, sd->status.char_id); + if (i != INDEX_NOT_FOUND) { + VECTOR_ERASE(c->members, i); + c->connect_member--; + c->member_count--; + } + + sd->status.clan_id = 0; + sd->clan = NULL; + clan->buff_end(sd, c); + + status_change_end(&sd->bl, SC_CLAN_INFO, INVALID_TIMER); + if (!first) { + status_calc_pc(sd, SCO_FORCE); + } + + chrif->save(sd, 0); + clif->clan_onlinecount(c); + clif->clan_leave(sd); + return true; +} + +/** + * Sets a player offline + * + * @param (struct map_session_data *) sd Player Data + */ +void clan_member_offline(struct map_session_data *sd) +{ + struct clan *c; + int i; + + nullpo_retv(sd); + + c = sd->clan; + + if (c == NULL) { + return; + } + + i = clan->getindex(c, sd->status.char_id); + if (i != INDEX_NOT_FOUND && VECTOR_INDEX(c->members, i).online == 1) { + // Only if it is online, because unit->free is called twice + VECTOR_INDEX(c->members, i).online = 0; + VECTOR_INDEX(c->members, i).sd = NULL; + c->connect_member--; + } + clif->clan_onlinecount(c); +} + + +/** + * Sends a message to the whole clan + */ +bool clan_send_message(struct map_session_data *sd, const char *mes) +{ + int len; + nullpo_retr(false, sd); + nullpo_retr(false, mes); + + len = (int)strlen(mes); + + if (sd->status.clan_id == 0) { + return false; + } + clan->recv_message(sd->clan, mes, len); + + // Chat logging type 'C' / Clan Chat + logs->chat(LOG_CHAT_CLAN, sd->status.clan_id, sd->status.char_id, sd->status.account_id, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y, NULL, mes); + + return true; +} + +/** + * Clan receive a message, will be displayed to whole clan + */ +void clan_recv_message(struct clan *c, const char *mes, int len) +{ + clif->clan_message(c, mes, len); +} + +/** + * Set constants for each clan + */ +void clan_set_constants(void) +{ + struct DBIterator *iter = db_iterator(clan->db); + struct clan *c; + + for (c = dbi_first(iter); dbi_exists(iter); c = dbi_next(iter)) { + script->set_constant2(c->constant, c->clan_id, false, false); + } + + dbi_destroy(iter); +} + +/** + * Returns the clan_id of bl + */ +int clan_get_id(const struct block_list *bl) +{ + nullpo_ret(bl); + + switch (bl->type) { + case BL_PC: { + const struct map_session_data *sd = BL_UCCAST(BL_PC, bl); + return sd->status.clan_id; + } + case BL_NPC: { + const struct npc_data *nd = BL_UCCAST(BL_NPC, bl); + return nd->clan_id; + } + case BL_PET: { + const struct pet_data *pd = BL_UCCAST(BL_PET, bl); + if (pd->msd != NULL) + return pd->msd->status.clan_id; + } + break; + case BL_MOB: { + const struct mob_data *md = BL_UCCAST(BL_MOB, bl); + const struct map_session_data *msd; + if (md->special_state.ai != AI_NONE && (msd = map->id2sd(md->master_id)) != NULL) { + return msd->status.clan_id; + } + return md->clan_id; + } + case BL_HOM: { + const struct homun_data *hd = BL_UCCAST(BL_HOM, bl); + if (hd->master != NULL) { + return hd->master->status.clan_id; + } + } + break; + case BL_MER: { + const struct mercenary_data *md = BL_UCCAST(BL_MER, bl); + if (md->master != NULL) { + return md->master->status.clan_id; + } + } + break; + case BL_SKILL: { + const struct skill_unit *su = BL_UCCAST(BL_SKILL, bl); + if (su->group != NULL) + return su->group->clan_id; + } + break; + } + + return 0; +} + +/** + * Checks every clan player and remove those who are inactive + */ +int clan_inactivity_kick(int tid, int64 tick, int id, intptr_t data) +{ + struct clan *c = NULL; + int i; + + if ((c = clan->search(id)) != NULL) { + if (!c->kick_time || c->tid != tid || tid == INVALID_TIMER || c->tid == INVALID_TIMER) { + ShowError("Timer Mismatch (Time: %d seconds) %d != %d", c->kick_time, c->tid, tid); + Assert_report(0); + return 0; + } + for (i = 0; i < VECTOR_LENGTH(c->members); i++) { + struct clan_member *m = &VECTOR_INDEX(c->members, i); + if (m->char_id <= 0 || m->online <= 0) + continue; + + if (m->online) { + struct map_session_data *sd = m->sd; + if (DIFF_TICK32(sockt->last_tick, sd->idletime) > c->kick_time) { + clan->leave(sd, false); + } + } else if ((time(NULL) - m->last_login) > c->kick_time) { + VECTOR_ERASE(c->members, i); + c->member_count--; + clif->clan_onlinecount(c); + } + } + //Perform the kick for offline members that didn't connect after a server restart + c->received = false; + intif->clan_kickoffline(c->clan_id, c->kick_time); + c->tid = timer->add(timer->gettick() + c->check_time, clan->inactivity_kick, c->clan_id, 0); + } + return 1; +} + +/** + * Timeout for the request of offline kick + */ +int clan_request_kickoffline(int tid, int64 tick, int id, intptr_t data) +{ + struct clan *c = NULL; + + if ((c = clan->search(id)) != NULL) { + if (c->req_kick_tid != tid || c->req_kick_tid == INVALID_TIMER) { + ShowError("Timer Mismatch %d != %d", c->tid, tid); + return 0; + } + + if (c->received) { + c->req_kick_tid = INVALID_TIMER; + return 1; + } + + intif->clan_kickoffline(c->clan_id, c->kick_time); + c->req_kick_tid = timer->add(timer->gettick() + clan->req_timeout, clan->request_kickoffline, c->clan_id, 0); + } + return 1; +} + +/** + * Timeout of the request for counting members + */ +int clan_request_membercount(int tid, int64 tick, int id, intptr_t data) +{ + struct clan *c = NULL; + + if ((c = clan->search(id)) != NULL) { + if (c->req_count_tid != tid || c->req_count_tid == INVALID_TIMER) { + ShowError("Timer Mismatch %d != %d", c->tid, tid); + return 0; + } + + if (c->received) { + c->req_count_tid = INVALID_TIMER; + return 1; + } + + intif->clan_membercount(c->clan_id, c->kick_time); + c->req_count_tid = timer->add(timer->gettick() + clan->req_timeout, clan->request_membercount, c->clan_id, 0); + } + return 1; +} + +/** + * Processes any (plugin-defined) additional fields for a clan entry. + * + * @param[in, out] entry The destination clan entry, already initialized (clan_id is expected to be already set). + * @param[in] t The libconfig entry. + * @param[in] n Ordinal number of the entry, to be displayed in case of validation errors. + * @param[in] source Source of the entry (file name), to be displayed in case of validation errors. + */ +void clan_read_db_additional_fields(struct clan *entry, struct config_setting_t *t, int n, const char *source) +{ + // do nothing. plugins can do own work +} + +void clan_read_buffs(struct clan *c, struct config_setting_t *buff, const char *source) +{ + struct clan_buff *b; + const char *str = NULL; + + nullpo_retv(c); + nullpo_retv(buff); + + b = &c->buff; + + if (!libconfig->setting_lookup_int(buff, "Icon", &b->icon)) { + const char *temp_str = NULL; + if (libconfig->setting_lookup_string(buff, "Icon", &temp_str)) { + if (*temp_str && !script->get_constant(temp_str, &b->icon)) { + ShowWarning("Clan %d: Invalid Buff icon value. Defaulting to SI_BLANK.\n", c->clan_id); + b->icon = -1; // SI_BLANK + } + } + } + + if (libconfig->setting_lookup_string(buff, "Script", &str)) { + b->script = *str ? script->parse(str, source, -b->icon, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL; + } +} + +/** + * Processes one clandb entry from the libconfig file, loading and inserting it + * into the clan database. + * + * @param settings Libconfig setting entry. It is expected to be valid and it + * won't be freed (it is care of the caller to do so if + * necessary). + * @param source Source of the entry (file name), to be displayed in case of + * validation errors. + * @return int. + */ +int clan_read_db_sub(struct config_setting_t *settings, const char *source, bool reload) +{ + int total, s, valid = 0; + + nullpo_retr(false, settings); + + total = libconfig->setting_length(settings); + + for (s = 0; s < total; s++) { + struct clan *c; + struct config_setting_t *cl, *buff, *allies, *antagonists; + const char *aName, *aLeader, *aMap, *aConst; + int max_members, kicktime = 0, kickchecktime = 0, id, i, j; + + cl = libconfig->setting_get_elem(settings, s); + + if (libconfig->setting_lookup_int(cl, "Id", &id)) { + if (id <= 0) { + ShowError("clan_read_db: Invalid Clan Id %d, skipping...\n", id); + return false; + } + + if (clan->search(id) != NULL) { + ShowError("clan_read_db: Duplicate entry for Clan Id %d, skipping...\n", id); + return false; + } + } else { + ShowError("clan_read_db: failed to find 'Id' for clan #%d\n", s); + return false; + } + + if (libconfig->setting_lookup_string(cl, "Const", &aConst)) { + if (!*aConst) { + ShowError("clan_read_db: Invalid Clan Const '%s', skipping...\n", aConst); + return false; + } + + if (strlen(aConst) > NAME_LENGTH) { + ShowError("clan_read_db: Clan Name '%s' is longer than %d characters, skipping...\n", aConst, NAME_LENGTH); + return false; + } + + if (clan->searchname(aConst) != NULL) { + ShowError("clan_read_db: Duplicate entry for Clan Const '%s', skipping...\n", aConst); + return false; + } + } else { + ShowError("clan_read_db: failed to find 'Const' for clan #%d\n", s); + return false; + } + + if (libconfig->setting_lookup_string(cl, "Name", &aName)) { + if (!*aName) { + ShowError("clan_read_db: Invalid Clan Name '%s', skipping...\n", aName); + return false; + } + + if (strlen(aName) > NAME_LENGTH) { + ShowError("clan_read_db: Clan Name '%s' is longer than %d characters, skipping...\n", aName, NAME_LENGTH); + return false; + } + + if (clan->searchname(aName) != NULL) { + ShowError("clan_read_db: Duplicate entry for Clan Name '%s', skipping...\n", aName); + return false; + } + } else { + ShowError("clan_read_db: failed to find 'Name' for clan #%d\n", s); + return false; + } + + if (!libconfig->setting_lookup_string(cl, "Leader", &aLeader)) { + ShowError("clan_read_db: failed to find 'Leader' for clan #%d\n", s); + return false; + } + + if (!libconfig->setting_lookup_string(cl, "Map", &aMap)) { + ShowError("clan_read_db: failed to find 'Map' for clan #%d\n", s); + return false; + } + + CREATE(c, struct clan, 1); + + c->clan_id = id; + safestrncpy(c->constant, aConst, NAME_LENGTH); + safestrncpy(c->name, aName, NAME_LENGTH); + safestrncpy(c->master, aLeader, NAME_LENGTH); + safestrncpy(c->map, aMap, MAP_NAME_LENGTH_EXT); + c->connect_member = 0; + c->member_count = 0; // Char server will count members for us + c->received = false; + c->req_count_tid = INVALID_TIMER; + c->req_kick_tid = INVALID_TIMER; + c->tid = INVALID_TIMER; + + if (libconfig->setting_lookup_int(cl, "MaxMembers", &max_members)) { + if (max_members > 0) { + c->max_member = max_members; + } else { + ShowError("clan_read_db: Clan #%d has invalid value for 'MaxMembers' setting, defaulting to 'clan->max'...\n", id); + c->max_member = clan->max; + } + } else { + c->max_member = clan->max; + } + + if (libconfig->setting_lookup_int(cl, "KickTime", &kicktime)) { + c->kick_time = 60 * 60 * kicktime; + } else { + c->kick_time = clan->kicktime; + } + + if (libconfig->setting_lookup_int(cl, "CheckTime", &kickchecktime)) { + c->check_time = 60 * 60 * max(1, kickchecktime) * 1000; + } else { + c->check_time = clan->checktime; + } + + if ((buff = libconfig->setting_get_member(cl, "Buff")) != NULL) { + clan->read_buffs(c, buff, source); + } + + allies = libconfig->setting_get_member(cl, "Allies"); + + if (allies != NULL) { + int a = libconfig->setting_length(allies); + + VECTOR_INIT(c->allies); + if (a > 0 && clan->max_relations > 0) { + const char *allyConst; + + if (a > clan->max_relations) { + ShowWarning("clan_read_db: Clan %d has more allies(%d) than allowed(%d), reading only the first %d...\n", c->clan_id, a, clan->max_relations, clan->max_relations); + a = clan->max_relations; + } + + VECTOR_ENSURE(c->allies, a, 1); + for (i = 0; i < a; i++) { + struct clan_relationship r; + if ((allyConst = libconfig->setting_get_string_elem(allies, i)) != NULL) { + ARR_FIND(0, VECTOR_LENGTH(c->allies), j, strcmp(VECTOR_INDEX(c->allies, j).constant, allyConst) == 0); + if (j != VECTOR_LENGTH(c->allies)) { + ShowError("clan_read_db: Duplicate entry '%s' in allies for Clan %d in '%s', skipping...\n", allyConst, c->clan_id, source); + continue; + } else if (strcmp(allyConst, c->constant) == 0) { + ShowError("clan_read_db: Clans can't be allies of themselves! Clan Id: %d, in '%s'\n", c->clan_id, source); + continue; + } + safestrncpy(r.constant, allyConst, NAME_LENGTH); + VECTOR_PUSH(c->allies, r); + } + + } + } + } + antagonists = libconfig->setting_get_member(cl, "Antagonists"); + + if (antagonists != NULL) { + int a = libconfig->setting_length(antagonists); + + VECTOR_INIT(c->antagonists); + if (a > 0 && clan->max_relations > 0) { + const char *antagonistConst; + + if (a > clan->max_relations) { + ShowWarning("clan_read_db: Clan %d has more antagonists(%d) than allowed(%d), reading only the first %d...\n", c->clan_id, a, clan->max_relations, clan->max_relations); + a = clan->max_relations; + } + + VECTOR_ENSURE(c->antagonists, a, 1); + for (i = 0; i < a; i++) { + struct clan_relationship r; + if ((antagonistConst = libconfig->setting_get_string_elem(antagonists, i)) != NULL) { + ARR_FIND(0, VECTOR_LENGTH(c->antagonists), j, strcmp(VECTOR_INDEX(c->antagonists, j).constant, antagonistConst) == 0); + if (j != VECTOR_LENGTH(c->antagonists)) { + ShowError("clan_read_db: Duplicate entry '%s' in antagonists for Clan %d in '%s', skipping...\n", antagonistConst, c->clan_id, source); + continue; + } else if (strcmp(antagonistConst, c->constant) == 0) { + ShowError("clan_read_db: Clans can't be antagonists of themselves! Clan Id: %d, in '%s'\n", c->clan_id, source); + continue; + } + safestrncpy(r.constant, antagonistConst, NAME_LENGTH); + VECTOR_PUSH(c->antagonists, r); + } + } + } + } + + clan->read_db_additional_fields(c, cl, s, source); + if (c->kick_time > 0) { + c->tid = timer->add(timer->gettick() + c->check_time, clan->inactivity_kick, c->clan_id, 0); + } + c->received = false; + c->req_state = reload ? CLAN_REQ_RELOAD : CLAN_REQ_FIRST; + c->req_count_tid = timer->add(timer->gettick() + clan->req_timeout, clan->request_membercount, c->clan_id, 0); + idb_put(clan->db, c->clan_id, c); + VECTOR_INIT(c->members); + valid++; + } + + // Validating Relations + if (valid > 0) { + struct DBIterator *iter = db_iterator(clan->db); + struct clan *c_ok, *c; + int i; + + for (c_ok = dbi_first(iter); dbi_exists(iter); c_ok = dbi_next(iter)) { + i = VECTOR_LENGTH(c_ok->allies); + while ( i > 0) { + struct clan_relationship *r; + + i--; + r = &VECTOR_INDEX(c_ok->allies, i); + if ((c = clan->searchname(r->constant)) == NULL) { + ShowError("clan_read_db: Invalid (nonexistent) Ally '%s' for clan %d in '%s', skipping ally...\n", r->constant, c_ok->clan_id, source); + VECTOR_ERASE(c_ok->allies, i); + } else { + r->clan_id = c->clan_id; + } + } + + i = VECTOR_LENGTH(c_ok->antagonists); + while ( i > 0) { + struct clan_relationship *r; + + i--; + r = &VECTOR_INDEX(c_ok->antagonists, i); + if ((c = clan->searchname(r->constant)) == NULL) { + ShowError("clan_read_db: Invalid (nonexistent) Antagonist '%s' for clan %d in '%s', skipping antagonist...", r->constant, c_ok->clan_id, source); + VECTOR_ERASE(c_ok->antagonists, i); + } else { + r->clan_id = c->clan_id; + } + } + } + dbi_destroy(iter); + } + + ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' valid clans of '" CL_WHITE "%d" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", valid, total, source); + return valid; +} + +/** + * Reads Clan DB included by clan configuration file. + * + * @param settings The Settings Group from config file. + * @param source File name. + */ +void clan_read_db(struct config_setting_t *settings, const char *source, bool reload) +{ + struct config_setting_t *clans; + + nullpo_retv(settings); + + if ((clans = libconfig->setting_get_member(settings, "clans")) != NULL) { + int read; + + read = clan->read_db_sub(clans, source, reload); + if (read > 0) { + clan->set_constants(); + } + } else { + ShowError("clan_read_db: Can't find setting 'clans' in '%s'. No Clans found.\n", source); + } +} + +/** + * Reads clan config file + * + * @param bool clear Whether to clear clan->db before reading clans + */ +bool clan_config_read(bool reload) +{ + struct config_t clan_conf; + struct config_setting_t *settings = NULL; + const char *config_filename = "conf/clans.conf"; // FIXME: hardcoded name + int kicktime = 0, kickchecktime = 0; + + if (reload) { + struct DBIterator *iter = db_iterator(clan->db); + struct clan *c_clear; + + for (c_clear = dbi_first(iter); dbi_exists(iter); c_clear = dbi_next(iter)) { + if (c_clear->buff.script != NULL) { + script->free_code(c_clear->buff.script); + } + if (c_clear->tid != INVALID_TIMER) { + timer->delete(c_clear->tid, clan->inactivity_kick); + } + VECTOR_CLEAR(c_clear->allies); + VECTOR_CLEAR(c_clear->antagonists); + VECTOR_CLEAR(c_clear->members); + HPM->data_store_destroy(&c_clear->hdata); + } + dbi_destroy(iter); + clan->db->clear(clan->db, NULL); + } + + if (!libconfig->load_file(&clan_conf, config_filename)) { + return false; + } + + if ((settings = libconfig->lookup(&clan_conf, "clan_configuration")) == NULL) { + ShowError("clan_config_read: failed to find 'clan_configuration'.\n"); + return false; + } + + libconfig->setting_lookup_int(settings, "MaxMembers", &clan->max); + libconfig->setting_lookup_int(settings, "MaxRelations", &clan->max_relations); + libconfig->setting_lookup_int(settings, "InactivityKickTime", &kicktime); + if (!libconfig->setting_lookup_int(settings, "InactivityCheckTime", &kickchecktime)) { + ShowError("clan_config_read: failed to find InactivityCheckTime using official value.\n"); + kickchecktime = 24; + } + + // On config file we set the time in hours but here we use in seconds + clan->kicktime = 60 * 60 * kicktime; + clan->checktime = 60 * 60 * max(kickchecktime, 1) * 1000; + + clan->config_read_additional_settings(settings, config_filename); + clan->read_db(settings, config_filename, reload); + libconfig->destroy(&clan_conf); + return true; +} + +/** + * Processes any (plugin-defined) additional settings for clan config. + * + * @param settings The Settings Group from config file. + * @param source Source of the entry (file name), to be displayed in + * case of validation errors. + */ +void clan_config_read_additional_settings(struct config_setting_t *settings, const char *source) +{ + // do nothing. plugins can do own work +} + +/** + * Reloads Clan DB + */ +void clan_reload(void) +{ + clan->config_read(true); +} + +/** + * + */ +void do_init_clan(bool minimal) +{ + clan->db = idb_alloc(DB_OPT_RELEASE_DATA); + + if (minimal) { + return; + } + clan->config_read(false); + timer->add_func_list(clan->inactivity_kick, "clan_inactivity_kick"); +} + +/** + * + */ +void do_final_clan(void) +{ + struct DBIterator *iter = db_iterator(clan->db); + struct clan *c; + + for (c = dbi_first(iter); dbi_exists(iter); c = dbi_next(iter)) { + if (c->buff.script) { + script->free_code(c->buff.script); + } + if (c->tid != INVALID_TIMER) { + timer->delete(c->tid, clan->inactivity_kick); + } + VECTOR_CLEAR(c->allies); + VECTOR_CLEAR(c->antagonists); + VECTOR_CLEAR(c->members); + HPM->data_store_destroy(&c->hdata); + } + dbi_destroy(iter); + db_destroy(clan->db); +} + +/** + * Inits Clan Defaults + */ +void clan_defaults(void) +{ + clan = &clan_s; + + clan->init = do_init_clan; + clan->final = do_final_clan; + /* */ + clan->db = NULL; + clan->max = 0; + clan->max_relations = 0; + clan->kicktime = 0; + clan->checktime = 0; + clan->req_timeout = 60; + /* */ + clan->config_read = clan_config_read; + clan->config_read_additional_settings = clan_config_read_additional_settings; + clan->read_db = clan_read_db; + clan->read_db_sub = clan_read_db_sub; + clan->read_db_additional_fields = clan_read_db_additional_fields; + clan->read_buffs = clan_read_buffs; + clan->search = clan_search; + clan->searchname = clan_searchname; + clan->getonlinesd = clan_getonlinesd; + clan->getindex = clan_getindex; + clan->join = clan_join; + clan->member_online = clan_member_online; + clan->leave = clan_leave; + clan->send_message = clan_send_message; + clan->recv_message = clan_recv_message; + clan->member_offline = clan_member_offline; + clan->set_constants = clan_set_constants; + clan->get_id = clan_get_id; + clan->buff_start = clan_buff_start; + clan->buff_end = clan_buff_end; + clan->reload = clan_reload; + clan->rejoin = clan_rejoin; + clan->inactivity_kick = clan_inactivity_kick; + clan->request_kickoffline = clan_request_kickoffline; + clan->request_membercount = clan_request_membercount; +} diff --git a/src/map/clan.h b/src/map/clan.h new file mode 100644 index 000000000..15ed52680 --- /dev/null +++ b/src/map/clan.h @@ -0,0 +1,85 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2017 Hercules Dev Team + * + * 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_CLAN_H +#define MAP_CLAN_H + +#include "map/map.h" +#include "common/hercules.h" +#include "common/db.h" +#include "common/mmo.h" + +struct map_session_data; + +enum clan_req_state { + CLAN_REQ_NONE = 0, + CLAN_REQ_FIRST = 1, + CLAN_REQ_RELOAD = 2, + CLAN_REQ_AFTER_KICK = 3, +}; + +/** + * clan Interface + **/ +struct clan_interface { + struct DBMap *db; // int clan_id -> struct clan* + + int max; + int max_relations; + int kicktime; + int checktime; + int req_timeout; + + void (*init) (bool minimal); + void (*final) (void); + + bool (*config_read) (bool reload); + void (*config_read_additional_settings) (struct config_setting_t *settings, const char *source); + void (*read_db) (struct config_setting_t *settings, const char *source, bool reload); + int (*read_db_sub) (struct config_setting_t *settings, const char *source, bool reload); + void (*read_db_additional_fields) (struct clan *entry, struct config_setting_t *t, int n, const char *source); + void (*read_buffs) (struct clan *c, struct config_setting_t *buff, const char *source); + struct clan *(*search) (int clan_id); + struct clan *(*searchname) (const char *name); + struct map_session_data *(*getonlinesd) (struct clan *c); + int (*getindex) (const struct clan *c, int char_id); + bool (*join) (struct map_session_data *sd, int clan_id); + void (*member_online) (struct map_session_data *sd, bool first); + bool (*leave) (struct map_session_data *sd, bool first); + bool (*send_message) (struct map_session_data *sd, const char *mes); + void (*recv_message) (struct clan *c, const char *mes, int len); + void (*member_offline) (struct map_session_data *sd); + void (*set_constants) (void); + int (*get_id) (const struct block_list *bl); + void (*buff_start) (struct map_session_data *sd, struct clan *c); + void (*buff_end) (struct map_session_data *sd, struct clan *c); + void (*reload) (void); + int (*rejoin) (struct map_session_data *sd, va_list ap); + int (*inactivity_kick) (int tid, int64 tick, int id, intptr_t data); + int (*request_kickoffline) (int tid, int64 tick, int id, intptr_t data); + int (*request_membercount) (int tid, int64 tick, int id, intptr_t data); +}; + +#ifdef HERCULES_CORE +void clan_defaults (void); +#endif // HERCULES_CORE + +HPShared struct clan_interface *clan; + +#endif /* MAP_CLAN_H */ diff --git a/src/map/clif.c b/src/map/clif.c index 17faf02c8..4f98d2c9c 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -29,6 +29,7 @@ #include "map/channel.h" #include "map/chat.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/elemental.h" #include "map/guild.h" #include "map/homunculus.h" @@ -419,8 +420,14 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target sd = BL_CAST(BL_PC, bl); - switch(type) { + if (sd != NULL && pc_isinvisible(sd)) { + if (type == AREA || type == BG || type == BG_AREA) + type = SELF; + else if (type == AREA_WOS || type == BG_WOS || type == BG_AREA_WOS) + return true; + } + switch(type) { case ALL_CLIENT: //All player clients. iter = mapit_getallusers(); while ((tsd = BL_UCAST(BL_PC, mapit->next(iter))) != NULL) { @@ -659,6 +666,22 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target } break; + case CLAN: + if (sd && sd->status.clan_id) { + struct clan *c = clan->search(sd->status.clan_id); + + nullpo_retr(false, c); + + for (i = 0; i < VECTOR_LENGTH(c->members); i++) { + if (VECTOR_INDEX(c->members, i).online == 0 || (sd = VECTOR_INDEX(c->members, i).sd) == NULL || (fd = sd->fd) <= 0) + continue; + WFIFOHEAD(fd, len); + memcpy(WFIFOP(fd, 0), buf, len); + WFIFOSET(fd, len); + } + } + break; + default: ShowError("clif_send: Unrecognized type %u\n", type); return false; @@ -796,7 +819,15 @@ void clif_dropflooritem(struct flooritem_data* fitem) { p.subX = fitem->subx; p.subY = fitem->suby; p.count = fitem->item_data.amount; - +#ifdef PACKETVER_ZERO + if (fitem->showdropeffect) { + p.showdropeffect = itemdb_showdropeffect(fitem->item_data.nameid); + p.dropeffectmode = itemdb_dropeffectmode(fitem->item_data.nameid); + } else { + p.showdropeffect = 0; + p.dropeffectmode = 0; + } +#endif clif->send(&p, sizeof(p), &fitem->bl, AREA); } @@ -1526,6 +1557,8 @@ bool clif_spawn(struct block_list *bl) clif->specialeffect(&nd->bl,423,AREA); else if (nd->size == SZ_MEDIUM) clif->specialeffect(&nd->bl,421,AREA); + if (nd->clan_id > 0) + clif->sc_load(&nd->bl, nd->bl.id, AREA, status->dbs->IconChangeTable[SC_CLAN_INFO], 0, nd->clan_id, 0); } break; case BL_PET: @@ -1902,19 +1935,25 @@ void clif_changemap(struct map_session_data *sd, short m, int x, int y) { /// Notifies the client of a position change to coordinates on given map, which is on another map-server (ZC_NPCACK_SERVERMOVE). /// 0092 <map name>.16B <x>.W <y>.W <ip>.L <port>.W +/// 0ac7 <map name>.16B <x>.W <y>.W <ip>.L <port>.W <zero>.128B void clif_changemapserver(struct map_session_data* sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port) { int fd; +#if PACKETVER >= 20170315 + const int cmd = 0xac7; +#else + const int cmd = 0x92; +#endif nullpo_retv(sd); fd = sd->fd; - WFIFOHEAD(fd,packet_len(0x92)); - WFIFOW(fd,0) = 0x92; - mapindex->getmapname_ext(mapindex_id2name(map_index), WFIFOP(fd,2)); - WFIFOW(fd,18) = x; - WFIFOW(fd,20) = y; - WFIFOL(fd,22) = htonl(ip); - WFIFOW(fd,26) = sockt->ntows(htons(port)); // [!] LE byte order here [!] - WFIFOSET(fd,packet_len(0x92)); + WFIFOHEAD(fd, packet_len(cmd)); + WFIFOW(fd, 0) = cmd; + mapindex->getmapname_ext(mapindex_id2name(map_index), WFIFOP(fd, 2)); + WFIFOW(fd, 18) = x; + WFIFOW(fd, 20) = y; + WFIFOL(fd, 22) = htonl(ip); + WFIFOW(fd, 26) = sockt->ntows(htons(port)); // [!] LE byte order here [!] + WFIFOSET(fd, packet_len(cmd)); } void clif_blown(struct block_list *bl) @@ -4374,6 +4413,8 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) { clif->specialeffect_single(bl,423,sd->fd); else if (nd->size == SZ_MEDIUM) clif->specialeffect_single(bl,421,sd->fd); + if (nd->clan_id > 0) + clif->sc_load(&nd->bl, nd->bl.id, AREA, status->dbs->IconChangeTable[SC_CLAN_INFO], 0, nd->clan_id, 0); } break; case BL_MOB: @@ -6047,14 +6088,29 @@ void clif_wis_end(int fd, int flag) { /// Returns character name requested by char_id (ZC_ACK_REQNAME_BYGID). /// 0194 <char id>.L <name>.24B +/// 0af7 <flag>.W <char id>.L <name>.24B void clif_solved_charname(int fd, int charid, const char* name) { nullpo_retv(name); - WFIFOHEAD(fd,packet_len(0x194)); - WFIFOW(fd,0)=0x194; - WFIFOL(fd,2)=charid; - safestrncpy(WFIFOP(fd,6), name, NAME_LENGTH); - WFIFOSET(fd,packet_len(0x194)); +#if !defined(PACKETVER_ZERO) && (PACKETVER >= 20180307 || (defined(PACKETVER_RE) && PACKETVER >= 20180221)) + WFIFOHEAD(fd, packet_len(0x0af7)); + WFIFOW(fd, 0) = 0xaf7; + if (*name == 0) { + WFIFOW(fd, 2) = 2; + memset(WFIFOP(fd, 8), 0, NAME_LENGTH); + } else { + WFIFOW(fd, 2) = 3; + safestrncpy(WFIFOP(fd, 8), name, NAME_LENGTH); + } + WFIFOL(fd, 4) = charid; + WFIFOSET(fd, packet_len(0x0af7)); +#else + WFIFOHEAD(fd, packet_len(0x194)); + WFIFOW(fd, 0) = 0x194; + WFIFOL(fd, 2) = charid; + safestrncpy(WFIFOP(fd, 6), name, NAME_LENGTH); + WFIFOSET(fd, packet_len(0x194)); +#endif } /// Presents a list of items that can be carded/composed (ZC_ITEMCOMPOSITION_LIST). @@ -6580,9 +6636,6 @@ void clif_party_created(struct map_session_data *sd,int result) } /// Adds new member to a party. -/// 0104 <account id>.L <role>.L <x>.W <y>.W <state>.B <party name>.24B <char name>.24B <map name>.16B (ZC_ADD_MEMBER_TO_GROUP) -/// 01e9 <account id>.L <role>.L <x>.W <y>.W <state>.B <party name>.24B <char name>.24B <map name>.16B <item pickup rule>.B <item share rule>.B (ZC_ADD_MEMBER_TO_GROUP2) -/// 0a43 <account id>.L <role>.L <class>.W <base level>.W <x>.W <y>.W <state>.B <party name>.24B <char name>.24B <map name>.16B <item pickup rule>.B <item share rule>.B (ZC_ADD_MEMBER_TO_GROUP3) /// role: /// 0 = leader /// 1 = normal @@ -6592,19 +6645,12 @@ void clif_party_created(struct map_session_data *sd,int result) void clif_party_member_info(struct party_data *p, struct map_session_data *sd) { int i; -#if PACKETVER < 20170502 - unsigned char buf[81]; - const int cmd = 0x1e9; - const int offset = 0; -#else - unsigned char buf[85]; -// [4144] probably 0xa43 packet can works on older clients because in client was added in 2015-10-07 - const int cmd = 0xa43; - int offset = 4; -#endif + struct PACKET_ZC_ADD_MEMBER_TO_GROUP packet; nullpo_retv(p); nullpo_retv(sd); + + memset(&packet, 0, sizeof(packet)); if (!sd) { //Pick any party member (this call is used when changing item share rules) ARR_FIND(0, MAX_PARTY, i, p->data[i].sd != 0); } else { @@ -6614,27 +6660,28 @@ void clif_party_member_info(struct party_data *p, struct map_session_data *sd) return; //Should never happen... sd = p->data[i].sd; - WBUFW(buf, 0) = cmd; - WBUFL(buf, 2) = sd->status.account_id; - WBUFL(buf, 6) = (p->party.member[i].leader) ? 0 : 1; + packet.packetType = partymemberinfo; + packet.AID = sd->status.account_id; +#if PACKETVER >= 20171207 + packet.GID = sd->status.char_id; +#endif + packet.leader = (p->party.member[i].leader) ? 0 : 1; #if PACKETVER >= 20170502 - WBUFW(buf, 10) = sd->status.class; - WBUFW(buf, 12) = sd->status.base_level; + packet.class = sd->status.class; + packet.baseLevel = sd->status.base_level; #endif - WBUFW(buf, offset + 10) = sd->bl.x; - WBUFW(buf, offset + 12) = sd->bl.y; - WBUFB(buf, offset + 14) = (p->party.member[i].online) ? 0 : 1; - memcpy(WBUFP(buf, offset + 15), p->party.name, NAME_LENGTH); - memcpy(WBUFP(buf, offset + 39), sd->status.name, NAME_LENGTH); - mapindex->getmapname_ext(map->list[sd->bl.m].custom_name ? map->list[map->list[sd->bl.m].instance_src_map].name : map->list[sd->bl.m].name, WBUFP(buf, offset + 63)); - WBUFB(buf, offset + 79) = (p->party.item & 1) ? 1 : 0; - WBUFB(buf, offset + 80) = (p->party.item & 2) ? 1 : 0; - clif->send(buf, packet_len(cmd), &sd->bl, PARTY); + packet.x = sd->bl.x; + packet.y = sd->bl.y; + packet.offline = (p->party.member[i].online) ? 0 : 1; + memcpy(packet.partyName, p->party.name, NAME_LENGTH); + memcpy(packet.playerName, sd->status.name, NAME_LENGTH); + mapindex->getmapname_ext(map->list[sd->bl.m].custom_name ? map->list[map->list[sd->bl.m].instance_src_map].name : map->list[sd->bl.m].name, packet.mapName); + packet.sharePickup = (p->party.item & 1) ? 1 : 0; + packet.shareLoot = (p->party.item & 2) ? 1 : 0; + clif->send(&packet, sizeof(packet), &sd->bl, PARTY); } /// Sends party information (ZC_GROUP_LIST). -/// 00fb <packet len>.W <party name>.24B { <account id>.L <nick>.24B <map name>.16B <role>.B <state>.B }* -/// 0a44 <packet len>.W <party name>.24B { <account id>.L <nick>.24B <map name>.16B <role>.B <state>.B <class>.W <base level>.W }* <item pickup rule>.B <item share rule>.B <unknown>.L /// role: /// 0 = leader /// 1 = normal @@ -6643,23 +6690,16 @@ void clif_party_member_info(struct party_data *p, struct map_session_data *sd) /// 1 = disconnected void clif_party_info(struct party_data* p, struct map_session_data *sd) { + struct PACKET_ZC_GROUP_LIST *packet; struct map_session_data* party_sd = NULL; int i, c; -#if PACKETVER < 20170502 - const int cmd = 0xfb; - const int size = 46; - unsigned char buf[2 + 2 + NAME_LENGTH + 46 * MAX_PARTY]; -#else -// [4144] probably 0xa44 packet can works on older clients because in client was added in 2015-10-07 - const int cmd = 0xa44; - const int size = 50; - unsigned char buf[2 + 2 + NAME_LENGTH + 50 * MAX_PARTY + 6]; -#endif - + unsigned char buf[sizeof(*packet) + sizeof(struct PACKET_ZC_GROUP_LIST_SUB) * MAX_PARTY]; nullpo_retv(p); - WBUFW(buf, 0) = cmd; - memcpy(WBUFP(buf, 4), p->party.name, NAME_LENGTH); + memset(buf, 0, sizeof(buf)); + packet = (struct PACKET_ZC_GROUP_LIST *)buf; + packet->packetType = partyinfo; + memcpy(packet->partyName, p->party.name, NAME_LENGTH); for(i = 0, c = 0; i < MAX_PARTY; i++) { struct party_member *m = &p->party.member[i]; @@ -6669,30 +6709,26 @@ void clif_party_info(struct party_data* p, struct map_session_data *sd) if (party_sd == NULL) party_sd = p->data[i].sd; - WBUFL(buf, 28 + c * size) = m->account_id; - memcpy(WBUFP(buf, 28 + c * size + 4), m->name, NAME_LENGTH); - mapindex->getmapname_ext(mapindex_id2name(m->map), WBUFP(buf, 28 + c * size + 28)); - WBUFB(buf, 28 + c * size + 44) = (m->leader) ? 0 : 1; - WBUFB(buf, 28 + c * size + 45) = (m->online) ? 0 : 1; + packet->members[c].AID = m->account_id; +#if PACKETVER >= 20171207 + packet->members[c].GID = m->char_id; +#endif + memcpy(packet->members[c].playerName, m->name, NAME_LENGTH); + mapindex->getmapname_ext(mapindex_id2name(m->map), packet->members[c].mapName); + packet->members[c].leader = (m->leader) ? 0 : 1; + packet->members[c].offline = (m->online) ? 0 : 1; #if PACKETVER >= 20170502 - WBUFW(buf, 28 + c * size + 46) = m->class; - WBUFW(buf, 28 + c * size + 48) = m->lv; + packet->members[c].class = m->class; + packet->members[c].baseLevel = m->lv; #endif c++; } -#if PACKETVER < 20170502 - WBUFW(buf, 2) = 28 + c * size; -#else - WBUFB(buf, 28 + c * size) = (p->party.item & 1) ? 1 : 0; - WBUFB(buf, 28 + c * size + 1) = (p->party.item & 2) ? 1 : 0; - WBUFL(buf, 28 + c * size + 2) = 0; // unknown - WBUFW(buf, 2) = 28 + c * size + 6; -#endif + packet->packetLen = sizeof(*packet) + c * sizeof(struct PACKET_ZC_GROUP_LIST_SUB); if (sd) { // send only to self - clif->send(buf, WBUFW(buf, 2), &sd->bl, SELF); + clif->send(buf, packet->packetLen, &sd->bl, SELF); } else if (party_sd) { // send to whole party - clif->send(buf, WBUFW(buf, 2), &party_sd->bl, PARTY); + clif->send(buf, packet->packetLen, &party_sd->bl, PARTY); } } @@ -7388,7 +7424,7 @@ void clif_mvp_item(struct map_session_data *sd,int nameid) /// 010b <exp>.L void clif_mvp_exp(struct map_session_data *sd, unsigned int exp) { -#if PACKETVER >= 20131223 // Kro removed this packet [Napster] +#if PACKETVER >= 20131223 // Kro removed this packet [Napster] if (battle_config.mvp_exp_reward_message) { char e_msg[CHAT_SIZE_MAX]; sprintf(e_msg, msg_txt(855), exp); @@ -9915,7 +9951,6 @@ void clif_parse_Hotkey(int fd, struct map_session_data *sd) { /// Displays cast-like progress bar (ZC_PROGRESS). /// 02f0 <color>.L <time>.L -/* TODO ZC_PROGRESS_ACTOR <account_id>.L */ void clif_progressbar(struct map_session_data * sd, unsigned int color, unsigned int second) { int fd; @@ -9944,6 +9979,30 @@ void clif_progressbar_abort(struct map_session_data * sd) WFIFOSET(fd,packet_len(0x2f2)); } +/** +* Displays cast-like progress bar on a unit. +* 09d1 <id>.L <color>.L <time>.L +* +* @param bl Source block list. +* @param color Message color (RGB format: 0xRRGGBB). +* @param time Time in seconds. +*/ +void clif_progressbar_unit(struct block_list *bl, uint32 color, uint32 time) +{ +#if PACKETVER >= 20130821 + struct ZC_PROGRESS_ACTOR p; + nullpo_retv(bl); + + p.PacketType = progressbarunit; + p.GID = bl->id; + p.color = color; + p.time = time; + clif->send(&p, sizeof(p), bl, AREA); +#else + ShowWarning("clif_progressbar_unit: Using progressbar with units available for PACKETVER >= 20130821 only."); +#endif +} + void clif_parse_progressbar(int fd, struct map_session_data * sd) __attribute__((nonnull (2))); /// Notification from the client, that the progress bar has reached 100% (CZ_PROGRESS). /// 02f1 @@ -10955,13 +11014,21 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd) __attribute_ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd) { int len = RFIFOW(fd,2)-15; - int limit = RFIFOW(fd,4); - bool pub = (RFIFOB(fd,6) != 0); - const char *password = RFIFOP(fd,7); //not zero-terminated - const char *title = RFIFOP(fd,15); // not zero-terminated + int limit; + bool pub; + const char *password; //not zero-terminated + const char *title; // not zero-terminated char s_password[CHATROOM_PASS_SIZE]; char s_title[CHATROOM_TITLE_SIZE]; + if (len < 1) + return; + + limit = RFIFOW(fd, 4); + pub = (RFIFOB(fd, 6) != 0); + password = RFIFOP(fd, 7); //not zero-terminated + title = RFIFOP(fd, 15); // not zero-terminated + if (pc_ismuted(&sd->sc, MANNER_NOROOM)) return; if(battle_config.basic_skill_check && !pc->check_basicskill(sd, 4)) { @@ -10977,9 +11044,6 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd) return; } - if( len <= 0 ) - return; // invalid input - safestrncpy(s_password, password, CHATROOM_PASS_SIZE); safestrncpy(s_title, title, min(len+1,CHATROOM_TITLE_SIZE)); //NOTE: assumes that safestrncpy will not access the len+1'th byte @@ -11006,15 +11070,20 @@ void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data* sd) __attr void clif_parse_ChatRoomStatusChange(int fd, struct map_session_data* sd) { int len = RFIFOW(fd,2)-15; - int limit = RFIFOW(fd,4); - bool pub = (RFIFOB(fd,6) != 0); - const char *password = RFIFOP(fd,7); // not zero-terminated - const char *title = RFIFOP(fd,15); // not zero-terminated + int limit; + bool pub; + const char *password; // not zero-terminated + const char *title; // not zero-terminated char s_password[CHATROOM_PASS_SIZE]; char s_title[CHATROOM_TITLE_SIZE]; - if( len <= 0 ) - return; // invalid input + if (len < 1) + return; + + limit = RFIFOW(fd, 4); + pub = (RFIFOB(fd, 6) != 0); + password = RFIFOP(fd, 7); // not zero-terminated + title = RFIFOP(fd, 15); // not zero-terminated safestrncpy(s_password, password, CHATROOM_PASS_SIZE); safestrncpy(s_title, title, min(len+1,CHATROOM_TITLE_SIZE)); //NOTE: assumes that safestrncpy will not access the len+1'th byte @@ -11030,7 +11099,7 @@ void clif_parse_ChangeChatOwner(int fd, struct map_session_data* sd) __attribute /// 1 = normal void clif_parse_ChangeChatOwner(int fd, struct map_session_data* sd) { - chat->change_owner(sd, RFIFOP(fd,6)); + chat->change_owner(sd, RFIFOP(fd,6)); // non null terminated } void clif_parse_KickFromChat(int fd,struct map_session_data *sd) __attribute__((nonnull (2))); @@ -11038,7 +11107,7 @@ void clif_parse_KickFromChat(int fd,struct map_session_data *sd) __attribute__(( /// 00e2 <name>.24B void clif_parse_KickFromChat(int fd,struct map_session_data *sd) { - chat->kick(sd, RFIFOP(fd,2)); + chat->kick(sd, RFIFOP(fd,2)); // non null terminated } void clif_parse_ChatLeave(int fd, struct map_session_data* sd) __attribute__((nonnull (2))); @@ -11797,17 +11866,21 @@ void clif_parse_NpcStringInput(int fd, struct map_session_data* sd) __attribute_ /// 01d5 <packet len>.W <npc id>.L <string>.?B void clif_parse_NpcStringInput(int fd, struct map_session_data* sd) { + int len = RFIFOW(fd, 2); // [4144] can't confirm exact client version. At least >= correct for 20150513 #if PACKETVER >= 20151029 - int message_len = RFIFOW(fd, 2) - 7; + int message_len = len - 7; #else - int message_len = RFIFOW(fd, 2) - 8; + int message_len = len - 8; #endif - int npcid = RFIFOL(fd,4); - const char *message = RFIFOP(fd,8); + int npcid; + const char *message; + + if (len < 9) + return; - if( message_len <= 0 ) - return; // invalid input + npcid = RFIFOL(fd, 4); + message = RFIFOP(fd, 8); safestrncpy(sd->npc_str, message, min(message_len,CHATBOX_SIZE)); npc->scriptcont(sd, npcid, false); @@ -11845,8 +11918,8 @@ void clif_parse_ItemIdentify(int fd,struct map_session_data *sd) clif_menuskill_clear(sd); } -/// Identifying item with right-click (CZ_REQ_ONECLICK_ITEMIDENTIFY). -/// 0A35 <index>.W +/// Identifying item with right-click (CZ_REQ_ONECLICK_ITEMIDENTIFY). +/// 0A35 <index>.W void clif_parse_OneClick_ItemIdentify(int fd, struct map_session_data *sd) { int cmd = RFIFOW(fd,0); @@ -12961,9 +13034,15 @@ void clif_parse_PurchaseReq(int fd, struct map_session_data* sd) __attribute__(( /// 0134 <packet len>.W <account id>.L { <amount>.W <index>.W }* void clif_parse_PurchaseReq(int fd, struct map_session_data* sd) { - int len = (int)RFIFOW(fd,2) - 8; - int id = RFIFOL(fd,4); - const uint8 *data = RFIFOP(fd,8); + int len = (int)RFIFOW(fd, 2) - 8; + int id; + const uint8 *data; + + if (len < 1) + return; + + id = RFIFOL(fd, 4); + data = RFIFOP(fd, 8); vending->purchase(sd, id, sd->vended_id, data, len/4); @@ -12976,10 +13055,16 @@ void clif_parse_PurchaseReq2(int fd, struct map_session_data* sd) __attribute__( /// 0801 <packet len>.W <account id>.L <unique id>.L { <amount>.W <index>.W }* void clif_parse_PurchaseReq2(int fd, struct map_session_data* sd) { - int len = (int)RFIFOW(fd,2) - 12; - int aid = RFIFOL(fd,4); - int uid = RFIFOL(fd,8); - const uint8 *data = RFIFOP(fd,12); + int len = (int)RFIFOW(fd, 2) - 12; + int aid; + int uid; + const uint8 *data; + + if (len < 1) + return; + aid = RFIFOL(fd, 4); + uid = RFIFOL(fd, 8); + data = RFIFOP(fd, 12); vending->purchase(sd, aid, uid, data, len/4); @@ -12996,9 +13081,16 @@ void clif_parse_OpenVending(int fd, struct map_session_data* sd) __attribute__(( /// 1 = open void clif_parse_OpenVending(int fd, struct map_session_data* sd) { short len = (short)RFIFOW(fd,2) - 85; - const char *message = RFIFOP(fd,4); - bool flag = (RFIFOB(fd,84) != 0) ? true : false; - const uint8 *data = RFIFOP(fd,85); + const char *message; + bool flag; + const uint8 *data; + + if (len < 1) + return; + + message = RFIFOP(fd,4); + flag = (RFIFOB(fd,84) != 0) ? true : false; + data = RFIFOP(fd,85); if( !flag ) sd->state.prevend = sd->state.workinprogress = 0; @@ -13091,12 +13183,14 @@ void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd) __a void clif_parse_GuildChangePositionInfo(int fd, struct map_session_data *sd) { int i; + int count = (RFIFOW(fd, 2) - 4) / 40; - if(!sd->state.gmaster_flag) + if (!sd->state.gmaster_flag) return; - for(i = 4; i < RFIFOW(fd,2); i += 40 ){ - guild->change_position(sd->status.guild_id, RFIFOL(fd,i), RFIFOL(fd,i+4), RFIFOL(fd,i+12), RFIFOP(fd,i+16)); + for (i = 0; i < count; i ++ ) { + int idx = i * 40 + 4; + guild->change_position(sd->status.guild_id, RFIFOL(fd, idx), RFIFOL(fd, idx + 4), RFIFOL(fd, idx + 12), RFIFOP(fd, idx + 16)); } } @@ -13107,6 +13201,7 @@ void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd) { int i; int len = RFIFOW(fd, 2); + int count = (len - 4) / 12; if(!sd->state.gmaster_flag) return; @@ -13117,10 +13212,11 @@ void clif_parse_GuildChangeMemberPosition(int fd, struct map_session_data *sd) return; } - for(i=4;i<RFIFOW(fd,2);i+=12){ - int position = RFIFOL(fd, i + 8); - if (position > 0) { - guild->change_memberposition(sd->status.guild_id, RFIFOL(fd, i), RFIFOL(fd, i + 4), position); + for (i = 0; i < count; i++) { + int idx = i * 12 + 4; + int position = RFIFOL(fd, idx + 8); + if (position > 0 && position < MAX_GUILDPOSITION) { + guild->change_memberposition(sd->status.guild_id, RFIFOL(fd, idx), RFIFOL(fd, idx + 4), position); } } } @@ -13323,6 +13419,12 @@ bool clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_sessi return false; } + // Players in a clan can't join a guild + if (t_sd->clan != NULL) { + clif->message(fd, msg_fd(fd, 140)); // You can't join in a clan if you're in a guild. + return false; + } + guild->invite(sd,t_sd); return true; } @@ -13498,12 +13600,15 @@ void clif_parse_GuildBreak(int fd, struct map_session_data *sd) __attribute__((n /// key: /// now guild name; might have been (intended) email, since the /// field name and size is same as the one in CH_DELETE_CHAR. -void clif_parse_GuildBreak(int fd, struct map_session_data *sd) { +void clif_parse_GuildBreak(int fd, struct map_session_data *sd) +{ + char key[40]; if( map->list[sd->bl.m].flag.guildlock ) { clif->message(fd, msg_fd(fd,228)); // Guild modification is disabled in this map. return; } - guild->dobreak(sd, RFIFOP(fd,2)); + safestrncpy(key, RFIFOP(fd, 2), 40); + guild->dobreak(sd, key); } /// Pet @@ -14092,6 +14197,7 @@ void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) /// Toggles a single friend online/offline [Skotlex] (ZC_FRIENDS_STATE). /// 0206 <account id>.L <char id>.L <state>.B +/// 0206 <account id>.L <char id>.L <state>.B <name>.24B /// state: /// 0 = online /// 1 = offline @@ -14111,7 +14217,13 @@ void clif_friendslist_toggle(struct map_session_data *sd,int account_id, int cha WFIFOW(fd, 0) = 0x206; 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... + WFIFOB(fd, 10) = !online; //Yeah, a 1 here means "logged off", go figure... +#ifndef PACKETVER_ZERO +#if PACKETVER >= 20180307 || (defined(PACKETVER_RE) && PACKETVER >= 20180221) + memcpy(WFIFOP(fd, 11), sd->status.friends[i].name, NAME_LENGTH); +#endif +#endif // PACKETVER_ZERO + WFIFOSET(fd, packet_len(0x206)); } @@ -14128,22 +14240,30 @@ int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap) /// Sends the whole friends list (ZC_FRIENDS_LIST). /// 0201 <packet len>.W { <account id>.L <char id>.L <name>.24B }* +/// 0201 <packet len>.W { <account id>.L <char id>.L }* void clif_friendslist_send(struct map_session_data *sd) { int i = 0, n, fd = sd->fd; +#if !defined(PACKETVER_ZERO) && (PACKETVER >= 20180307 || (defined(PACKETVER_RE) && PACKETVER >= 20180221)) + const int offset = 8; +#else + const int offset = 32; +#endif nullpo_retv(sd); // Send friends list - WFIFOHEAD(fd, MAX_FRIENDS * 32 + 4); + WFIFOHEAD(fd, MAX_FRIENDS * offset + 4); WFIFOW(fd, 0) = 0x201; for(i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id; i++) { - WFIFOL(fd, 4 + 32 * i + 0) = sd->status.friends[i].account_id; - WFIFOL(fd, 4 + 32 * i + 4) = sd->status.friends[i].char_id; - memcpy(WFIFOP(fd, 4 + 32 * i + 8), &sd->status.friends[i].name, NAME_LENGTH); + 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 !(!defined(PACKETVER_ZERO) && (PACKETVER >= 20180307 || (defined(PACKETVER_RE) && PACKETVER >= 20180221))) + memcpy(WFIFOP(fd, 4 + offset * i + 8), &sd->status.friends[i].name, NAME_LENGTH); +#endif } if (i) { - WFIFOW(fd,2) = 4 + 32 * i; + WFIFOW(fd,2) = 4 + offset * i; WFIFOSET(fd, WFIFOW(fd,2)); } @@ -15252,17 +15372,19 @@ void clif_parse_Mail_winopen(int fd, struct map_session_data *sd) void clif_parse_Mail_send(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); /// Request to send mail (CZ_MAIL_SEND). /// 0248 <packet len>.W <recipient>.24B <title>.40B <body len>.B <body>.?B + void clif_parse_Mail_send(int fd, struct map_session_data *sd) { struct mail_message msg; int body_len; + int len = RFIFOW(fd, 2); if( !chrif->isconnected() ) return; if( sd->state.trading ) return; - if( RFIFOW(fd,2) < 69 ) { + if (len < 69) { ShowWarning("Invalid Msg Len from account %d.\n", sd->status.account_id); return; } @@ -15278,6 +15400,11 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd) if (body_len > MAIL_BODY_LENGTH) body_len = MAIL_BODY_LENGTH; + if (body_len + 69 > len) { + ShowWarning("Invalid Msg Len from account %d.\n", sd->status.account_id); + return; + } + memset(&msg, 0, sizeof(msg)); if (!mail->setattachment(sd, &msg)) { // Invalid Append condition clif->mail_send(sd->fd, true); // fail @@ -15783,15 +15910,24 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd) fail = npc->cashshop_buy(sd, nameid, amount, points); #else int len = RFIFOW(fd,2); - int points = RFIFOL(fd,4); - int count = RFIFOW(fd,8); + int points; + int count; struct itemlist item_list = { 0 }; int i; - if( len < 10 || len != 10 + count * 4) { + if (len < 10) { + ShowWarning("Player %d sent incorrect cash shop buy packet (len %d)!\n", sd->status.char_id, len); + return; + } + + points = RFIFOL(fd, 4); + count = RFIFOW(fd, 8); + + if (len != 10 + count * 4) { ShowWarning("Player %d sent incorrect cash shop buy packet (len %d:%d)!\n", sd->status.char_id, len, 10 + count * 4); return; } + VECTOR_INIT(item_list); VECTOR_ENSURE(item_list, count, 1); for (i = 0; i < count; i++) { @@ -16516,15 +16652,15 @@ void clif_bg_message(struct battleground_data *bgd, int src_id, const char *name return; len = (int)strlen(mes); - Assert_retv(len <= INT16_MAX - NAME_LENGTH - 8); - buf = (unsigned char*)aMalloc((len + NAME_LENGTH + 8)*sizeof(unsigned char)); + Assert_retv(len <= INT16_MAX - NAME_LENGTH - 9); + buf = (unsigned char *)aCalloc(len + NAME_LENGTH + 9, sizeof(unsigned char)); - WBUFW(buf,0) = 0x2dc; - WBUFW(buf,2) = len + NAME_LENGTH + 8; - WBUFL(buf,4) = src_id; - memcpy(WBUFP(buf,8), name, NAME_LENGTH); - memcpy(WBUFP(buf,32), mes, len); // [!] no NUL terminator - clif->send(buf,WBUFW(buf,2), &sd->bl, BG); + WBUFW(buf, 0) = 0x2dc; + WBUFW(buf, 2) = len + NAME_LENGTH + 9; + WBUFL(buf, 4) = src_id; + safestrncpy(WBUFP(buf, 8), name, NAME_LENGTH); + safestrncpy(WBUFP(buf, 32), mes, len + 1); + clif->send(buf, WBUFW(buf, 2), &sd->bl, BG); aFree(buf); } @@ -16829,7 +16965,7 @@ void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd) __at /// S 07e4 <length>.w <option>.l <val>.l {<index>.w <amount>.w).4b* void clif_parse_ItemListWindowSelected(int fd, struct map_session_data *sd) { - int n = ((int)RFIFOW(fd,2) - 12) / 4; + int n = ((int)RFIFOW(fd, 2) - 12) / 4; int type = RFIFOL(fd,4); int flag = RFIFOL(fd,8); // Button clicked: 0 = Cancel, 1 = OK struct itemlist item_list = { 0 }; @@ -16960,7 +17096,7 @@ void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) { char storename[MESSAGE_SIZE]; unsigned char result; int zenylimit; - unsigned int count, packet_len; + int count, packet_len; struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; packet_len = RFIFOW(fd,info->pos[0]); @@ -16968,7 +17104,7 @@ void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) { // TODO: Make this check global for all variable length packets. if( packet_len < 89 ) {// minimum packet length - ShowError("clif_parse_ReqOpenBuyingStore: Malformed packet (expected length=%u, length=%u, account_id=%d).\n", 89U, packet_len, sd->bl.id); + ShowError("clif_parse_ReqOpenBuyingStore: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", 89U, packet_len, sd->bl.id); return; } @@ -16980,9 +17116,12 @@ void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) { // so that buyingstore_create knows, how many elements it has access to packet_len-= info->pos[4]; + if (packet_len < 0) + return; + if( packet_len%blocksize ) { - ShowError("clif_parse_ReqOpenBuyingStore: Unexpected item list size %u (account_id=%d, block size=%u)\n", packet_len, sd->bl.id, blocksize); + ShowError("clif_parse_ReqOpenBuyingStore: Unexpected item list size %d (account_id=%d, block size=%u)\n", packet_len, sd->bl.id, blocksize); return; } count = packet_len/blocksize; @@ -17151,14 +17290,15 @@ void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd) { const unsigned int blocksize = 6; const uint8 *itemlist; int account_id; - unsigned int count, packet_len, buyer_id; + unsigned int buyer_id; + int count, packet_len; struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; packet_len = RFIFOW(fd,info->pos[0]); if( packet_len < 12 ) {// minimum packet length - ShowError("clif_parse_ReqTradeBuyingStore: Malformed packet (expected length=%u, length=%u, account_id=%d).\n", 12U, packet_len, sd->bl.id); + ShowError("clif_parse_ReqTradeBuyingStore: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", 12U, packet_len, sd->bl.id); return; } @@ -17168,10 +17308,12 @@ void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd) { // so that buyingstore_trade knows, how many elements it has access to packet_len-= info->pos[3]; + if (packet_len < 0) + return; if( packet_len%blocksize ) { - ShowError("clif_parse_ReqTradeBuyingStore: Unexpected item list size %u (account_id=%d, buyer_id=%d, block size=%u)\n", packet_len, sd->bl.id, account_id, blocksize); + ShowError("clif_parse_ReqTradeBuyingStore: Unexpected item list size %d (account_id=%d, buyer_id=%d, block size=%u)\n", packet_len, sd->bl.id, account_id, blocksize); return; } count = packet_len/blocksize; @@ -17290,14 +17432,15 @@ void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) { const uint8* itemlist; const uint8* cardlist; unsigned char type; - unsigned int min_price, max_price, packet_len, count, item_count, card_count; + unsigned int min_price, max_price; + int packet_len, count, item_count, card_count; struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; packet_len = RFIFOW(fd,info->pos[0]); if( packet_len < 15 ) {// minimum packet length - ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected length=%u, length=%u, account_id=%d).\n", 15U, packet_len, sd->bl.id); + ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected length=%u, length=%d, account_id=%d).\n", 15U, packet_len, sd->bl.id); return; } @@ -17307,24 +17450,28 @@ void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) { item_count = RFIFOB(fd,info->pos[4]); card_count = RFIFOB(fd,info->pos[5]); itemlist = RFIFOP(fd,info->pos[6]); - cardlist = RFIFOP(fd,info->pos[6]+blocksize*item_count); // check, if there is enough data for the claimed count of items packet_len-= info->pos[6]; + if (packet_len < 0) + return; + if( packet_len%blocksize ) { - ShowError("clif_parse_SearchStoreInfo: Unexpected item list size %u (account_id=%d, block size=%u)\n", packet_len, sd->bl.id, blocksize); + ShowError("clif_parse_SearchStoreInfo: Unexpected item list size %d (account_id=%d, block size=%u)\n", packet_len, sd->bl.id, blocksize); return; } count = packet_len/blocksize; if( count < item_count+card_count ) { - ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected count=%u, count=%u, account_id=%d).\n", item_count+card_count, count, sd->bl.id); + ShowError("clif_parse_SearchStoreInfo: Malformed packet (expected count=%d, count=%d, account_id=%d).\n", item_count+card_count, count, sd->bl.id); return; } + cardlist = RFIFOP(fd, info->pos[6] + blocksize * item_count); + searchstore->query(sd, type, min_price, max_price, (const unsigned short*)itemlist, item_count, (const unsigned short*)cardlist, card_count); } @@ -17944,16 +18091,30 @@ void clif_parse_CashShopSchedule(int fd, struct map_session_data *sd) #endif } +/// R 0848 <len>.W <limit>.W <kafra pay>.L (<item id>.L <amount>.L <tab>.W)* void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) { - unsigned short limit = RFIFOW(fd, 4), i, j; - unsigned int kafra_pay = RFIFOL(fd, 6);// [Ryuuzaki] - These are free cash points (strangely #CASH = main cash currently for us, confusing) + int len = RFIFOW(fd, 2); + unsigned short limit, i, j; + unsigned int kafra_pay; + int count; if (map->list[sd->bl.m].flag.nocashshop) { clif->messagecolor_self(fd, COLOR_RED, msg_fd(fd,1489)); //Cash Shop is disabled in this map return; } + if (len < 10) + return; + + limit = RFIFOW(fd, 4); + kafra_pay = RFIFOL(fd, 6); // [Ryuuzaki] - These are free cash points (strangely #CASH = main cash currently for us, confusing) + count = (len - 10) / 10; + if (count != limit) { + ShowError("Wrong cash shop limit: %d\n", limit); + return; + } + for(i = 0; i < limit; i++) { int qty = RFIFOL(fd, 14 + ( i * 10 )); int id = RFIFOL(fd, 10 + ( i * 10 )); @@ -18425,19 +18586,19 @@ void clif_parse_BankWithdraw(int fd, struct map_session_data *sd) void clif_parse_BankCheck(int fd, struct map_session_data* sd) __attribute__((nonnull (2))); void clif_parse_BankCheck(int fd, struct map_session_data* sd) { -#if PACKETVER >= 20130313 +#if PACKETVER >= 20130320 struct packet_banking_check p; + p.PacketType = banking_checkType; if (!battle_config.feature_banking) { - clif->messagecolor_self(fd, COLOR_RED, msg_fd(fd,1483)); - return; + p.Money = 0; + p.Reason = (short)1; + } else { + p.Money = (int)sd->status.bank_vault; + p.Reason = (short)0; } - p.PacketType = banking_checkType; - p.Money = (int)sd->status.bank_vault; - p.Reason = (short)0; - - clif->send(&p,sizeof(p), &sd->bl, SELF); + clif->send(&p, sizeof(p), &sd->bl, SELF); #endif } @@ -19265,6 +19426,156 @@ const char *clif_get_bl_name(const struct block_list *bl) return name; } +/** + * Clan System: Sends the basic clan informations to client. + * 098a <length>.W <clan id>.L <clan name>.24B <clan master>.24B <clan map>.16B <alliance count>.B + * <antagonist count>.B { <alliance>.24B } * alliance count { <antagonist>.24B } * antagonist count (ZC_CLANINFO) + */ +void clif_clan_basicinfo(struct map_session_data *sd) +{ +#if PACKETVER >= 20120716 + int len, i, fd; + struct clan *c, *ally, *antagonist; + struct PACKET_ZC_CLANINFO *packet = NULL; + + nullpo_retv(sd); + nullpo_retv(c = sd->clan); + + len = sizeof(struct PACKET_ZC_CLANINFO); + fd = sd->fd; + + WFIFOHEAD(fd, len); + packet = WFIFOP(fd, 0); + + packet->PacketType = clanBasicInfo; + packet->ClanID = c->clan_id; + + safestrncpy(packet->ClanName, c->name, NAME_LENGTH); + safestrncpy(packet->MasterName, c->master, NAME_LENGTH); + + mapindex->getmapname_ext(c->map, packet->Map); + + packet->AllyCount = VECTOR_LENGTH(c->allies); + packet->AntagonistCount = VECTOR_LENGTH(c->antagonists); + + // All allies and antagonists are assumed as valid entries + // since it only gets inside the vector after the validation + // on clan->config_read + for (i = 0; i < VECTOR_LENGTH(c->allies); i++) { + struct clan_relationship *al = &VECTOR_INDEX(c->allies, i); + + if ((ally = clan->search(al->clan_id)) != NULL) { + safestrncpy(WFIFOP(fd, len), ally->name, NAME_LENGTH); + len += NAME_LENGTH; + } + } + + for (i = 0; i < VECTOR_LENGTH(c->antagonists); i++) { + struct clan_relationship *an = &VECTOR_INDEX(c->antagonists, i); + + if ((antagonist = clan->search(an->clan_id)) != NULL) { + safestrncpy(WFIFOP(fd, len), antagonist->name, NAME_LENGTH); + len += NAME_LENGTH; + } + } + + packet->PacketLength = len; + WFIFOSET(fd, len); +#endif +} + +/** + * Clan System: Updates the online and maximum player count of a clan. + * 0988 <online count>.W <maximum member amount>.W (ZC_NOTIFY_CLAN_CONNECTINFO) + */ +void clif_clan_onlinecount(struct clan *c) +{ +#if PACKETVER >= 20120716 + struct map_session_data *sd; + struct PACKET_ZC_NOTIFY_CLAN_CONNECTINFO p; + + nullpo_retv(c); + + p.PacketType = clanOnlineCount; + p.NumConnect = c->connect_member; + p.NumTotal = c->max_member; + + if ((sd = clan->getonlinesd(c)) != NULL) { + clif->send(&p, sizeof(p), &sd->bl, CLAN); + } +#endif +} + +/** +* Clan System: Notifies the client that the player has left his clan. +* 0989 (ZC_ACK_CLAN_LEAVE) +**/ +void clif_clan_leave(struct map_session_data* sd) +{ +#if PACKETVER >= 20131223 + struct PACKET_ZC_ACK_CLAN_LEAVE p; + + nullpo_retv(sd); + + p.PacketType = clanLeave; + + clif->send(&p, sizeof(p), &sd->bl, SELF); +#endif +} + +/** + * Clan System: Sends a clan message to a player + * 098e <length>.W <name>.24B <message>.?B (ZC_NOTIFY_CLAN_CHAT) + */ +void clif_clan_message(struct clan *c, const char *mes, int len) +{ +#if PACKETVER >= 20120716 + struct map_session_data *sd; + struct PACKET_ZC_NOTIFY_CLAN_CHAT *p; + unsigned int max_len = CHAT_SIZE_MAX - 5 - NAME_LENGTH; + int packet_length; + + nullpo_retv(c); + nullpo_retv(mes); + + if (len == 0) { + return; + } else if (len > max_len) { + ShowWarning("clif_clan_message: Truncated message '%s' (len=%d, max=%u, clan_id=%d).\n", mes, len, max_len, c->clan_id); + len = max_len; + } + + packet_length = sizeof(*p) + len + 1; + p = (struct PACKET_ZC_NOTIFY_CLAN_CHAT *)aMalloc(packet_length); + p->PacketType = clanMessage; + p->PacketLength = packet_length; + // p->MemberName is being ignored on the client side. + safestrncpy(p->Message, mes, len + 1); + + if ((sd = clan->getonlinesd(c)) != NULL) + clif->send(p, packet_length, &sd->bl, CLAN); + aFree(p); +#endif +} + +void clif_parse_ClanMessage(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); +/** + * Clan System: Parses a clan message from a player. + * 098d <length>.W <text>.?B (<name> : <message>) (CZ_CLAN_CHAT) + */ +void clif_parse_ClanMessage(int fd, struct map_session_data *sd) +{ +#if PACKETVER >= 20120716 + const struct packet_chat_message *packet = RP2PTR(fd); + char message[CHAT_SIZE_MAX + NAME_LENGTH + 3 + 1]; + + if (clif->process_chat_message(sd, packet, message, sizeof(message)) == NULL) + return; + + clan->send_message(sd, message); +#endif +} + /* */ unsigned short clif_decrypt_cmd( int cmd, struct map_session_data *sd ) { if( sd ) { @@ -19520,7 +19831,7 @@ void clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_typ continue; inner->MailID = msg->id; - inner->Isread = msg->is_read == true ? 1 : 0; + inner->Isread = (msg->is_read == true || msg->sender_read == true) ? 1 : 0; inner->type = msg->type; #if PACKETVER >= 20170419 inner->openType = msg->opentype; @@ -19552,7 +19863,7 @@ void clif_rodex_send_maillist(int fd, struct map_session_data *sd, int8 open_typ #endif } -void clif_rodex_send_mails_all(int fd, struct map_session_data *sd) +void clif_rodex_send_mails_all(int fd, struct map_session_data *sd, int64 mail_id) { #if PACKETVER >= 20170419 struct PACKET_ZC_MAIL_LIST *packet; @@ -19560,18 +19871,24 @@ void clif_rodex_send_mails_all(int fd, struct map_session_data *sd) int16 size = sizeof(*packet); int packetMailCount = 0; int mailListCount = 0; - int mailsSize = VECTOR_LENGTH(sd->rodex.messages); - int i; + int mailsSize, i; + int j = -1; nullpo_retv(sd); + mailsSize = VECTOR_LENGTH(sd->rodex.messages); + + if (mail_id > 0) + ARR_FIND(0, VECTOR_LENGTH(sd->rodex.messages), j, (VECTOR_INDEX(sd->rodex.messages, j)).id == mail_id); + WFIFOHEAD(fd, sizeof(*packet) + (sizeof(*inner) + RODEX_TITLE_LENGTH) * RODEX_MAIL_PER_PAGE); packet = WFIFOP(fd, 0); packet->PacketType = rodexmailList; inner = WFIFOP(fd, size); i = mailsSize - 1; - while (i >= 0) { + mailsSize -= (j + 1); + while (i > j) { struct rodex_message *msg = &VECTOR_INDEX(sd->rodex.messages, i); --i; @@ -19579,7 +19896,7 @@ void clif_rodex_send_mails_all(int fd, struct map_session_data *sd) continue; inner->MailID = msg->id; - inner->Isread = msg->is_read == true ? 1 : 0; + inner->Isread = (msg->is_read == true || msg->sender_read == true) ? 1 : 0; inner->type = msg->type; inner->openType = msg->opentype; inner->expireDateTime = msg->expire_date - (int)time(NULL); @@ -19646,7 +19963,7 @@ void clif_rodex_send_refresh(int fd, struct map_session_data *sd, int8 open_type continue; inner->MailID = msg->id; - inner->Isread = msg->is_read == true ? 1 : 0; + inner->Isread = (msg->is_read == true || msg->sender_read == true) ? 1 : 0; inner->type = msg->type; #if PACKETVER >= 20170419 inner->openType = msg->opentype; @@ -20117,10 +20434,22 @@ void packetdb_loaddb(void) { #define packet(id, size, ...) packetdb_addpacket((id), (size), ##__VA_ARGS__, 0xFFFF) #include "packets.h" /* load structure data */ -#include "packets_shuffle.h" +#ifdef PACKETVER_ZERO +#include "packets_shuffle_zero.h" +#else // PACKETVER_ZERO +#include "packets_shuffle_main.h" +#endif // PACKETVER_ZERO #undef packet #define packetKeys(a,b,c) do { clif->cryptKey[0] = (a); clif->cryptKey[1] = (b); clif->cryptKey[2] = (c); } while(0) -#include "packets_keys.h" +#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3) + packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3); +#else // defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3) +#ifdef PACKETVER_ZERO +#include "packets_keys_zero.h" +#else // PACKETVER_ZERO +#include "packets_keys_main.h" +#endif // PACKETVER_ZERO +#endif // defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3) #undef packetKeys } void clif_bc_ready(void) { @@ -20367,6 +20696,7 @@ void clif_defaults(void) { clif->font = clif_font; clif->progressbar = clif_progressbar; clif->progressbar_abort = clif_progressbar_abort; + clif->progressbar_unit = clif_progressbar_unit; clif->showdigit = clif_showdigit; clif->elementalconverter_list = clif_elementalconverter_list; clif->spellbook_list = clif_spellbook_list; @@ -20976,4 +21306,10 @@ void clif_defaults(void) { clif->rodex_icon = clif_rodex_icon; clif->rodex_send_mails_all = clif_rodex_send_mails_all; clif->skill_scale = clif_skill_scale; + // -- Clan system + clif->clan_basicinfo = clif_clan_basicinfo; + clif->clan_onlinecount = clif_clan_onlinecount; + clif->clan_leave = clif_clan_leave; + clif->clan_message = clif_clan_message; + clif->pClanMessage = clif_parse_ClanMessage; } diff --git a/src/map/clif.h b/src/map/clif.h index e348bbb08..acf79c373 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -110,6 +110,8 @@ typedef enum send_target { BG_AREA_WOS, BG_QUEUE, + + CLAN, // Clan System } send_target; typedef enum broadcast_flags { @@ -796,6 +798,7 @@ struct clif_interface { void (*font) (struct map_session_data *sd); void (*progressbar) (struct map_session_data * sd, unsigned int color, unsigned int second); void (*progressbar_abort) (struct map_session_data * sd); + void (*progressbar_unit) (struct block_list *bl, uint32 color, uint32 time); void (*showdigit) (struct map_session_data* sd, unsigned char type, int value); int (*elementalconverter_list) (struct map_session_data *sd); int (*spellbook_list) (struct map_session_data *sd); @@ -1386,7 +1389,7 @@ struct clif_interface { void (*rodex_send_mail_result) (int fd, struct map_session_data *sd, int8 result); void (*rodex_send_maillist) (int fd, struct map_session_data *sd, int8 open_type, int64 page_start); void (*rodex_send_refresh) (int fd, struct map_session_data *sd, int8 open_type, int count); - void (*rodex_send_mails_all) (int fd, struct map_session_data *sd); + void (*rodex_send_mails_all) (int fd, struct map_session_data *sd, int64 mail_id); void (*pRodexReadMail) (int fd, struct map_session_data *sd); void (*rodex_read_mail) (struct map_session_data *sd, int8 opentype, struct rodex_message *msg); void (*pRodexNextMaillist) (int fd, struct map_session_data *sd); @@ -1404,6 +1407,12 @@ struct clif_interface { void (*rodex_request_items) (struct map_session_data *sd, int8 opentype, int64 mail_id, int8 result); void (*rodex_icon) (int fd, bool show); void (*skill_scale) (struct block_list *bl, int src_id, int x, int y, uint16 skill_id, uint16 skill_lv, int casttime); + /* Clan System */ + void (*clan_basicinfo) (struct map_session_data *sd); + void (*clan_onlinecount) (struct clan *c); + void (*clan_leave) (struct map_session_data *sd); + void (*clan_message) (struct clan *c, const char *mes, int len); + void (*pClanMessage) (int fd, struct map_session_data* sd); }; #ifdef HERCULES_CORE diff --git a/src/map/constants.inc b/src/map/constants.inc new file mode 100644 index 000000000..355e2a825 --- /dev/null +++ b/src/map/constants.inc @@ -0,0 +1,1029 @@ + script->constdb_comment("Status Icons"); + + script->set_constant("SI_BLANK", SI_BLANK, false, false); + + script->set_constant("SI_PROVOKE", SI_PROVOKE, false, false); + script->set_constant("SI_ENDURE", SI_ENDURE, false, false); + script->set_constant("SI_TWOHANDQUICKEN", SI_TWOHANDQUICKEN, false, false); + script->set_constant("SI_CONCENTRATION", SI_CONCENTRATION, false, false); + script->set_constant("SI_HIDING", SI_HIDING, false, false); + script->set_constant("SI_CLOAKING", SI_CLOAKING, false, false); + script->set_constant("SI_ENCHANTPOISON", SI_ENCHANTPOISON, false, false); + script->set_constant("SI_POISONREACT", SI_POISONREACT, false, false); + script->set_constant("SI_QUAGMIRE", SI_QUAGMIRE, false, false); + script->set_constant("SI_ANGELUS", SI_ANGELUS, false, false); + script->set_constant("SI_BLESSING", SI_BLESSING, false, false); + script->set_constant("SI_CRUCIS", SI_CRUCIS, false, false); + script->set_constant("SI_INC_AGI", SI_INC_AGI, false, false); + script->set_constant("SI_DEC_AGI", SI_DEC_AGI, false, false); + script->set_constant("SI_SLOWPOISON", SI_SLOWPOISON, false, false); + script->set_constant("SI_IMPOSITIO", SI_IMPOSITIO, false, false); + script->set_constant("SI_SUFFRAGIUM", SI_SUFFRAGIUM, false, false); + script->set_constant("SI_ASPERSIO", SI_ASPERSIO, false, false); + script->set_constant("SI_BENEDICTIO", SI_BENEDICTIO, false, false); + script->set_constant("SI_KYRIE", SI_KYRIE, false, false); + script->set_constant("SI_MAGNIFICAT", SI_MAGNIFICAT, false, false); + script->set_constant("SI_GLORIA", SI_GLORIA, false, false); + script->set_constant("SI_LEXAETERNA", SI_LEXAETERNA, false, false); + script->set_constant("SI_ADRENALINE", SI_ADRENALINE, false, false); + script->set_constant("SI_WEAPONPERFECT", SI_WEAPONPERFECT, false, false); + script->set_constant("SI_OVERTHRUST", SI_OVERTHRUST, false, false); + script->set_constant("SI_MAXIMIZE", SI_MAXIMIZE, false, false); + script->set_constant("SI_RIDING", SI_RIDING, false, false); + script->set_constant("SI_FALCON", SI_FALCON, false, false); + script->set_constant("SI_TRICKDEAD", SI_TRICKDEAD, false, false); + script->set_constant("SI_SHOUT", SI_SHOUT, false, false); + script->set_constant("SI_ENERGYCOAT", SI_ENERGYCOAT, false, false); + script->set_constant("SI_BROKENARMOR", SI_BROKENARMOR, false, false); + script->set_constant("SI_BROKENWEAPON", SI_BROKENWEAPON, false, false); + script->set_constant("SI_ILLUSION", SI_ILLUSION, false, false); + script->set_constant("SI_WEIGHTOVER50", SI_WEIGHTOVER50, false, false); + script->set_constant("SI_WEIGHTOVER90", SI_WEIGHTOVER90, false, false); + script->set_constant("SI_ATTHASTE_POTION1", SI_ATTHASTE_POTION1, false, false); + script->set_constant("SI_ATTHASTE_POTION2", SI_ATTHASTE_POTION2, false, false); + script->set_constant("SI_ATTHASTE_POTION3", SI_ATTHASTE_POTION3, false, false); + script->set_constant("SI_ATTHASTE_INFINITY", SI_ATTHASTE_INFINITY, false, false); + script->set_constant("SI_MOVHASTE_POTION", SI_MOVHASTE_POTION, false, false); + script->set_constant("SI_MOVHASTE_INFINITY", SI_MOVHASTE_INFINITY, false, false); + //script->set_constant("SI_AUTOCOUNTER", SI_AUTOCOUNTER, false, false); + //script->set_constant("SI_SPLASHER", SI_SPLASHER, false, false); + script->set_constant("SI_ANKLESNARE", SI_ANKLESNARE, false, false); + script->set_constant("SI_POSTDELAY", SI_POSTDELAY, false, false); + //script->set_constant("SI_NOACTION", SI_NOACTION, false, false); + //script->set_constant("SI_IMPOSSIBLEPICKUP", SI_IMPOSSIBLEPICKUP, false, false); + //script->set_constant("SI_BARRIER", SI_BARRIER, false, false); + + script->set_constant("SI_NOEQUIPWEAPON", SI_NOEQUIPWEAPON, false, false); + script->set_constant("SI_NOEQUIPSHIELD", SI_NOEQUIPSHIELD, false, false); + script->set_constant("SI_NOEQUIPARMOR", SI_NOEQUIPARMOR, false, false); + script->set_constant("SI_NOEQUIPHELM", SI_NOEQUIPHELM, false, false); + script->set_constant("SI_PROTECTWEAPON", SI_PROTECTWEAPON, false, false); + script->set_constant("SI_PROTECTSHIELD", SI_PROTECTSHIELD, false, false); + script->set_constant("SI_PROTECTARMOR", SI_PROTECTARMOR, false, false); + script->set_constant("SI_PROTECTHELM", SI_PROTECTHELM, false, false); + script->set_constant("SI_AUTOGUARD", SI_AUTOGUARD, false, false); + script->set_constant("SI_REFLECTSHIELD", SI_REFLECTSHIELD, false, false); + //script->set_constant("SI_DEVOTION", SI_DEVOTION, false, false); + script->set_constant("SI_PROVIDENCE", SI_PROVIDENCE, false, false); + script->set_constant("SI_DEFENDER", SI_DEFENDER, false, false); + //script->set_constant("SI_MAGICROD", SI_MAGICROD, false, false); + //script->set_constant("SI_WEAPONPROPERTY", SI_WEAPONPROPERTY, false, false); + script->set_constant("SI_AUTOSPELL", SI_AUTOSPELL, false, false); + //script->set_constant("SI_SPECIALZONE", SI_SPECIALZONE, false, false); + //script->set_constant("SI_MASK", SI_MASK, false, false); + script->set_constant("SI_SPEARQUICKEN", SI_SPEARQUICKEN, false, false); + //script->set_constant("SI_BDPLAYING", SI_BDPLAYING, false, false); + //script->set_constant("SI_WHISTLE", SI_WHISTLE, false, false); + //script->set_constant("SI_ASSASSINCROSS", SI_ASSASSINCROSS, false, false); + //script->set_constant("SI_POEMBRAGI", SI_POEMBRAGI, false, false); + //script->set_constant("SI_APPLEIDUN", SI_APPLEIDUN, false, false); + //script->set_constant("SI_HUMMING", SI_HUMMING, false, false); + //script->set_constant("SI_DONTFORGETME", SI_DONTFORGETME, false, false); + //script->set_constant("SI_FORTUNEKISS", SI_FORTUNEKISS, false, false); + //script->set_constant("SI_SERVICEFORYOU", SI_SERVICEFORYOU, false, false); + //script->set_constant("SI_RICHMANKIM", SI_RICHMANKIM, false, false); + //script->set_constant("SI_ETERNALCHAOS", SI_ETERNALCHAOS, false, false); + //script->set_constant("SI_DRUMBATTLEFIELD", SI_DRUMBATTLEFIELD, false, false); + //script->set_constant("SI_RINGNIBELUNGEN", SI_RINGNIBELUNGEN, false, false); + //script->set_constant("SI_ROKISWEIL", SI_ROKISWEIL, false, false); + //script->set_constant("SI_INTOABYSS", SI_INTOABYSS, false, false); + //script->set_constant("SI_SIEGFRIED", SI_SIEGFRIED, false, false); + //script->set_constant("SI_BLADESTOP", SI_BLADESTOP, false, false); + script->set_constant("SI_EXPLOSIONSPIRITS", SI_EXPLOSIONSPIRITS, false, false); + script->set_constant("SI_STEELBODY", SI_STEELBODY, false, false); + script->set_constant("SI_EXTREMITYFIST", SI_EXTREMITYFIST, false, false); + //script->set_constant("SI_COMBOATTACK", SI_COMBOATTACK, false, false); + script->set_constant("SI_PROPERTYFIRE", SI_PROPERTYFIRE, false, false); + script->set_constant("SI_PROPERTYWATER", SI_PROPERTYWATER, false, false); + script->set_constant("SI_PROPERTYWIND", SI_PROPERTYWIND, false, false); + script->set_constant("SI_PROPERTYGROUND", SI_PROPERTYGROUND, false, false); + //script->set_constant("SI_MAGICATTACK", SI_MAGICATTACK, false, false); + script->set_constant("SI_STOP", SI_STOP, false, false); + //script->set_constant("SI_WEAPONBRAKER", SI_WEAPONBRAKER, false, false); + script->set_constant("SI_PROPERTYUNDEAD", SI_PROPERTYUNDEAD, false, false); + //script->set_constant("SI_POWERUP", SI_POWERUP, false, false); + //script->set_constant("SI_AGIUP", SI_AGIUP, false, false); + + //script->set_constant("SI_SIEGEMODE", SI_SIEGEMODE, false, false); + //script->set_constant("SI_INVISIBLE", SI_INVISIBLE, false, false); + //script->set_constant("SI_STATUSONE", SI_STATUSONE, false, false); + script->set_constant("SI_AURABLADE", SI_AURABLADE, false, false); + script->set_constant("SI_PARRYING", SI_PARRYING, false, false); + script->set_constant("SI_LKCONCENTRATION", SI_LKCONCENTRATION, false, false); + script->set_constant("SI_TENSIONRELAX", SI_TENSIONRELAX, false, false); + script->set_constant("SI_BERSERK", SI_BERSERK, false, false); + //script->set_constant("SI_SACRIFICE", SI_SACRIFICE, false, false); + //script->set_constant("SI_GOSPEL", SI_GOSPEL, false, false); + script->set_constant("SI_ASSUMPTIO", SI_ASSUMPTIO, false, false); + //script->set_constant("SI_BASILICA", SI_BASILICA, false, false); + script->set_constant("SI_GROUNDMAGIC", SI_GROUNDMAGIC, false, false); + script->set_constant("SI_MAGICPOWER", SI_MAGICPOWER, false, false); + script->set_constant("SI_EDP", SI_EDP, false, false); + script->set_constant("SI_TRUESIGHT", SI_TRUESIGHT, false, false); + script->set_constant("SI_WINDWALK", SI_WINDWALK, false, false); + script->set_constant("SI_MELTDOWN", SI_MELTDOWN, false, false); + script->set_constant("SI_CARTBOOST", SI_CARTBOOST, false, false); + //script->set_constant("SI_CHASEWALK", SI_CHASEWALK, false, false); + script->set_constant("SI_SWORDREJECT", SI_SWORDREJECT, false, false); + script->set_constant("SI_MARIONETTE_MASTER", SI_MARIONETTE_MASTER, false, false); + script->set_constant("SI_MARIONETTE", SI_MARIONETTE, false, false); + script->set_constant("SI_MOON", SI_MOON, false, false); + script->set_constant("SI_BLOODING", SI_BLOODING, false, false); + script->set_constant("SI_JOINTBEAT", SI_JOINTBEAT, false, false); + //script->set_constant("SI_MINDBREAKER", SI_MINDBREAKER, false, false); + //script->set_constant("SI_MEMORIZE", SI_MEMORIZE, false, false); + //script->set_constant("SI_FOGWALL", SI_FOGWALL, false, false); + //script->set_constant("SI_SPIDERWEB", SI_SPIDERWEB, false, false); + script->set_constant("SI_PROTECTEXP", SI_PROTECTEXP, false, false); + //script->set_constant("SI_SUB_WEAPONPROPERTY", SI_SUB_WEAPONPROPERTY, false, false); + script->set_constant("SI_AUTOBERSERK", SI_AUTOBERSERK, false, false); + script->set_constant("SI_RUN", SI_RUN, false, false); + script->set_constant("SI_TING", SI_TING, false, false); + script->set_constant("SI_STORMKICK_ON", SI_STORMKICK_ON, false, false); + script->set_constant("SI_STORMKICK_READY", SI_STORMKICK_READY, false, false); + script->set_constant("SI_DOWNKICK_ON", SI_DOWNKICK_ON, false, false); + script->set_constant("SI_DOWNKICK_READY", SI_DOWNKICK_READY, false, false); + script->set_constant("SI_TURNKICK_ON", SI_TURNKICK_ON, false, false); + script->set_constant("SI_TURNKICK_READY", SI_TURNKICK_READY, false, false); + script->set_constant("SI_COUNTER_ON", SI_COUNTER_ON, false, false); + script->set_constant("SI_COUNTER_READY", SI_COUNTER_READY, false, false); + script->set_constant("SI_DODGE_ON", SI_DODGE_ON, false, false); + script->set_constant("SI_DODGE_READY", SI_DODGE_READY, false, false); + script->set_constant("SI_STRUP", SI_STRUP, false, false); + script->set_constant("SI_PROPERTYDARK", SI_PROPERTYDARK, false, false); + script->set_constant("SI_ADRENALINE2", SI_ADRENALINE2, false, false); + script->set_constant("SI_PROPERTYTELEKINESIS", SI_PROPERTYTELEKINESIS, false, false); + script->set_constant("SI_SOULLINK", SI_SOULLINK, false, false); + + script->set_constant("SI_PLUSATTACKPOWER", SI_PLUSATTACKPOWER, false, false); + script->set_constant("SI_PLUSMAGICPOWER", SI_PLUSMAGICPOWER, false, false); + script->set_constant("SI_DEVIL1", SI_DEVIL1, false, false); + script->set_constant("SI_KAITE", SI_KAITE, false, false); + //script->set_constant("SI_SWOO", SI_SWOO, false, false); + //script->set_constant("SI_STAR2", SI_STAR2, false, false); + script->set_constant("SI_KAIZEL", SI_KAIZEL, false, false); + script->set_constant("SI_KAAHI", SI_KAAHI, false, false); + script->set_constant("SI_KAUPE", SI_KAUPE, false, false); + script->set_constant("SI_SMA_READY", SI_SMA_READY, false, false); + script->set_constant("SI_SKE", SI_SKE, false, false); + script->set_constant("SI_ONEHANDQUICKEN", SI_ONEHANDQUICKEN, false, false); + //script->set_constant("SI_FRIEND", SI_FRIEND, false, false); + //script->set_constant("SI_FRIENDUP", SI_FRIENDUP, false, false); + //script->set_constant("SI_SG_WARM", SI_SG_WARM, false, false); + script->set_constant("SI_SG_SUN_WARM", SI_SG_SUN_WARM, false, false); + //script->set_constant("SI_SG_MOON_WARM", SI_SG_MOON_WARM, false, false); + //script->set_constant("SI_SG_STAR_WARM", SI_SG_STAR_WARM, false, false); + //script->set_constant("SI_EMOTION", SI_EMOTION, false, false); + script->set_constant("SI_SUN_COMFORT", SI_SUN_COMFORT, false, false); + script->set_constant("SI_MOON_COMFORT", SI_MOON_COMFORT, false, false); + script->set_constant("SI_STAR_COMFORT", SI_STAR_COMFORT, false, false); + //script->set_constant("SI_EXPUP", SI_EXPUP, false, false); + //script->set_constant("SI_GDSKILL_BATTLEORDER", SI_GDSKILL_BATTLEORDER, false, false); + //script->set_constant("SI_GDSKILL_REGENERATION", SI_GDSKILL_REGENERATION, false, false); + //script->set_constant("SI_GDSKILL_POSTDELAY", SI_GDSKILL_POSTDELAY, false, false); + //script->set_constant("SI_RESISTHANDICAP", SI_RESISTHANDICAP, false, false); + //script->set_constant("SI_MAXHPPERCENT", SI_MAXHPPERCENT, false, false); + //script->set_constant("SI_MAXSPPERCENT", SI_MAXSPPERCENT, false, false); + //script->set_constant("SI_DEFENCE", SI_DEFENCE, false, false); + //script->set_constant("SI_SLOWDOWN", SI_SLOWDOWN, false, false); + script->set_constant("SI_PRESERVE", SI_PRESERVE, false, false); + script->set_constant("SI_INCSTR", SI_INCSTR, false, false); + //script->set_constant("SI_NOT_EXTREMITYFIST", SI_NOT_EXTREMITYFIST, false, false); + script->set_constant("SI_CLAIRVOYANCE", SI_CLAIRVOYANCE, false, false); + script->set_constant("SI_MOVESLOW_POTION", SI_MOVESLOW_POTION, false, false); + script->set_constant("SI_DOUBLECASTING", SI_DOUBLECASTING, false, false); + //script->set_constant("SI_GRAVITATION", SI_GRAVITATION, false, false); + script->set_constant("SI_OVERTHRUSTMAX", SI_OVERTHRUSTMAX, false, false); + //script->set_constant("SI_LONGING", SI_LONGING, false, false); + //script->set_constant("SI_HERMODE", SI_HERMODE, false, false); + script->set_constant("SI_TAROTCARD", SI_TAROTCARD, false, false); + //script->set_constant("SI_HLIF_AVOID", SI_HLIF_AVOID, false, false); + //script->set_constant("SI_HFLI_FLEET", SI_HFLI_FLEET, false, false); + //script->set_constant("SI_HFLI_SPEED", SI_HFLI_SPEED, false, false); + //script->set_constant("SI_HLIF_CHANGE", SI_HLIF_CHANGE, false, false); + //script->set_constant("SI_HAMI_BLOODLUST", SI_HAMI_BLOODLUST, false, false); + script->set_constant("SI_CR_SHRINK", SI_CR_SHRINK, false, false); + script->set_constant("SI_WZ_SIGHTBLASTER", SI_WZ_SIGHTBLASTER, false, false); + script->set_constant("SI_DC_WINKCHARM", SI_DC_WINKCHARM, false, false); + + script->set_constant("SI_RG_CCONFINE_M", SI_RG_CCONFINE_M, false, false); + script->set_constant("SI_RG_CCONFINE_S", SI_RG_CCONFINE_S, false, false); + //script->set_constant("SI_DISABLEMOVE", SI_DISABLEMOVE, false, false); + script->set_constant("SI_GS_MADNESSCANCEL", SI_GS_MADNESSCANCEL, false, false); + script->set_constant("SI_GS_GATLINGFEVER", SI_GS_GATLINGFEVER, false, false); + script->set_constant("SI_EARTHSCROLL", SI_EARTHSCROLL, false, false); + script->set_constant("SI_NJ_UTSUSEMI", SI_NJ_UTSUSEMI, false, false); + script->set_constant("SI_NJ_BUNSINJYUTSU", SI_NJ_BUNSINJYUTSU, false, false); + script->set_constant("SI_NJ_NEN", SI_NJ_NEN, false, false); + script->set_constant("SI_GS_ADJUSTMENT", SI_GS_ADJUSTMENT, false, false); + script->set_constant("SI_GS_ACCURACY", SI_GS_ACCURACY, false, false); + script->set_constant("SI_NJ_SUITON", SI_NJ_SUITON, false, false); + //script->set_constant("SI_PET", SI_PET, false, false); + //script->set_constant("SI_MENTAL", SI_MENTAL, false, false); + //script->set_constant("SI_EXPMEMORY", SI_EXPMEMORY, false, false); + //script->set_constant("SI_PERFORMANCE", SI_PERFORMANCE, false, false); + //script->set_constant("SI_GAIN", SI_GAIN, false, false); + //script->set_constant("SI_GRIFFON", SI_GRIFFON, false, false); + //script->set_constant("SI_DRIFT", SI_DRIFT, false, false); + //script->set_constant("SI_WALLSHIFT", SI_WALLSHIFT, false, false); + //script->set_constant("SI_REINCARNATION", SI_REINCARNATION, false, false); + //script->set_constant("SI_PATTACK", SI_PATTACK, false, false); + //script->set_constant("SI_PSPEED", SI_PSPEED, false, false); + //script->set_constant("SI_PDEFENSE", SI_PDEFENSE, false, false); + //script->set_constant("SI_PCRITICAL", SI_PCRITICAL, false, false); + //script->set_constant("SI_RANKING", SI_RANKING, false, false); + //script->set_constant("SI_PTRIPLE", SI_PTRIPLE, false, false); + //script->set_constant("SI_DENERGY", SI_DENERGY, false, false); + //script->set_constant("SI_WAVE1", SI_WAVE1, false, false); + //script->set_constant("SI_WAVE2", SI_WAVE2, false, false); + //script->set_constant("SI_WAVE3", SI_WAVE3, false, false); + //script->set_constant("SI_WAVE4", SI_WAVE4, false, false); + //script->set_constant("SI_DAURA", SI_DAURA, false, false); + //script->set_constant("SI_DFREEZER", SI_DFREEZER, false, false); + //script->set_constant("SI_DPUNISH", SI_DPUNISH, false, false); + //script->set_constant("SI_DBARRIER", SI_DBARRIER, false, false); + //script->set_constant("SI_DWARNING", SI_DWARNING, false, false); + //script->set_constant("SI_MOUSEWHEEL", SI_MOUSEWHEEL, false, false); + //script->set_constant("SI_DGAUGE", SI_DGAUGE, false, false); + //script->set_constant("SI_DACCEL", SI_DACCEL, false, false); + //script->set_constant("SI_DBLOCK", SI_DBLOCK, false, false); + script->set_constant("SI_FOOD_STR", SI_FOOD_STR, false, false); + script->set_constant("SI_FOOD_AGI", SI_FOOD_AGI, false, false); + script->set_constant("SI_FOOD_VIT", SI_FOOD_VIT, false, false); + script->set_constant("SI_FOOD_DEX", SI_FOOD_DEX, false, false); + script->set_constant("SI_FOOD_INT", SI_FOOD_INT, false, false); + script->set_constant("SI_FOOD_LUK", SI_FOOD_LUK, false, false); + script->set_constant("SI_FOOD_BASICAVOIDANCE", SI_FOOD_BASICAVOIDANCE, false, false); + script->set_constant("SI_FOOD_BASICHIT", SI_FOOD_BASICHIT, false, false); + script->set_constant("SI_FOOD_CRITICALSUCCESSVALUE", SI_FOOD_CRITICALSUCCESSVALUE, false, false); + + script->set_constant("SI_CASH_PLUSEXP", SI_CASH_PLUSEXP, false, false); + script->set_constant("SI_CASH_DEATHPENALTY", SI_CASH_DEATHPENALTY, false, false); + script->set_constant("SI_CASH_RECEIVEITEM", SI_CASH_RECEIVEITEM, false, false); + script->set_constant("SI_CASH_BOSS_ALARM", SI_CASH_BOSS_ALARM, false, false); + //script->set_constant("SI_DA_ENERGY", SI_DA_ENERGY, false, false); + //script->set_constant("SI_DA_FIRSTSLOT", SI_DA_FIRSTSLOT, false, false); + //script->set_constant("SI_DA_HEADDEF", SI_DA_HEADDEF, false, false); + //script->set_constant("SI_DA_SPACE", SI_DA_SPACE, false, false); + //script->set_constant("SI_DA_TRANSFORM", SI_DA_TRANSFORM, false, false); + //script->set_constant("SI_DA_ITEMREBUILD", SI_DA_ITEMREBUILD, false, false); + //script->set_constant("SI_DA_ILLUSION", SI_DA_ILLUSION, false, false); + //script->set_constant("SI_DA_DARKPOWER", SI_DA_DARKPOWER, false, false); + //script->set_constant("SI_DA_EARPLUG", SI_DA_EARPLUG, false, false); + //script->set_constant("SI_DA_CONTRACT", SI_DA_CONTRACT, false, false); + //script->set_constant("SI_DA_BLACK", SI_DA_BLACK, false, false); + //script->set_constant("SI_DA_MAGICCART", SI_DA_MAGICCART, false, false); + //script->set_constant("SI_CRYSTAL", SI_CRYSTAL, false, false); + //script->set_constant("SI_DA_REBUILD", SI_DA_REBUILD, false, false); + //script->set_constant("SI_DA_EDARKNESS", SI_DA_EDARKNESS, false, false); + //script->set_constant("SI_DA_EGUARDIAN", SI_DA_EGUARDIAN, false, false); + //script->set_constant("SI_DA_TIMEOUT", SI_DA_TIMEOUT, false, false); + script->set_constant("SI_FOOD_STR_CASH", SI_FOOD_STR_CASH, false, false); + script->set_constant("SI_FOOD_AGI_CASH", SI_FOOD_AGI_CASH, false, false); + script->set_constant("SI_FOOD_VIT_CASH", SI_FOOD_VIT_CASH, false, false); + script->set_constant("SI_FOOD_DEX_CASH", SI_FOOD_DEX_CASH, false, false); + script->set_constant("SI_FOOD_INT_CASH", SI_FOOD_INT_CASH, false, false); + script->set_constant("SI_FOOD_LUK_CASH", SI_FOOD_LUK_CASH, false, false); + script->set_constant("SI_MER_FLEE", SI_MER_FLEE, false, false); + script->set_constant("SI_MER_ATK", SI_MER_ATK, false, false); + script->set_constant("SI_MER_HP", SI_MER_HP, false, false); + script->set_constant("SI_MER_SP", SI_MER_SP, false, false); + script->set_constant("SI_MER_HIT", SI_MER_HIT, false, false); + script->set_constant("SI_SLOWCAST", SI_SLOWCAST, false, false); + //script->set_constant("SI_MAGICMIRROR", SI_MAGICMIRROR, false, false); + //script->set_constant("SI_STONESKIN", SI_STONESKIN, false, false); + //script->set_constant("SI_ANTIMAGIC", SI_ANTIMAGIC, false, false); + script->set_constant("SI_CRITICALWOUND", SI_CRITICALWOUND, false, false); + //script->set_constant("SI_NPC_DEFENDER", SI_NPC_DEFENDER, false, false); + //script->set_constant("SI_NOACTION_WAIT", SI_NOACTION_WAIT, false, false); + script->set_constant("SI_MOVHASTE_HORSE", SI_MOVHASTE_HORSE, false, false); + script->set_constant("SI_PROTECT_DEF", SI_PROTECT_DEF, false, false); + script->set_constant("SI_PROTECT_MDEF", SI_PROTECT_MDEF, false, false); + script->set_constant("SI_HEALPLUS", SI_HEALPLUS, false, false); + script->set_constant("SI_S_LIFEPOTION", SI_S_LIFEPOTION, false, false); + script->set_constant("SI_L_LIFEPOTION", SI_L_LIFEPOTION, false, false); + script->set_constant("SI_CRITICALPERCENT", SI_CRITICALPERCENT, false, false); + script->set_constant("SI_PLUSAVOIDVALUE", SI_PLUSAVOIDVALUE, false, false); + script->set_constant("SI_ATKER_ASPD", SI_ATKER_ASPD, false, false); + script->set_constant("SI_TARGET_ASPD", SI_TARGET_ASPD, false, false); + script->set_constant("SI_ATKER_MOVESPEED", SI_ATKER_MOVESPEED, false, false); + + script->set_constant("SI_ATKER_BLOOD", SI_ATKER_BLOOD, false, false); + script->set_constant("SI_TARGET_BLOOD", SI_TARGET_BLOOD, false, false); + script->set_constant("SI_ARMOR_PROPERTY", SI_ARMOR_PROPERTY, false, false); + //script->set_constant("SI_REUSE_LIMIT_A", SI_REUSE_LIMIT_A, false, false); + script->set_constant("SI_HELLPOWER", SI_HELLPOWER, false, false); + script->set_constant("SI_STEAMPACK", SI_STEAMPACK, false, false); + //script->set_constant("SI_REUSE_LIMIT_B", SI_REUSE_LIMIT_B, false, false); + //script->set_constant("SI_REUSE_LIMIT_C", SI_REUSE_LIMIT_C, false, false); + //script->set_constant("SI_REUSE_LIMIT_D", SI_REUSE_LIMIT_D, false, false); + //script->set_constant("SI_REUSE_LIMIT_E", SI_REUSE_LIMIT_E, false, false); + //script->set_constant("SI_REUSE_LIMIT_F", SI_REUSE_LIMIT_F, false, false); + script->set_constant("SI_INVINCIBLE", SI_INVINCIBLE, false, false); + script->set_constant("SI_CASH_PLUSONLYJOBEXP", SI_CASH_PLUSONLYJOBEXP, false, false); + script->set_constant("SI_PARTYFLEE", SI_PARTYFLEE, false, false); + script->set_constant("SI_ANGEL_PROTECT", SI_ANGEL_PROTECT, false, false); + //script->set_constant("SI_ENDURE_MDEF", SI_ENDURE_MDEF, false, false); + script->set_constant("SI_ENCHANTBLADE", SI_ENCHANTBLADE, false, false); + script->set_constant("SI_DEATHBOUND", SI_DEATHBOUND, false, false); + script->set_constant("SI_REFRESH", SI_REFRESH, false, false); + script->set_constant("SI_GIANTGROWTH", SI_GIANTGROWTH, false, false); + script->set_constant("SI_STONEHARDSKIN", SI_STONEHARDSKIN, false, false); + script->set_constant("SI_VITALITYACTIVATION", SI_VITALITYACTIVATION, false, false); + script->set_constant("SI_FIGHTINGSPIRIT", SI_FIGHTINGSPIRIT, false, false); + script->set_constant("SI_ABUNDANCE", SI_ABUNDANCE, false, false); + script->set_constant("SI_REUSE_MILLENNIUMSHIELD", SI_REUSE_MILLENNIUMSHIELD, false, false); + script->set_constant("SI_REUSE_CRUSHSTRIKE", SI_REUSE_CRUSHSTRIKE, false, false); + script->set_constant("SI_REUSE_REFRESH", SI_REUSE_REFRESH, false, false); + script->set_constant("SI_REUSE_STORMBLAST", SI_REUSE_STORMBLAST, false, false); + script->set_constant("SI_VENOMIMPRESS", SI_VENOMIMPRESS, false, false); + script->set_constant("SI_EPICLESIS", SI_EPICLESIS, false, false); + script->set_constant("SI_ORATIO", SI_ORATIO, false, false); + script->set_constant("SI_LAUDAAGNUS", SI_LAUDAAGNUS, false, false); + script->set_constant("SI_LAUDARAMUS", SI_LAUDARAMUS, false, false); + script->set_constant("SI_CLOAKINGEXCEED", SI_CLOAKINGEXCEED, false, false); + script->set_constant("SI_HALLUCINATIONWALK", SI_HALLUCINATIONWALK, false, false); + script->set_constant("SI_HALLUCINATIONWALK_POSTDELAY", SI_HALLUCINATIONWALK_POSTDELAY, false, false); + script->set_constant("SI_RENOVATIO", SI_RENOVATIO, false, false); + script->set_constant("SI_WEAPONBLOCKING", SI_WEAPONBLOCKING, false, false); + script->set_constant("SI_WEAPONBLOCKING_POSTDELAY", SI_WEAPONBLOCKING_POSTDELAY, false, false); + script->set_constant("SI_ROLLINGCUTTER", SI_ROLLINGCUTTER, false, false); + script->set_constant("SI_EXPIATIO", SI_EXPIATIO, false, false); + script->set_constant("SI_POISONINGWEAPON", SI_POISONINGWEAPON, false, false); + script->set_constant("SI_TOXIN", SI_TOXIN, false, false); + script->set_constant("SI_PARALYSE", SI_PARALYSE, false, false); + script->set_constant("SI_VENOMBLEED", SI_VENOMBLEED, false, false); + script->set_constant("SI_MAGICMUSHROOM", SI_MAGICMUSHROOM, false, false); + script->set_constant("SI_DEATHHURT", SI_DEATHHURT, false, false); + script->set_constant("SI_PYREXIA", SI_PYREXIA, false, false); + script->set_constant("SI_OBLIVIONCURSE", SI_OBLIVIONCURSE, false, false); + script->set_constant("SI_LEECHESEND", SI_LEECHESEND, false, false); + + script->set_constant("SI_DUPLELIGHT", SI_DUPLELIGHT, false, false); + script->set_constant("SI_FROSTMISTY", SI_FROSTMISTY, false, false); + script->set_constant("SI_FEARBREEZE", SI_FEARBREEZE, false, false); + script->set_constant("SI_ELECTRICSHOCKER", SI_ELECTRICSHOCKER, false, false); + script->set_constant("SI_MARSHOFABYSS", SI_MARSHOFABYSS, false, false); + script->set_constant("SI_RECOGNIZEDSPELL", SI_RECOGNIZEDSPELL, false, false); + script->set_constant("SI_STASIS", SI_STASIS, false, false); + script->set_constant("SI_WUGRIDER", SI_WUGRIDER, false, false); + script->set_constant("SI_WUGDASH", SI_WUGDASH, false, false); + script->set_constant("SI_WUGBITE", SI_WUGBITE, false, false); + script->set_constant("SI_CAMOUFLAGE", SI_CAMOUFLAGE, false, false); + script->set_constant("SI_ACCELERATION", SI_ACCELERATION, false, false); + script->set_constant("SI_HOVERING", SI_HOVERING, false, false); + script->set_constant("SI_SPHERE_1", SI_SPHERE_1, false, false); + script->set_constant("SI_SPHERE_2", SI_SPHERE_2, false, false); + script->set_constant("SI_SPHERE_3", SI_SPHERE_3, false, false); + script->set_constant("SI_SPHERE_4", SI_SPHERE_4, false, false); + script->set_constant("SI_SPHERE_5", SI_SPHERE_5, false, false); + script->set_constant("SI_MVPCARD_TAOGUNKA", SI_MVPCARD_TAOGUNKA, false, false); + script->set_constant("SI_MVPCARD_MISTRESS", SI_MVPCARD_MISTRESS, false, false); + script->set_constant("SI_MVPCARD_ORCHERO", SI_MVPCARD_ORCHERO, false, false); + script->set_constant("SI_MVPCARD_ORCLORD", SI_MVPCARD_ORCLORD, false, false); + script->set_constant("SI_OVERHEAT_LIMITPOINT", SI_OVERHEAT_LIMITPOINT, false, false); + script->set_constant("SI_OVERHEAT", SI_OVERHEAT, false, false); + script->set_constant("SI_SHAPESHIFT", SI_SHAPESHIFT, false, false); + script->set_constant("SI_INFRAREDSCAN", SI_INFRAREDSCAN, false, false); + script->set_constant("SI_MAGNETICFIELD", SI_MAGNETICFIELD, false, false); + script->set_constant("SI_NEUTRALBARRIER", SI_NEUTRALBARRIER, false, false); + script->set_constant("SI_NEUTRALBARRIER_MASTER", SI_NEUTRALBARRIER_MASTER, false, false); + script->set_constant("SI_STEALTHFIELD", SI_STEALTHFIELD, false, false); + script->set_constant("SI_STEALTHFIELD_MASTER", SI_STEALTHFIELD_MASTER, false, false); + script->set_constant("SI_MANU_ATK", SI_MANU_ATK, false, false); + script->set_constant("SI_MANU_DEF", SI_MANU_DEF, false, false); + script->set_constant("SI_SPL_ATK", SI_SPL_ATK, false, false); + script->set_constant("SI_SPL_DEF", SI_SPL_DEF, false, false); + script->set_constant("SI_REPRODUCE", SI_REPRODUCE, false, false); + script->set_constant("SI_MANU_MATK", SI_MANU_MATK, false, false); + script->set_constant("SI_SPL_MATK", SI_SPL_MATK, false, false); + script->set_constant("SI_STR_SCROLL", SI_STR_SCROLL, false, false); + script->set_constant("SI_INT_SCROLL", SI_INT_SCROLL, false, false); + script->set_constant("SI_LG_REFLECTDAMAGE", SI_LG_REFLECTDAMAGE, false, false); + script->set_constant("SI_FORCEOFVANGUARD", SI_FORCEOFVANGUARD, false, false); + script->set_constant("SI_BUCHEDENOEL", SI_BUCHEDENOEL, false, false); + script->set_constant("SI_AUTOSHADOWSPELL", SI_AUTOSHADOWSPELL, false, false); + script->set_constant("SI_SHADOWFORM", SI_SHADOWFORM, false, false); + script->set_constant("SI_RAID", SI_RAID, false, false); + script->set_constant("SI_SHIELDSPELL_DEF", SI_SHIELDSPELL_DEF, false, false); + script->set_constant("SI_SHIELDSPELL_MDEF", SI_SHIELDSPELL_MDEF, false, false); + script->set_constant("SI_SHIELDSPELL_REF", SI_SHIELDSPELL_REF, false, false); + script->set_constant("SI_BODYPAINT", SI_BODYPAINT, false, false); + + script->set_constant("SI_EXEEDBREAK", SI_EXEEDBREAK, false, false); + script->set_constant("SI_ADORAMUS", SI_ADORAMUS, false, false); + script->set_constant("SI_PRESTIGE", SI_PRESTIGE, false, false); + script->set_constant("SI_INVISIBILITY", SI_INVISIBILITY, false, false); + script->set_constant("SI_DEADLYINFECT", SI_DEADLYINFECT, false, false); + script->set_constant("SI_BANDING", SI_BANDING, false, false); + script->set_constant("SI_EARTHDRIVE", SI_EARTHDRIVE, false, false); + script->set_constant("SI_INSPIRATION", SI_INSPIRATION, false, false); + script->set_constant("SI_ENERVATION", SI_ENERVATION, false, false); + script->set_constant("SI_GROOMY", SI_GROOMY, false, false); + script->set_constant("SI_RAISINGDRAGON", SI_RAISINGDRAGON, false, false); + script->set_constant("SI_IGNORANCE", SI_IGNORANCE, false, false); + script->set_constant("SI_LAZINESS", SI_LAZINESS, false, false); + script->set_constant("SI_LIGHTNINGWALK", SI_LIGHTNINGWALK, false, false); + script->set_constant("SI_ACARAJE", SI_ACARAJE, false, false); + script->set_constant("SI_UNLUCKY", SI_UNLUCKY, false, false); + script->set_constant("SI_CURSEDCIRCLE_ATKER", SI_CURSEDCIRCLE_ATKER, false, false); + script->set_constant("SI_CURSEDCIRCLE_TARGET", SI_CURSEDCIRCLE_TARGET, false, false); + script->set_constant("SI_WEAKNESS", SI_WEAKNESS, false, false); + script->set_constant("SI_CRESCENTELBOW", SI_CRESCENTELBOW, false, false); + script->set_constant("SI_NOEQUIPACCESSARY", SI_NOEQUIPACCESSARY, false, false); + script->set_constant("SI_STRIPACCESSARY", SI_STRIPACCESSARY, false, false); + script->set_constant("SI_MANHOLE", SI_MANHOLE, false, false); + script->set_constant("SI_POPECOOKIE", SI_POPECOOKIE, false, false); + script->set_constant("SI_FALLENEMPIRE", SI_FALLENEMPIRE, false, false); + script->set_constant("SI_GENTLETOUCH_ENERGYGAIN", SI_GENTLETOUCH_ENERGYGAIN, false, false); + script->set_constant("SI_GENTLETOUCH_CHANGE", SI_GENTLETOUCH_CHANGE, false, false); + script->set_constant("SI_GENTLETOUCH_REVITALIZE", SI_GENTLETOUCH_REVITALIZE, false, false); + script->set_constant("SI_BLOODYLUST", SI_BLOODYLUST, false, false); + script->set_constant("SI_SWINGDANCE", SI_SWINGDANCE, false, false); + script->set_constant("SI_SYMPHONYOFLOVERS", SI_SYMPHONYOFLOVERS, false, false); + script->set_constant("SI_PROPERTYWALK", SI_PROPERTYWALK, false, false); + script->set_constant("SI_SPELLFIST", SI_SPELLFIST, false, false); + script->set_constant("SI_NETHERWORLD", SI_NETHERWORLD, false, false); + script->set_constant("SI_SIREN", SI_SIREN, false, false); + script->set_constant("SI_DEEPSLEEP", SI_DEEPSLEEP, false, false); + script->set_constant("SI_SIRCLEOFNATURE", SI_SIRCLEOFNATURE, false, false); + script->set_constant("SI_COLD", SI_COLD, false, false); + script->set_constant("SI_GLOOMYDAY", SI_GLOOMYDAY, false, false); + script->set_constant("SI_SONG_OF_MANA", SI_SONG_OF_MANA, false, false); + script->set_constant("SI_CLOUDKILL", SI_CLOUDKILL, false, false); + script->set_constant("SI_DANCEWITHWUG", SI_DANCEWITHWUG, false, false); + script->set_constant("SI_RUSHWINDMILL", SI_RUSHWINDMILL, false, false); + script->set_constant("SI_ECHOSONG", SI_ECHOSONG, false, false); + script->set_constant("SI_HARMONIZE", SI_HARMONIZE, false, false); + script->set_constant("SI_STRIKING", SI_STRIKING, false, false); + //script->set_constant("SI_WARMER", SI_WARMER, false, false); + script->set_constant("SI_MOONLITSERENADE", SI_MOONLITSERENADE, false, false); + script->set_constant("SI_SATURDAYNIGHTFEVER", SI_SATURDAYNIGHTFEVER, false, false); + script->set_constant("SI_SITDOWN_FORCE", SI_SITDOWN_FORCE, false, false); + + script->set_constant("SI_ANALYZE", SI_ANALYZE, false, false); + script->set_constant("SI_LERADSDEW", SI_LERADSDEW, false, false); + script->set_constant("SI_MELODYOFSINK", SI_MELODYOFSINK, false, false); + script->set_constant("SI_WARCRYOFBEYOND", SI_WARCRYOFBEYOND, false, false); + script->set_constant("SI_UNLIMITEDHUMMINGVOICE", SI_UNLIMITEDHUMMINGVOICE, false, false); + script->set_constant("SI_SPELLBOOK1", SI_SPELLBOOK1, false, false); + script->set_constant("SI_SPELLBOOK2", SI_SPELLBOOK2, false, false); + script->set_constant("SI_SPELLBOOK3", SI_SPELLBOOK3, false, false); + script->set_constant("SI_FREEZE_SP", SI_FREEZE_SP, false, false); + script->set_constant("SI_GN_TRAINING_SWORD", SI_GN_TRAINING_SWORD, false, false); + script->set_constant("SI_GN_REMODELING_CART", SI_GN_REMODELING_CART, false, false); + script->set_constant("SI_CARTSBOOST", SI_CARTSBOOST, false, false); + script->set_constant("SI_FIXEDCASTINGTM_REDUCE", SI_FIXEDCASTINGTM_REDUCE, false, false); + script->set_constant("SI_THORNTRAP", SI_THORNTRAP, false, false); + script->set_constant("SI_BLOODSUCKER", SI_BLOODSUCKER, false, false); + script->set_constant("SI_SPORE_EXPLOSION", SI_SPORE_EXPLOSION, false, false); + script->set_constant("SI_DEMONIC_FIRE", SI_DEMONIC_FIRE, false, false); + script->set_constant("SI_FIRE_EXPANSION_SMOKE_POWDER", SI_FIRE_EXPANSION_SMOKE_POWDER, false, false); + script->set_constant("SI_FIRE_EXPANSION_TEAR_GAS", SI_FIRE_EXPANSION_TEAR_GAS, false, false); + script->set_constant("SI_BLOCKING_PLAY", SI_BLOCKING_PLAY, false, false); + script->set_constant("SI_MANDRAGORA", SI_MANDRAGORA, false, false); + script->set_constant("SI_ACTIVATE", SI_ACTIVATE, false, false); + script->set_constant("SI_SECRAMENT", SI_SECRAMENT, false, false); + script->set_constant("SI_ASSUMPTIO2", SI_ASSUMPTIO2, false, false); + script->set_constant("SI_TK_SEVENWIND", SI_TK_SEVENWIND, false, false); + script->set_constant("SI_LIMIT_ODINS_RECALL", SI_LIMIT_ODINS_RECALL, false, false); + script->set_constant("SI_STOMACHACHE", SI_STOMACHACHE, false, false); + script->set_constant("SI_MYSTERIOUS_POWDER", SI_MYSTERIOUS_POWDER, false, false); + script->set_constant("SI_MELON_BOMB", SI_MELON_BOMB, false, false); + script->set_constant("SI_BANANA_BOMB_SITDOWN_POSTDELAY", SI_BANANA_BOMB_SITDOWN_POSTDELAY, false, false); + script->set_constant("SI_PROMOTE_HEALTH_RESERCH", SI_PROMOTE_HEALTH_RESERCH, false, false); + script->set_constant("SI_ENERGY_DRINK_RESERCH", SI_ENERGY_DRINK_RESERCH, false, false); + script->set_constant("SI_EXTRACT_WHITE_POTION_Z", SI_EXTRACT_WHITE_POTION_Z, false, false); + script->set_constant("SI_VITATA_500", SI_VITATA_500, false, false); + script->set_constant("SI_EXTRACT_SALAMINE_JUICE", SI_EXTRACT_SALAMINE_JUICE, false, false); + script->set_constant("SI_BOOST500", SI_BOOST500, false, false); + script->set_constant("SI_FULL_SWING_K", SI_FULL_SWING_K, false, false); + script->set_constant("SI_MANA_PLUS", SI_MANA_PLUS, false, false); + script->set_constant("SI_MUSTLE_M", SI_MUSTLE_M, false, false); + script->set_constant("SI_LIFE_FORCE_F", SI_LIFE_FORCE_F, false, false); + script->set_constant("SI_VACUUM_EXTREME", SI_VACUUM_EXTREME, false, false); + script->set_constant("SI_SAVAGE_STEAK", SI_SAVAGE_STEAK, false, false); + script->set_constant("SI_COCKTAIL_WARG_BLOOD", SI_COCKTAIL_WARG_BLOOD, false, false); + script->set_constant("SI_MINOR_BBQ", SI_MINOR_BBQ, false, false); + script->set_constant("SI_SIROMA_ICE_TEA", SI_SIROMA_ICE_TEA, false, false); + script->set_constant("SI_DROCERA_HERB_STEAMED", SI_DROCERA_HERB_STEAMED, false, false); + script->set_constant("SI_PUTTI_TAILS_NOODLES", SI_PUTTI_TAILS_NOODLES, false, false); + script->set_constant("SI_BANANA_BOMB", SI_BANANA_BOMB, false, false); + script->set_constant("SI_SUMMON_AGNI", SI_SUMMON_AGNI, false, false); + script->set_constant("SI_SPELLBOOK4", SI_SPELLBOOK4, false, false); + + script->set_constant("SI_SPELLBOOK5", SI_SPELLBOOK5, false, false); + script->set_constant("SI_SPELLBOOK6", SI_SPELLBOOK6, false, false); + script->set_constant("SI_SPELLBOOK7", SI_SPELLBOOK7, false, false); + script->set_constant("SI_ELEMENTAL_AGGRESSIVE", SI_ELEMENTAL_AGGRESSIVE, false, false); + script->set_constant("SI_RETURN_TO_ELDICASTES", SI_RETURN_TO_ELDICASTES, false, false); + script->set_constant("SI_BANDING_DEFENCE", SI_BANDING_DEFENCE, false, false); + script->set_constant("SI_SKELSCROLL", SI_SKELSCROLL, false, false); + script->set_constant("SI_DISTRUCTIONSCROLL", SI_DISTRUCTIONSCROLL, false, false); + script->set_constant("SI_ROYALSCROLL", SI_ROYALSCROLL, false, false); + script->set_constant("SI_IMMUNITYSCROLL", SI_IMMUNITYSCROLL, false, false); + script->set_constant("SI_MYSTICSCROLL", SI_MYSTICSCROLL, false, false); + script->set_constant("SI_BATTLESCROLL", SI_BATTLESCROLL, false, false); + script->set_constant("SI_ARMORSCROLL", SI_ARMORSCROLL, false, false); + script->set_constant("SI_FREYJASCROLL", SI_FREYJASCROLL, false, false); + script->set_constant("SI_SOULSCROLL", SI_SOULSCROLL, false, false); + script->set_constant("SI_CIRCLE_OF_FIRE", SI_CIRCLE_OF_FIRE, false, false); + script->set_constant("SI_CIRCLE_OF_FIRE_OPTION", SI_CIRCLE_OF_FIRE_OPTION, false, false); + script->set_constant("SI_FIRE_CLOAK", SI_FIRE_CLOAK, false, false); + script->set_constant("SI_FIRE_CLOAK_OPTION", SI_FIRE_CLOAK_OPTION, false, false); + script->set_constant("SI_WATER_SCREEN", SI_WATER_SCREEN, false, false); + script->set_constant("SI_WATER_SCREEN_OPTION", SI_WATER_SCREEN_OPTION, false, false); + script->set_constant("SI_WATER_DROP", SI_WATER_DROP, false, false); + script->set_constant("SI_WATER_DROP_OPTION", SI_WATER_DROP_OPTION, false, false); + script->set_constant("SI_WIND_STEP", SI_WIND_STEP, false, false); + script->set_constant("SI_WIND_STEP_OPTION", SI_WIND_STEP_OPTION, false, false); + script->set_constant("SI_WIND_CURTAIN", SI_WIND_CURTAIN, false, false); + script->set_constant("SI_WIND_CURTAIN_OPTION", SI_WIND_CURTAIN_OPTION, false, false); + script->set_constant("SI_WATER_BARRIER", SI_WATER_BARRIER, false, false); + script->set_constant("SI_ZEPHYR", SI_ZEPHYR, false, false); + script->set_constant("SI_SOLID_SKIN", SI_SOLID_SKIN, false, false); + script->set_constant("SI_SOLID_SKIN_OPTION", SI_SOLID_SKIN_OPTION, false, false); + script->set_constant("SI_STONE_SHIELD", SI_STONE_SHIELD, false, false); + script->set_constant("SI_STONE_SHIELD_OPTION", SI_STONE_SHIELD_OPTION, false, false); + script->set_constant("SI_POWER_OF_GAIA", SI_POWER_OF_GAIA, false, false); + //script->set_constant("SI_EL_WAIT", SI_EL_WAIT, false, false); + //script->set_constant("SI_EL_PASSIVE", SI_EL_PASSIVE, false, false); + //script->set_constant("SI_EL_DEFENSIVE", SI_EL_DEFENSIVE, false, false); + //script->set_constant("SI_EL_OFFENSIVE", SI_EL_OFFENSIVE, false, false); + //script->set_constant("SI_EL_COST", SI_EL_COST, false, false); + script->set_constant("SI_PYROTECHNIC", SI_PYROTECHNIC, false, false); + script->set_constant("SI_PYROTECHNIC_OPTION", SI_PYROTECHNIC_OPTION, false, false); + script->set_constant("SI_HEATER", SI_HEATER, false, false); + script->set_constant("SI_HEATER_OPTION", SI_HEATER_OPTION, false, false); + script->set_constant("SI_TROPIC", SI_TROPIC, false, false); + script->set_constant("SI_TROPIC_OPTION", SI_TROPIC_OPTION, false, false); + script->set_constant("SI_AQUAPLAY", SI_AQUAPLAY, false, false); + script->set_constant("SI_AQUAPLAY_OPTION", SI_AQUAPLAY_OPTION, false, false); + script->set_constant("SI_COOLER", SI_COOLER, false, false); + script->set_constant("SI_COOLER_OPTION", SI_COOLER_OPTION, false, false); + script->set_constant("SI_CHILLY_AIR", SI_CHILLY_AIR, false, false); + + script->set_constant("SI_CHILLY_AIR_OPTION", SI_CHILLY_AIR_OPTION, false, false); + script->set_constant("SI_GUST", SI_GUST, false, false); + script->set_constant("SI_GUST_OPTION", SI_GUST_OPTION, false, false); + script->set_constant("SI_BLAST", SI_BLAST, false, false); + script->set_constant("SI_BLAST_OPTION", SI_BLAST_OPTION, false, false); + script->set_constant("SI_WILD_STORM", SI_WILD_STORM, false, false); + script->set_constant("SI_WILD_STORM_OPTION", SI_WILD_STORM_OPTION, false, false); + script->set_constant("SI_PETROLOGY", SI_PETROLOGY, false, false); + script->set_constant("SI_PETROLOGY_OPTION", SI_PETROLOGY_OPTION, false, false); + script->set_constant("SI_CURSED_SOIL", SI_CURSED_SOIL, false, false); + script->set_constant("SI_CURSED_SOIL_OPTION", SI_CURSED_SOIL_OPTION, false, false); + script->set_constant("SI_UPHEAVAL", SI_UPHEAVAL, false, false); + script->set_constant("SI_UPHEAVAL_OPTION", SI_UPHEAVAL_OPTION, false, false); + script->set_constant("SI_TIDAL_WEAPON", SI_TIDAL_WEAPON, false, false); + script->set_constant("SI_TIDAL_WEAPON_OPTION", SI_TIDAL_WEAPON_OPTION, false, false); + script->set_constant("SI_ROCK_CRUSHER", SI_ROCK_CRUSHER, false, false); + script->set_constant("SI_ROCK_CRUSHER_ATK", SI_ROCK_CRUSHER_ATK, false, false); + script->set_constant("SI_FIRE_INSIGNIA", SI_FIRE_INSIGNIA, false, false); + script->set_constant("SI_WATER_INSIGNIA", SI_WATER_INSIGNIA, false, false); + script->set_constant("SI_WIND_INSIGNIA", SI_WIND_INSIGNIA, false, false); + script->set_constant("SI_EARTH_INSIGNIA", SI_EARTH_INSIGNIA, false, false); + script->set_constant("SI_EQUIPED_FLOOR", SI_EQUIPED_FLOOR, false, false); + script->set_constant("SI_GUARDIAN_RECALL", SI_GUARDIAN_RECALL, false, false); + script->set_constant("SI_MORA_BUFF", SI_MORA_BUFF, false, false); + script->set_constant("SI_REUSE_LIMIT_G", SI_REUSE_LIMIT_G, false, false); + script->set_constant("SI_REUSE_LIMIT_H", SI_REUSE_LIMIT_H, false, false); + script->set_constant("SI_NEEDLE_OF_PARALYZE", SI_NEEDLE_OF_PARALYZE, false, false); + script->set_constant("SI_PAIN_KILLER", SI_PAIN_KILLER, false, false); + script->set_constant("SI_G_LIFEPOTION", SI_G_LIFEPOTION, false, false); + script->set_constant("SI_VITALIZE_POTION", SI_VITALIZE_POTION, false, false); + script->set_constant("SI_LIGHT_OF_REGENE", SI_LIGHT_OF_REGENE, false, false); + script->set_constant("SI_OVERED_BOOST", SI_OVERED_BOOST, false, false); + script->set_constant("SI_SILENT_BREEZE", SI_SILENT_BREEZE, false, false); + script->set_constant("SI_ODINS_POWER", SI_ODINS_POWER, false, false); + script->set_constant("SI_STYLE_CHANGE", SI_STYLE_CHANGE, false, false); + script->set_constant("SI_SONIC_CLAW_POSTDELAY", SI_SONIC_CLAW_POSTDELAY, false, false); + // 586 + // 587 + // 588 + // 589 + // 590 + // 591 + // 592 + // 593 + // 594 + // 595 + script->set_constant("SI_SILVERVEIN_RUSH_POSTDELAY", SI_SILVERVEIN_RUSH_POSTDELAY, false, false); + script->set_constant("SI_MIDNIGHT_FRENZY_POSTDELAY", SI_MIDNIGHT_FRENZY_POSTDELAY, false, false); + script->set_constant("SI_GOLDENE_FERSE", SI_GOLDENE_FERSE, false, false); + script->set_constant("SI_ANGRIFFS_MODUS", SI_ANGRIFFS_MODUS, false, false); + + script->set_constant("SI_TINDER_BREAKER", SI_TINDER_BREAKER, false, false); + script->set_constant("SI_TINDER_BREAKER_POSTDELAY", SI_TINDER_BREAKER_POSTDELAY, false, false); + script->set_constant("SI_CBC", SI_CBC, false, false); + script->set_constant("SI_CBC_POSTDELAY", SI_CBC_POSTDELAY, false, false); + script->set_constant("SI_EQC", SI_EQC, false, false); + script->set_constant("SI_MAGMA_FLOW", SI_MAGMA_FLOW, false, false); + script->set_constant("SI_GRANITIC_ARMOR", SI_GRANITIC_ARMOR, false, false); + script->set_constant("SI_PYROCLASTIC", SI_PYROCLASTIC, false, false); + script->set_constant("SI_VOLCANIC_ASH", SI_VOLCANIC_ASH, false, false); + script->set_constant("SI_SPIRITS_SAVEINFO1", SI_SPIRITS_SAVEINFO1, false, false); + script->set_constant("SI_SPIRITS_SAVEINFO2", SI_SPIRITS_SAVEINFO2, false, false); + script->set_constant("SI_MAGIC_CANDY", SI_MAGIC_CANDY, false, false); + script->set_constant("SI_SEARCH_STORE_INFO", SI_SEARCH_STORE_INFO, false, false); + script->set_constant("SI_ALL_RIDING", SI_ALL_RIDING, false, false); + script->set_constant("SI_ALL_RIDING_REUSE_LIMIT", SI_ALL_RIDING_REUSE_LIMIT, false, false); + script->set_constant("SI_MACRO", SI_MACRO, false, false); + script->set_constant("SI_MACRO_POSTDELAY", SI_MACRO_POSTDELAY, false, false); + script->set_constant("SI_BEER_BOTTLE_CAP", SI_BEER_BOTTLE_CAP, false, false); + script->set_constant("SI_OVERLAPEXPUP", SI_OVERLAPEXPUP, false, false); + script->set_constant("SI_PC_IZ_DUN05", SI_PC_IZ_DUN05, false, false); + script->set_constant("SI_CRUSHSTRIKE", SI_CRUSHSTRIKE, false, false); + script->set_constant("SI_MONSTER_TRANSFORM", SI_MONSTER_TRANSFORM, false, false); + script->set_constant("SI_SIT", SI_SIT, false, false); + script->set_constant("SI_ONAIR", SI_ONAIR, false, false); + script->set_constant("SI_MTF_ASPD", SI_MTF_ASPD, false, false); + script->set_constant("SI_MTF_RANGEATK", SI_MTF_RANGEATK, false, false); + script->set_constant("SI_MTF_MATK", SI_MTF_MATK, false, false); + script->set_constant("SI_MTF_MLEATKED", SI_MTF_MLEATKED, false, false); + script->set_constant("SI_MTF_CRIDAMAGE", SI_MTF_CRIDAMAGE, false, false); + script->set_constant("SI_REUSE_LIMIT_MTF", SI_REUSE_LIMIT_MTF, false, false); + script->set_constant("SI_MACRO_PERMIT", SI_MACRO_PERMIT, false, false); + script->set_constant("SI_MACRO_PLAY", SI_MACRO_PLAY, false, false); + script->set_constant("SI_SKF_CAST", SI_SKF_CAST, false, false); + script->set_constant("SI_SKF_ASPD", SI_SKF_ASPD, false, false); + script->set_constant("SI_SKF_ATK", SI_SKF_ATK, false, false); + script->set_constant("SI_SKF_MATK", SI_SKF_MATK, false, false); + script->set_constant("SI_REWARD_PLUSONLYJOBEXP", SI_REWARD_PLUSONLYJOBEXP, false, false); + script->set_constant("SI_HANDICAPSTATE_NORECOVER", SI_HANDICAPSTATE_NORECOVER, false, false); + script->set_constant("SI_SET_NUM_DEF", SI_SET_NUM_DEF, false, false); + script->set_constant("SI_SET_NUM_MDEF", SI_SET_NUM_MDEF, false, false); + script->set_constant("SI_SET_PER_DEF", SI_SET_PER_DEF, false, false); + script->set_constant("SI_SET_PER_MDEF", SI_SET_PER_MDEF, false, false); + script->set_constant("SI_PARTYBOOKING_SEARCH_DEALY", SI_PARTYBOOKING_SEARCH_DEALY, false, false); + script->set_constant("SI_PARTYBOOKING_REGISTER_DEALY", SI_PARTYBOOKING_REGISTER_DEALY, false, false); + script->set_constant("SI_PERIOD_TIME_CHECK_DETECT_SKILL", SI_PERIOD_TIME_CHECK_DETECT_SKILL, false, false); + script->set_constant("SI_KO_JYUMONJIKIRI", SI_KO_JYUMONJIKIRI, false, false); + script->set_constant("SI_MEIKYOUSISUI", SI_MEIKYOUSISUI, false, false); + script->set_constant("SI_ATTHASTE_CASH", SI_ATTHASTE_CASH, false, false); + script->set_constant("SI_EQUIPPED_DIVINE_ARMOR", SI_EQUIPPED_DIVINE_ARMOR, false, false); + script->set_constant("SI_EQUIPPED_HOLY_ARMOR", SI_EQUIPPED_HOLY_ARMOR, false, false); + + script->set_constant("SI_2011RWC", SI_2011RWC, false, false); + script->set_constant("SI_KYOUGAKU", SI_KYOUGAKU, false, false); + script->set_constant("SI_IZAYOI", SI_IZAYOI, false, false); + script->set_constant("SI_ZENKAI", SI_ZENKAI, false, false); + script->set_constant("SI_KG_KAGEHUMI", SI_KG_KAGEHUMI, false, false); + script->set_constant("SI_KYOMU", SI_KYOMU, false, false); + script->set_constant("SI_KAGEMUSYA", SI_KAGEMUSYA, false, false); + script->set_constant("SI_ZANGETSU", SI_ZANGETSU, false, false); + script->set_constant("SI_PHI_DEMON", SI_PHI_DEMON, false, false); + script->set_constant("SI_GENSOU", SI_GENSOU, false, false); + script->set_constant("SI_AKAITSUKI", SI_AKAITSUKI, false, false); + script->set_constant("SI_TETANY", SI_TETANY, false, false); + script->set_constant("SI_GM_BATTLE", SI_GM_BATTLE, false, false); + script->set_constant("SI_GM_BATTLE2", SI_GM_BATTLE2, false, false); + script->set_constant("SI_2011RWC_SCROLL", SI_2011RWC_SCROLL, false, false); + script->set_constant("SI_ACTIVE_MONSTER_TRANSFORM", SI_ACTIVE_MONSTER_TRANSFORM, false, false); + script->set_constant("SI_MYSTICPOWDER", SI_MYSTICPOWDER, false, false); + script->set_constant("SI_ECLAGE_RECALL", SI_ECLAGE_RECALL, false, false); + script->set_constant("SI_ENTRY_QUEUE_APPLY_DELAY", SI_ENTRY_QUEUE_APPLY_DELAY, false, false); + script->set_constant("SI_REUSE_LIMIT_ECL", SI_REUSE_LIMIT_ECL, false, false); + script->set_constant("SI_M_LIFEPOTION", SI_M_LIFEPOTION, false, false); + script->set_constant("SI_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT", SI_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT, false, false); + script->set_constant("SI_UNKNOWN_NAME", SI_UNKNOWN_NAME, false, false); + script->set_constant("SI_ON_PUSH_CART", SI_ON_PUSH_CART, false, false); + script->set_constant("SI_HAT_EFFECT", SI_HAT_EFFECT, false, false); + script->set_constant("SI_FLOWER_LEAF", SI_FLOWER_LEAF, false, false); + script->set_constant("SI_RAY_OF_PROTECTION", SI_RAY_OF_PROTECTION, false, false); + script->set_constant("SI_GLASTHEIM_ATK", SI_GLASTHEIM_ATK, false, false); + script->set_constant("SI_GLASTHEIM_DEF", SI_GLASTHEIM_DEF, false, false); + script->set_constant("SI_GLASTHEIM_HEAL", SI_GLASTHEIM_HEAL, false, false); + script->set_constant("SI_GLASTHEIM_HIDDEN", SI_GLASTHEIM_HIDDEN, false, false); + script->set_constant("SI_GLASTHEIM_STATE", SI_GLASTHEIM_STATE, false, false); + script->set_constant("SI_GLASTHEIM_ITEMDEF", SI_GLASTHEIM_ITEMDEF, false, false); + script->set_constant("SI_GLASTHEIM_HPSP", SI_GLASTHEIM_HPSP, false, false); + script->set_constant("SI_HOMUN_SKILL_POSTDELAY", SI_HOMUN_SKILL_POSTDELAY, false, false); + script->set_constant("SI_ALMIGHTY", SI_ALMIGHTY, false, false); + script->set_constant("SI_GVG_GIANT", SI_GVG_GIANT, false, false); + script->set_constant("SI_GVG_GOLEM", SI_GVG_GOLEM, false, false); + script->set_constant("SI_GVG_STUN", SI_GVG_STUN, false, false); + script->set_constant("SI_GVG_STONE", SI_GVG_STONE, false, false); + script->set_constant("SI_GVG_FREEZ", SI_GVG_FREEZ, false, false); + script->set_constant("SI_GVG_SLEEP", SI_GVG_SLEEP, false, false); + script->set_constant("SI_GVG_CURSE", SI_GVG_CURSE, false, false); + script->set_constant("SI_GVG_SILENCE", SI_GVG_SILENCE, false, false); + script->set_constant("SI_GVG_BLIND", SI_GVG_BLIND, false, false); + script->set_constant("SI_CLIENT_ONLY_EQUIP_ARROW", SI_CLIENT_ONLY_EQUIP_ARROW, false, false); + script->set_constant("SI_CLAN_INFO", SI_CLAN_INFO, false, false); + script->set_constant("SI_JP_EVENT01", SI_JP_EVENT01, false, false); + script->set_constant("SI_JP_EVENT02", SI_JP_EVENT02, false, false); + script->set_constant("SI_JP_EVENT03", SI_JP_EVENT03, false, false); + + script->set_constant("SI_JP_EVENT04", SI_JP_EVENT04, false, false); + script->set_constant("SI_TELEPORT_FIXEDCASTINGDELAY", SI_TELEPORT_FIXEDCASTINGDELAY, false, false); + script->set_constant("SI_GEFFEN_MAGIC1", SI_GEFFEN_MAGIC1, false, false); + script->set_constant("SI_GEFFEN_MAGIC2", SI_GEFFEN_MAGIC2, false, false); + script->set_constant("SI_GEFFEN_MAGIC3", SI_GEFFEN_MAGIC3, false, false); + script->set_constant("SI_QUEST_BUFF1", SI_QUEST_BUFF1, false, false); + script->set_constant("SI_QUEST_BUFF2", SI_QUEST_BUFF2, false, false); + script->set_constant("SI_QUEST_BUFF3", SI_QUEST_BUFF3, false, false); + script->set_constant("SI_REUSE_LIMIT_RECALL", SI_REUSE_LIMIT_RECALL, false, false); + script->set_constant("SI_SAVEPOSITION", SI_SAVEPOSITION, false, false); + script->set_constant("SI_HANDICAPSTATE_ICEEXPLO", SI_HANDICAPSTATE_ICEEXPLO, false, false); + script->set_constant("SI_FENRIR_CARD", SI_FENRIR_CARD, false, false); + script->set_constant("SI_REUSE_LIMIT_ASPD_POTION", SI_REUSE_LIMIT_ASPD_POTION, false, false); + script->set_constant("SI_MAXPAIN", SI_MAXPAIN, false, false); + script->set_constant("SI_PC_STOP", SI_PC_STOP, false, false); + script->set_constant("SI_FRIGG_SONG", SI_FRIGG_SONG, false, false); + script->set_constant("SI_OFFERTORIUM", SI_OFFERTORIUM, false, false); + script->set_constant("SI_TELEKINESIS_INTENSE", SI_TELEKINESIS_INTENSE, false, false); + script->set_constant("SI_MOONSTAR", SI_MOONSTAR, false, false); + script->set_constant("SI_STRANGELIGHTS", SI_STRANGELIGHTS, false, false); + script->set_constant("SI_FULL_THROTTLE", SI_FULL_THROTTLE, false, false); + script->set_constant("SI_REBOUND", SI_REBOUND, false, false); + script->set_constant("SI_UNLIMIT", SI_UNLIMIT, false, false); + script->set_constant("SI_KINGS_GRACE", SI_KINGS_GRACE, false, false); + script->set_constant("SI_ITEM_ATKMAX", SI_ITEM_ATKMAX, false, false); + script->set_constant("SI_ITEM_ATKMIN", SI_ITEM_ATKMIN, false, false); + script->set_constant("SI_ITEM_MATKMAX", SI_ITEM_MATKMAX, false, false); + script->set_constant("SI_ITEM_MATKMIN", SI_ITEM_MATKMIN, false, false); + script->set_constant("SI_SUPER_STAR", SI_SUPER_STAR, false, false); + script->set_constant("SI_HIGH_RANKER", SI_HIGH_RANKER, false, false); + script->set_constant("SI_DARKCROW", SI_DARKCROW, false, false); + script->set_constant("SI_2013_VALENTINE1", SI_2013_VALENTINE1, false, false); + script->set_constant("SI_2013_VALENTINE2", SI_2013_VALENTINE2, false, false); + script->set_constant("SI_2013_VALENTINE3", SI_2013_VALENTINE3, false, false); + script->set_constant("SI_ILLUSIONDOPING", SI_ILLUSIONDOPING, false, false); + //script->set_constant("SI_WIDEWEB", SI_WIDEWEB, false, false); + script->set_constant("SI_CHILL", SI_CHILL, false, false); + script->set_constant("SI_BURNT", SI_BURNT, false, false); + //script->set_constant("SI_PCCAFE_PLAY_TIME", SI_PCCAFE_PLAY_TIME, false, false); + //script->set_constant("SI_TWISTED_TIME", SI_TWISTED_TIME, false, false); + script->set_constant("SI_FLASHCOMBO", SI_FLASHCOMBO, false, false); + //script->set_constant("SI_JITTER_BUFF1", SI_JITTER_BUFF1, false, false); + //script->set_constant("SI_JITTER_BUFF2", SI_JITTER_BUFF2, false, false); + //script->set_constant("SI_JITTER_BUFF3", SI_JITTER_BUFF3, false, false); + //script->set_constant("SI_JITTER_BUFF4", SI_JITTER_BUFF4, false, false); + //script->set_constant("SI_JITTER_BUFF5", SI_JITTER_BUFF5, false, false); + //script->set_constant("SI_JITTER_BUFF6", SI_JITTER_BUFF6, false, false); + //script->set_constant("SI_JITTER_BUFF7", SI_JITTER_BUFF7, false, false); + //script->set_constant("SI_JITTER_BUFF8", SI_JITTER_BUFF8, false, false); + //script->set_constant("SI_JITTER_BUFF9", SI_JITTER_BUFF9, false, false); + + //script->set_constant("SI_JITTER_BUFF10", SI_JITTER_BUFF10, false, false); + script->set_constant("SI_CUP_OF_BOZA", SI_CUP_OF_BOZA, false, false); + script->set_constant("SI_B_TRAP", SI_B_TRAP, false, false); + script->set_constant("SI_E_CHAIN", SI_E_CHAIN, false, false); + script->set_constant("SI_E_QD_SHOT_READY", SI_E_QD_SHOT_READY, false, false); + script->set_constant("SI_C_MARKER", SI_C_MARKER, false, false); + script->set_constant("SI_H_MINE", SI_H_MINE, false, false); + script->set_constant("SI_H_MINE_SPLASH", SI_H_MINE_SPLASH, false, false); + script->set_constant("SI_P_ALTER", SI_P_ALTER, false, false); + script->set_constant("SI_HEAT_BARREL", SI_HEAT_BARREL, false, false); + script->set_constant("SI_ANTI_M_BLAST", SI_ANTI_M_BLAST, false, false); + script->set_constant("SI_SLUGSHOT", SI_SLUGSHOT, false, false); + script->set_constant("SI_SWORDCLAN", SI_SWORDCLAN, false, false); + script->set_constant("SI_ARCWANDCLAN", SI_ARCWANDCLAN, false, false); + script->set_constant("SI_GOLDENMACECLAN", SI_GOLDENMACECLAN, false, false); + script->set_constant("SI_CROSSBOWCLAN", SI_CROSSBOWCLAN, false, false); + script->set_constant("SI_PACKING_ENVELOPE1", SI_PACKING_ENVELOPE1, false, false); + script->set_constant("SI_PACKING_ENVELOPE2", SI_PACKING_ENVELOPE2, false, false); + script->set_constant("SI_PACKING_ENVELOPE3", SI_PACKING_ENVELOPE3, false, false); + script->set_constant("SI_PACKING_ENVELOPE4", SI_PACKING_ENVELOPE4, false, false); + script->set_constant("SI_PACKING_ENVELOPE5", SI_PACKING_ENVELOPE5, false, false); + script->set_constant("SI_PACKING_ENVELOPE6", SI_PACKING_ENVELOPE6, false, false); + script->set_constant("SI_PACKING_ENVELOPE7", SI_PACKING_ENVELOPE7, false, false); + script->set_constant("SI_PACKING_ENVELOPE8", SI_PACKING_ENVELOPE8, false, false); + script->set_constant("SI_PACKING_ENVELOPE9", SI_PACKING_ENVELOPE9, false, false); + script->set_constant("SI_PACKING_ENVELOPE10", SI_PACKING_ENVELOPE10, false, false); + script->set_constant("SI_GLASTHEIM_TRANS", SI_GLASTHEIM_TRANS, false, false); + //script->set_constant("SI_ZONGZI_POUCH_TRANS", SI_ZONGZI_POUCH_TRANS, false, false); + script->set_constant("SI_HEAT_BARREL_AFTER", SI_HEAT_BARREL_AFTER, false, false); + script->set_constant("SI_DECORATION_OF_MUSIC", SI_DECORATION_OF_MUSIC, false, false); + //script->set_constant("SI_OVERSEAEXPUP", SI_OVERSEAEXPUP, false, false); + //script->set_constant("SI_CLOWN_N_GYPSY_CARD", SI_CLOWN_N_GYPSY_CARD, false, false); + //script->set_constant("SI_OPEN_NPC_MARKET", SI_OPEN_NPC_MARKET, false, false); + //script->set_constant("SI_BEEF_RIB_STEW", SI_BEEF_RIB_STEW, false, false); + //script->set_constant("SI_PORK_RIB_STEW", SI_PORK_RIB_STEW, false, false); + //script->set_constant("SI_CHUSEOK_MONDAY", SI_CHUSEOK_MONDAY, false, false); + //script->set_constant("SI_CHUSEOK_TUESDAY", SI_CHUSEOK_TUESDAY, false, false); + //script->set_constant("SI_CHUSEOK_WEDNESDAY", SI_CHUSEOK_WEDNESDAY, false, false); + //script->set_constant("SI_CHUSEOK_THURSDAY", SI_CHUSEOK_THURSDAY, false, false); + //script->set_constant("SI_CHUSEOK_FRIDAY", SI_CHUSEOK_FRIDAY, false, false); + //script->set_constant("SI_CHUSEOK_WEEKEND", SI_CHUSEOK_WEEKEND, false, false); + //script->set_constant("SI_ALL_LIGHTGUARD", SI_ALL_LIGHTGUARD, false, false); + //script->set_constant("SI_ALL_LIGHTGUARD_COOL_TIME", SI_ALL_LIGHTGUARD_COOL_TIME, false, false); + script->set_constant("SI_MTF_MHP", SI_MTF_MHP, false, false); + script->set_constant("SI_MTF_MSP", SI_MTF_MSP, false, false); + script->set_constant("SI_MTF_PUMPKIN", SI_MTF_PUMPKIN, false, false); + script->set_constant("SI_MTF_HITFLEE", SI_MTF_HITFLEE, false, false); + //script->set_constant("SI_MTF_CRIDAMAGE2", SI_MTF_CRIDAMAGE2, false, false); + //script->set_constant("SI_MTF_SPDRAIN", SI_MTF_SPDRAIN, false, false); + //script->set_constant("SI_ACUO_MINT_GUM", SI_ACUO_MINT_GUM, false, false); + + //script->set_constant("SI_S_HEALPOTION", SI_S_HEALPOTION, false, false); + //script->set_constant("SI_REUSE_LIMIT_S_HEAL_POTION", SI_REUSE_LIMIT_S_HEAL_POTION, false, false); + //script->set_constant("SI_PLAYTIME_STATISTICS", SI_PLAYTIME_STATISTICS, false, false); + //script->set_constant("SI_GN_CHANGEMATERIAL_OPERATOR", SI_GN_CHANGEMATERIAL_OPERATOR, false, false); + //script->set_constant("SI_GN_MIX_COOKING_OPERATOR", SI_GN_MIX_COOKING_OPERATOR, false, false); + //script->set_constant("SI_GN_MAKEBOMB_OPERATOR", SI_GN_MAKEBOMB_OPERATOR, false, false); + //script->set_constant("SI_GN_S_PHARMACY_OPERATOR", SI_GN_S_PHARMACY_OPERATOR, false, false); + //script->set_constant("SI_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR", SI_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR, false, false); + //script->set_constant("SI_SO_EL_ANALYSIS_COMBINATION_OPERATOR", SI_SO_EL_ANALYSIS_COMBINATION_OPERATOR, false, false); + //script->set_constant("SI_NC_MAGICDECOY_OPERATOR", SI_NC_MAGICDECOY_OPERATOR, false, false); + //script->set_constant("SI_GUILD_STORAGE", SI_GUILD_STORAGE, false, false); + //script->set_constant("SI_GC_POISONINGWEAPON_OPERATOR", SI_GC_POISONINGWEAPON_OPERATOR, false, false); + //script->set_constant("SI_WS_WEAPONREFINE_OPERATOR", SI_WS_WEAPONREFINE_OPERATOR, false, false); + //script->set_constant("SI_BS_REPAIRWEAPON_OPERATOR", SI_BS_REPAIRWEAPON_OPERATOR, false, false); + //script->set_constant("SI_GET_MAILBOX", SI_GET_MAILBOX, false, false); + //script->set_constant("SI_JUMPINGCLAN", SI_JUMPINGCLAN, false, false); + //script->set_constant("SI_JP_OTP", SI_JP_OTP, false, false); + //script->set_constant("SI_HANDICAPTOLERANCE_LEVELGAP", SI_HANDICAPTOLERANCE_LEVELGAP, false, false); + //script->set_constant("SI_MTF_RANGEATK2", SI_MTF_RANGEATK2, false, false); + //script->set_constant("SI_MTF_ASPD2", SI_MTF_ASPD2, false, false); + //script->set_constant("SI_MTF_MATK2", SI_MTF_MATK2, false, false); + //script->set_constant("SI_SHOW_NPCHPBAR", SI_SHOW_NPCHPBAR, false, false); + script->set_constant("SI_FLOWERSMOKE", SI_FLOWERSMOKE, false, false); + script->set_constant("SI_FSTONE", SI_FSTONE, false, false); + //script->set_constant("SI_DAILYSENDMAILCNT", SI_DAILYSENDMAILCNT, false, false); + //script->set_constant("SI_QSCARABA", SI_QSCARABA, false, false); + script->set_constant("SI_LJOSALFAR", SI_LJOSALFAR, false, false); + //script->set_constant("SI_PAD_READER_KNIGHT", SI_PAD_READER_KNIGHT, false, false); + //script->set_constant("SI_PAD_READER_CRUSADER", SI_PAD_READER_CRUSADER, false, false); + //script->set_constant("SI_PAD_READER_BLACKSMITH", SI_PAD_READER_BLACKSMITH, false, false); + //script->set_constant("SI_PAD_READER_ALCHEMIST", SI_PAD_READER_ALCHEMIST, false, false); + //script->set_constant("SI_PAD_READER_ASSASSIN", SI_PAD_READER_ASSASSIN, false, false); + //script->set_constant("SI_PAD_READER_ROGUE", SI_PAD_READER_ROGUE, false, false); + //script->set_constant("SI_PAD_READER_WIZARD", SI_PAD_READER_WIZARD, false, false); + //script->set_constant("SI_PAD_READER_SAGE", SI_PAD_READER_SAGE, false, false); + //script->set_constant("SI_PAD_READER_PRIEST", SI_PAD_READER_PRIEST, false, false); + //script->set_constant("SI_PAD_READER_MONK", SI_PAD_READER_MONK, false, false); + //script->set_constant("SI_PAD_READER_HUNTER", SI_PAD_READER_HUNTER, false, false); + //script->set_constant("SI_PAD_READER_BARD", SI_PAD_READER_BARD, false, false); + //script->set_constant("SI_PAD_READER_DANCER", SI_PAD_READER_DANCER, false, false); + //script->set_constant("SI_PAD_READER_TAEKWON", SI_PAD_READER_TAEKWON, false, false); + //script->set_constant("SI_PAD_READER_NINJA", SI_PAD_READER_NINJA, false, false); + //script->set_constant("SI_PAD_READER_GUNSLINGER", SI_PAD_READER_GUNSLINGER, false, false); + //script->set_constant("SI_PAD_READER_SUPERNOVICE", SI_PAD_READER_SUPERNOVICE, false, false); + //script->set_constant("SI_ESSENCE_OF_TIME", SI_ESSENCE_OF_TIME, false, false); + //script->set_constant("SI_MINIGAME_ROULETTE", SI_MINIGAME_ROULETTE, false, false); + //script->set_constant("SI_MINIGAME_GOLD_POINT", SI_MINIGAME_GOLD_POINT, false, false); + //script->set_constant("SI_MINIGAME_SILVER_POINT", SI_MINIGAME_SILVER_POINT, false, false); + //script->set_constant("SI_MINIGAME_BRONZE_POINT", SI_MINIGAME_BRONZE_POINT, false, false); + script->set_constant("SI_HAPPINESS_STAR", SI_HAPPINESS_STAR, false, false); + + //script->set_constant("SI_SUMMEREVENT01", SI_SUMMEREVENT01, false, false); + //script->set_constant("SI_SUMMEREVENT02", SI_SUMMEREVENT02, false, false); + //script->set_constant("SI_SUMMEREVENT03", SI_SUMMEREVENT03, false, false); + //script->set_constant("SI_SUMMEREVENT04", SI_SUMMEREVENT04, false, false); + //script->set_constant("SI_SUMMEREVENT05", SI_SUMMEREVENT05, false, false); + //script->set_constant("SI_MINIGAME_ROULETTE_BONUS_ITEM", SI_MINIGAME_ROULETTE_BONUS_ITEM, false, false); + //script->set_constant("SI_DRESS_UP", SI_DRESS_UP, false, false); + script->set_constant("SI_MAPLE_FALLS", SI_MAPLE_FALLS, false, false); + //script->set_constant("SI_ALL_NIFLHEIM_RECALL", SI_ALL_NIFLHEIM_RECALL, false, false); + // 859 + //script->set_constant("SI_MTF_MARIONETTE", SI_MTF_MARIONETTE, false, false); + //script->set_constant("SI_MTF_LUDE", SI_MTF_LUDE, false, false); + //script->set_constant("SI_MTF_CRUISER", SI_MTF_CRUISER, false, false); + script->set_constant("SI_MERMAID_LONGING", SI_MERMAID_LONGING, false, false); + script->set_constant("SI_MAGICAL_FEATHER", SI_MAGICAL_FEATHER, false, false); + //script->set_constant("SI_DRACULA_CARD", SI_DRACULA_CARD, false, false); + // 866 + //script->set_constant("SI_LIMIT_POWER_BOOSTER", SI_LIMIT_POWER_BOOSTER, false, false); + // 868 + // 869 + // 870 + // 871 + script->set_constant("SI_TIME_ACCESSORY", SI_TIME_ACCESSORY, false, false); + //script->set_constant("SI_EP16_DEF", SI_EP16_DEF, false, false); + //script->set_constant("SI_NORMAL_ATKED_SP", SI_NORMAL_ATKED_SP, false, false); + //script->set_constant("SI_BODYSTATE_STONECURSE", SI_BODYSTATE_STONECURSE, false, false); + //script->set_constant("SI_BODYSTATE_FREEZING", SI_BODYSTATE_FREEZING, false, false); + //script->set_constant("SI_BODYSTATE_STUN", SI_BODYSTATE_STUN, false, false); + //script->set_constant("SI_BODYSTATE_SLEEP", SI_BODYSTATE_SLEEP, false, false); + //script->set_constant("SI_BODYSTATE_UNDEAD", SI_BODYSTATE_UNDEAD, false, false); + //script->set_constant("SI_BODYSTATE_STONECURSE_ING", SI_BODYSTATE_STONECURSE_ING, false, false); + //script->set_constant("SI_BODYSTATE_BURNNING", SI_BODYSTATE_BURNNING, false, false); + //script->set_constant("SI_BODYSTATE_IMPRISON", SI_BODYSTATE_IMPRISON, false, false); + //script->set_constant("SI_HEALTHSTATE_POISON", SI_HEALTHSTATE_POISON, false, false); + //script->set_constant("SI_HEALTHSTATE_CURSE", SI_HEALTHSTATE_CURSE, false, false); + //script->set_constant("SI_HEALTHSTATE_SILENCE", SI_HEALTHSTATE_SILENCE, false, false); + //script->set_constant("SI_HEALTHSTATE_CONFUSION", SI_HEALTHSTATE_CONFUSION, false, false); + //script->set_constant("SI_HEALTHSTATE_BLIND", SI_HEALTHSTATE_BLIND, false, false); + //script->set_constant("SI_HEALTHSTATE_ANGELUS", SI_HEALTHSTATE_ANGELUS, false, false); + //script->set_constant("SI_HEALTHSTATE_BLOODING", SI_HEALTHSTATE_BLOODING, false, false); + //script->set_constant("SI_HEALTHSTATE_HEAVYPOISON", SI_HEALTHSTATE_HEAVYPOISON, false, false); + //script->set_constant("SI_HEALTHSTATE_FEAR", SI_HEALTHSTATE_FEAR, false, false); + //script->set_constant("SI_CHERRY_BLOSSOM_CAKE", SI_CHERRY_BLOSSOM_CAKE, false, false); + script->set_constant("SI_SU_STOOP", SI_SU_STOOP, false, false); + script->set_constant("SI_CATNIPPOWDER", SI_CATNIPPOWDER, false, false); + script->set_constant("SI_BLOSSOM_FLUTTERING", SI_BLOSSOM_FLUTTERING, false, false); + script->set_constant("SI_SV_ROOTTWIST", SI_SV_ROOTTWIST, false, false); + //script->set_constant("SI_ATTACK_PROPERTY_NOTHING", SI_ATTACK_PROPERTY_NOTHING, false, false); + //script->set_constant("SI_ATTACK_PROPERTY_WATER", SI_ATTACK_PROPERTY_WATER, false, false); + //script->set_constant("SI_ATTACK_PROPERTY_GROUND", SI_ATTACK_PROPERTY_GROUND, false, false); + + //script->set_constant("SI_ATTACK_PROPERTY_FIRE", SI_ATTACK_PROPERTY_FIRE, false, false); + //script->set_constant("SI_ATTACK_PROPERTY_WIND", SI_ATTACK_PROPERTY_WIND, false, false); + //script->set_constant("SI_ATTACK_PROPERTY_POISON", SI_ATTACK_PROPERTY_POISON, false, false); + //script->set_constant("SI_ATTACK_PROPERTY_SAINT", SI_ATTACK_PROPERTY_SAINT, false, false); + //script->set_constant("SI_ATTACK_PROPERTY_DARKNESS", SI_ATTACK_PROPERTY_DARKNESS, false, false); + //script->set_constant("SI_ATTACK_PROPERTY_TELEKINESIS", SI_ATTACK_PROPERTY_TELEKINESIS, false, false); + //script->set_constant("SI_ATTACK_PROPERTY_UNDEAD", SI_ATTACK_PROPERTY_UNDEAD, false, false); + //script->set_constant("SI_RESIST_PROPERTY_NOTHING", SI_RESIST_PROPERTY_NOTHING, false, false); + //script->set_constant("SI_RESIST_PROPERTY_WATER", SI_RESIST_PROPERTY_WATER, false, false); + //script->set_constant("SI_RESIST_PROPERTY_GROUND", SI_RESIST_PROPERTY_GROUND, false, false); + //script->set_constant("SI_RESIST_PROPERTY_FIRE", SI_RESIST_PROPERTY_FIRE, false, false); + //script->set_constant("SI_RESIST_PROPERTY_WIND", SI_RESIST_PROPERTY_WIND, false, false); + //script->set_constant("SI_RESIST_PROPERTY_POISON", SI_RESIST_PROPERTY_POISON, false, false); + //script->set_constant("SI_RESIST_PROPERTY_SAINT", SI_RESIST_PROPERTY_SAINT, false, false); + //script->set_constant("SI_RESIST_PROPERTY_DARKNESS", SI_RESIST_PROPERTY_DARKNESS, false, false); + //script->set_constant("SI_RESIST_PROPERTY_TELEKINESIS", SI_RESIST_PROPERTY_TELEKINESIS, false, false); + //script->set_constant("SI_RESIST_PROPERTY_UNDEAD", SI_RESIST_PROPERTY_UNDEAD, false, false); + script->set_constant("SI_BITESCAR", SI_BITESCAR, false, false); + script->set_constant("SI_ARCLOUSEDASH", SI_ARCLOUSEDASH, false, false); + script->set_constant("SI_TUNAPARTY", SI_TUNAPARTY, false, false); + script->set_constant("SI_SHRIMP", SI_SHRIMP, false, false); + script->set_constant("SI_FRESHSHRIMP", SI_FRESHSHRIMP, false, false); + //script->set_constant("SI_PERIOD_RECEIVEITEM", SI_PERIOD_RECEIVEITEM, false, false); + //script->set_constant("SI_PERIOD_PLUSEXP", SI_PERIOD_PLUSEXP, false, false); + //script->set_constant("SI_PERIOD_PLUSJOBEXP", SI_PERIOD_PLUSJOBEXP, false, false); + //script->set_constant("SI_RUNEHELM", SI_RUNEHELM, false, false); + //script->set_constant("SI_HELM_VERKANA", SI_HELM_VERKANA, false, false); + //script->set_constant("SI_HELM_RHYDO", SI_HELM_RHYDO, false, false); + //script->set_constant("SI_HELM_TURISUS", SI_HELM_TURISUS, false, false); + //script->set_constant("SI_HELM_HAGALAS", SI_HELM_HAGALAS, false, false); + //script->set_constant("SI_HELM_ISIA", SI_HELM_ISIA, false, false); + //script->set_constant("SI_HELM_ASIR", SI_HELM_ASIR, false, false); + //script->set_constant("SI_HELM_URJ", SI_HELM_URJ, false, false); + script->set_constant("SI_SUHIDE", SI_SUHIDE, false, false); + // 934 + //script->set_constant("SI_DORAM_BUF_01", SI_DORAM_BUF_01, false, false); + //script->set_constant("SI_DORAM_BUF_02", SI_DORAM_BUF_02, false, false); + script->set_constant("SI_SPRITEMABLE", SI_SPRITEMABLE, false, false); + //script->set_constant("SI_AID_PERIOD_RECEIVEITEM", SI_AID_PERIOD_RECEIVEITEM, false, false); + //script->set_constant("SI_AID_PERIOD_PLUSEXP", SI_AID_PERIOD_PLUSEXP, false, false); + //script->set_constant("SI_AID_PERIOD_PLUSJOBEXP", SI_AID_PERIOD_PLUSJOBEXP, false, false); + //script->set_constant("SI_AID_PERIOD_DEADPENALTY", SI_AID_PERIOD_DEADPENALTY, false, false); + //script->set_constant("SI_AID_PERIOD_ADDSTOREITEMCOUNT", SI_AID_PERIOD_ADDSTOREITEMCOUNT, false, false); + // 943 + // 944 + // 945 + // 946 + // 947 + // 948 + // 949 + //script->set_constant("SI_HISS", SI_HISS, false, false); + // 951 + //script->set_constant("SI_NYANGGRASS", SI_NYANGGRASS, false, false); + //script->set_constant("SI_CHATTERING", SI_CHATTERING, false, false); + // 954 + // 955 + // 956 + // 957 + // 958 + // 959 + // 960 + //script->set_constant("SI_GROOMING", SI_GROOMING, false, false); + //script->set_constant("SI_PROTECTIONOFSHRIMP", SI_PROTECTIONOFSHRIMP, false, false); + //script->set_constant("SI_EP16_2_BUFF_SS", SI_EP16_2_BUFF_SS, false, false); + //script->set_constant("SI_EP16_2_BUFF_SC", SI_EP16_2_BUFF_SC, false, false); + //script->set_constant("SI_EP16_2_BUFF_AC", SI_EP16_2_BUFF_AC, false, false); + //script->set_constant("SI_GS_MAGICAL_BULLET", SI_GS_MAGICAL_BULLET, false, false); + // 967 + // 968 + // 969 + // 970 + // 971 + // 972 + // 973 + // 974 + // 975 + //script->set_constant("SI_FALLEN_ANGEL", SI_FALLEN_ANGEL, false, false); + // 977 + // 978 + //script->set_constant("SI_BLAZE_BEAD", SI_BLAZE_BEAD, false, false); + //script->set_constant("SI_FROZEN_BEAD", SI_FROZEN_BEAD, false, false); + //script->set_constant("SI_BREEZE_BEAD", SI_BREEZE_BEAD, false, false); + // 982 + //script->set_constant("SI_AID_PERIOD_RECEIVEITEM_2ND", SI_AID_PERIOD_RECEIVEITEM_2ND, false, false); + //script->set_constant("SI_AID_PERIOD_PLUSEXP_2ND", SI_AID_PERIOD_PLUSEXP_2ND, false, false); + //script->set_constant("SI_AID_PERIOD_PLUSJOBEXP_2ND", SI_AID_PERIOD_PLUSJOBEXP_2ND, false, false); + //script->set_constant("SI_PRONTERA_JP", SI_PRONTERA_JP, false, false); + // 987 + //script->set_constant("SI_GLOOM_CARD", SI_GLOOM_CARD, false, false); + //script->set_constant("SI_PHARAOH_CARD", SI_PHARAOH_CARD, false, false); + //script->set_constant("SI_KIEL_CARD", SI_KIEL_CARD, false, false); + // 991 + //script->set_constant("SI_CHEERUP", SI_CHEERUP, false, false); + // 993 + // 994 + //script->set_constant("SI_S_MANAPOTION", SI_S_MANAPOTION, false, false); + //script->set_constant("SI_M_DEFSCROLL", SI_M_DEFSCROLL, false, false); + // 997 + // 998 + // 999 + //script->set_constant("SI_AS_RAGGED_GOLEM_CARD", SI_AS_RAGGED_GOLEM_CARD, false, false); + //script->set_constant("SI_LHZ_DUN_N1", SI_LHZ_DUN_N1, false, false); + //script->set_constant("SI_LHZ_DUN_N2", SI_LHZ_DUN_N2, false, false); + //script->set_constant("SI_LHZ_DUN_N3", SI_LHZ_DUN_N3, false, false); + //script->set_constant("SI_LHZ_DUN_N4", SI_LHZ_DUN_N4, false, false); + + script->set_constant("SI_MAX", SI_MAX, false, false); diff --git a/src/map/guild.c b/src/map/guild.c index bb0484477..11609ec81 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -365,6 +365,11 @@ int guild_create(struct map_session_data *sd, const char *name) nullpo_ret(sd); nullpo_ret(name); + if (sd->clan != NULL) { + clif->messagecolor_self(sd->fd, COLOR_RED, "You cannot create a guild because you are in a clan."); + return 0; + } + safestrncpy(tname, name, NAME_LENGTH); trim(tname); diff --git a/src/map/intif.c b/src/map/intif.c index 60edc8d8b..f656a0df9 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -26,6 +26,7 @@ #include "map/atcommand.h" #include "map/battle.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/clif.h" #include "map/elemental.h" #include "map/guild.h" @@ -744,6 +745,81 @@ int intif_party_leaderchange(int party_id,int account_id,int char_id) return 0; } +//========================= +// Clan System +//------------------------- + +/** + * Request clan member count + * + * @param clan_id Id of the clan to have members counted + * @param kick_interval Interval of the inactivity kick + */ +int intif_clan_membercount(int clan_id, int kick_interval) +{ + if (intif->CheckForCharServer() || clan_id == 0 || kick_interval <= 0) + return 0; + + WFIFOHEAD(inter_fd, 10); + WFIFOW(inter_fd, 0) = 0x3044; + WFIFOL(inter_fd, 2) = clan_id; + WFIFOL(inter_fd, 6) = kick_interval; + WFIFOSET(inter_fd, 10); + return 1; +} + +int intif_clan_kickoffline(int clan_id, int kick_interval) +{ + if (intif->CheckForCharServer() || clan_id == 0 || kick_interval <= 0) + return 0; + + WFIFOHEAD(inter_fd, 10); + WFIFOW(inter_fd, 0) = 0x3045; + WFIFOL(inter_fd, 2) = clan_id; + WFIFOL(inter_fd, 6) = kick_interval; + WFIFOSET(inter_fd, 10); + return 1; +} + +void intif_parse_RecvClanMemberAction(int fd) +{ + struct clan *c; + int clan_id = RFIFOL(fd, 2); + int count = RFIFOL(fd, 6); + + if ((c = clan->search(clan_id)) == NULL) { + ShowError("intif_parse_RecvClanMemberAction: Received invalid clan_id '%d'\n", clan_id); + return; + } + + if (count < 0) { + ShowError("intif_parse_RecvClanMemberAction: Received invalid member count value '%d'\n", count); + return; + } + + c->received = true; + if (c->req_count_tid != INVALID_TIMER) { + timer->delete(c->req_count_tid, clan->request_membercount); + c->req_count_tid = INVALID_TIMER; + } + + c->member_count = count; + switch (c->req_state) { + case CLAN_REQ_AFTER_KICK: + if (c->req_kick_tid != INVALID_TIMER) { + timer->delete(c->req_kick_tid, clan->request_kickoffline); + c->req_kick_tid = INVALID_TIMER; + } + break; + case CLAN_REQ_RELOAD: + map->foreachpc(clan->rejoin); + break; + default: + break; + } + c->req_state = CLAN_REQ_NONE; +} + // Request a Guild creation int intif_guild_create(const char *name,const struct guild_member *master) { @@ -2438,7 +2514,11 @@ void intif_parse_RequestRodexOpenInbox(int fd) #endif int8 flag = RFIFOB(fd, 9); int8 is_end = RFIFOB(fd, 10); - int count = RFIFOL(fd, 11); + int is_first = RFIFOB(fd, 11); + int count = RFIFOL(fd, 12); +#if PACKETVER >= 20170419 + int64 mail_id = RFIFOQ(fd, 16); +#endif int i, j; sd = map->charid2sd(RFIFOL(fd, 4)); @@ -2446,16 +2526,25 @@ void intif_parse_RequestRodexOpenInbox(int fd) if (sd == NULL) // user is not online anymore return; - sd->rodex.total = count; - if (RFIFOW(fd, 2) - 15 != sd->rodex.total * sizeof(struct rodex_message)) { - ShowError("intif_parse_RodexInboxOpenReceived: data size mismatch %d != %"PRIuS"\n", RFIFOW(fd, 2) - 15, sd->rodex.total * sizeof(struct rodex_message)); + if (is_first == false && sd->rodex.total == 0) { + ShowError("intif_parse_RodexInboxOpenReceived: mail list received in wrong order.\n"); return; } - if (flag == 0) + if (is_first) + sd->rodex.total = count; + else + sd->rodex.total += count; + + if (RFIFOW(fd, 2) - 24 != count * sizeof(struct rodex_message)) { + ShowError("intif_parse_RodexInboxOpenReceived: data size mismatch %d != %"PRIuS"\n", RFIFOW(fd, 2) - 24, count * sizeof(struct rodex_message)); + return; + } + + if (flag == 0 && is_first) VECTOR_CLEAR(sd->rodex.messages); - for (i = 0, j = 15; i < count; ++i, j += sizeof(struct rodex_message)) { + for (i = 0, j = 24; i < count; ++i, j += sizeof(struct rodex_message)) { struct rodex_message msg = { 0 }; VECTOR_ENSURE(sd->rodex.messages, 1, 1); memcpy(&msg, RFIFOP(fd, j), sizeof(struct rodex_message)); @@ -2464,7 +2553,7 @@ void intif_parse_RequestRodexOpenInbox(int fd) if (is_end == true) { #if PACKETVER >= 20170419 - clif->rodex_send_mails_all(sd->fd, sd); + clif->rodex_send_mails_all(sd->fd, sd, mail_id); #else if (flag == 0) clif->rodex_send_maillist(sd->fd, sd, opentype, VECTOR_LENGTH(sd->rodex.messages) - 1); @@ -2513,10 +2602,11 @@ void intif_parse_RodexNotifications(int fd) /// Updates a mail /// flag: -/// 0 - user Read -/// 1 - user got Zeny -/// 2 - user got Items -/// 3 - delete +/// 0 - receiver Read +/// 1 - user got Zeny +/// 2 - user got Items +/// 3 - delete +/// 4 - sender Read (returned mail) int intif_rodex_updatemail(int64 mail_id, int8 flag) { if (intif->CheckForCharServer()) @@ -2734,6 +2824,9 @@ int intif_parse(int fd) case 0x3896: intif->pRodexHasNew(fd); break; case 0x3897: intif->pRodexSendMail(fd); break; case 0x3898: intif->pRodexCheckName(fd); break; + + // Clan System + case 0x3858: intif->pRecvClanMemberAction(fd); break; default: ShowError("intif_parse : unknown packet %d %x\n",fd,RFIFOW(fd,0)); return 0; @@ -2755,7 +2848,7 @@ void intif_defaults(void) { 39,-1,15,15, 14,19, 7,-1, 0, 0, 0, 0, 0, 0, 0, 0, //0x3820 10,-1,15, 0, 79,19, 7,-1, 0,-1,-1,-1, 14,67,186,-1, //0x3830 -1, 0, 0,14, 0, 0, 0, 0, -1,74,-1,11, 11,-1, 0, 0, //0x3840 - -1,-1, 7, 7, 7,11, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3850 Auctions [Zephyrus] itembound[Akinari] + -1,-1, 7, 7, 7,11, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, //0x3850 Auctions [Zephyrus] itembound[Akinari] Clan System[Murilo BiO] -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3860 Quests [Kevin] [Inkfish] -1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 3, 0, //0x3870 Mercenaries [Zephyrus] / Elemental [pakpil] 12,-1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3880 @@ -2847,6 +2940,9 @@ void intif_defaults(void) { intif->rodex_updatemail = intif_rodex_updatemail; intif->rodex_sendmail = intif_rodex_sendmail; intif->rodex_checkname = intif_rodex_checkname; + /* Clan System */ + intif->clan_kickoffline = intif_clan_kickoffline; + intif->clan_membercount = intif_clan_membercount; /* @accinfo */ intif->request_accinfo = intif_request_accinfo; /* */ @@ -2923,4 +3019,6 @@ void intif_defaults(void) { intif->pRodexHasNew = intif_parse_RodexNotifications; intif->pRodexSendMail = intif_parse_RodexSendMail; intif->pRodexCheckName = intif_parse_RodexCheckName; + /* Clan System */ + intif->pRecvClanMemberAction = intif_parse_RecvClanMemberAction; } diff --git a/src/map/intif.h b/src/map/intif.h index 4bca5f167..be8ff4181 100644 --- a/src/map/intif.h +++ b/src/map/intif.h @@ -138,6 +138,9 @@ struct intif_interface { int(*rodex_updatemail) (int64 mail_id, int8 flag); int(*rodex_sendmail) (struct rodex_message *msg); int(*rodex_checkname) (struct map_session_data *sd, const char *name); + /* Clan System */ + int (*clan_kickoffline) (int clan_id, int kick_interval); + int (*clan_membercount) (int clan_id, int kick_interval); /* @accinfo */ void (*request_accinfo) (int u_fd, int aid, int group_lv, char* query); /* */ @@ -212,6 +215,8 @@ struct intif_interface { void(*pRodexHasNew) (int fd); void(*pRodexSendMail) (int fd); void(*pRodexCheckName) (int fd); + /* Clan System */ + void (*pRecvClanMemberAction) (int fd); }; #ifdef HERCULES_CORE diff --git a/src/map/itemdb.c b/src/map/itemdb.c index 7fedb19ae..17a73400a 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -2070,6 +2070,12 @@ int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const char * if ((t = libconfig->setting_get_member(it, "DisableOptions"))) id.flag.no_options = libconfig->setting_get_bool(t) ? 1 : 0; + if ((t = libconfig->setting_get_member(it, "ShowDropEffect"))) + id.flag.showdropeffect = libconfig->setting_get_bool(t) ? 1 : 0; + + if (itemdb->lookup_const(it, "DropEffectMode", &i32) && i32 >= 0) + id.dropeffectmode = i32; + if (itemdb->lookup_const(it, "ViewSprite", &i32) && i32 >= 0) id.view_sprite = i32; diff --git a/src/map/itemdb.h b/src/map/itemdb.h index d2d3b6c73..5344a7cd6 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -472,6 +472,7 @@ struct item_data { int view_id; int matk; int elvmax;/* maximum level for this item */ + int dropeffectmode; int delay; uint64 class_base[3]; ///< Specifies if the base can wear this item (split in 3 indexes per type: 1-1, 2-1, 2-2) @@ -495,6 +496,7 @@ struct item_data { unsigned force_serial : 1; unsigned no_options: 1; // < disallows use of item options on the item. (non-equippable items are automatically flagged) [Smokexyz] unsigned drop_announce : 1; // Official Drop Announce [Jedzkie] + unsigned showdropeffect: 1; // < Allow showing effect on item drop [Asheraf] } flag; struct {// item stacking limitation unsigned short amount; @@ -538,6 +540,8 @@ struct item_data { #define itemdb_value_sell(n) (itemdb->search(n)->value_sell) #define itemdb_canrefine(n) (!itemdb->search(n)->flag.no_refine) #define itemdb_allowoption(n) (!itemdb->search(n)->flag.no_options) +#define itemdb_showdropeffect(n) (itemdb->search(n)->flag.showdropeffect) +#define itemdb_dropeffectmode(n) (itemdb->search(n)->dropeffectmode) #define itemdb_is_element(n) ((n) >= ITEMID_SCARLET_PTS && (n) <= ITEMID_LIME_GREEN_PTS) #define itemdb_is_spellbook(n) ((n) >= ITEMID_MAGIC_BOOK_FB && (n) <= ITEMID_MAGIC_BOOK_DL) diff --git a/src/map/log.c b/src/map/log.c index 6419c4766..c3fec077e 100644 --- a/src/map/log.c +++ b/src/map/log.c @@ -82,13 +82,21 @@ char log_picktype2char(e_log_pick_type type) { } /// obtain log type character for chat logs -char log_chattype2char(e_log_chat_type type) { - switch( type ) { - case LOG_CHAT_GLOBAL: return 'O'; // Gl(O)bal - case LOG_CHAT_WHISPER: return 'W'; // (W)hisper - case LOG_CHAT_PARTY: return 'P'; // (P)arty - case LOG_CHAT_GUILD: return 'G'; // (G)uild - case LOG_CHAT_MAINCHAT: return 'M'; // (M)ain chat +char log_chattype2char(e_log_chat_type type) +{ + switch (type) { + case LOG_CHAT_GLOBAL: + return 'O'; // Gl(O)bal + case LOG_CHAT_WHISPER: + return 'W'; // (W)hisper + case LOG_CHAT_PARTY: + return 'P'; // (P)arty + case LOG_CHAT_GUILD: + return 'G'; // (G)uild + case LOG_CHAT_MAINCHAT: + return 'M'; // (M)ain chat + case LOG_CHAT_CLAN: + return 'C'; // (C)lan } // should not get here, fallback diff --git a/src/map/log.h b/src/map/log.h index 7ff36d126..e7eb72713 100644 --- a/src/map/log.h +++ b/src/map/log.h @@ -52,6 +52,7 @@ typedef enum e_log_chat_type { LOG_CHAT_PARTY = 0x04, LOG_CHAT_GUILD = 0x08, LOG_CHAT_MAINCHAT = 0x10, + LOG_CHAT_CLAN = 0x20, // all LOG_CHAT_ALL = 0xFF, } e_log_chat_type; diff --git a/src/map/map.c b/src/map/map.c index 5a647625f..780e6f535 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -30,6 +30,7 @@ #include "map/channel.h" #include "map/chat.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/clif.h" #include "map/duel.h" #include "map/elemental.h" @@ -65,6 +66,7 @@ #include "common/core.h" #include "common/ers.h" #include "common/grfio.h" +#include "common/md5calc.h" #include "common/memmgr.h" #include "common/nullpo.h" #include "common/random.h" @@ -1694,8 +1696,9 @@ bool map_closest_freecell(int16 m, const struct block_list *bl, int16 *x, int16 * @m, @x, @y mapid,x,y * @first_charid, @second_charid, @third_charid, looting priority * @flag: &1 MVP item. &2 do stacking check. + * @showdropeffect: show effect when the item is dropped. *------------------------------------------*/ -int map_addflooritem(const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags) +int map_addflooritem(const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags, bool showdropeffect) { int r; struct flooritem_data *fitem=NULL; @@ -1714,6 +1717,7 @@ int map_addflooritem(const struct block_list *bl, struct item *item_data, int am fitem->bl.x = x; fitem->bl.y = y; fitem->bl.id = map->get_new_object_id(); + fitem->showdropeffect = showdropeffect; if(fitem->bl.id==0){ ers_free(map->flooritem_ers, fitem); return 0; @@ -1902,6 +1906,9 @@ int map_quit(struct map_session_data *sd) { if( sd->bg_id && !sd->bg_queue.arena ) /* TODO: dump this chunk after bg_queue is fully enabled */ bg->team_leave(sd,BGTL_QUIT); + if (sd->status.clan_id) + clan->member_offline(sd); + if (sd->state.autotrade && core->runflag != MAPSERVER_ST_SHUTDOWN && !channel->config->closing) pc->autotrade_update(sd,PAUC_REMOVE); @@ -2893,21 +2900,26 @@ int map_cell2gat(struct mapcell cell) { ShowWarning("map_cell2gat: cell has no matching gat type\n"); return 1; // default to 'wall' } -void map_cellfromcache(struct map_data *m) { - struct map_cache_map_info *info; +/** + * Extracts a map's cell data from its compressed mapcache. + * + * @param[in, out] m The target map. + */ +void map_cellfromcache(struct map_data *m) +{ nullpo_retv(m); - info = (struct map_cache_map_info *)m->cellPos; - if (info) { + if (m->cell_buf.data != NULL) { char decode_buffer[MAX_MAP_SIZE]; unsigned long size, xy; int i; - size = (unsigned long)info->xs*(unsigned long)info->ys; + size = (unsigned long)m->xs * (unsigned long)m->ys; // TO-DO: Maybe handle the scenario, if the decoded buffer isn't the same size as expected? [Shinryo] - grfio->decode_zip(decode_buffer, &size, m->cellPos+sizeof(struct map_cache_map_info), info->len); + grfio->decode_zip(decode_buffer, &size, m->cell_buf.data, m->cell_buf.len); + CREATE(m->cell, struct mapcell, size); // Set cell properties @@ -3247,97 +3259,125 @@ int map_eraseipport(unsigned short map_index, uint32 ip, uint16 port) { return 0; } -/*========================================== - * [Shinryo]: Init the mapcache - *------------------------------------------*/ -char *map_init_mapcache(FILE *fp) { - struct map_cache_main_header header; - size_t size = 0; - char *buffer; - - // No file open? Return.. - nullpo_ret(fp); +/** + * Reads a map's compressed cell data from its mapcache file. + * + * @param[in,out] m The target map. + * @return The loading success state. + * @retval false in case of errors. + */ +bool map_readfromcache(struct map_data *m) +{ + unsigned int file_size; + char file_path[256]; + FILE *fp = NULL; + bool retval = false; + int16 version; - // Get file size - fseek(fp, 0, SEEK_END); - size = ftell(fp); - fseek(fp, 0, SEEK_SET); + nullpo_retr(false, m); - // Allocate enough space - CREATE(buffer, char, size); + snprintf(file_path, sizeof(file_path), "%s%s%s.%s", "maps/", DBPATH, m->name, "mcache"); + fp = fopen(file_path, "rb"); - // No memory? Return.. - nullpo_ret(buffer); + if (fp == NULL) { + ShowWarning("map_readfromcache: Could not open the mapcache file for map '%s' at path '%s'.\n", m->name, file_path); + return false; + } - // Read file into buffer.. - if(fread(buffer, sizeof(char), size, fp) != size) { - ShowError("map_init_mapcache: Could not read entire mapcache file\n"); - aFree(buffer); - return NULL; + if (fread(&version, sizeof(version), 1, fp) < 1) { + ShowError("map_readfromcache: Could not read file version for map '%s'.\n", m->name); + fclose(fp); + return false; } - rewind(fp); + fseek(fp, 0, SEEK_END); + file_size = (unsigned int)ftell(fp); + fseek(fp, 0, SEEK_SET); // Rewind file pointer before passing it to the read function. - // Get main header to verify if data is corrupted - if( fread(&header, sizeof(header), 1, fp) != 1 ) { - ShowError("map_init_mapcache: Error obtaining main header!\n"); - aFree(buffer); - return NULL; - } - if( GetULong((unsigned char *)&(header.file_size)) != size ) { - ShowError("map_init_mapcache: Map cache is corrupted!\n"); - aFree(buffer); - return NULL; + switch(version) { + case 1: + retval = map->readfromcache_v1(fp, m, file_size); + break; + default: + ShowError("map_readfromcache: Mapcache file has unknown version '%d' for map '%s'.\n", version, m->name); + break; } - return buffer; + fclose(fp); + return retval; } -/*========================================== - * Map cache reading - * [Shinryo]: Optimized some behaviour to speed this up - *==========================================*/ -int map_readfromcache(struct map_data *m, char *buffer) { - int i; - struct map_cache_main_header *header = (struct map_cache_main_header *)buffer; - struct map_cache_map_info *info = NULL; - char *p = buffer + sizeof(struct map_cache_main_header); - - nullpo_ret(m); - nullpo_ret(buffer); - - for(i = 0; i < header->map_count; i++) { - info = (struct map_cache_map_info *)p; +/** + * Reads a map's compressed cell data from its mapcache file (file format + * version 1). + * + * @param[in] fp The file pointer to read from (opened and closed by + * the caller). + * @param[in,out] m The target map. + * @param[in] file_size The size of the file to load from. + * @return The loading success state. + * @retval false in case of errors. + */ +bool map_readfromcache_v1(FILE *fp, struct map_data *m, unsigned int file_size) +{ + struct map_cache_header mheader = { 0 }; + uint8 md5buf[16] = { 0 }; + int map_size; + nullpo_retr(false, fp); + nullpo_retr(false, m); + + if (file_size <= sizeof(mheader) || fread(&mheader, sizeof(mheader), 1, fp) < 1) { + ShowError("map_readfromcache: Failed to read cache header for map '%s'.\n", m->name); + return false; + } - if( strcmp(m->name, info->name) == 0 ) - break; // Map found + if (mheader.len <= 0) { + ShowError("map_readfromcache: A file with negative or zero compressed length passed '%d'.\n", mheader.len); + return false; + } - // Jump to next entry.. - p += sizeof(struct map_cache_map_info) + info->len; + if (file_size < sizeof(mheader) + mheader.len) { + ShowError("map_readfromcache: An incomplete file passed for map '%s'.\n", m->name); + return false; } - if( info && i < header->map_count ) { - unsigned long size; + if (mheader.ys <= 0 || mheader.xs <= 0) { + ShowError("map_readfromcache: A map with invalid size passed '%s' xs: '%d' ys: '%d'.\n", m->name, mheader.xs, mheader.ys); + return false; + } - if( info->xs <= 0 || info->ys <= 0 ) - return 0;// Invalid + m->xs = mheader.xs; + m->ys = mheader.ys; + map_size = (int)mheader.xs * (int)mheader.ys; - m->xs = info->xs; - m->ys = info->ys; - size = (unsigned long)info->xs*(unsigned long)info->ys; + if (map_size > MAX_MAP_SIZE) { + ShowWarning("map_readfromcache: %s exceeded MAX_MAP_SIZE of %d.\n", m->name, MAX_MAP_SIZE); + return false; + } - if(size > MAX_MAP_SIZE) { - ShowWarning("map_readfromcache: %s exceeded MAX_MAP_SIZE of %d\n", info->name, MAX_MAP_SIZE); - return 0; // Say not found to remove it from list.. [Shinryo] - } + CREATE(m->cell_buf.data, uint8, mheader.len); + m->cell_buf.len = mheader.len; + if (fread(m->cell_buf.data, mheader.len, 1, fp) < 1) { + ShowError("mapreadfromcache: Could not load the compressed cell data for map '%s'.\n", m->name); + aFree(m->cell_buf.data); + m->cell_buf.data = NULL; + m->cell_buf.len = 0; + return false; + } - m->cellPos = p; - m->cell = (struct mapcell *)0xdeadbeaf; + md5->binary(m->cell_buf.data, m->cell_buf.len, md5buf); - return 1; + if (memcmp(md5buf, mheader.md5_checksum, sizeof(md5buf)) != 0) { + ShowError("mapreadfromcache: md5 checksum check failed for map '%s'\n", m->name); + aFree(m->cell_buf.data); + m->cell_buf.data = NULL; + m->cell_buf.len = 0; + return false; } - return 0; // Not found + m->cell = (struct mapcell *)0xdeadbeaf; + + return true; } /** @@ -3741,26 +3781,12 @@ void map_removemapdb(struct map_data *m) { *--------------------------------------*/ int map_readallmaps (void) { int i; - FILE* fp=NULL; int maps_removed = 0; - if( map->enable_grf ) + if (map->enable_grf) { ShowStatus("Loading maps (using GRF files)...\n"); - else { - char mapcachefilepath[256]; - safesnprintf(mapcachefilepath, 256, "%s/%s%s", map->db_path, DBPATH, "map_cache.dat"); - ShowStatus("Loading maps (using %s as map cache)...\n", mapcachefilepath); - if( (fp = fopen(mapcachefilepath, "rb")) == NULL ) { - ShowFatalError("Unable to open map cache file "CL_WHITE"%s"CL_RESET"\n", mapcachefilepath); - exit(EXIT_FAILURE); //No use launching server if maps can't be read. - } - - // Init mapcache data.. [Shinryo] - map->cache_buffer = map->init_mapcache(fp); - if(!map->cache_buffer) { - ShowFatalError("Failed to initialize mapcache data (%s)..\n", mapcachefilepath); - exit(EXIT_FAILURE); - } + } else { + ShowStatus("Loading maps using map cache files...\n"); } for(i = 0; i < map->count; i++) { @@ -3774,7 +3800,7 @@ int map_readallmaps (void) { if( ! (map->enable_grf? map->readgat(&map->list[i]) - :map->readfromcache(&map->list[i], map->cache_buffer)) + :map->readfromcache(&map->list[i])) ) { map->delmapid(i); maps_removed++; @@ -3816,10 +3842,6 @@ int map_readallmaps (void) { // intialization and configuration-dependent adjustments of mapflags map->flags_init(); - if( !map->enable_grf ) { - fclose(fp); - } - // finished map loading ShowInfo("Successfully loaded '"CL_WHITE"%d"CL_RESET"' maps."CL_CLL"\n",map->count); instance->start_id = map->count; // Next Map Index will be instances @@ -4496,6 +4518,8 @@ void map_zone_change2(int m, struct map_zone_data *zone) { const char *empty = ""; + if (zone == NULL) + return; Assert_retv(m >= 0 && m < map->count); if( map->list[m].zone == zone ) return; @@ -4813,6 +4837,15 @@ bool map_zone_mf_cache(int m, char *flag, char *params) { else if( map->list[m].flag.battleground ) map_zone_mf_cache_add(m,"battleground"); } + } else if (!strcmpi(flag,"cvc")) { + if (state && map->list[m].flag.cvc) { + ;/* nothing to do */ + } else { + if (state) + map_zone_mf_cache_add(m,"cvc\toff"); + else if (map->list[m].flag.cvc) + map_zone_mf_cache_add(m,"cvc"); + } } else if (!strcmpi(flag,"noexppenalty")) { if( state && map->list[m].flag.noexppenalty ) ;/* nothing to do */ @@ -5837,6 +5870,8 @@ void read_map_zone_db(void) { zone->merge_type = MZMT_MERGEABLE; if( (zone = strdb_get(map->zone_db, MAP_ZONE_BG_NAME)) ) zone->merge_type = MZMT_MERGEABLE; + if ((zone = strdb_get(map->zone_db, MAP_ZONE_CVC_NAME))) + zone->merge_type = MZMT_MERGEABLE; } /* not supposed to go in here but in skill_final whatever */ libconfig->destroy(&map_zone_db); @@ -5997,6 +6032,7 @@ int do_final(void) { ircbot->final();/* before channel. */ channel->final(); chrif->final(); + clan->final(); clif->final(); npc->final(); quest->final(); @@ -6042,6 +6078,11 @@ int do_final(void) { ers_destroy(map->iterator_ers); ers_destroy(map->flooritem_ers); + for (i = 0; i < map->count; ++i) { + if (map->list[i].cell_buf.data != NULL) + aFree(map->list[i].cell_buf.data); + map->list[i].cell_buf.len = 0; + } aFree(map->list); if( map->block_free ) @@ -6049,9 +6090,6 @@ int do_final(void) { if( map->bl_list ) aFree(map->bl_list); - if( !map->enable_grf ) - aFree(map->cache_buffer); - aFree(map->MAP_CONF_NAME); aFree(map->BATTLE_CONF_FILENAME); aFree(map->ATCOMMAND_CONF_FILENAME); @@ -6183,6 +6221,7 @@ void map_load_defaults(void) { battleground_defaults(); buyingstore_defaults(); channel_defaults(); + clan_defaults(); clif_defaults(); chrif_defaults(); guild_defaults(); @@ -6515,6 +6554,7 @@ int do_init(int argc, char *argv[]) ircbot->init(minimal); script->init(minimal); itemdb->init(minimal); + clan->init(minimal); skill->init(minimal); if (!minimal) map->read_zone_db();/* read after item and skill initialization */ @@ -6665,7 +6705,6 @@ void map_defaults(void) { map->list = NULL; map->iterator_ers = NULL; - map->cache_buffer = NULL; map->flooritem_ers = NULL; /* */ @@ -6812,8 +6851,8 @@ void map_defaults(void) { map->iwall_nextxy = map_iwall_nextxy; map->create_map_data_other_server = create_map_data_other_server; map->eraseallipport_sub = map_eraseallipport_sub; - map->init_mapcache = map_init_mapcache; map->readfromcache = map_readfromcache; + map->readfromcache_v1 = map_readfromcache_v1; map->addmap = map_addmap; map->delmapid = map_delmapid; map->zone_db_clear = map_zone_db_clear; diff --git a/src/map/map.h b/src/map/map.h index 5835b5abc..5c4c6d59d 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -352,6 +352,7 @@ STATIC_ASSERT(((MAPID_1_1_MAX - 1) | MAPID_BASEMASK) == MAPID_BASEMASK, "First c || map->list[m].flag.gvg \ || ((map->agit_flag || map->agit2_flag) && map->list[m].flag.gvg_castle) \ || map->list[m].flag.battleground \ + || map->list[m].flag.cvc \ ) // Specifies maps that have special GvG/WoE restrictions #define map_flag_gvg(m) (map->list[m].flag.gvg || ((map->agit_flag || map->agit2_flag) && map->list[m].flag.gvg_castle)) @@ -531,6 +532,7 @@ struct flooritem_data { int first_get_charid,second_get_charid,third_get_charid; int64 first_get_tick,second_get_tick,third_get_tick; struct item item_data; + bool showdropeffect; }; enum status_point_types { //we better clean up this enum and change it name [Hemagx] @@ -736,6 +738,7 @@ enum map_zone_merge_type { #define MAP_ZONE_PVP_NAME "PvP" #define MAP_ZONE_GVG_NAME "GvG" #define MAP_ZONE_BG_NAME "Battlegrounds" +#define MAP_ZONE_CVC_NAME "CvC" #define MAP_ZONE_PK_NAME "PK Mode" #define MAP_ZONE_MAPFLAG_LENGTH 50 @@ -822,6 +825,7 @@ struct map_data { unsigned gvg_dungeon : 1; // Celest unsigned gvg_noparty : 1; unsigned battleground : 2; // [BattleGround System] + unsigned cvc : 1; unsigned nozenypenalty : 1; unsigned notrade : 1; unsigned noskill : 1; @@ -905,7 +909,10 @@ struct map_data { /* */ int (*getcellp)(struct map_data* m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk); void (*setcell) (int16 m, int16 x, int16 y, cell_t cell, bool flag); - char *cellPos; + struct { + uint8 *data; + int len; + } cell_buf; /* ShowEvent Data Cache */ struct questinfo *qi_data; @@ -1060,20 +1067,20 @@ struct charid2nick { struct charid_request* requests;// requests of notification on this nick }; -// This is the main header found at the very beginning of the map cache -struct map_cache_main_header { - uint32 file_size; - uint16 map_count; -}; - -// This is the header appended before every compressed map cells info in the map cache -struct map_cache_map_info { - char name[MAP_NAME_LENGTH]; +// New mcache file format header +#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute +#pragma pack(push, 1) +#endif // not NetBSD < 6 / Solaris +struct map_cache_header { + int16 version; + uint8 md5_checksum[16]; int16 xs; int16 ys; int32 len; -}; - +} __attribute__((packed)); +#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 /*===================================== * Interface : map.h @@ -1163,7 +1170,6 @@ END_ZEROED_BLOCK; struct map_data *list; /* [Ind/Hercules] */ struct eri *iterator_ers; - char *cache_buffer; // Has the uncompressed gat data of all maps, so just one allocation has to be made /* */ struct eri *flooritem_ers; /* */ @@ -1208,7 +1214,7 @@ END_ZEROED_BLOCK; int (*clearflooritem_timer) (int tid, int64 tick, int id, intptr_t data); int (*removemobs_timer) (int tid, int64 tick, int id, intptr_t data); void (*clearflooritem) (struct block_list* bl); - int (*addflooritem) (const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags); + int (*addflooritem) (const struct block_list *bl, struct item *item_data, int amount, int16 m, int16 x, int16 y, int first_charid, int second_charid, int third_charid, int flags, bool showdropeffect); // player to map session void (*addnickdb) (int charid, const char* nick); void (*delnickdb) (int charid, const char* nick); @@ -1313,8 +1319,8 @@ END_ZEROED_BLOCK; void (*iwall_nextxy) (int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1); struct DBData (*create_map_data_other_server) (union DBKey key, va_list args); int (*eraseallipport_sub) (union DBKey key, struct DBData *data, va_list va); - char* (*init_mapcache) (FILE *fp); - int (*readfromcache) (struct map_data *m, char *buffer); + bool (*readfromcache) (struct map_data *m); + bool (*readfromcache_v1) (FILE *fp, struct map_data *m, unsigned int file_size); int (*addmap) (const char *mapname); void (*delmapid) (int id); void (*zone_db_clear) (void); diff --git a/src/map/mob.c b/src/map/mob.c index f509ecace..e93c9009d 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -1838,11 +1838,13 @@ int mob_ai_hard(int tid, int64 tick, int id, intptr_t data) { /*========================================== * Initializes the delay drop structure for mob-dropped items. *------------------------------------------*/ -struct item_drop* mob_setdropitem(int nameid, int qty, struct item_data *data) { +struct item_drop* mob_setdropitem(int nameid, int qty, struct item_data *data) +{ struct item_drop *drop = ers_alloc(item_drop_ers, struct item_drop); drop->item_data.nameid = nameid; drop->item_data.amount = qty; drop->item_data.identify = data ? itemdb->isidentified2(data) : itemdb->isidentified(nameid); + drop->showdropeffect = true; drop->next = NULL; return drop; } @@ -1857,6 +1859,7 @@ struct item_drop* mob_setlootitem(struct item* item) nullpo_retr(NULL, item); drop = ers_alloc(item_drop_ers, struct item_drop); memcpy(&drop->item_data, item, sizeof(struct item)); + drop->showdropeffect = false; drop->next = NULL; return drop; } @@ -1864,7 +1867,8 @@ struct item_drop* mob_setlootitem(struct item* item) /*========================================== * item drop with delay (timer function) *------------------------------------------*/ -int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data) { +int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data) +{ struct item_drop_list *list; struct item_drop *ditem; list=(struct item_drop_list *)data; @@ -1872,8 +1876,9 @@ int mob_delay_item_drop(int tid, int64 tick, int id, intptr_t data) { while (ditem) { struct item_drop *ditem_prev; map->addflooritem(NULL, &ditem->item_data,ditem->item_data.amount, - list->m,list->x,list->y, - list->first_charid,list->second_charid,list->third_charid,0); + list->m,list->x,list->y, + list->first_charid,list->second_charid,list->third_charid,0, + ditem->showdropeffect); ditem_prev = ditem; ditem = ditem->next; ers_free(item_drop_ers, ditem_prev); @@ -2586,7 +2591,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) { if((temp = pc->additem(mvp_sd,&item,1,LOG_TYPE_PICKDROP_PLAYER)) != 0) { clif->additem(mvp_sd,0,0,temp); - map->addflooritem(&md->bl, &item, 1, mvp_sd->bl.m, mvp_sd->bl.x, mvp_sd->bl.y, mvp_sd->status.char_id, (second_sd?second_sd->status.char_id : 0), (third_sd ? third_sd->status.char_id : 0), 1); + map->addflooritem(&md->bl, &item, 1, mvp_sd->bl.m, mvp_sd->bl.x, mvp_sd->bl.y, mvp_sd->status.char_id, (second_sd?second_sd->status.char_id : 0), (third_sd ? third_sd->status.char_id : 0), 1, true); } //Logs items, MVP prizes [Lupus] diff --git a/src/map/mob.h b/src/map/mob.h index 83e022899..3d1b3aadf 100644 --- a/src/map/mob.h +++ b/src/map/mob.h @@ -208,6 +208,7 @@ struct mob_data { int target_id,attacked_id; int areanpc_id; //Required in OnTouchNPC (to avoid multiple area touchs) unsigned int bg_id; // BattleGround System + int clan_id; // Clan System int64 next_walktime, last_thinktime, last_linktime, last_pcneartime, dmgtick; short move_fail_count; @@ -406,6 +407,7 @@ enum mob_id { // The data structures for storing delayed item drops struct item_drop { struct item item_data; + bool showdropeffect; struct item_drop* next; }; struct item_drop_list { diff --git a/src/map/npc.c b/src/map/npc.c index d3dfb39d2..94ab57bd9 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -25,6 +25,7 @@ #include "map/battle.h" #include "map/chat.h" +#include "map/clan.h" #include "map/clif.h" #include "map/guild.h" #include "map/instance.h" @@ -4144,6 +4145,11 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co ShowWarning("npc_parse_mapflag: You can't set PvP and GvG flags for the same map! Removing GvG flags from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer)); if (retval) *retval = EXIT_FAILURE; } + if (state && map->list[m].flag.cvc) { + map->list[m].flag.cvc = 0; + ShowWarning("npc_parse_mapflag: You can't set CvC and PvP flags for the same map! Removing CvC flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer)); + if (retval) *retval = EXIT_FAILURE; + } if( state && map->list[m].flag.battleground ) { map->list[m].flag.battleground = 0; ShowWarning("npc_parse_mapflag: You can't set PvP and BattleGround flags for the same map! Removing BattleGround flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer)); @@ -4196,6 +4202,11 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co ShowWarning("npc_parse_mapflag: You can't set PvP and GvG flags for the same map! Removing PvP flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer)); if (retval) *retval = EXIT_FAILURE; } + if (state && map->list[m].flag.cvc) { + map->list[m].flag.cvc = 0; + ShowWarning("npc_parse_mapflag: You can't set CvC and GvG flags for the same map! Removing CvC flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer)); + if (retval) *retval = EXIT_FAILURE; + } if( state && map->list[m].flag.battleground ) { map->list[m].flag.battleground = 0; ShowWarning("npc_parse_mapflag: You can't set GvG and BattleGround flags for the same map! Removing BattleGround flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer)); @@ -4238,11 +4249,47 @@ const char *npc_parse_mapflag(const char *w1, const char *w2, const char *w3, co ShowWarning("npc_parse_mapflag: You can't set GvG and BattleGround flags for the same map! Removing GvG flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer,start-buffer)); if (retval) *retval = EXIT_FAILURE; } + if (map->list[m].flag.cvc) { + map->list[m].flag.cvc = 0; + ShowWarning("npc_parse_mapflag: You can't set CvC and BattleGround flags for the same map! Removing CvC flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer)); + if (retval) *retval = EXIT_FAILURE; + } if( state && (zone = strdb_get(map->zone_db, MAP_ZONE_BG_NAME)) != NULL && map->list[m].zone != zone ) { map->zone_change(m,zone,start,buffer,filepath); } } + else if (!strcmpi(w3, "cvc")) { + struct map_zone_data *zone; + + map->list[m].flag.cvc = state; + if (state && (map->list[m].flag.gvg || map->list[m].flag.gvg_dungeon || map->list[m].flag.gvg_castle)) { + map->list[m].flag.gvg = 0; + map->list[m].flag.gvg_dungeon = 0; + map->list[m].flag.gvg_castle = 0; + ShowWarning("npc_parse_mapflag: You can't set GvG and CvC flags for the same map! Removing GvG flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer)); + if (retval) { + *retval = EXIT_FAILURE; + } + } + if (state && map->list[m].flag.pvp) { + map->list[m].flag.pvp = 0; + ShowWarning("npc_parse_mapflag: You can't set PvP and CvC flags for the same map! Removing PvP flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer)); + if (retval) { + *retval = EXIT_FAILURE; + } + } + if (state && map->list[m].flag.battleground) { + map->list[m].flag.battleground = 0; + ShowWarning("npc_parse_mapflag: You can't set CvC and BattleGround flags for the same map! Removing BattleGround flag from %s in file '%s', line '%d'.\n", map->list[m].name, filepath, strline(buffer, start-buffer)); + if (retval) { + *retval = EXIT_FAILURE; + } + } + if (state && (zone = strdb_get(map->zone_db, MAP_ZONE_CVC_NAME)) != NULL && map->list[m].zone != zone) { + map->zone_change(m, zone, start, buffer, filepath); + } + } else if (!strcmpi(w3,"noexppenalty")) map->list[m].flag.noexppenalty=state; else if (!strcmpi(w3,"nozenypenalty")) @@ -4887,6 +4934,7 @@ int npc_reload(void) { // Reprocess npc files and reload constants itemdb->name_constants(); + clan->set_constants(); npc_process_files( npc_new_min ); instance->reload(); @@ -5026,6 +5074,7 @@ int do_init_npc(bool minimal) { // Should be loaded before npc processing, otherwise labels could overwrite constant values // and lead to undefined behavior [Panikon] itemdb->name_constants(); + clan->set_constants(); if (!minimal) { npc->timer_event_ers = ers_new(sizeof(struct timer_event_data),"clif.c::timer_event_ers",ERS_OPT_NONE); diff --git a/src/map/npc.h b/src/map/npc.h index 8bb38f252..64a2b3a51 100644 --- a/src/map/npc.h +++ b/src/map/npc.h @@ -83,6 +83,8 @@ struct npc_data { uint8 dir; uint8 area_size; + int clan_id; + unsigned size : 2; struct status_data status; diff --git a/src/map/packets.h b/src/map/packets.h index 451acce47..462efd31b 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -2179,6 +2179,12 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0960,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif +//2012-07-02 +#if PACKETVER >= 20120702 +// new packets + packet(0x098a, -1); // ZC_CLANINFO +#endif + //2012-07-10 #if PACKETVER >= 20120710 packet(0x0886,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE @@ -2218,6 +2224,15 @@ packet(0x96e,-1,clif->ackmergeitems); packet(0x0436,4,clif->pDull); // CZ_GANGSI_RANK #endif +//2012-07-16aRagExe +#if PACKETVER >= 20120716 +// new packets + packet(0x0988, 6); // ZC_NOTIFY_CLAN_CONNECTINFO + packet(0x0989, 2); // ZC_ACK_CLAN_LEAVE + packet(0x098d, -1, clif->pClanMessage, 2, 4); // CZ_CLAN_CHAT + packet(0x098e, -1); // ZC_NOTIFY_CLAN_CHAT +#endif + // 2012-09-25aRagexe #if PACKETVER >= 20120925 // new packets (not all) @@ -3914,4 +3929,119 @@ packet(0x96e,-1,clif->ackmergeitems); #endif #endif // PACKETVER_ZERO +// 2017-12-13bRagexe +#if PACKETVER >= 20171213 +// new packets + packet(0x0ae3,-1); // AC_LOGIN_OTP + packet(0x0ae6,30); + packet(0x0ae7,30); +// changed packet sizes +#endif + +// 2017-12-20aRagexe +#if PACKETVER >= 20171220 +// new packets + packet(0x0ae8,2); + packet(0x0ae9,64); + packet(0x0aea,11); +// changed packet sizes +#endif + +// 2017-12-27aRagexe +#if PACKETVER >= 20171227 +// new packets + packet(0x0aeb,11); + packet(0x0aec,2); +// changed packet sizes + packet(0x0aea,2); +#endif + +// 2018-01-03aRagexe +#if PACKETVER >= 20180103 +// new packets + packet(0x0aed,2); + packet(0x0aee,2); +// changed packet sizes +#ifdef PACKETVER_RE + packet(0x09a0,6); // HC_CHARLIST_NOTIFY +#endif +// changed packet sizes +#endif + +#if PACKETVER >= 20180117 +// new packets + packet(0x0aef,2); + packet(0x0af0,10); +// changed packet sizes + packet(0x0ae9,13); +#endif + +// 2018-01-24bRagexeRE +#if PACKETVER >= 20180124 +// new packets + packet(0x0af2,40,clif->pDull/*,XXX*/); + packet(0x0af3,-1,clif->pDull/*,XXX*/); +// changed packet sizes +#ifndef PACKETVER_RE + packet(0x0821,102,clif->pDull/*,XXX*/); // AC_OTP_USER +#endif +#endif + +#ifdef PACKETVER_ZERO +// 2018-01-31dRagexe_zero +#if PACKETVER >= 20180131 +// new packets + packet(0x0af2,40,clif->pDull/*,XXX*/); + packet(0x0af3,-1,clif->pDull/*,XXX*/); + packet(0x0af4,11,clif->pDull/*,XXX*/); +// changed packet sizes + packet(0x0ae6,10,clif->pDull/*,XXX*/); +#endif +#endif // PACKETVER_ZERO + +#if PACKETVER >= 20180131 +// changed packet sizes + packet(0x0821,102); // AC_OTP_USER +#endif + +#ifdef PACKETVER_ZERO +// 2018-02-07bRagexe_zero +#if PACKETVER >= 20180207 +// new packets + packet(0x0af5,3); + packet(0x0af6,88); + packet(0x0af7,32); +// changed packet sizes +#endif +#else // PACKETVER_ZERO +// 2018-02-07bRagexeRE, 2018-02-07bRagexe +#if PACKETVER >= 20180207 +// new packets + packet(0x0af4,11); + packet(0x0af5,3); + packet(0x0af6,88); + packet(0x0af7,32); +// changed packet sizes + packet(0x0ae6,10); +#endif +#endif // PACKETVER_ZERO + +#ifdef PACKETVER_RE +// 2018-02-21aRagexeRE +#if PACKETVER >= 20180221 +// new packets +// changed packet sizes + packet(0x0206,35); // ZC_FRIENDS_STATE +#endif +#endif // PACKETVER_RE + +#ifndef PACKETVER_ZERO +// 2018-03-07bRagexe +#if PACKETVER >= 20180307 +// new packets +// changed packet sizes + packet(0x0206,35); // ZC_FRIENDS_STATE +#endif +#endif // PACKETVER_ZERO + #endif /* MAP_PACKETS_H */ diff --git a/src/map/packets_keys.h b/src/map/packets_keys_main.h index 61b1ac2b5..066e7d2c3 100644 --- a/src/map/packets_keys.h +++ b/src/map/packets_keys_main.h @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,8 +18,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef MAP_PACKETS_KEYS_H -#define MAP_PACKETS_KEYS_H +#ifndef MAP_PACKETS_MAIN_KEYS_H +#define MAP_PACKETS_MAIN_KEYS_H #ifndef packetKeys #define packetKeys(a,b,c) @@ -27,8 +27,12 @@ /* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */ +/* This file is autogenerated, please do not commit manual changes */ + // 2010-11-23aRagexe, 2010-11-24aRagexe, 2010-11-24dRagexe, 2010-11-24eRagexe, 2010-11-24fRagexe, 2010-11-26aRagexe -#if PACKETVER == 20101123 || PACKETVER == 20101124 || PACKETVER == 20101126 +#if PACKETVER == 20101123 || \ + PACKETVER == 20101124 || \ + PACKETVER == 20101126 packetKeys(0x49357D72,0x22C370A1,0x5F836591); #endif @@ -73,17 +77,21 @@ #endif // 2011-01-25aRagexe, 2011-01-26aRagexe, 2011-01-26bRagexe, 2011-01-31aRagexe -#if PACKETVER == 20110125 || PACKETVER == 20110126 || PACKETVER == 20110131 +#if PACKETVER == 20110125 || \ + PACKETVER == 20110126 || \ + PACKETVER == 20110131 packetKeys(0x6BB84BB0,0x4C004382,0x10AE3260); #endif // 2011-01-31bRagexe, 2011-02-01aRagexe -#if PACKETVER == 20110131 || PACKETVER == 20110201 +#if PACKETVER == 20110131 || \ + PACKETVER == 20110201 packetKeys(0x68871E62,0x60D17266,0x74726DAA); #endif // 2011-02-08aRagexe, 2011-02-10aRagexe, 2011-02-10bRagexe -#if PACKETVER == 20110208 || PACKETVER == 20110210 +#if PACKETVER == 20110208 || \ + PACKETVER == 20110210 packetKeys(0x72BA4E9D,0x281E1DF1,0x208255AA); #endif @@ -93,7 +101,10 @@ #endif // 2011-02-22aRagexe, 2011-02-23aRagexe, 2011-02-23bRagexe, 2011-02-24aRagexe, 2011-02-25aRagexe, 2011-02-25bRagexe -#if PACKETVER == 20110222 || PACKETVER == 20110223 || PACKETVER == 20110224 || PACKETVER == 20110225 +#if PACKETVER == 20110222 || \ + PACKETVER == 20110223 || \ + PACKETVER == 20110224 || \ + PACKETVER == 20110225 packetKeys(0x48F73B56,0x155F7D66,0x44AB57CE); #endif @@ -103,12 +114,14 @@ #endif // 2011-03-08aRagexe, 2011-03-09aRagexe, 2011-03-09bRagexe, 2011-03-09cRagexe, 2011-03-09dRagexe -#if PACKETVER == 20110308 || PACKETVER == 20110309 +#if PACKETVER == 20110308 || \ + PACKETVER == 20110309 packetKeys(0x003F1B20,0x7A1E12A3,0x34994AAD); #endif // 2011-03-15aRagexe, 2011-03-16aRagexe -#if PACKETVER == 20110315 || PACKETVER == 20110316 +#if PACKETVER == 20110315 || \ + PACKETVER == 20110316 packetKeys(0x62967D7D,0x34833D1A,0x26D45ECA); #endif @@ -118,7 +131,8 @@ #endif // 2011-03-29aRagexe, 2011-03-30aRagexe -#if PACKETVER == 20110329 || PACKETVER == 20110330 +#if PACKETVER == 20110329 || \ + PACKETVER == 20110330 packetKeys(0x06900BB7,0x45DB687B,0x197B017B); #endif @@ -158,7 +172,8 @@ #endif // 2011-05-23aRagexe, 2011-05-26bRagexe -#if PACKETVER == 20110523 || PACKETVER == 20110526 +#if PACKETVER == 20110523 || \ + PACKETVER == 20110526 packetKeys(0x69166916,0x69166916,0x69166916); #endif @@ -168,7 +183,9 @@ #endif // 2011-06-07aRagexe, 2011-06-08aRagexe, 2011-06-08bRagexe, 2011-06-08cRagexe, 2011-06-09aRagexe -#if PACKETVER == 20110607 || PACKETVER == 20110608 || PACKETVER == 20110609 +#if PACKETVER == 20110607 || \ + PACKETVER == 20110608 || \ + PACKETVER == 20110609 packetKeys(0x76B0426C,0x0DD74DEB,0x1F92228E); #endif @@ -193,7 +210,8 @@ #endif // 2011-07-11bRagexe, 2011-07-13aRagexe, 2011-07-13bRagexe -#if PACKETVER == 20110711 || PACKETVER == 20110713 +#if PACKETVER == 20110711 || \ + PACKETVER == 20110713 packetKeys(0x489C544B,0x33BA1C25,0x2DE66E4E); #endif @@ -218,12 +236,14 @@ #endif // 2011-08-16aRagexe, 2011-08-16aRagexeRE, 2011-08-17aRagexe, 2011-08-17aRagexeRE, 2011-08-17bRagexe, 2011-08-17bRagexeRE -#if PACKETVER == 20110816 || PACKETVER == 20110817 +#if PACKETVER == 20110816 || \ + PACKETVER == 20110817 packetKeys(0x053D5CED,0x3DED6DED,0x6DED6DED); #endif // 2011-08-23aRagexe, 2011-08-23aRagexeRE, 2011-08-24aRagexe, 2011-08-24aRagexeRE, 2011-08-24bRagexeRE -#if PACKETVER == 20110823 || PACKETVER == 20110824 +#if PACKETVER == 20110823 || \ + PACKETVER == 20110824 packetKeys(0x35C91401,0x262A5556,0x28FA03AA); #endif @@ -233,7 +253,8 @@ #endif // 2011-09-06aRagexe, 2011-09-06aRagexeRE, 2011-09-14aRagexe, 2011-09-14aRagexeRE -#if PACKETVER == 20110906 || PACKETVER == 20110914 +#if PACKETVER == 20110906 || \ + PACKETVER == 20110914 packetKeys(0x350124EC,0x39A14595,0x0DE56125); #endif @@ -243,22 +264,27 @@ #endif // 2011-09-28aRagexe, 2011-09-28aRagexe-retry, 2011-09-28aRagexeRE, 2011-09-29aRagexe, 2011-09-29aRagexeRE -#if PACKETVER == 20110928 || PACKETVER == 20110929 +#if PACKETVER == 20110928 || \ + PACKETVER == 20110929 packetKeys(0x26567512,0x4B0732DF,0x57D266C6); #endif // 2011-10-04aRagexe, 2011-10-04aRagexeRE, 2011-10-05aRagexe, 2011-10-05aRagexeRE -#if PACKETVER == 20111004 || PACKETVER == 20111005 +#if PACKETVER == 20111004 || \ + PACKETVER == 20111005 packetKeys(0x291E6762,0x77CD391A,0x60AC2F16); #endif // 2011-10-10aRagexe, 2011-10-10bRagexeRE, 2011-10-12aRagexeRE, 2011-10-12bRagexe -#if PACKETVER == 20111010 || PACKETVER == 20111012 +#if PACKETVER == 20111010 || \ + PACKETVER == 20111012 packetKeys(0x7F3C2D29,0x59B01DE6,0x1DBB44CA); #endif // 2011-10-17aRagexe, 2011-10-17aRagexeRE, 2011-10-19aRagexeRE, 2011-10-19bRagexeRE, 2011-10-21aRagexe, 2011-10-21aRagexeRE, 2011-10-21cRagexe -#if PACKETVER == 20111017 || PACKETVER == 20111019 || PACKETVER == 20111021 +#if PACKETVER == 20111017 || \ + PACKETVER == 20111019 || \ + PACKETVER == 20111021 packetKeys(0x357D55DC,0x5A8D759F,0x245C30F5); #endif @@ -268,22 +294,26 @@ #endif // 2011-11-01cRagexe, 2011-11-01cRagexeRE, 2011-11-02aRagexe, 2011-11-02aRagexeRE -#if PACKETVER == 20111101 || PACKETVER == 20111102 +#if PACKETVER == 20111101 || \ + PACKETVER == 20111102 packetKeys(0x5324329D,0x5D545D52,0x06137269); #endif // 2011-11-08aRagexe, 2011-11-08aRagexeRE, 2011-11-09aRagexe, 2011-11-09aRagexeRE, 2011-11-09bRagexe, 2011-11-09cRagexe, 2011-11-09dRagexe, 2011-11-09eRagexe -#if PACKETVER == 20111108 || PACKETVER == 20111109 +#if PACKETVER == 20111108 || \ + PACKETVER == 20111109 packetKeys(0x0B642BDA,0x6ECB1D1C,0x61C7454B); #endif // 2011-11-14aRagexe, 2011-11-14aRagexeRE, 2011-11-16aRagexe, 2011-11-16aRagexeRE -#if PACKETVER == 20111114 || PACKETVER == 20111116 +#if PACKETVER == 20111114 || \ + PACKETVER == 20111116 packetKeys(0x419D0DB0,0x74916BF4,0x027371B4); #endif // 2011-11-22aRagexe, 2011-11-22aRagexeRE, 2011-11-23aRagexe -#if PACKETVER == 20111122 || PACKETVER == 20111123 +#if PACKETVER == 20111122 || \ + PACKETVER == 20111123 packetKeys(0x3B550F07,0x1F666C7C,0x60304EF5); #endif @@ -293,7 +323,8 @@ #endif // 2011-12-13aRagexe, 2011-12-13aRagexeRE, 2011-12-14aRagexe, 2011-12-14aRagexeRE, 2011-12-14bRagexeRE, 2011-12-14cRagexeRE -#if PACKETVER == 20111213 || PACKETVER == 20111214 +#if PACKETVER == 20111213 || \ + PACKETVER == 20111214 packetKeys(0x5151306B,0x7AE32886,0x53060628); #endif @@ -303,12 +334,14 @@ #endif // 2011-12-27aRagexe, 2011-12-27aRagexeRE, 2011-12-28aRagexe, 2011-12-28aRagexeRE -#if PACKETVER == 20111227 || PACKETVER == 20111228 +#if PACKETVER == 20111227 || \ + PACKETVER == 20111228 packetKeys(0x0FF87E93,0x6CFF7860,0x3A3D1DEC); #endif // 2012-01-03aRagexe, 2012-01-03bRagexeRE, 2012-01-04aRagexe, 2012-01-04aRagexeRE, 2012-01-04bRagexe -#if PACKETVER == 20120103 || PACKETVER == 20120104 +#if PACKETVER == 20120103 || \ + PACKETVER == 20120104 packetKeys(0x262034A1,0x674542A5,0x73A50BA5); #endif @@ -318,7 +351,8 @@ #endif // 2012-01-17aRagexe, 2012-01-17aRagexeRE, 2012-01-18aRagexe -#if PACKETVER == 20120117 || PACKETVER == 20120118 +#if PACKETVER == 20120117 || \ + PACKETVER == 20120118 packetKeys(0x24E32C2E,0x48DD17A5,0x64F8771A); #endif @@ -328,27 +362,34 @@ #endif // 2012-01-31aRagexe, 2012-01-31cRagexeRE, 2012-02-01aRagexeRE, 2012-02-02aRagexe, 2012-02-02aRagexeRE, 2012-02-02bRagexe, 2012-02-02bRagexeRE -#if PACKETVER == 20120131 || PACKETVER == 20120201 || PACKETVER == 20120202 +#if PACKETVER == 20120131 || \ + PACKETVER == 20120201 || \ + PACKETVER == 20120202 packetKeys(0x2CFC0A71,0x2BA91D8D,0x087E39E0); #endif // 2012-02-07bRagexe, 2012-02-07bRagexeRE, 2012-02-08aRagexe, 2012-02-09aRagexe -#if PACKETVER == 20120207 || PACKETVER == 20120208 || PACKETVER == 20120209 +#if PACKETVER == 20120207 || \ + PACKETVER == 20120208 || \ + PACKETVER == 20120209 packetKeys(0x1D373F5D,0x5ACD604D,0x1C4D7C4D); #endif // 2012-02-14bRagexe, 2012-02-14bRagexeRE, 2012-02-15aRagexe -#if PACKETVER == 20120214 || PACKETVER == 20120215 +#if PACKETVER == 20120214 || \ + PACKETVER == 20120215 packetKeys(0x7A255EFA,0x30977276,0x2D4A0448); #endif // 2012-02-21aRagexe, 2012-02-21aRagexeRE, 2012-02-22aRagexe, 2012-02-22aRagexeRE -#if PACKETVER == 20120221 || PACKETVER == 20120222 +#if PACKETVER == 20120221 || \ + PACKETVER == 20120222 packetKeys(0x1CA5130F,0x43ED240A,0x7FEA3BE0); #endif // 2012-02-28bRagexe, 2012-02-28bRagexeRE, 2012-02-29aRagexe, 2012-02-29aRagexeRE -#if PACKETVER == 20120228 || PACKETVER == 20120229 +#if PACKETVER == 20120228 || \ + PACKETVER == 20120229 packetKeys(0x520B4C64,0x2800407D,0x47651458); #endif @@ -363,7 +404,8 @@ #endif // 2012-03-20aRagexe, 2012-03-20aRagexeRE, 2012-03-21aRagexeRE -#if PACKETVER == 20120320 || PACKETVER == 20120321 +#if PACKETVER == 20120320 || \ + PACKETVER == 20120321 packetKeys(0x21F9683F,0x710C5CA5,0x1FD910E9); #endif @@ -383,7 +425,8 @@ #endif // 2012-04-17aRagexe, 2012-04-17aRagexeRE, 2012-04-18aRagexeRE -#if PACKETVER == 20120417 || PACKETVER == 20120418 +#if PACKETVER == 20120417 || \ + PACKETVER == 20120418 packetKeys(0x01540E48,0x13041224,0x31247924); #endif @@ -393,12 +436,14 @@ #endif // 2012-05-02aRagexeRE, 2012-05-03aRagexe, 2012-05-03aRagexeRE, 2012-05-03bRagexe -#if PACKETVER == 20120502 || PACKETVER == 20120503 +#if PACKETVER == 20120502 || \ + PACKETVER == 20120503 packetKeys(0x37A91D19,0x10190019,0x00190019); #endif // 2012-05-08aRagexe, 2012-05-08aRagexeRE, 2012-05-09aRagexeRE, 2012-05-09bRagexeRE -#if PACKETVER == 20120508 || PACKETVER == 20120509 +#if PACKETVER == 20120508 || \ + PACKETVER == 20120509 packetKeys(0x16CF3301,0x1F472B9B,0x0B4A3CD2); #endif @@ -408,7 +453,9 @@ #endif // 2012-05-22aRagexe, 2012-05-23aRagexe, 2012-05-23aRagexeRE, 2012-05-23bRagexeRE, 2012-05-25aRagexeRE -#if PACKETVER == 20120522 || PACKETVER == 20120523 || PACKETVER == 20120525 +#if PACKETVER == 20120522 || \ + PACKETVER == 20120523 || \ + PACKETVER == 20120525 packetKeys(0x70EB4CCB,0x0487713C,0x398D4B08); #endif @@ -418,7 +465,9 @@ #endif // 2012-06-01aRagexeRE, 2012-06-04aRagexe, 2012-06-05aRagexeRE -#if PACKETVER == 20120601 || PACKETVER == 20120604 || PACKETVER == 20120605 +#if PACKETVER == 20120601 || \ + PACKETVER == 20120604 || \ + PACKETVER == 20120605 packetKeys(0x68CA3080,0x31B74BDD,0x505208F1); #endif @@ -433,7 +482,8 @@ #endif // 2012-06-26aRagexe, 2012-06-26aRagexeRE, 2012-06-27aRagexe, 2012-06-27aRagexeRE -#if PACKETVER == 20120626 || PACKETVER == 20120627 +#if PACKETVER == 20120626 || \ + PACKETVER == 20120627 packetKeys(0x02277E66,0x045723F1,0x7107392C); #endif @@ -443,7 +493,8 @@ #endif // 2012-07-10aRagexe, 2012-07-10aRagexeRE, 2012-07-12aRagexe, 2012-07-12aRagexeRE -#if PACKETVER == 20120710 || PACKETVER == 20120712 +#if PACKETVER == 20120710 || \ + PACKETVER == 20120712 packetKeys(0x0E8B7AFB,0x6930362D,0x42D33A57); #endif @@ -498,12 +549,14 @@ #endif // 2012-09-25aRagexe, 2012-09-25aRagexeRE, 2012-09-26aRagexe, 2012-09-26aRagexeRE -#if PACKETVER == 20120925 || PACKETVER == 20120926 +#if PACKETVER == 20120925 || \ + PACKETVER == 20120926 packetKeys(0x43A66E22,0x36C2229F,0x08172ECE); #endif // 2012-10-10aRagexe, 2012-10-10aRagexeRE, 2012-10-10bRagexe, 2012-10-10bRagexeRE, 2012-10-11aRagexeRE -#if PACKETVER == 20121010 || PACKETVER == 20121011 +#if PACKETVER == 20121010 || \ + PACKETVER == 20121011 packetKeys(0x169733E2,0x4C4640DC,0x31636531); #endif @@ -563,7 +616,8 @@ #endif // 2013-01-03aRagexe, 2013-01-03aRagexeRE, 2013-01-07aRagexe -#if PACKETVER == 20130103 || PACKETVER == 20130107 +#if PACKETVER == 20130103 || \ + PACKETVER == 20130107 packetKeys(0x1E1A559A,0x199A799A,0x799A799A); #endif @@ -573,7 +627,8 @@ #endif // 2013-01-15aRagexeRE, 2013-01-15bRagexe, 2013-01-16aRagexe, 2013-01-16aRagexeRE, 2013-01-16bRagexe -#if PACKETVER == 20130115 || PACKETVER == 20130116 +#if PACKETVER == 20130115 || \ + PACKETVER == 20130116 packetKeys(0x273C25CD,0x06AA48AF,0x45A01BD4); #endif @@ -662,17 +717,17 @@ packetKeys(0x75794A38,0x58A96BC1,0x296E6FB8); #endif -// 2013-05-22Ragexe, 2013-05-22aRagexe, 2013-05-22aRagexeRE +// 2013-05-22aRagexe, 2013-05-22aRagexeRE #if PACKETVER == 20130522 packetKeys(0x6948050B,0x06511D9D,0x725D4DF1); #endif -// 2013-05-29Ragexe, 2013-05-29aRagexe, 2013-05-29aRagexeRE +// 2013-05-29aRagexe, 2013-05-29aRagexeRE #if PACKETVER == 20130529 packetKeys(0x023A6C87,0x14BF1F1E,0x5CC70CC9); #endif -// 2013-06-05Ragexe, 2013-06-05aRagexe, 2013-06-05bRagexe, 2013-06-05cRagexeRE +// 2013-06-05aRagexe, 2013-06-05bRagexe, 2013-06-05cRagexeRE #if PACKETVER == 20130605 packetKeys(0x646E08D9,0x5F153AB5,0x61B509B5); #endif @@ -682,12 +737,12 @@ packetKeys(0x6D166F66,0x3C000FCF,0x295B0FCB); #endif -// 2013-06-18aRagexe, 2013-06-18aRagexeRE +// 2013-06-18#1aRagexe, 2013-06-18#1aRagexeRE, 2013-06-18aRagexe, 2013-06-18aRagexeRE #if PACKETVER == 20130618 packetKeys(0x434115DE,0x34A10FE9,0x6791428E); #endif -// 2013-06-26aRagexeRE, 2013-06-26bRagexe, 2013-06-26bRagexeRE, 2013-06-26cRagexe +// 2013-06-26_3bRagexeRE, 2013-06-26_3cRagexe, 2013-06-26aRagexeRE, 2013-06-26bRagexe, 2013-06-26bRagexeRE, 2013-06-26cRagexe #if PACKETVER == 20130626 packetKeys(0x38F453EF,0x6A040FD8,0x65BD6668); #endif @@ -782,8 +837,10 @@ packetKeys(0x4A6A3EFF,0x7E2D5237,0x01CA019E); #endif -// 2013-11-06aRagexe, 2013-11-06aRagexeRE, 2013-11-07aRagexe, 2013-11-07cRagexe, 2013-11-08aRagexe -#if PACKETVER == 20131106 || PACKETVER == 20131107 || PACKETVER == 20131108 +// 2013-11-06aRagexe, 2013-11-06aRagexeRE, 2013-11-07aRagexe, 2013-11-07bRagexe, 2013-11-07cRagexe, 2013-11-08aRagexe +#if PACKETVER == 20131106 || \ + PACKETVER == 20131107 || \ + PACKETVER == 20131108 packetKeys(0x143E528F,0x5CA05899,0x44B85B23); #endif @@ -807,7 +864,7 @@ packetKeys(0x792760B2,0x5AF45387,0x36165603); #endif -// 2013-12-11cRagexeRE, 2013-12-11dRagexe, 2013-12-11eRagexeRE +// 2013-12-11cRagexe, 2013-12-11cRagexeRE, 2013-12-11dRagexe, 2013-12-11eRagexeRE #if PACKETVER == 20131211 packetKeys(0x55B0394E,0x4D341FF2,0x60BC1DC3); #endif @@ -817,8 +874,11 @@ packetKeys(0x6A596301,0x76866D0E,0x32294A45); #endif -// 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-06-11eRagexe, 2015-02-25hRagexe -#if PACKETVER == 20131223 || PACKETVER == 20140508 || PACKETVER == 20140611 || PACKETVER == 20150225 +// 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe +#if PACKETVER == 20131223 || \ + PACKETVER == 20140508 || \ + PACKETVER == 20140611 || \ + PACKETVER == 20150225 packetKeys(0x00000000,0x00000000,0x00000000); #endif @@ -837,7 +897,7 @@ packetKeys(0x4A1E26F2,0x231E7EFE,0x61FE19FE); #endif -// 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexe, 2014-01-15eRagexeRE +// 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexe, 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexe, 2014-01-15eRagexeRE #if PACKETVER == 20140115 packetKeys(0x63224335,0x0F3A1F27,0x6D217B24); #endif @@ -882,7 +942,7 @@ packetKeys(0x48911E4E,0x58CB2EB3,0x05232619); #endif -// 2014-03-19aRagexeRE +// 2014-03-19aRagexe, 2014-03-19aRagexeRE #if PACKETVER == 20140319 packetKeys(0x3DA44383,0x1ABB165F,0x5B6846B9); #endif @@ -912,7 +972,7 @@ packetKeys(0x7E0D6B56,0x74673CD3,0x2EBA4940); #endif -// 2014-04-30aRagexeRE +// 2014-04-30aRagexe, 2014-04-30aRagexeRE #if PACKETVER == 20140430 packetKeys(0x400145D8,0x3FE50155,0x11624F70); #endif @@ -943,7 +1003,9 @@ #endif // 2014-06-11bRagexeRE, 2014-06-11cRagexe, 2014-06-11dRagexe, 2014-06-11hRagexe, 2014-06-12aRagexe, 2014-06-13aRagexe -#if PACKETVER == 20140611 || PACKETVER == 20140612 || PACKETVER == 20140613 +#if PACKETVER == 20140611 || \ + PACKETVER == 20140612 || \ + PACKETVER == 20140613 packetKeys(0x4FC83479,0x3AB04D1F,0x477B4010); #endif @@ -988,7 +1050,8 @@ #endif // 2014-08-13aRagexe, 2014-08-13aRagexeRE, 2014-08-13bRagexe, 2014-08-14aRagexe -#if PACKETVER == 20140813 || PACKETVER == 20140814 +#if PACKETVER == 20140813 || \ + PACKETVER == 20140814 packetKeys(0x7AD51E0A,0x28C72C46,0x210205BD); #endif @@ -997,7 +1060,7 @@ packetKeys(0x374F15D0,0x64C87DEC,0x65CE2A41); #endif -// 2014-08-27aRagexe +// 2014-08-27aRagexe, 2014-08-27aRagexeRE #if PACKETVER == 20140827 packetKeys(0x53814CA2,0x27DE193E,0x503E683E); #endif @@ -1007,7 +1070,7 @@ packetKeys(0x2F386F34,0x0F935365,0x76A43888); #endif -// 2014-09-17aRagexe +// 2014-09-17aRagexe, 2014-09-17cRagexeRE #if PACKETVER == 20140917 packetKeys(0x180118EA,0x440134CF,0x3A99179D); #endif @@ -1028,7 +1091,8 @@ #endif // 2014-10-15bRagexe, 2014-10-15bRagexeRE, 2014-10-15cRagexe, 2014-10-15dRagexe, 2014-10-16aRagexe, 2014-10-16aRagexeRE -#if PACKETVER == 20141015 || PACKETVER == 20141016 +#if PACKETVER == 20141015 || \ + PACKETVER == 20141016 packetKeys(0x2DFF467C,0x444B37EE,0x2C1B634F); #endif @@ -1072,13 +1136,14 @@ packetKeys(0x0B0B1DD3,0x26EF1797,0x4F40370B); #endif -// 2014-12-17aRagexeRE +// 2014-12-17aRagexe, 2014-12-17aRagexeRE #if PACKETVER == 20141217 packetKeys(0x01AB478C,0x0FDE58F2,0x1DAC7303); #endif // 2014-12-23cRagexeRE, 2014-12-24aRagexe -#if PACKETVER == 20141223 || PACKETVER == 20141224 +#if PACKETVER == 20141223 || \ + PACKETVER == 20141224 packetKeys(0x2E8936E6,0x34463C46,0x67CD3885); #endif @@ -1103,7 +1168,9 @@ #endif // 2015-01-28aRagexe, 2015-01-28aRagexeRE, 2015-01-29aRagexe, 2015-01-30aRagexe -#if PACKETVER == 20150128 || PACKETVER == 20150129 || PACKETVER == 20150130 +#if PACKETVER == 20150128 || \ + PACKETVER == 20150129 || \ + PACKETVER == 20150130 packetKeys(0x77CA2D55,0x28B608F0,0x75B47957); #endif @@ -1123,7 +1190,8 @@ #endif // 2015-02-25aRagexeRE, 2015-02-25bRagexeRE, 2015-02-25cRagexeRE, 2015-02-25dRagexeRE, 2015-02-25eRagexe, 2015-02-25eRagexeRE, 2015-02-25fRagexe, 2015-02-25gRagexe, 2015-02-25iRagexe, 2015-02-25jRagexe, 2015-02-26aRagexe, 2015-02-26aRagexeRE -#if PACKETVER == 20150225 || PACKETVER == 20150226 +#if PACKETVER == 20150225 || \ + PACKETVER == 20150226 packetKeys(0x57FD4B7B,0x19CC16FB,0x0D255D72); #endif @@ -1203,7 +1271,8 @@ #endif // 2015-06-17aRagexe, 2015-06-17aRagexeRE, 2015-06-18aRagexe, 2015-06-18aRagexeRE -#if PACKETVER == 20150617 || PACKETVER == 20150618 +#if PACKETVER == 20150617 || \ + PACKETVER == 20150618 packetKeys(0x250F7E09,0x25416076,0x029A780E); #endif @@ -1212,8 +1281,9 @@ packetKeys(0x440B0E24,0x1BEA7A4C,0x2C646784); #endif -// 2015-07-01bRagexeRE, 2015-07-02aRagexe -#if PACKETVER == 20150701 || PACKETVER == 20150702 +// 2015-07-01bRagexe, 2015-07-01bRagexeRE, 2015-07-02aRagexe +#if PACKETVER == 20150701 || \ + PACKETVER == 20150702 packetKeys(0x4DD55F9B,0x70C67B03,0x78C60DB6); #endif @@ -1227,7 +1297,7 @@ packetKeys(0x1F805483,0x67745585,0x7FCE189C); #endif -// 2015-07-22bRagexeRE +// 2015-07-22bRagexe, 2015-07-22bRagexeRE #if PACKETVER == 20150722 packetKeys(0x41FA53D4,0x2CF044E2,0x663A3F1D); #endif @@ -1267,12 +1337,12 @@ packetKeys(0x19AB2BF0,0x04754299,0x48770736); #endif -// 2015-09-16aRagexe, 2015-09-16aRagexeRE, 2015-09-16cRagexe, 2015-09-16cRagexeRE +// 2015-09-16aRagexe, 2015-09-16cRagexe, 2015-09-16cRagexeRE #if PACKETVER == 20150916 packetKeys(0x17F83A19,0x116944F4,0x1CC541E9); #endif -// 2015-09-23bRagexe, 2015-09-23bRagexeRE, 2015-09-23cRagexe, 2015-09-23eRagexe, 2015-09-23eRagexeRE, 2015-09-23fRagexe, 2015-09-23fRagexeRE +// 2015-09-23bRagexe, 2015-09-23bRagexeRE, 2015-09-23cRagexe, 2015-09-23dRagexe, 2015-09-23eRagexe, 2015-09-23eRagexeRE, 2015-09-23fRagexe, 2015-09-23fRagexeRE #if PACKETVER == 20150923 packetKeys(0x765742B9,0x22D61C2F,0x7DA94FB2); #endif @@ -1292,13 +1362,15 @@ packetKeys(0x402728A8,0x5D0E309F,0x240018FD); #endif -// 2015-10-21aRagexe, 2015-10-22aRagexe, 2015-10-22aRagexeRE -#if PACKETVER == 20151021 || PACKETVER == 20151022 +// 2015-10-21aRagexe, 2015-10-21aRagexeRE, 2015-10-22aRagexe, 2015-10-22aRagexeRE +#if PACKETVER == 20151021 || \ + PACKETVER == 20151022 packetKeys(0x0311104D,0x46C326D6,0x00E82720); #endif -// 2015-10-28cRagexe, 2015-10-28cRagexeRE, 2015-10-28dRagexe, 2015-10-28dRagexeRE, 2015-10-29aRagexe, 2015-10-29aRagexeRE -#if PACKETVER == 20151028 || PACKETVER == 20151029 +// 2015-10-28bRagexeRE, 2015-10-28bRagexeRE_2, 2015-10-28cRagexe, 2015-10-28cRagexeRE, 2015-10-28dRagexe, 2015-10-28dRagexeRE, 2015-10-29aRagexe, 2015-10-29aRagexeRE +#if PACKETVER == 20151028 || \ + PACKETVER == 20151029 packetKeys(0x45B945B9,0x45B945B9,0x45B945B9); #endif @@ -1342,7 +1414,7 @@ packetKeys(0x347D68D0,0x2C705320,0x7B4A199D); #endif -// 2015-12-30aRagexe +// 2015-12-30aRagexe, 2015-12-30aRagexeRE #if PACKETVER == 20151230 packetKeys(0x54C51241,0x33883499,0x3CDA35F0); #endif @@ -1352,7 +1424,7 @@ packetKeys(0x40520265,0x33FE26FC,0x7136294F); #endif -// 2016-01-13aRagexe, 2016-01-13aRagexeRE, 2016-01-13bRagexe, 2016-01-13bRagexeRE, 2016-01-13cRagexeRE +// 2016-01-13aRagexe, 2016-01-13aRagexeRE, 2016-01-13bRagexe, 2016-01-13bRagexeRE, 2016-01-13bRagexeRE_2, 2016-01-13bRagexe_2, 2016-01-13cRagexeRE #if PACKETVER == 20160113 packetKeys(0x18005C4B,0x19A94A72,0x73F678EC); #endif @@ -1362,7 +1434,7 @@ packetKeys(0x51495149,0x51495149,0x51495149); #endif -// 2016-01-27aRagexeRE, 2016-01-27bRagexeRE, 2016-01-27cRagexe, 2016-01-27dRagexe +// 2016-01-27aRagexeRE, 2016-01-27aRagexeRE_2, 2016-01-27bRagexeRE, 2016-01-27cRagexe, 2016-01-27dRagexe #if PACKETVER == 20160127 packetKeys(0x6B1E7146,0x612C47E6,0x274E56EE); #endif @@ -1377,7 +1449,7 @@ packetKeys(0x613813EA,0x05251DAB,0x1FD35E33); #endif -// 2016-02-17aRagexe, 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17cRagexeRE +// 2016-02-17aRagexe, 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17bRagexeRE_2, 2016-02-17cRagexeRE #if PACKETVER == 20160217 packetKeys(0x25895A8E,0x09421C19,0x763A2D7A); #endif @@ -1398,11 +1470,12 @@ #endif // 2016-03-16aRagexe, 2016-03-16aRagexeRE, 2016-03-18aRagexe -#if PACKETVER == 20160316 || PACKETVER == 20160318 +#if PACKETVER == 20160316 || \ + PACKETVER == 20160318 packetKeys(0x62363E36,0x3E363E36,0x3E363E36); #endif -// 2016-03-23aRagexe, 2016-03-23aRagexeRE, 2016-03-23bRagexe +// 2016-03-23aRagexe, 2016-03-23aRagexeRE, 2016-03-23bRagexe, 2016-03-23bRagexeRE #if PACKETVER == 20160323 packetKeys(0x73E35A83,0x62142FA8,0x12BA36BD); #endif @@ -1417,7 +1490,7 @@ packetKeys(0x568611EA,0x32457D8D,0x2B020477); #endif -// 2016-04-14aRagexe, 2016-04-14aRagexeRE, 2016-04-14bRagexe, 2016-04-14bRagexeRE, 2016-04-14cRagexe +// 2016-04-14aRagexe, 2016-04-14aRagexeRE, 2016-04-14bRagexe, 2016-04-14bRagexeRE, 2016-04-14bRagexe_2, 2016-04-14cRagexe #if PACKETVER == 20160414 packetKeys(0x31BD479A,0x40C61398,0x397C1A80); #endif @@ -1427,7 +1500,7 @@ packetKeys(0x67D2163A,0x3068215B,0x4835474D); #endif -// 2016-04-27aRagexeRE +// 2016-04-27aRagexe, 2016-04-27aRagexeRE #if PACKETVER == 20160427 packetKeys(0x12DC378E,0x4E3E7EBE,0x0ABE2ABE); #endif @@ -1448,7 +1521,8 @@ #endif // 2016-05-25aRagexe, 2016-05-25aRagexeRE, 2016-05-26aRagexe -#if PACKETVER == 20160525 || PACKETVER == 20160526 +#if PACKETVER == 20160525 || \ + PACKETVER == 20160526 packetKeys(0x485C45B6,0x47DC6192,0x76B34A36); #endif @@ -1458,7 +1532,8 @@ #endif // 2016-06-08aRagexe, 2016-06-08aRagexeRE, 2016-06-08bRagexe, 2016-06-08bRagexeRE, 2016-06-09aRagexe -#if PACKETVER == 20160608 || PACKETVER == 20160609 +#if PACKETVER == 20160608 || \ + PACKETVER == 20160609 packetKeys(0x11D74609,0x77C43E8A,0x44290F53); #endif @@ -1473,7 +1548,8 @@ #endif // 2016-06-29aRagexe, 2016-06-29aRagexeRE, 2016-06-30aRagexe, 2016-06-30aRagexeRE -#if PACKETVER == 20160629 || PACKETVER == 20160630 +#if PACKETVER == 20160629 || \ + PACKETVER == 20160630 packetKeys(0x0DF31CCC,0x54281606,0x5C4C6855); #endif @@ -1482,37 +1558,42 @@ packetKeys(0x33A766D0,0x743F04F8,0x0FA0276C); #endif -// 2016-07-13aRagexeRE, 2016-07-13bRagexeRE, 2016-07-13dRagexe +// 2016-07-13aRagexe, 2016-07-13aRagexeRE, 2016-07-13bRagexe, 2016-07-13bRagexeRE, 2016-07-13cRagexe, 2016-07-13dRagexe #if PACKETVER == 20160713 packetKeys(0x714F2495,0x7DDC6F32,0x3FD8533D); #endif -// 2016-07-20aRagexe, 2016-07-20aRagexeRE, 2016-07-20bRagexeRE +// 2016-07-20aRagexe, 2016-07-20aRagexeRE, 2016-07-20bRagexe, 2016-07-20bRagexeRE #if PACKETVER == 20160720 packetKeys(0x4F8A19C0,0x2D8E085C,0x37BB67D6); #endif -// 2016-07-27aRagexeRE, 2016-07-27bRagexeRE +// 2016-07-27aRagexe, 2016-07-27aRagexeRE, 2016-07-27bRagexe, 2016-07-27bRagexeRE #if PACKETVER == 20160727 packetKeys(0x3C6952AB,0x26E4077F,0x37E25DF7); #endif -// 2016-08-03bRagexeRE +// 2016-08-03bRagexe, 2016-08-03bRagexeRE #if PACKETVER == 20160803 packetKeys(0x67F438C2,0x512A4EB7,0x2D353182); #endif -// 2016-08-10aRagexeRE +// 2016-08-10aRagexe, 2016-08-10aRagexeRE #if PACKETVER == 20160810 packetKeys(0x2F252886,0x242234A2,0x48BC5032); #endif -// 2016-08-17aRagexe +// 2016-08-17aRagexe, 2016-08-17aRagexeRE #if PACKETVER == 20160817 packetKeys(0x675E6900,0x3F8E1D16,0x58D650E5); #endif -// 2016-08-31aRagexeRE, 2016-08-31bRagexeRE +// 2016-08-24aRagexe, 2016-08-24aRagexeRE +#if PACKETVER == 20160824 + packetKeys(0x2FA92FA9,0x2FA92FA9,0x2FA92FA9); +#endif + +// 2016-08-31aRagexe, 2016-08-31aRagexeRE, 2016-08-31bRagexe, 2016-08-31bRagexeRE #if PACKETVER == 20160831 packetKeys(0x564E13B0,0x7F680549,0x382D273B); #endif @@ -1527,42 +1608,43 @@ packetKeys(0x7C79748F,0x1AA03B1D,0x6EAC4747); #endif -// 2016-09-21bRagexeRE +// 2016-09-21aRagexe, 2016-09-21bRagexeRE #if PACKETVER == 20160921 packetKeys(0x11CD15CD,0x15CD15CD,0x15CD15CD); #endif -// 2016-09-28cRagexeRE, 2016-09-28dRagexeRE +// 2016-09-28cRagexe, 2016-09-28cRagexeRE, 2016-09-28dRagexeRE #if PACKETVER == 20160928 packetKeys(0x2F8C67F5,0x22D42C38,0x57513774); #endif -// 2016-10-05aRagexeRE +// 2016-10-05aRagexe, 2016-10-05aRagexeRE #if PACKETVER == 20161005 packetKeys(0x5BAE21F8,0x021E2FFC,0x3BEB7C31); #endif -// 2016-10-12aRagexeRE +// 2016-10-12aRagexe, 2016-10-12aRagexeRE #if PACKETVER == 20161012 packetKeys(0x5E2311F2,0x14FD012C,0x76EB64F6); #endif -// 2016-10-19aRagexeRE +// 2016-10-19aRagexe, 2016-10-19aRagexeRE #if PACKETVER == 20161019 packetKeys(0x34882F11,0x7C870E70,0x7E61350D); #endif -// 2016-10-26bRagexeRE, 2016-10-26cRagexeRE +// 2016-10-26bRagexe, 2016-10-26bRagexeRE, 2016-10-26cRagexe, 2016-10-26cRagexeRE #if PACKETVER == 20161026 packetKeys(0x2CB86AE6,0x7D12660E,0x1B004DEB); #endif -// 2016-11-02aRagexe, 2016-11-02aRagexeRE, 2016-11-03aRagexeRE -#if PACKETVER == 20161102 || PACKETVER == 20161103 +// 2016-11-02aRagexe, 2016-11-02aRagexeRE, 2016-11-03aRagexe, 2016-11-03aRagexeRE +#if PACKETVER == 20161102 || \ + PACKETVER == 20161103 packetKeys(0x76725C17,0x72FE4EC1,0x07A91BFD); #endif -// 2016-11-09aRagexe, 2016-11-09aRagexeRE, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE +// 2016-11-09aRagexe, 2016-11-09aRagexeRE, 2016-11-09bRagexe, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE #if PACKETVER == 20161109 packetKeys(0x0A5277C0,0x2DB17506,0x0E8F26DA); #endif @@ -1577,22 +1659,22 @@ packetKeys(0x66FF559F,0x00D3535B,0x236246F7); #endif -// 2016-11-30aRagexeRE, 2016-11-30bRagexeRE +// 2016-11-30aRagexe, 2016-11-30aRagexeRE, 2016-11-30bRagexe, 2016-11-30bRagexeRE #if PACKETVER == 20161130 packetKeys(0x2ED80296,0x0D837373,0x20266F9A); #endif -// 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexeRE +// 2016-12-07cRagexe, 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexe, 2016-12-07eRagexeRE #if PACKETVER == 20161207 packetKeys(0x52D267AA,0x4FE42156,0x1292153E); #endif -// 2016-12-14bRagexeRE, 2016-12-14cRagexe, 2016-12-14cRagexeRE +// 2016-12-14bRagexe, 2016-12-14bRagexeRE, 2016-12-14cRagexe, 2016-12-14cRagexeRE #if PACKETVER == 20161214 packetKeys(0x4DDE217B,0x07863AE0,0x5B591656); #endif -// 2016-12-21aRagexeRE, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE +// 2016-12-21aRagexe, 2016-12-21aRagexeRE, 2016-12-21bRagexe, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE #if PACKETVER == 20161221 packetKeys(0x69CB4F56,0x793C165E,0x673A2354); #endif @@ -1602,12 +1684,12 @@ packetKeys(0x09366971,0x005672F1,0x6F3712AE); #endif -// 2017-01-04bRagexeRE +// 2017-01-04aRagexe, 2017-01-04bRagexeRE #if PACKETVER == 20170104 packetKeys(0x44416BC3,0x6C8D1817,0x072D75D5); #endif -// 2017-01-11aRagexeRE +// 2017-01-11aRagexe, 2017-01-11aRagexeRE #if PACKETVER == 20170111 packetKeys(0x19B637F9,0x0E9C378A,0x41673186); #endif @@ -1627,12 +1709,12 @@ packetKeys(0x2011228E,0x00453005,0x628E7F0A); #endif -// 2017-02-08aRagexeRE, 2017-02-08bRagexeRE +// 2017-02-08aRagexeRE, 2017-02-08bRagexe, 2017-02-08bRagexeRE #if PACKETVER == 20170208 packetKeys(0x6A764E5F,0x0609570D,0x28AE07FA); #endif -// 2017-02-15aRagexeRE +// 2017-02-15aRagexe, 2017-02-15aRagexeRE #if PACKETVER == 20170215 packetKeys(0x50C01315,0x51012A42,0x679E16C3); #endif @@ -1647,7 +1729,7 @@ packetKeys(0x771D4F2B,0x20EF1F4C,0x0D5135C8); #endif -// 2017-03-08bRagexeRE +// 2017-03-08aRagexe, 2017-03-08bRagexeRE #if PACKETVER == 20170308 packetKeys(0x653470A9,0x6B316A71,0x5C712C71); #endif @@ -1657,12 +1739,12 @@ packetKeys(0x399A0856,0x56642A94,0x7F77157D); #endif -// 2017-03-22aRagexeRE, 2017-03-22bRagexeRE +// 2017-03-22aRagexe, 2017-03-22aRagexeRE, 2017-03-22bRagexe, 2017-03-22bRagexeRE #if PACKETVER == 20170322 packetKeys(0x2050167B,0x01731233,0x40337033); #endif -// 2017-03-29cRagexe, 2017-03-29cRagexeRE, 2017-03-29dRagexeRE +// 2017-03-29bRagexe, 2017-03-29cRagexe, 2017-03-29cRagexeRE, 2017-03-29dRagexeRE #if PACKETVER == 20170329 packetKeys(0x18B31A80,0x1B0B1D56,0x16857D6A); #endif @@ -1677,167 +1759,167 @@ packetKeys(0x39223393,0x5C847779,0x10217985); #endif -// 2017-04-19bRagexeRE +// 2017-04-19aRagexe, 2017-04-19bRagexeRE #if PACKETVER == 20170419 packetKeys(0x1F8F4B3F,0x2E481F03,0x39ED4178); #endif -// 2017-04-26dRagexeRE +// 2017-04-26bRagexe, 2017-04-26dRagexeRE #if PACKETVER == 20170426 packetKeys(0x167642A7,0x1DEC3D26,0x6D046D4C); #endif -// 2017-05-02dRagexeRE +// 2017-05-02aRagexe, 2017-05-02bRagexe, 2017-05-02dRagexeRE #if PACKETVER == 20170502 packetKeys(0x05224194,0x466D4204,0x31F02EE0); #endif -// 2017-05-17aRagexeRE, 2017-05-17bRagexeRE +// 2017-05-17aRagexe, 2017-05-17aRagexeRE, 2017-05-17bRagexeRE #if PACKETVER == 20170517 packetKeys(0x2CC4749A,0x1FA954DC,0x72276857); #endif -// 2017-05-24aRagexeRE +// 2017-05-24aRagexe, 2017-05-24aRagexeRE, 2017-05-24bRagexe #if PACKETVER == 20170524 packetKeys(0x0B4E03A6,0x2B93427C,0x583D4477); #endif -// 2017-05-31aRagexeRE +// 2017-05-31aRagexe, 2017-05-31aRagexeRE #if PACKETVER == 20170531 packetKeys(0x03FA5A97,0x20B802D5,0x339F1977); #endif -// 2017-06-07bRagexeRE, 2017-06-07cRagexeRE +// 2017-06-07bRagexeRE, 2017-06-07cRagexe, 2017-06-07cRagexeRE #if PACKETVER == 20170607 packetKeys(0x50564ACD,0x79CA4E15,0x405F4894); #endif -// 2017-06-14bRagexeRE +// 2017-06-14bRagexe, 2017-06-14bRagexeRE #if PACKETVER == 20170614 packetKeys(0x5ED10A48,0x667F4301,0x2E5D761F); #endif -// 2017-06-21aRagexeRE +// 2017-06-21aRagexeRE, 2017-06-21bRagexe #if PACKETVER == 20170621 packetKeys(0x155F34EC,0x2D943FA9,0x3D9170EB); #endif -// 2017-06-28bRagexeRE +// 2017-06-28bRagexe, 2017-06-28bRagexeRE #if PACKETVER == 20170628 packetKeys(0x04691C86,0x43C210E2,0x2FE277E2); #endif -// 2017-07-05aRagexeRE +// 2017-07-05aRagexe, 2017-07-05aRagexeRE #if PACKETVER == 20170705 packetKeys(0x7EB000AE,0x02FB1DBC,0x5CB131E6); #endif -// 2017-07-12bRagexeRE +// 2017-07-12bRagexe, 2017-07-12bRagexeRE #if PACKETVER == 20170712 packetKeys(0x2C3C202C,0x3F2C2F2C,0x2F2C2F2C); #endif -// 2017-07-19aRagexeRE +// 2017-07-19aRagexe, 2017-07-19aRagexeRE #if PACKETVER == 20170719 packetKeys(0x46465C88,0x10116F66,0x200866F9); #endif -// 2017-07-26cRagexeRE +// 2017-07-26aRagexe, 2017-07-26cRagexeRE #if PACKETVER == 20170726 packetKeys(0x102F23DB,0x7E767751,0x3BC172EF); #endif -// 2017-08-01aRagexeRE +// 2017-08-01aRagexe, 2017-08-01aRagexeRE, 2017-08-01bRagexe #if PACKETVER == 20170801 packetKeys(0x26B52A7F,0x5377619D,0x4F580AC4); #endif -// 2017-08-09cRagexeRE +// 2017-08-09cRagexe, 2017-08-09cRagexeRE #if PACKETVER == 20170809 packetKeys(0x452156CB,0x71442624,0x2EE66D1C); #endif -// 2017-08-16cRagexeRE, 2017-08-16dRagexeRE +// 2017-08-16cRagexe, 2017-08-16cRagexeRE, 2017-08-16dRagexe, 2017-08-16dRagexeRE #if PACKETVER == 20170816 packetKeys(0x78914673,0x3F8B7634,0x55B814BC); #endif -// 2017-08-23aRagexeRE +// 2017-08-23aRagexe, 2017-08-23aRagexeRE #if PACKETVER == 20170823 packetKeys(0x22677205,0x393D1002,0x58DC6BB4); #endif -// 2017-08-30aRagexeRE, 2017-08-30bRagexeRE +// 2017-08-30aRagexe, 2017-08-30aRagexeRE, 2017-08-30bRagexe, 2017-08-30bRagexeRE #if PACKETVER == 20170830 packetKeys(0x1D49592B,0x00970C17,0x1E640103); #endif -// 2017-09-06cRagexeRE +// 2017-09-06cRagexe, 2017-09-06cRagexeRE #if PACKETVER == 20170906 packetKeys(0x7DEF7677,0x351F36E6,0x52303485); #endif -// 2017-09-13bRagexeRE +// 2017-09-13bRagexeRE, 2017-09-13cRagexe #if PACKETVER == 20170913 packetKeys(0x7A645935,0x1DA05062,0x5A7A4C43); #endif -// 2017-09-20bRagexeRE +// 2017-09-20aRagexe, 2017-09-20bRagexeRE #if PACKETVER == 20170920 packetKeys(0x53024DA5,0x04EC212D,0x0BF87CD4); #endif -// 2017-09-27bRagexeRE, 2017-09-27dRagexeRE +// 2017-09-27bRagexe, 2017-09-27bRagexeRE, 2017-09-27cRagexe, 2017-09-27dRagexe, 2017-09-27dRagexeRE #if PACKETVER == 20170927 packetKeys(0x15624100,0x0CE1463E,0x0E5D6534); #endif -// 2017-10-02cRagexeRE +// 2017-10-02cRagexe, 2017-10-02cRagexeRE #if PACKETVER == 20171002 packetKeys(0x15E1716C,0x4E765B63,0x357D2370); #endif -// 2017-10-11aRagexeRE, 2017-10-11bRagexeRE +// 2017-10-11aRagexe, 2017-10-11aRagexeRE, 2017-10-11bRagexe, 2017-10-11bRagexeRE #if PACKETVER == 20171011 packetKeys(0x4F121B3E,0x12670E17,0x19896C11); #endif -// 2017-10-18aRagexeRE +// 2017-10-18aRagexe, 2017-10-18aRagexeRE #if PACKETVER == 20171018 packetKeys(0x2CAA109C,0x158C1EC2,0x7A5E58F3); #endif -// 2017-10-25bRagexeRE, 2017-10-25cRagexeRE, 2017-10-25dRagexeRE, 2017-10-25eRagexeRE +// 2017-10-25bRagexe, 2017-10-25bRagexeRE, 2017-10-25cRagexe, 2017-10-25cRagexeRE, 2017-10-25dRagexe, 2017-10-25dRagexeRE, 2017-10-25eRagexe, 2017-10-25eRagexeRE #if PACKETVER == 20171025 packetKeys(0x165C565C,0x565C565C,0x565C565C); #endif -// 2017-11-01bRagexeRE +// 2017-11-01aRagexe, 2017-11-01bRagexeRE #if PACKETVER == 20171101 packetKeys(0x7056317F,0x7EEE0589,0x02672373); #endif -// 2017-11-08bRagexeRE +// 2017-11-08aRagexe, 2017-11-08bRagexeRE #if PACKETVER == 20171108 packetKeys(0x03695685,0x7FAC12CE,0x182F7A7B); #endif -// 2017-11-15aRagexeRE +// 2017-11-15aRagexe, 2017-11-15aRagexeRE #if PACKETVER == 20171115 packetKeys(0x23B97A3B,0x34610993,0x2892070E); #endif -// 2017-11-22bRagexeRE +// 2017-11-22aRagexe, 2017-11-22bRagexeRE #if PACKETVER == 20171122 packetKeys(0x03221B0E,0x73AB7A5F,0x0DD80FD4); #endif -// 2017-11-29aRagexeRE +// 2017-11-29aRagexe, 2017-11-29aRagexeRE #if PACKETVER == 20171129 packetKeys(0x581B77A7,0x62F74D7A,0x4F102173); #endif -// 2017-12-06aRagexeRE, 2017-12-06cRagexe +// 2017-12-06aRagexeRE, 2017-12-06bRagexe, 2017-12-06cRagexe #if PACKETVER == 20171206 packetKeys(0x39D54BD3,0x577A0C21,0x4C1C316E); #endif @@ -1847,57 +1929,52 @@ packetKeys(0x44E41107,0x3B126921,0x00E06AAC); #endif -// keys for zero clients -#ifdef PACKETVER_ZERO -// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_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 -#if PACKETVER == 20171018 || PACKETVER == 20171019 || PACKETVER == 20171023 || PACKETVER == 20171024 || PACKETVER == 20171025 || PACKETVER == 20171027 || PACKETVER == 20171030 || PACKETVER == 20171031 || PACKETVER == 20171109 || PACKETVER == 20171113 - packetKeys(0x00000000,0x00000000,0x00000000); +// 2017-12-20aRagexe, 2017-12-20aRagexeRE +#if PACKETVER == 20171220 + packetKeys(0x6EFE009A,0x440B7BFA,0x052339C8); #endif -// 2017-11-15aRagexe_zero, 2017-11-15bRagexe_zero, 2017-11-16aRagexe_zero, 2017-11-17aRagexe_zero -#if PACKETVER == 20171115 || PACKETVER == 20171116 || PACKETVER == 20171117 - packetKeys(0x3B93061D,0x3CB50DCD,0x410A197E); +// 2017-12-27aRagexe, 2017-12-27aRagexeRE +#if PACKETVER == 20171227 + packetKeys(0x257A2F6E,0x51140EEE,0x00FA4452); #endif -// 2017-11-21aRagexe_zero, 2017-11-22aRagexe_zero -#if PACKETVER == 20171121 || PACKETVER == 20171122 - packetKeys(0x195B4DA8,0x6E3A473B,0x126F4B61); +// 2018-01-03aRagexe, 2018-01-03aRagexeRE, 2018-01-03bRagexe, 2018-01-03bRagexeRE +#if PACKETVER == 20180103 + packetKeys(0x348F4BD7,0x7A425A54,0x628F589A); #endif -// 2017-11-23dRagexe_zero -#if PACKETVER == 20171123 - packetKeys(0x6087733A,0x5C5C4AEE,0x0F10408F); +// 2018-01-17aRagexe, 2018-01-17aRagexeRE +#if PACKETVER == 20180117 + packetKeys(0x21F477F4,0x37F437F4,0x37F437F4); #endif -// 2017-11-27aRagexe_zero, 2017-11-27cRagexe_zero, 2017-11-28aRagexe_zero -#if PACKETVER == 20171127 || PACKETVER == 20171128 - packetKeys(0x141C135C,0x675C275C,0x275C275C); +// 2018-01-24bRagexe, 2018-01-24bRagexeRE, 2018-01-31Ragexe +#if PACKETVER == 20180124 || \ + PACKETVER == 20180131 + packetKeys(0x7EAA1CE0,0x415D1CFD,0x4C8F19FA); #endif -// 2017-11-30bRagexe_zero -#if PACKETVER == 20171130 - packetKeys(0x31A04B32,0x3AC96B76,0x1742085D); +// 2018-02-07bRagexe, 2018-02-07bRagexeRE, 2018-02-07cRagexe +#if PACKETVER == 20180207 + packetKeys(0x45AA1B44,0x20E716B7,0x5388105C); #endif -// 2017-12-04bRagexe_zero -#if PACKETVER == 20171204 - packetKeys(0x06A109F1,0x6A953256,0x0A6040A3); +// 2018-02-13aRagexe, 2018-02-13aRagexeRE, 2018-02-13bRagexe +#if PACKETVER == 20180213 + packetKeys(0x189D69B2,0x43B85EAD,0x2B7A687E); #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 -#if PACKETVER == 20171206 || PACKETVER == 20171208 || PACKETVER == 20171209 || PACKETVER == 20171210 || PACKETVER == 20171211 || PACKETVER == 20171212 || PACKETVER == 20171213 - packetKeys(0x718D0388,0x56A11525,0x20042F67); +// 2018-02-21aRagexeRE, 2018-02-21bRagexe, 2018-02-21bRagexeRE +#if PACKETVER == 20180221 + packetKeys(0x6E2F6233,0x193B0A66,0x0D1D2CA5); #endif -// 2017-12-14cRagexe_zero -#if PACKETVER == 20171214 - packetKeys(0x6CE1021D,0x77703B04,0x4E722232); +// 2018-03-07bRagexe, 2018-03-07bRagexeRE, 2018-03-09aRagexe +#if PACKETVER == 20180307 || \ + PACKETVER == 20180309 + packetKeys(0x47DA10EB,0x4B922CCF,0x765C5055); #endif -#endif // PACKETVER_ZERO - -#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3) - packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3); -#endif -#endif /* MAP_PACKETS_KEYS_H */ +#endif /* MAP_PACKETS_MAIN_KEYS_H */ diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h new file mode 100644 index 000000000..75196e6b4 --- /dev/null +++ b/src/map/packets_keys_zero.h @@ -0,0 +1,145 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2013-2018 Hercules Dev Team + * + * 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_PACKETS_ZERO_KEYS_H +#define MAP_PACKETS_ZERO_KEYS_H + +#ifndef packetKeys + #define packetKeys(a,b,c) +#endif + +/* PacketKeys: http://herc.ws/board/topic/1105-hercules-wpe-free-june-14th-patch/ */ + +/* This file is autogenerated, please do not commit manual changes */ + +// 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 +#if PACKETVER == 20171019 || \ + PACKETVER == 20171023 || \ + PACKETVER == 20171024 || \ + PACKETVER == 20171025 || \ + PACKETVER == 20171027 || \ + PACKETVER == 20171030 || \ + PACKETVER == 20171031 || \ + PACKETVER == 20171109 || \ + PACKETVER == 20171113 + packetKeys(0x00000000,0x00000000,0x00000000); +#endif + +// 2017-11-15aRagexe_zero, 2017-11-15bRagexe_zero, 2017-11-16aRagexe_zero, 2017-11-17aRagexe_zero +#if PACKETVER == 20171115 || \ + PACKETVER == 20171116 || \ + PACKETVER == 20171117 + packetKeys(0x3B93061D,0x3CB50DCD,0x410A197E); +#endif + +// 2017-11-21aRagexe_zero, 2017-11-22aRagexe_zero +#if PACKETVER == 20171121 || \ + PACKETVER == 20171122 + packetKeys(0x195B4DA8,0x6E3A473B,0x126F4B61); +#endif + +// 2017-11-23dRagexe_zero +#if PACKETVER == 20171123 + packetKeys(0x6087733A,0x5C5C4AEE,0x0F10408F); +#endif + +// 2017-11-27aRagexe_zero, 2017-11-27cRagexe_zero, 2017-11-28aRagexe_zero +#if PACKETVER == 20171127 || \ + PACKETVER == 20171128 + packetKeys(0x141C135C,0x675C275C,0x275C275C); +#endif + +// 2017-11-30bRagexe_zero +#if PACKETVER == 20171130 + packetKeys(0x31A04B32,0x3AC96B76,0x1742085D); +#endif + +// 2017-12-04bRagexe_zero +#if PACKETVER == 20171204 + packetKeys(0x06A109F1,0x6A953256,0x0A6040A3); +#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 +#if PACKETVER == 20171206 || \ + PACKETVER == 20171208 || \ + PACKETVER == 20171209 || \ + PACKETVER == 20171210 || \ + PACKETVER == 20171211 || \ + PACKETVER == 20171212 || \ + PACKETVER == 20171213 + packetKeys(0x718D0388,0x56A11525,0x20042F67); +#endif + +// 2017-12-14cRagexe_zero +#if PACKETVER == 20171214 + packetKeys(0x6CE1021D,0x77703B04,0x4E722232); +#endif + +// 2017-12-20aRagexe_zero, 2017-12-21aRagexe_zero, 2017-12-21bRagexe_zero +#if PACKETVER == 20171220 || \ + PACKETVER == 20171221 + packetKeys(0x1E2047D2,0x7EE31AC2,0x31434F61); +#endif + +// 2017-12-27bRagexe_zero, 2017-12-29aRagexe_zero +#if PACKETVER == 20171227 || \ + PACKETVER == 20171229 + packetKeys(0x7CBF0846,0x02F92654,0x22AA5E2D); +#endif + +// 2018-01-03aRagexe_zero +#if PACKETVER == 20180103 + packetKeys(0x2A3D4E64,0x7008690C,0x69FF066F); +#endif + +// 2018-01-17aRagexe_zero +#if PACKETVER == 20180117 + packetKeys(0x230959EB,0x1CCB0182,0x1FFA2B30); +#endif + +// 2018-01-31dRagexe_zero +#if PACKETVER == 20180131 + packetKeys(0x1F422E02,0x12025202,0x52025202); +#endif + +// 2018-02-07bRagexe_zero +#if PACKETVER == 20180207 + packetKeys(0x07CB29CB,0x69CB69CB,0x69CB69CB); +#endif + +// 2018-02-13aRagexe_zero +#if PACKETVER == 20180213 + packetKeys(0x0513075E,0x347075AF,0x67C56C6F); +#endif + +// 2018-02-21aRagexe_zero +#if PACKETVER == 20180221 + packetKeys(0x28ED7635,0x76591F21,0x59383498); +#endif + +// 2018-02-28bRagexe_zero, 2018-03-07aRagexe_zero, 2018-03-09aRagexe_zero +#if PACKETVER == 20180228 || \ + PACKETVER == 20180307 || \ + PACKETVER == 20180309 + packetKeys(0x56C82ABE,0x61AE2B2E,0x472E272E); +#endif + + +#endif /* MAP_PACKETS_ZERO_KEYS_H */ diff --git a/src/map/packets_shuffle.h b/src/map/packets_shuffle_main.h index 36745ffd6..aabf9c3f3 100644 --- a/src/map/packets_shuffle.h +++ b/src/map/packets_shuffle_main.h @@ -2,7 +2,7 @@ * This file is part of Hercules. * http://herc.ws - http://github.com/HerculesWS/Hercules * - * Copyright (C) 2013-2017 Hercules Dev Team + * Copyright (C) 2013-2018 Hercules Dev Team * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,8 +20,8 @@ //Included directly by clif.c in packet_loaddb() -#ifndef MAP_PACKETS_SHUFFLE_H -#define MAP_PACKETS_SHUFFLE_H +#ifndef MAP_PACKETS_SHUFFLE_MAIN_H +#define MAP_PACKETS_SHUFFLE_MAIN_H #ifndef packet #define packet(a,b,...) @@ -33,11 +33,2559 @@ * - Example: packet(0x0072,19,clif->pWantToConnection,2,6,10,14,18); */ -// 2014 Packet Data +/* This file is autogenerated, please do not commit manual changes */ -// 2014-01-08cRagexe + +// 2012-07-10aRagexe, 2012-07-10aRagexeRE, 2012-07-12aRagexe, 2012-07-12aRagexeRE +#if PACKETVER == 20120710 || \ + PACKETVER == 20120712 + packet(0x0202,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x02c4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0362,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0365,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0367,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x07e4,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0811,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x085b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0877,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0878,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x087f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x088d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0893,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a3,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a6,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a8,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08aa,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0936,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0948,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x094b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0953,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0956,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0958,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0960,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX +#endif + +// 2012-07-16aRagexe, 2012-07-16aRagexeRE +#if PACKETVER == 20120716 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x089f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2012-07-24aRagexe, 2012-07-24aRagexeRE +#if PACKETVER == 20120724 + packet(0x035f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0815,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0835,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0865,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0866,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0872,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0877,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x087c,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0887,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0888,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x088e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a1,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08a9,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x091c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x091f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0928,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0929,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x092b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0935,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0938,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x093c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0945,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0957,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0959,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0965,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0966,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY +#endif + +// 2012-08-01aRagexe, 2012-08-01aRagexeRE, 2012-08-01bRagexe, 2012-08-01bRagexeRE +#if PACKETVER == 20120801 + packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0438,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x086a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x086b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x086f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0873,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0875,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x087b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x088b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0890,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0895,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x089c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x089d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a2,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08aa,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08ab,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0917,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x091d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x092a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0930,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0934,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x093c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0941,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0946,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0964,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK +#endif + +// 2012-08-08aRagexe, 2012-08-08aRagexeRE, 2012-08-08bRagexe, 2012-08-08bRagexeRE, 2012-08-08cRagexe, 2012-08-08cRagexeRE, 2012-08-08dRagexeRE +#if PACKETVER == 20120808 + packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x088f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x093d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0940,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2012-08-14aRagexe, 2012-08-14aRagexeRE, 2012-08-14bRagexe, 2012-08-14bRagexeRE +#if PACKETVER == 20120814 + packet(0x0281,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0365,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0366,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x07ec,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0815,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0838,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x085e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0861,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0862,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0865,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0868,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x086f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0875,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x087f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0882,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x088b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x088d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0895,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08a8,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x091f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0920,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0929,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0932,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0934,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0941,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0967,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0969,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2012-08-22aRagexe, 2012-08-22aRagexeRE, 2012-08-22bRagexe, 2012-08-22bRagexeRE, 2012-08-22cRagexe, 2012-08-22cRagexeRE +#if PACKETVER == 20120822 + packet(0x0365,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0437,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x085a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x085c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x085d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x086e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0872,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x087c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x087d,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0899,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x089f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a5,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08ab,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0917,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0924,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0927,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0935,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0937,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0940,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0943,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x094d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x094e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0953,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0955,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0958,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x095b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE +#endif + +// 2012-08-30aRagexe, 2012-08-30aRagexeRE, 2012-08-30bRagexeRE +#if PACKETVER == 20120830 + packet(0x022d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0364,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0802,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0838,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0861,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0872,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0887,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0888,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0890,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x091d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0926,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0934,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0945,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x094b,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2012-09-05aRagexe, 2012-09-05aRagexeRE +#if PACKETVER == 20120905 + packet(0x022d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0365,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0817,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x085a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x085d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x086f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0877,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0878,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x087a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x087b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x087e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0887,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0895,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0897,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a0,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a6,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0917,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0918,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x091a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0927,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x093c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0944,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0945,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0950,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0954,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0959,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0960,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0967,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT +#endif + +// 2012-09-11aRagexe, 2012-09-11aRagexeRE +#if PACKETVER == 20120911 + packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0868,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x086f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0877,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0879,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x088a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x088f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a4,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08a5,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08a6,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a7,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08ad,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0930,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0935,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x093e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0948,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0949,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x094b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0958,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0959,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0962,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0963,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0968,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x096a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD +#endif + +// 2012-09-19aRagexe, 2012-09-19aRagexeRE +#if PACKETVER == 20120919 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0956,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2012-09-25aRagexe, 2012-09-25aRagexeRE, 2012-09-26aRagexe, 2012-09-26aRagexeRE +#if PACKETVER == 20120925 || \ + PACKETVER == 20120926 + packet(0x07e4,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0815,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0819,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0835,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0838,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x085d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0873,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x087a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x087e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0887,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x088a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x088d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x089d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a4,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x091c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x091e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0923,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0927,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0932,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0942,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0948,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0950,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0956,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0957,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0958,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x095e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0963,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY +#endif + +// 2012-10-10aRagexe, 2012-10-10aRagexeRE, 2012-10-10bRagexe, 2012-10-10bRagexeRE, 2012-10-11aRagexeRE +#if PACKETVER == 20121010 || \ + PACKETVER == 20121011 + packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0817,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x085a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0869,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x086c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0874,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x087d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0883,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0888,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0891,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0896,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0898,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a1,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08a6,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08a9,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0925,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0934,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x093c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0942,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0947,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x094c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0957,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0958,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0959,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x095c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0964,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0969,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER +#endif + +// 2012-10-17aRagexe, 2012-10-17aRagexeRE, 2012-10-17bRagexe, 2012-10-17bRagexeRE +#if PACKETVER == 20121017 + packet(0x023b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0365,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0868,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x086b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0887,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0888,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0897,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x089a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a6,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0918,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0920,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0960,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0965,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2012-10-24aRagexe, 2012-10-24aRagexeRE +#if PACKETVER == 20121024 + packet(0x0436,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0437,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0438,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0817,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0838,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0868,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0872,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0875,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x087b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x087e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0882,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0888,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0889,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x088a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x089c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08a9,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08aa,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0931,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0938,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x093a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0942,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0947,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0954,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0955,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x095d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x095e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0965,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER +#endif + +// 2012-10-31aRagexe, 2012-10-31aRagexeRE +#if PACKETVER == 20121031 + packet(0x022d,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0871,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0877,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0898,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x092b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2012-11-07aRagexe, 2012-11-07aRagexeRE +#if PACKETVER == 20121107 + packet(0x0360,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0361,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0365,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x085c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0861,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0865,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x086c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x086d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0871,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0873,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0878,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x087f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x088f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0890,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0891,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0896,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x089a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x089b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x08a2,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08ad,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0922,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0934,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x093b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0945,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x094d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0960,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0963,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0966,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x096a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS +#endif + +// 2012-11-14aRagexe, 2012-11-14aRagexeRE +#if PACKETVER == 20121114 + packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0365,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0437,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0815,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0838,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0862,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0876,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0879,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0881,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0898,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0899,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a9,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x08aa,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08ab,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0930,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0935,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0938,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x093b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x093c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0944,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0949,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x094a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x094b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x094f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x095c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0965,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x096a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD +#endif + +// 2012-11-21aRagexe, 2012-11-21aRagexeRE +#if PACKETVER == 20121121 + packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0362,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0437,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0863,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x086a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x086c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x086d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x086f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0872,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0875,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x087e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0880,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0892,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08a7,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08aa,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x091a,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0921,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0927,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0929,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0938,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0946,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x094d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0950,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0952,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0954,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0957,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0958,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE +#endif + +// 2012-11-28aRagexe, 2012-11-28aRagexeRE +#if PACKETVER == 20121128 + packet(0x0362,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0363,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x07ec,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0802,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0861,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x086c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x086e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0872,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0888,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x088b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0894,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0895,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a8,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08ad,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x091b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x091c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x091e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x091f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0921,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0931,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0945,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0947,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0950,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0953,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0954,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0960,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE +#endif + +// 2012-12-05aRagexe, 2012-12-05aRagexeRE, 2012-12-05bRagexe, 2012-12-05bRagexeRE +#if PACKETVER == 20121205 + packet(0x035f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0360,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0815,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0863,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0864,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x086c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0870,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0873,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0875,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0878,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0888,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0889,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x088b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x089a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x089d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x08ad,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x091a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x091c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0921,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x093a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x093e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x093f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0946,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x094b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0954,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0959,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0968,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2012-12-12aRagexe, 2012-12-12aRagexeRE, 2012-12-12bRagexe, 2012-12-12bRagexeRE, 2012-12-12cRagexeRE +#if PACKETVER == 20121212 + packet(0x0362,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0368,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0369,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0436,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0438,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0817,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x085c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0877,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x087d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x087f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0893,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0895,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x08a3,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a7,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a9,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08aa,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08ac,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0917,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0920,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0932,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0947,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0951,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0953,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0957,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x095b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0965,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0966,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2012-12-18aRagexe, 2012-12-18aRagexeRE, 2012-12-18bRagexe, 2012-12-18bRagexeRE +#if PACKETVER == 20121218 + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0363,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0872,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x087b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0889,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0890,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x091a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0935,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0946,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0957,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2012-12-27aRagexe, 2012-12-27aRagexeRE +#if PACKETVER == 20121227 + packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x02c4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0361,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0437,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0860,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0870,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0872,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x087a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0886,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0888,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x088e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0890,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0894,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0896,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08a6,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08aa,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0917,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x091f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0920,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0932,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0933,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0940,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0943,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0947,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0953,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0958,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x095d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0962,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ +#endif + +// 2013-01-03aRagexe, 2013-01-03aRagexeRE, 2013-01-07aRagexe +#if PACKETVER == 20130103 || \ + PACKETVER == 20130107 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0940,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-01-09aRagexe, 2013-01-09aRagexeRE +#if PACKETVER == 20130109 + packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0365,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0368,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0838,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0866,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0888,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x088a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0891,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a2,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08aa,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08ac,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0918,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x091b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0922,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0927,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0928,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0930,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0931,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0938,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x093e,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x094f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0950,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0951,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0955,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x095e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP +#endif + +// 2013-01-15aRagexeRE, 2013-01-15bRagexe, 2013-01-16aRagexe, 2013-01-16aRagexeRE, 2013-01-16bRagexe +#if PACKETVER == 20130115 || \ + PACKETVER == 20130116 + packet(0x0361,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x07ec,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0817,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x085e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0861,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0863,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x086b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0870,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0871,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0877,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0879,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x087c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0888,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x088b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0894,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0895,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x08a0,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08a4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0918,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0928,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x092d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x092e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0939,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0946,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x094b,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x094c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x094e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x095a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD +#endif + +// 2013-01-21aRagexe, 2013-01-21aRagexeRE +#if PACKETVER == 20130121 + packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x035f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07ec,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0802,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0815,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0817,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x085d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x086c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0874,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0884,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0893,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x091f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0940,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x094f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x095b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0963,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-01-30aRagexe, 2013-01-30aRagexeRE +#if PACKETVER == 20130130 + packet(0x035f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0367,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0368,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0437,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x085f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0862,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x086b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x087f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0885,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0886,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0887,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0889,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x089a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x089f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a0,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08a4,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a9,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x091a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0920,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0924,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x093a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x093d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0956,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0957,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x095b,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x095c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x095d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE +#endif + +// 2013-02-06aRagexe, 2013-02-06aRagexeRE +#if PACKETVER == 20130206 + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0811,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0876,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0883,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0885,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0899,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a0,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08ac,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0920,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0925,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x093c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0950,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-02-15aRagexe, 2013-02-15aRagexeRE, 2013-02-15bRagexe +#if PACKETVER == 20130215 + packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0802,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0886,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x089f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08ad,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0923,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0956,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x095d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0962,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-02-20aRagexe, 2013-02-20bRagexeRE +#if PACKETVER == 20130220 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x094b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-02-27aRagexe, 2013-02-27aRagexeRE +#if PACKETVER == 20130227 + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x035f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0811,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0815,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0817,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x085a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0863,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0867,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0869,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x086e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0893,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0898,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a0,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08a1,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x091b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x091f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0924,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x092b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x092f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0946,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0951,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x095b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x095e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x095f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0967,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT +#endif + +// 2013-03-06aRagexe, 2013-03-06aRagexeRE, 2013-03-06bRagexeRE +#if PACKETVER == 20130306 + packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0367,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0368,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0802,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0817,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x085b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x085c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0860,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x086d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0881,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0890,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0898,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x089f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x08a4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08ac,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0917,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0926,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0934,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0936,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0943,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0944,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0945,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0946,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x094a,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x094e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0951,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0960,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP +#endif + +// 2013-03-13aRagexe, 2013-03-13aRagexeRE, 2013-03-13bRagexeRE, 2013-03-13cRagexeRE +#if PACKETVER == 20130313 + packet(0x0202,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4,6); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0887,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0920,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x092d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0947,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-03-20bRagexeRE, 2013-03-20cRagexeRE, 2013-03-20dRagexe, 2013-03-20eRagexe +#if PACKETVER == 20130320 + packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0363,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0365,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0438,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x085a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x085d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0868,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x086d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x086f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0874,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0881,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0886,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0890,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0897,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0898,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x089b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08ac,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0922,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x092e,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0933,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0938,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x093f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0947,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x094c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x094e,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0959,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x095a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD +#endif + +// 2013-03-27bRagexe, 2013-03-27bRagexeRE +#if PACKETVER == 20130327 + packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0835,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x086d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0873,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0878,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x087a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0885,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x088f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0891,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0893,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0899,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a1,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08a2,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x091f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x092b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x092d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x092e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0933,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0938,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0939,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x094a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x094b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x094f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0955,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0960,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0961,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0967,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES +#endif + +// 2013-04-03aRagexe, 2013-04-03aRagexeRE +#if PACKETVER == 20130403 + packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0884,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a5,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0926,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0942,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0950,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-04-10aRagexe, 2013-04-10aRagexeRE +#if PACKETVER == 20130410 + packet(0x0367,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0437,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0860,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0865,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x086c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x087c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x087d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0881,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x088c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x088d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0890,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0891,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x089c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x089e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08a0,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x08a4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x08a7,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0917,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x091d,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0933,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0939,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x093d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0944,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0945,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0955,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0960,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0967,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x096a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW +#endif + +// 2013-04-17aRagexe, 2013-04-17aRagexeRE +#if PACKETVER == 20130417 + packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0875,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0929,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0962,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0969,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x096a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK +#endif + +// 2013-04-24aRagexe, 2013-04-24aRagexeRE +#if PACKETVER == 20130424 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0969,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-05-02aRagexe, 2013-05-02aRagexeRE, 2013-05-02bRagexe +#if PACKETVER == 20130502 + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0867,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0870,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0874,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0875,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0877,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x087c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0888,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0889,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08a1,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08a3,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0961,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0967,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP +#endif + +// 2013-05-08bRagexe, 2013-05-08bRagexeRE, 2013-05-08cRagexe, 2013-05-08dRagexe, 2013-05-08eRagexe, 2013-05-08fRagexe +#if PACKETVER == 20130508 + packet(0x022d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0868,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0878,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0893,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0895,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0897,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08ab,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x092d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0944,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x094d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0957,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x095c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-05-15aRagexe, 2013-05-15aRagexeRE +#if PACKETVER == 20130515 + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0862,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0887,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a1,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08aa,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08ac,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x092d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0931,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x093e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0943,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0944,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0947,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0962,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0963,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-05-22aRagexe, 2013-05-22aRagexeRE +#if PACKETVER == 20130522 + packet(0x0360,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0368,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x07ec,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0811,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x086a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x086e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0874,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x087e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x088e,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x089c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a2,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x08a3,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a6,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08a9,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08aa,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x08ac,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0925,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0926,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x093e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0950,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0952,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x095b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x095c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x095e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0964,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0965,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD +#endif + +// 2013-05-29aRagexe, 2013-05-29aRagexeRE +#if PACKETVER == 20130529 + packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0438,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x085e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0863,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0869,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0874,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0876,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0877,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0888,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0890,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0892,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0895,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0897,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x08a7,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a8,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0917,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0918,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0919,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0936,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0937,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0938,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0941,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0956,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0957,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0958,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0964,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE +#endif + +// 2013-06-05aRagexe, 2013-06-05bRagexe, 2013-06-05cRagexeRE +#if PACKETVER == 20130605 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0883,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-06-12aRagexe, 2013-06-12bRagexe, 2013-06-12bRagexeRE, 2013-06-12cRagexe, 2013-06-12dRagexe, 2013-06-12eRagexe +#if PACKETVER == 20130612 + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x087e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0919,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0940,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0964,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-06-18#1aRagexe, 2013-06-18#1aRagexeRE, 2013-06-18aRagexe, 2013-06-18aRagexeRE +#if PACKETVER == 20130618 + packet(0x0281,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x02c4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0363,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x085a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0862,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0864,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0878,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0885,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0887,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0889,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x088e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0890,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0891,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08a6,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a7,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0917,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0930,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0932,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0936,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0942,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0944,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0945,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x094f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0951,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0953,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x095b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x096a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND +#endif + +// 2013-06-26_3bRagexeRE, 2013-06-26_3cRagexe, 2013-06-26aRagexeRE, 2013-06-26bRagexe, 2013-06-26bRagexeRE, 2013-06-26cRagexe +#if PACKETVER == 20130626 + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0365,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0860,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x088b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x088c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0894,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0895,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08a5,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08ab,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0921,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0930,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x094d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0952,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0960,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-07-03aRagexe, 2013-07-03bRagexeRE +#if PACKETVER == 20130703 + packet(0x0202,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0873,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0930,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x094a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-07-10aRagexeRE, 2013-07-10bRagexe, 2013-07-10bRagexeRE, 2013-07-10cRagexeRE, 2013-07-10dRagexeRE, 2013-07-10eRagexeRE +#if PACKETVER == 20130710 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0880,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-07-17cRagexe, 2013-07-17cRagexeRE, 2013-07-17dRagexeRE, 2013-07-17eRagexeRE +#if PACKETVER == 20130717 + packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x083c,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0862,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0863,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x086b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0882,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x088a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x088c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0897,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0898,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x089b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a6,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08a9,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08aa,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0917,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0918,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x091d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x091e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x092f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x093b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0956,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0958,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x095b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0960,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0967,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x096a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE +#endif + +// 2013-07-24eRagexe, 2013-07-24eRagexeRE, 2013-07-24fRagexeRE +#if PACKETVER == 20130724 + packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0437,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x085a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0867,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x086a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0874,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0876,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0890,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0891,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0893,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x089c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0921,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0924,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x092b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x094a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0953,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0954,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0956,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0958,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x095c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x095d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0965,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0966,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2013-07-31cRagexe, 2013-07-31cRagexeRE +#if PACKETVER == 20130731 + packet(0x022d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0366,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0863,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0865,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0878,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x087e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0884,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0889,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0894,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0895,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0897,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0923,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0925,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x092b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x092d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0935,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0941,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x094c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0956,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0957,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0958,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x095d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x095f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0962,6,clif->pDropItem,2,4); // CZ_ITEM_THROW +#endif + +// 2013-08-07aRagexe, 2013-08-07aRagexeRE +#if PACKETVER == 20130807 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0887,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-08-14aRagexe, 2013-08-14aRagexeRE +#if PACKETVER == 20130814 + packet(0x0202,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0281,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0368,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0815,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0835,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0868,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0873,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0874,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0885,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0887,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x088a,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x088c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0895,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0896,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08a4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0923,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0926,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0936,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0937,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x093a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0941,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0947,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x094e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0958,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0959,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x095f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0962,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX +#endif + +// 2013-08-21bRagexe, 2013-08-21dRagexeRE +#if PACKETVER == 20130821 + packet(0x0202,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0437,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0438,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x07ec,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0815,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0862,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0863,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x086e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0879,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0881,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x088d,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x088f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0892,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x08a6,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08ad,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x091d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0923,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x092d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x093e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0947,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0954,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x095e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0964,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0967,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ +#endif + +// 2013-08-28bRagexe, 2013-08-28bRagexeRE, 2013-08-28cRagexe, 2013-08-28cRagexeRE +#if PACKETVER == 20130828 + packet(0x023b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0361,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0364,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0817,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0873,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x087e,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0889,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0893,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x089f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a3,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08ac,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0917,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0919,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x091e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0923,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0924,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0928,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0930,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0944,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0946,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x094a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x094c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x094f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x095d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER +#endif + +// 2013-09-04aRagexe, 2013-09-04bRagexeRE +#if PACKETVER == 20130904 + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0838,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0937,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x093a,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0940,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0956,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-09-11aRagexe, 2013-09-11aRagexeRE, 2013-09-11bRagexe, 2013-09-11bRagexeRE +#if PACKETVER == 20130911 + packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0868,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x086b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x086d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x087b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0889,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0891,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08a4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x091e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x093a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0940,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0948,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0967,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE +#endif + +// 2013-09-17aRagexe, 2013-09-17aRagexeRE +#if PACKETVER == 20130917 + packet(0x035f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0811,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0838,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x083c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0863,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0868,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x086e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x086f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x087a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x087e,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088a,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0895,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x089b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x089d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a0,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a2,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08a8,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0918,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x091e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0921,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0923,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0934,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x094c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0957,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0959,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x096a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS +#endif + +// 2013-09-25aRagexe, 2013-09-25aRagexeRE, 2013-09-25bRagexe, 2013-09-25bRagexeRE, 2013-09-25cRagexe +#if PACKETVER == 20130925 + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x086d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0875,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0876,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x087d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0885,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0887,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0890,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0940,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x095a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x095b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x095c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0969,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-10-02aRagexe, 2013-10-02aRagexeRE +#if PACKETVER == 20131002 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0940,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-10-08aRagexe, 2013-10-08bRagexeRE +#if PACKETVER == 20131008 + packet(0x0202,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0362,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x07e4,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x083c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x085d,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x085e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0863,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x086c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x086d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0883,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0884,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0896,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x089c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a9,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0917,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0923,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0927,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0932,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0934,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0936,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x093c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0947,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0952,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0954,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0956,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x095d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE +#endif + +// 2013-10-16aRagexe, 2013-10-16aRagexeRE, 2013-10-16bRagexe, 2013-10-16bRagexeRE +#if PACKETVER == 20131016 + packet(0x022d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0281,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0361,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0364,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0366,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x07ec,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0802,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x085a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x085d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0863,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0864,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0867,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x086c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0870,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0875,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0887,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0888,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x088b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0890,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0894,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x091a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x091e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0927,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0946,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x094e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x095e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0962,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0966,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2013-10-23aRagexe, 2013-10-23aRagexeRE +#if PACKETVER == 20131023 + packet(0x0366,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0438,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0819,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0835,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x085b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0862,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x086e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0872,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0876,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x087f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0885,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x088a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x088f,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a7,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08ab,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08ac,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0919,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x091d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0923,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0924,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0935,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0937,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0944,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0951,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0954,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x095b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE +#endif + +// 2013-10-30aRagexe, 2013-10-30aRagexeRE +#if PACKETVER == 20131030 + packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x087d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0887,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a2,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0925,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-11-06aRagexe, 2013-11-06aRagexeRE, 2013-11-07aRagexe, 2013-11-07bRagexe, 2013-11-07cRagexe, 2013-11-08aRagexe +#if PACKETVER == 20131106 || \ + PACKETVER == 20131107 || \ + PACKETVER == 20131108 + packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0363,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0369,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0436,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0802,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0817,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0866,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0867,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0870,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0875,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0887,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0891,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0893,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0894,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08a2,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0919,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x091d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0929,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0935,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x093b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0942,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0946,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0947,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0948,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0950,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0954,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x095d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0962,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0967,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE +#endif + +// 2013-11-13aRagexeRE, 2013-11-13bRagexe +#if PACKETVER == 20131113 + packet(0x0364,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x086d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0879,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x088c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x088f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x089a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a8,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x091c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0920,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0926,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0928,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0929,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x092b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x092c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x092e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x092f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0934,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0936,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x093c,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0949,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0950,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x095d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x095f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0960,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0964,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0969,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO +#endif + +// 2013-11-20dRagexe, 2013-11-20eRagexeRE +#if PACKETVER == 20131120 + packet(0x0361,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0368,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0802,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0811,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0817,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x085a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x085f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0862,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0884,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x088d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x089e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a1,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08a4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a8,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0917,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0926,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0927,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x092b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x093e,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x093f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0940,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0950,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0953,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0955,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x095e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER +#endif + +// 2013-11-27aRagexeRE, 2013-11-27bRagexe, 2013-11-27bRagexeRE +#if PACKETVER == 20131127 + packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0366,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0881,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0884,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x088d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0894,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0930,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x093a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0940,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x094c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x094f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x095c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0967,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE +#endif + +// 2013-12-04dRagexeRE, 2013-12-04eRagexe, 2013-12-04eRagexeRE +#if PACKETVER == 20131204 + packet(0x0365,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0366,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x085a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0862,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0869,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x086c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0877,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0879,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x087f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0882,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a0,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08a4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a7,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08ad,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x091f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0928,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x092d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x092f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0932,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x093b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0941,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0951,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0958,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0959,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x095b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0961,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0967,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY +#endif + +// 2013-12-11cRagexe, 2013-12-11cRagexeRE, 2013-12-11dRagexe, 2013-12-11eRagexeRE +#if PACKETVER == 20131211 + packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0366,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0865,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x086e,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0873,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0881,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0886,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0892,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a3,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08a4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08ab,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x092b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0931,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x094c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-12-18aRagexeRE, 2013-12-18bRagexe +#if PACKETVER == 20131218 + packet(0x022d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085c,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x087b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08ab,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0947,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-12-23bRagexe, 2013-12-23bRagexeRE, 2013-12-23cRagexe, 2013-12-23xRagexeRE +#if PACKETVER == 20131223 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x08a4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2013-12-30aRagexe, 2013-12-30aRagexeRE +#if PACKETVER == 20131230 + packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x02c4,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x035f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0365,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0369,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0860,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0871,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x087b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x087e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x087f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0898,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x089c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a9,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x091d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x091e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x091f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0926,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x092a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x093d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x093e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0943,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0949,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x094c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0968,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0969,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x096a,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX +#endif + +// 2014-01-08bRagexeRE, 2014-01-08cRagexe, 2014-01-08cRagexeRE, 2014-01-08dRagexe #if PACKETVER == 20140108 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -69,43 +2617,41 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-01-15eRagexe +// 2014-01-15aRagexe, 2014-01-15bRagexe, 2014-01-15cRagexe, 2014-01-15cRagexeRE, 2014-01-15dRagexeRE, 2014-01-15eRagexe, 2014-01-15eRagexeRE #if PACKETVER == 20140115 -// shuffle packets - packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_MOVE2 - packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQUEST_TIME2 - packet(0x0361,6,clif->pDropItem,2,4); // CZ_CHANGE_DIRECTION2 - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND2 - packet(0x0367,8,clif->pMoveFromKafra,2,4); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2 - packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME2 - packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQNAME_BYGID2 - packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_ACT2 - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL2 - packet(0x0802,6,clif->pGetCharNameRequest,2); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_SSILIST_ITEM_CLICK - packet(0x0865,36,clif->pStoragePassword,0); // ZC_REASSEMBLY_AUTH12 - packet(0x0887,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REASSEMBLY_AUTH04 - packet(0x088a,8,clif->pDull/*,XXX*/); // CZ_REASSEMBLY_AUTH07 - packet(0x088e,8,clif->pMoveToKafra,2,4); // CZ_REASSEMBLY_AUTH11 - packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_REASSEMBLY_AUTH24 - packet(0x08a7,5,clif->pChangeDir,2,4); // CZ_REASSEMBLY_AUTH36 - packet(0x092d,5,clif->pHomMenu,2,4); // ZC_REASSEMBLY_AUTH65 - packet(0x0940,6,clif->pTakeItem,2); // ZC_REASSEMBLY_AUTH84 - packet(0x095b,4,clif->pDull/*,XXX*/); // CZ_REASSEMBLY_AUTH69 - packet(0x095d,26,clif->pPartyInvite2,2); // CZ_REASSEMBLY_AUTH71 - packet(0x0965,-1,clif->pItemListWindowSelected,2,4,8); // CZ_REASSEMBLY_AUTH79 - packet(0x0966,19,clif->pWantToConnection,2,6,10,14,18); // CZ_REASSEMBLY_AUTH80 - packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_REASSEMBLY_AUTH84 -#endif - -// 2014-01-22aRagexe + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0367,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0802,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0865,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0887,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x088a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x088e,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a7,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x092d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0940,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x095b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x095d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0965,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0966,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER +#endif + +// 2014-01-22aRagexe, 2014-01-22aRagexeRE #if PACKETVER == 20140122 -// shuffle packets packet(0x0360,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0811,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE @@ -137,9 +2683,8 @@ packet(0x095f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE #endif -// 2014-01-29aRagexe +// 2014-01-29aRagexe, 2014-01-29bRagexeRE, 2014-01-29cRagexe #if PACKETVER == 20140129 -// shuffle packets packet(0x0281,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -171,9 +2716,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-02-05bRagexe +// 2014-02-05bRagexe, 2014-02-05bRagexeRE #if PACKETVER == 20140205 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -205,9 +2749,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-02-12aRagexe +// 2014-02-12aRagexe, 2014-02-12aRagexeRE #if PACKETVER == 20140212 -// shuffle packets packet(0x02c4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0369,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x0438,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX @@ -239,9 +2782,8 @@ packet(0x0960,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE #endif -// 2014-02-19aRagexe +// 2014-02-19aRagexe, 2014-02-19aRagexeRE, 2014-02-19bRagexeRE #if PACKETVER == 20140219 -// shuffle packets packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x0360,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x0364,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID @@ -273,9 +2815,8 @@ packet(0x0961,6,clif->pTickSend,2); // CZ_REQUEST_TIME #endif -// 2014-02-26aRagexe +// 2014-02-26aRagexe, 2014-02-26aRagexeRE, 2014-02-26bRagexeRE #if PACKETVER == 20140226 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0361,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE @@ -307,9 +2848,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-03-05aRagexe +// 2014-03-05aRagexe, 2014-03-05aRagexeRE, 2014-03-05bRagexe, 2014-03-05bRagexeRE #if PACKETVER == 20140305 -// shuffle packets packet(0x0202,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -341,9 +2881,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-03-12dRagexe +// 2014-03-12bRagexeRE, 2014-03-12dRagexe #if PACKETVER == 20140312 -// shuffle packets packet(0x0202,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO @@ -375,9 +2914,41 @@ packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE #endif -// 2014-03-26aRagexe +// 2014-03-19aRagexe, 2014-03-19aRagexeRE +#if PACKETVER == 20140319 + packet(0x02c4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07e4,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0802,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0811,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0815,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x085a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0864,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0865,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0866,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x086e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0872,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0883,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x088e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0890,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0893,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x089f,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08a2,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x091f,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0923,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0933,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0942,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0944,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0947,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x094c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0954,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0955,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0964,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x096a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE +#endif + +// 2014-03-26aRagexe, 2014-03-26cRagexeRE #if PACKETVER == 20140326 -// shuffle packets packet(0x0362,6,clif->pGetCharNameRequest,2); // CZ_REQNAME packet(0x0365,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x07ec,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP @@ -409,9 +2980,8 @@ packet(0x0969,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL #endif -// 2014-04-02fRagexe +// 2014-04-02eRagexeRE, 2014-04-02fRagexe, 2014-04-02fRagexeRE, 2014-04-02gRagexe #if PACKETVER == 20140402 -// shuffle packets packet(0x023b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0360,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x0364,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND @@ -443,9 +3013,8 @@ packet(0x0965,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #endif -// 2014-04-09aRagexe +// 2014-04-09aRagexe, 2014-04-09aRagexeRE, 2014-04-09bRagexe #if PACKETVER == 20140409 -// shuffle packets packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY packet(0x085b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x0868,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK @@ -477,9 +3046,8 @@ packet(0x095e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER #endif -// 2014-04-16aRagexe +// 2014-04-16aRagexe, 2014-04-16aRagexeRE, 2014-04-16bRagexe #if PACKETVER == 20140416 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -511,9 +3079,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-04-23aRagexe +// 2014-04-23aRagexe, 2014-04-23aRagexeRE #if PACKETVER == 20140423 -// shuffle packets packet(0x022d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x0436,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -545,9 +3112,76 @@ packet(0x095e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK #endif -// 2014-05-08aRagexe +// 2014-04-30aRagexe, 2014-04-30aRagexeRE +#if PACKETVER == 20140430 + packet(0x023b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x035f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0363,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0860,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0870,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0871,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0875,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x087f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0884,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0899,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a1,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x093b,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0940,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x094b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0953,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0956,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x096a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID +#endif + +// 2014-05-08bRagexe, 2014-05-08bRagexeRE #if PACKETVER == 20140508 -// shuffle packets + packet(0x022d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0366,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0802,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0861,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0886,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x089b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0927,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0930,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0932,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0934,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x094e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER +#endif + +// 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe +#if PACKETVER == 20140508 || \ + PACKETVER == 20140611 || \ + PACKETVER == 20150225 packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD @@ -579,9 +3213,8 @@ packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #endif -// 2014-05-14bRagexe +// 2014-05-14bRagexe, 2014-05-14bRagexeRE, 2014-05-14cRagexeRE #if PACKETVER == 20140514 -// shuffle packets packet(0x0437,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK packet(0x0817,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x0865,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT @@ -613,9 +3246,8 @@ packet(0x096a,6,clif->pDropItem,2,4); // CZ_ITEM_THROW #endif -// 2014-05-21bRagexe +// 2014-05-21aRagexeRE, 2014-05-21bRagexe #if PACKETVER == 20140521 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -647,9 +3279,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-05-28aRagexe +// 2014-05-28aRagexe, 2014-05-28aRagexeRE #if PACKETVER == 20140528 -// shuffle packets packet(0x0202,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x0360,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x085f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER @@ -681,9 +3312,8 @@ packet(0x0966,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE #endif -// 2014-06-05aRagexe +// 2014-06-05aRagexe, 2014-06-05aRagexeRE, 2014-06-05bRagexe #if PACKETVER == 20140605 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -715,77 +3345,10 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-06-11cRagexe -#if PACKETVER == 20140611 -// shuffle packets - packet(0x0364,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0438,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x07e4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0838,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0864,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0878,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x0891,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0893,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0894,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x08a1,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0924,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x094a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x094f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0950,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0957,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0958,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0965,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE -#endif - -// 2014-06-12aRagexe -#if PACKETVER == 20140612 -// shuffle packets - packet(0x0364,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0438,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x07e4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0838,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0864,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0867,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x086c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0874,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0878,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x0891,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0893,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0894,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x089b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x08a1,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0924,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x0936,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x0941,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x094a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x094f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0950,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0951,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0957,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0958,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0963,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0965,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE -#endif - -// 2014-06-13aRagexe -#if PACKETVER == 20140613 -// shuffle packets +// 2014-06-11bRagexeRE, 2014-06-11cRagexe, 2014-06-11dRagexe, 2014-06-11hRagexe, 2014-06-12aRagexe, 2014-06-13aRagexe +#if PACKETVER == 20140611 || \ + PACKETVER == 20140612 || \ + PACKETVER == 20140613 packet(0x0364,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE packet(0x0438,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x07e4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE @@ -817,9 +3380,8 @@ packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE #endif -// 2014-06-18aRagexe +// 2014-06-18aRagexe, 2014-06-18cRagexeRE #if PACKETVER == 20140618 -// shuffle packets packet(0x085d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE packet(0x085f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0860,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -851,9 +3413,8 @@ packet(0x0967,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER #endif -// 2014-06-25aRagexe +// 2014-06-25aRagexe, 2014-06-25aRagexeRE, 2014-06-25bRagexe #if PACKETVER == 20140625 -// shuffle packets packet(0x0202,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE packet(0x023b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY packet(0x0815,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK @@ -885,9 +3446,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-07-02aRagexe +// 2014-07-02aRagexe, 2014-07-02aRagexeRE #if PACKETVER == 20140702 -// shuffle packets packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -919,9 +3479,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-07-09aRagexe +// 2014-07-09aRagexe, 2014-07-09aRagexeRE #if PACKETVER == 20140709 -// shuffle packets packet(0x0364,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD @@ -953,9 +3512,8 @@ packet(0x0961,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP #endif -// 2014-07-16aRagexe +// 2014-07-16aRagexe, 2014-07-16aRagexeRE, 2014-07-16bRagexe, 2014-07-16cRagexe #if PACKETVER == 20140716 -// shuffle packets packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x0811,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT @@ -987,9 +3545,8 @@ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES #endif -// 2014-07-23aRagexe +// 2014-07-23aRagexe, 2014-07-23aRagexeRE, 2014-07-23bRagexe, 2014-07-23bRagexeRE #if PACKETVER == 20140723 -// shuffle packets packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x0368,6,clif->pGetCharNameRequest,2); // CZ_REQNAME @@ -1021,9 +3578,8 @@ packet(0x0960,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif -// 2014-07-30aRagexe +// 2014-07-30aRagexe, 2014-07-30bRagexeRE #if PACKETVER == 20140730 -// shuffle packets packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x0364,6,clif->pGetCharNameRequest,2); // CZ_REQNAME packet(0x0366,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL @@ -1055,9 +3611,8 @@ packet(0x0946,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER #endif -// 2014-08-06aRagexe +// 2014-08-06aRagexe, 2014-08-06aRagexeRE, 2014-08-06bRagexe #if PACKETVER == 20140806 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -1089,9 +3644,9 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-08-13aRagexe -#if PACKETVER == 20140813 -// shuffle packets +// 2014-08-13aRagexe, 2014-08-13aRagexeRE, 2014-08-13bRagexe, 2014-08-14aRagexe +#if PACKETVER == 20140813 || \ + PACKETVER == 20140814 packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD @@ -1123,43 +3678,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-08-14aRagexe -#if PACKETVER == 20140814 -// shuffle packets - packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x07e4,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0819,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0868,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0878,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x087c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0882,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0895,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0897,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0899,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x08a3,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x08a7,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x08ab,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0967,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME -#endif - -// 2014-08-20aRagexe +// 2014-08-20aRagexe, 2014-08-20aRagexeRE #if PACKETVER == 20140820 -// shuffle packets packet(0x035f,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP packet(0x07ec,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE @@ -1191,9 +3711,8 @@ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER #endif -// 2014-08-27aRagexe +// 2014-08-27aRagexe, 2014-08-27aRagexeRE #if PACKETVER == 20140827 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -1225,9 +3744,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-09-03aRagexe +// 2014-09-03aRagexe, 2014-09-03aRagexeRE #if PACKETVER == 20140903 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -1259,9 +3777,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-09-17aRagexe +// 2014-09-17aRagexe, 2014-09-17cRagexeRE #if PACKETVER == 20140917 -// shuffle packets packet(0x022d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ packet(0x0364,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0365,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE @@ -1293,9 +3810,8 @@ packet(0x0966,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK #endif -// 2014-09-24cRagexe +// 2014-09-24bRagexeRE, 2014-09-24cRagexe, 2014-09-24cRagexeRE #if PACKETVER == 20140924 -// shuffle packets packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x0367,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD @@ -1327,9 +3843,8 @@ packet(0x0952,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS #endif -// 2014-10-01aRagexe +// 2014-10-01aRagexe, 2014-10-01bRagexeRE, 2014-10-01cRagexeRE #if PACKETVER == 20141001 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0361,6,clif->pDropItem,2,4); // CZ_ITEM_THROW @@ -1361,9 +3876,8 @@ packet(0x0952,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER #endif -// 2014-10-08aRagexe +// 2014-10-08aRagexe, 2014-10-08bRagexe, 2014-10-08bRagexeRE, 2014-10-08cRagexe, 2014-10-08cRagexeRE, 2014-10-08dRagexe #if PACKETVER == 20141008 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -1395,9 +3909,9 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-10-15bRagexe -#if PACKETVER == 20141015 -// shuffle packets +// 2014-10-15bRagexe, 2014-10-15bRagexeRE, 2014-10-15cRagexe, 2014-10-15dRagexe, 2014-10-16aRagexe, 2014-10-16aRagexeRE +#if PACKETVER == 20141015 || \ + PACKETVER == 20141016 packet(0x022d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -1429,43 +3943,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-10-16aRagexe -#if PACKETVER == 20141016 -// shuffle packets - packet(0x022d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0364,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x086e,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0922,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0936,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x094b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0967,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME -#endif - -// 2014-10-22bRagexe +// 2014-10-22aRagexeRE, 2014-10-22bRagexe #if PACKETVER == 20141022 -// shuffle packets packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -1497,9 +3976,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-10-29aRagexe +// 2014-10-29aRagexe, 2014-10-29aRagexeRE #if PACKETVER == 20141029 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -1531,9 +4009,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-11-05aRagexe +// 2014-11-05aRagexe, 2014-11-05aRagexeRE, 2014-11-05bRagexe, 2014-11-05bRagexeRE #if PACKETVER == 20141105 -// shuffle packets packet(0x022d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x035f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE @@ -1565,9 +4042,8 @@ packet(0x0968,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER #endif -// 2014-11-12cRagexe +// 2014-11-12aRagexeRE, 2014-11-12cRagexe, 2014-11-12dRagexe #if PACKETVER == 20141112 -// shuffle packets packet(0x0362,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x0438,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x07e4,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE @@ -1599,9 +4075,8 @@ packet(0x0962,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND #endif -// 2014-11-19dRagexe +// 2014-11-19bRagexeRE, 2014-11-19dRagexe #if PACKETVER == 20141119 -// shuffle packets packet(0x0202,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x085a,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0861,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -1633,9 +4108,8 @@ packet(0x0963,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX #endif -// 2014-11-26aRagexe +// 2014-11-26aRagexe, 2014-11-26aRagexeRE, 2014-11-26bRagexe, 2014-11-26bRagexeRE, 2014-11-26cRagexe, 2014-11-26cRagexeRE, 2014-11-26dRagexe, 2014-11-26dRagexeRE, 2014-11-26eRagexeRE #if PACKETVER == 20141126 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX @@ -1667,9 +4141,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-12-03aRagexe +// 2014-12-03aRagexe, 2014-12-03aRagexeRE #if PACKETVER == 20141203 -// shuffle packets packet(0x0202,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x0281,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x0362,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE @@ -1701,9 +4174,8 @@ packet(0x0962,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL #endif -// 2014-12-10bRagexe +// 2014-12-10bRagexe, 2014-12-10cRagexe, 2014-12-10cRagexeRE #if PACKETVER == 20141210 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX @@ -1735,9 +4207,42 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2014-12-24aRagexe -#if PACKETVER == 20141224 -// shuffle packets +// 2014-12-17aRagexe, 2014-12-17aRagexeRE +#if PACKETVER == 20141217 + packet(0x0360,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x085b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x086c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0875,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0878,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0879,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0883,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0889,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x088e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x089f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08a1,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08a2,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08a8,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08ab,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08ac,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0919,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x091f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0924,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0930,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0932,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0933,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0936,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0939,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0940,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0944,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0945,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0948,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0960,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK +#endif + +// 2014-12-23cRagexeRE, 2014-12-24aRagexe +#if PACKETVER == 20141223 || \ + PACKETVER == 20141224 packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE packet(0x0438,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x0835,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES @@ -1769,9 +4274,8 @@ packet(0x095f,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT #endif -// 2014-12-31aRagexe +// 2014-12-31aRagexe, 2014-12-31aRagexeRE #if PACKETVER == 20141231 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -1803,9 +4307,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-01-07aRagexeRE +// 2015-01-07aRagexe, 2015-01-07aRagexeRE #if PACKETVER == 20150107 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -1837,9 +4340,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-01-14aRagexe +// 2015-01-14aRagexe, 2015-01-14aRagexeRE, 2015-01-14bRagexe, 2015-01-14cRagexe, 2015-01-14dRagexe #if PACKETVER == 20150114 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -1871,9 +4373,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-01-21aRagexe +// 2015-01-21aRagexe, 2015-01-21aRagexeRE, 2015-01-21bRagexeRE #if PACKETVER == 20150121 -// shuffle packets packet(0x0281,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -1905,77 +4406,10 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-01-28aRagexe -#if PACKETVER == 20150128 -// shuffle packets - packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x023b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0365,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0368,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0838,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x085a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0864,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x086d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0870,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0874,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x0875,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0888,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x091f,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0929,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x093a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0944,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW -#endif - -// 2015-01-29aRagexe -#if PACKETVER == 20150129 -// shuffle packets - packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x023b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0365,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0368,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0838,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x085a,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0864,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x086d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0870,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0874,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x0875,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x087d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0888,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x089a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x08ab,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x091f,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0927,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0929,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x092d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0938,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x093a,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0944,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x094d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x094e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0963,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW -#endif - -// 2015-01-30aRagexe -#if PACKETVER == 20150130 -// shuffle packets +// 2015-01-28aRagexe, 2015-01-28aRagexeRE, 2015-01-29aRagexe, 2015-01-30aRagexe +#if PACKETVER == 20150128 || \ + PACKETVER == 20150129 || \ + PACKETVER == 20150130 packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK packet(0x023b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -2007,9 +4441,8 @@ packet(0x0968,6,clif->pDropItem,2,4); // CZ_ITEM_THROW #endif -// 2015-02-04aRagexe +// 2015-02-04aRagexe, 2015-02-04cRagexeRE #if PACKETVER == 20150204 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -2041,9 +4474,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-02-11aRagexe +// 2015-02-11aRagexe, 2015-02-11aRagexeRE #if PACKETVER == 20150211 -// shuffle packets packet(0x023b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x0368,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x0369,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION @@ -2075,9 +4507,8 @@ packet(0x0958,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE #endif -// 2015-02-17aRagexe +// 2015-02-17aRagexe, 2015-02-17aRagexeRE #if PACKETVER == 20150217 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -2109,9 +4540,9 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-02-25aRagexeRE -#if PACKETVER == 20150225 -// shuffle packets +// 2015-02-25aRagexeRE, 2015-02-25bRagexeRE, 2015-02-25cRagexeRE, 2015-02-25dRagexeRE, 2015-02-25eRagexe, 2015-02-25eRagexeRE, 2015-02-25fRagexe, 2015-02-25gRagexe, 2015-02-25iRagexe, 2015-02-25jRagexe, 2015-02-26aRagexe, 2015-02-26aRagexeRE +#if PACKETVER == 20150225 || \ + PACKETVER == 20150226 packet(0x02c4,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ @@ -2143,43 +4574,8 @@ packet(0x096a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER #endif -// 2015-02-26aRagexeRE -#if PACKETVER == 20150226 -// shuffle packets - packet(0x02c4,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0360,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0362,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0436,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0817,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0867,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0885,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0896,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x089b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x089c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x08a4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x0940,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0946,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0948,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x094f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0952,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0955,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x096a,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER -#endif - -// 2015-03-04aRagexe +// 2015-03-04aRagexe, 2015-03-04aRagexeRE, 2015-03-04bRagexeRE #if PACKETVER == 20150304 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW @@ -2211,9 +4607,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-03-11aRagexeRE +// 2015-03-11aRagexe, 2015-03-11aRagexeRE, 2015-03-11bRagexe, 2015-03-11bRagexeRE #if PACKETVER == 20150311 -// shuffle packets packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x0360,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE packet(0x0436,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO @@ -2245,9 +4640,8 @@ packet(0x0964,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE #endif -// 2015-03-18aRagexe +// 2015-03-18aRagexe, 2015-03-18aRagexeRE, 2015-03-18bRagexe, 2015-03-18bRagexeRE, 2015-03-18cRagexeRE #if PACKETVER == 20150318 -// shuffle packets packet(0x0202,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x023b,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0281,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD @@ -2279,9 +4673,8 @@ packet(0x0960,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER #endif -// 2015-03-25aRagexe +// 2015-03-25aRagexe, 2015-03-25bRagexeRE, 2015-03-25cRagexeRE #if PACKETVER == 20150325 -// shuffle packets packet(0x0202,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ packet(0x0363,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x0365,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL @@ -2313,9 +4706,8 @@ packet(0x0969,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY #endif -// 2015-04-01aRagexe +// 2015-04-01aRagexe, 2015-04-01bRagexeRE #if PACKETVER == 20150401 -// shuffle packets packet(0x0362,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT packet(0x0367,6,clif->pGetCharNameRequest,2); // CZ_REQNAME packet(0x0437,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -2347,9 +4739,8 @@ packet(0x0964,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif -// 2015-04-08aRagexe +// 2015-04-08aRagexe, 2015-04-08aRagexeRE #if PACKETVER == 20150408 -// shuffle packets packet(0x0819,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY packet(0x085a,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x085c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL @@ -2381,9 +4772,8 @@ packet(0x0963,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE #endif -// 2015-04-15aRagexe +// 2015-04-15aRagexe, 2015-04-15aRagexeRE #if PACKETVER == 20150415 -// shuffle packets packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE packet(0x0364,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX packet(0x0366,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE @@ -2415,9 +4805,8 @@ packet(0x0961,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER #endif -// 2015-04-22aRagexeRE +// 2015-04-22aRagexe, 2015-04-22aRagexeRE #if PACKETVER == 20150422 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -2449,9 +4838,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-04-29aRagexe +// 2015-04-29aRagexe, 2015-04-29aRagexeRE #if PACKETVER == 20150429 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0363,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION @@ -2483,9 +4871,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-05-07bRagexe +// 2015-05-07bRagexe, 2015-05-07bRagexeRE, 2015-05-07cRagexe #if PACKETVER == 20150507 -// shuffle packets packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -2517,9 +4904,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-05-13aRagexe +// 2015-05-13aRagexe, 2015-05-13aRagexeRE #if PACKETVER == 20150513 -// shuffle packets packet(0x022d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE packet(0x02c4,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -2551,9 +4937,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-05-20aRagexe +// 2015-05-20aRagexe, 2015-05-20aRagexeRE #if PACKETVER == 20150520 -// shuffle packets packet(0x0202,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0361,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x0835,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE @@ -2585,9 +4970,8 @@ packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER #endif -// 2015-05-27aRagexe +// 2015-05-27aRagexe, 2015-05-27aRagexeRE #if PACKETVER == 20150527 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -2619,9 +5003,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-06-03aRagexe +// 2015-06-03aRagexe, 2015-06-03bRagexeRE #if PACKETVER == 20150603 -// shuffle packets packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ packet(0x0437,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION @@ -2653,9 +5036,8 @@ packet(0x096a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE #endif -// 2015-06-10aRagexe +// 2015-06-10aRagexe, 2015-06-10aRagexeRE #if PACKETVER == 20150610 -// shuffle packets packet(0x022d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE packet(0x0438,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x07e4,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE @@ -2687,43 +5069,9 @@ packet(0x0964,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif -// 2015-06-17aRagexeRE -#if PACKETVER == 20150617 -// shuffle packets - packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0360,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x0362,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0363,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x0365,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x07ec,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0811,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0869,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x086a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x086b,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x0870,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x087a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0886,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0894,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0940,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x094e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME -#endif - -// 2015-06-18aRagexeRE -#if PACKETVER == 20150618 -// shuffle packets +// 2015-06-17aRagexe, 2015-06-17aRagexeRE, 2015-06-18aRagexe, 2015-06-18aRagexeRE +#if PACKETVER == 20150617 || \ + PACKETVER == 20150618 packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP packet(0x0362,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -2755,9 +5103,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-06-24aRagexe +// 2015-06-24aRagexe, 2015-06-24aRagexeRE #if PACKETVER == 20150624 -// shuffle packets packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -2789,9 +5136,9 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-07-02aRagexe -#if PACKETVER == 20150702 -// shuffle packets +// 2015-07-01bRagexe, 2015-07-01bRagexeRE, 2015-07-02aRagexe +#if PACKETVER == 20150701 || \ + PACKETVER == 20150702 packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x0281,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x07e4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY @@ -2823,9 +5170,8 @@ packet(0x0968,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif -// 2015-07-08cRagexe +// 2015-07-08bRagexeRE, 2015-07-08cRagexe, 2015-07-08cRagexeRE, 2015-07-08dRagexeRE #if PACKETVER == 20150708 -// shuffle packets packet(0x022d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -2857,9 +5203,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-07-15aRagexe +// 2015-07-15aRagexe, 2015-07-15aRagexeRE #if PACKETVER == 20150715 -// shuffle packets packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x0362,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES @@ -2891,9 +5236,41 @@ packet(0x0965,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER #endif -// 2015-07-29aRagexe +// 2015-07-22bRagexe, 2015-07-22bRagexeRE +#if PACKETVER == 20150722 + packet(0x023b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0360,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0361,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0368,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0436,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0811,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0815,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0817,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0869,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0878,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x087b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x087d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x087e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0880,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0884,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x088d,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0899,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x08a8,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0919,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0921,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0925,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x092e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x093c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x093d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x094c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x094f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0951,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0958,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD +#endif + +// 2015-07-29aRagexe, 2015-07-29aRagexeRE #if PACKETVER == 20150729 -// shuffle packets packet(0x0437,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x0438,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x085b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD @@ -2925,9 +5302,8 @@ packet(0x096a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE #endif -// 2015-08-05aRagexe +// 2015-08-05aRagexe, 2015-08-05dRagexeRE #if PACKETVER == 20150805 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -2959,9 +5335,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-08-12aRagexe +// 2015-08-12aRagexe, 2015-08-12aRagexeRE #if PACKETVER == 20150812 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -2993,9 +5368,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-08-19aRagexeRE +// 2015-08-19aRagexe, 2015-08-19aRagexeRE, 2015-08-19bRagexeRE #if PACKETVER == 20150819 -// shuffle packets packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x022d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL packet(0x0281,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP @@ -3027,9 +5401,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-08-26aRagexeRE +// 2015-08-26aRagexe, 2015-08-26aRagexeRE, 2015-08-26bRagexe, 2015-08-26bRagexeRE #if PACKETVER == 20150826 -// shuffle packets packet(0x0362,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x0368,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY packet(0x0436,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER @@ -3061,9 +5434,8 @@ packet(0x0969,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO #endif -// 2015-09-02aRagexe +// 2015-09-02aRagexe, 2015-09-02aRagexeRE #if PACKETVER == 20150902 -// shuffle packets packet(0x023b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x0360,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x0367,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -3095,9 +5467,8 @@ packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE #endif -// 2015-09-09aRagexe +// 2015-09-09aRagexe, 2015-09-09aRagexeRE #if PACKETVER == 20150909 -// shuffle packets packet(0x023b,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE @@ -3129,9 +5500,8 @@ packet(0x096a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif -// 2015-09-16aRagexe +// 2015-09-16aRagexe, 2015-09-16cRagexe, 2015-09-16cRagexeRE #if PACKETVER == 20150916 -// shuffle packets packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x0817,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0835,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -3163,9 +5533,8 @@ packet(0x0969,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER #endif -// 2015-09-23bRagexe +// 2015-09-23bRagexe, 2015-09-23bRagexeRE, 2015-09-23cRagexe, 2015-09-23dRagexe, 2015-09-23eRagexe, 2015-09-23eRagexeRE, 2015-09-23fRagexe, 2015-09-23fRagexeRE #if PACKETVER == 20150923 -// shuffle packets packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x0366,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD @@ -3197,9 +5566,8 @@ packet(0x0961,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES #endif -// 2015-10-01aRagexe +// 2015-10-01aRagexe, 2015-10-01bRagexeRE #if PACKETVER == 20151001 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -3231,9 +5599,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-10-07aRagexeRE +// 2015-10-07aRagexe, 2015-10-07aRagexeRE #if PACKETVER == 20151007 -// shuffle packets packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -3265,9 +5632,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-10-14bRagexeRE +// 2015-10-14bRagexe, 2015-10-14bRagexeRE #if PACKETVER == 20151014 -// shuffle packets packet(0x0202,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x0817,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x0838,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO @@ -3299,9 +5665,9 @@ packet(0x0964,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER #endif -// 2015-10-21aRagexe -#if PACKETVER == 20151021 -// shuffle packets +// 2015-10-21aRagexe, 2015-10-21aRagexeRE, 2015-10-22aRagexe, 2015-10-22aRagexeRE +#if PACKETVER == 20151021 || \ + PACKETVER == 20151022 packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD @@ -3333,77 +5699,9 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-10-22aRagexe -#if PACKETVER == 20151022 -// shuffle packets - packet(0x023b,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0361,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x07ec,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x086a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x091d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0940,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME -#endif - -// 2015-10-28cRagexeRE -#if PACKETVER == 20151028 -// shuffle packets - packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0860,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME -#endif - -// 2015-10-29aRagexe -#if PACKETVER == 20151029 -// shuffle packets +// 2015-10-28bRagexeRE, 2015-10-28bRagexeRE_2, 2015-10-28cRagexe, 2015-10-28cRagexeRE, 2015-10-28dRagexe, 2015-10-28dRagexeRE, 2015-10-29aRagexe, 2015-10-29aRagexeRE +#if PACKETVER == 20151028 || \ + PACKETVER == 20151029 packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -3435,9 +5733,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-11-04aRagexe +// 2015-11-04aRagexe, 2015-11-04aRagexeRE #if PACKETVER == 20151104 -// shuffle packets packet(0x023b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x0363,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE @@ -3469,9 +5766,8 @@ packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP #endif -// 2015-11-11aRagexe +// 2015-11-11aRagexe, 2015-11-11aRagexeRE, 2015-11-11bRagexe #if PACKETVER == 20151111 -// shuffle packets packet(0x02c4,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -3503,9 +5799,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-11-18aRagexeRE +// 2015-11-18aRagexe, 2015-11-18aRagexeRE #if PACKETVER == 20151118 -// shuffle packets packet(0x022d,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x035f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -3537,9 +5832,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-11-25bRagexe +// 2015-11-25bRagexe, 2015-11-25bRagexeRE, 2015-11-25cRagexeRE, 2015-11-25dRagexe, 2015-11-25dRagexeRE #if PACKETVER == 20151125 -// shuffle packets packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x0366,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY @@ -3571,9 +5865,8 @@ packet(0x0959,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX #endif -// 2015-12-02bRagexeRE +// 2015-12-02aRagexe, 2015-12-02bRagexeRE #if PACKETVER == 20151202 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -3605,9 +5898,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2015-12-09aRagexe +// 2015-12-09aRagexe, 2015-12-09aRagexeRE #if PACKETVER == 20151209 -// shuffle packets packet(0x0365,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x07e4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ @@ -3639,9 +5931,8 @@ packet(0x0964,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS #endif -// 2015-12-16aRagexe +// 2015-12-16aRagexe, 2015-12-16aRagexeRE #if PACKETVER == 20151216 -// shuffle packets packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x0361,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER @@ -3673,9 +5964,8 @@ packet(0x0968,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL #endif -// 2015-12-23bRagexeRE +// 2015-12-23bRagexe, 2015-12-23bRagexeRE #if PACKETVER == 20151223 -// shuffle packets packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE packet(0x0362,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD packet(0x0364,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP @@ -3707,9 +5997,8 @@ packet(0x0967,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #endif -// 2015-12-30aRagexe +// 2015-12-30aRagexe, 2015-12-30aRagexeRE #if PACKETVER == 20151230 -// shuffle packets packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -3741,9 +6030,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-01-06aRagexeRE +// 2016-01-06aRagexe, 2016-01-06aRagexeRE #if PACKETVER == 20160106 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX @@ -3775,9 +6063,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-01-13aRagexeRE +// 2016-01-13aRagexe, 2016-01-13aRagexeRE, 2016-01-13bRagexe, 2016-01-13bRagexeRE, 2016-01-13bRagexeRE_2, 2016-01-13bRagexe_2, 2016-01-13cRagexeRE #if PACKETVER == 20160113 -// shuffle packets packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x023b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x035f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER @@ -3809,9 +6096,8 @@ packet(0x0967,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE #endif -// 2016-01-20aRagexeRE +// 2016-01-20aRagexe, 2016-01-20aRagexeRE #if PACKETVER == 20160120 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -3843,9 +6129,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-01-27aRagexeRE +// 2016-01-27aRagexeRE, 2016-01-27aRagexeRE_2, 2016-01-27bRagexeRE, 2016-01-27cRagexe, 2016-01-27dRagexe #if PACKETVER == 20160127 -// shuffle packets packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -3877,9 +6162,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-02-03aRagexeRE +// 2016-02-03aRagexe, 2016-02-03aRagexeRE #if PACKETVER == 20160203 -// shuffle packets packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0361,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -3911,9 +6195,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-02-11aRagexeRE +// 2016-02-11aRagexe, 2016-02-11aRagexeRE #if PACKETVER == 20160211 -// shuffle packets packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES @@ -3945,9 +6228,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-02-17cRagexeRE +// 2016-02-17aRagexe, 2016-02-17aRagexeRE, 2016-02-17bRagexeRE, 2016-02-17bRagexeRE_2, 2016-02-17cRagexeRE #if PACKETVER == 20160217 -// shuffle packets packet(0x0202,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x023b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE packet(0x0362,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION @@ -3979,9 +6261,8 @@ packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE #endif -// 2016-02-24bRagexeRE +// 2016-02-24aRagexe, 2016-02-24aRagexeRE, 2016-02-24bRagexeRE #if PACKETVER == 20160224 -// shuffle packets packet(0x022d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0364,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL @@ -4013,9 +6294,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-03-02bRagexeRE +// 2016-03-02bRagexe, 2016-03-02bRagexeRE #if PACKETVER == 20160302 -// shuffle packets packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x0367,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0802,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER @@ -4047,9 +6327,8 @@ packet(0x0968,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT #endif -// 2016-03-09aRagexeRE +// 2016-03-09aRagexeRE, 2016-03-09cRagexe #if PACKETVER == 20160309 -// shuffle packets packet(0x023b,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x0281,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0361,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -4081,9 +6360,9 @@ packet(0x096a,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP #endif -// 2016-03-16aRagexeRE -#if PACKETVER == 20160316 -// shuffle packets +// 2016-03-16aRagexe, 2016-03-16aRagexeRE, 2016-03-18aRagexe +#if PACKETVER == 20160316 || \ + PACKETVER == 20160318 packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -4115,9 +6394,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-03-23aRagexeRE +// 2016-03-23aRagexe, 2016-03-23aRagexeRE, 2016-03-23bRagexe, 2016-03-23bRagexeRE #if PACKETVER == 20160323 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0365,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -4149,9 +6427,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-03-30aRagexeRE +// 2016-03-30aRagexe, 2016-03-30aRagexeRE, 2016-03-30bRagexe #if PACKETVER == 20160330 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0365,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD @@ -4183,9 +6460,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-04-06aRagexeRE +// 2016-04-06aRagexe, 2016-04-06aRagexeRE, 2016-04-06bRagexe #if PACKETVER == 20160406 -// shuffle packets packet(0x0364,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x07e4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE @@ -4217,9 +6493,8 @@ packet(0x0962,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK #endif -// 2016-04-14bRagexeRE +// 2016-04-14aRagexe, 2016-04-14aRagexeRE, 2016-04-14bRagexe, 2016-04-14bRagexeRE, 2016-04-14bRagexe_2, 2016-04-14cRagexe #if PACKETVER == 20160414 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0362,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES @@ -4251,9 +6526,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-04-20aRagexeRE +// 2016-04-20aRagexeRE, 2016-04-20cRagexe #if PACKETVER == 20160420 -// shuffle packets packet(0x022d,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x035f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ @@ -4285,9 +6559,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-04-27aRagexeRE +// 2016-04-27aRagexe, 2016-04-27aRagexeRE #if PACKETVER == 20160427 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -4319,9 +6592,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-05-04aRagexeRE +// 2016-05-04aRagexe, 2016-05-04aRagexeRE #if PACKETVER == 20160504 -// shuffle packets packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x0363,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x0365,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK @@ -4353,9 +6625,8 @@ packet(0x0969,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD #endif -// 2016-05-11aRagexeRE +// 2016-05-11aRagexe, 2016-05-11aRagexeRE, 2016-05-11bRagexeRE #if PACKETVER == 20160511 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -4387,9 +6658,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-05-18aRagexeRE +// 2016-05-18aRagexe, 2016-05-18aRagexeRE #if PACKETVER == 20160518 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -4421,9 +6691,9 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-05-25aRagexeRE -#if PACKETVER == 20160525 -// shuffle packets +// 2016-05-25aRagexe, 2016-05-25aRagexeRE, 2016-05-26aRagexe +#if PACKETVER == 20160525 || \ + PACKETVER == 20160526 packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX @@ -4455,9 +6725,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-06-01aRagexeRE +// 2016-06-01aRagexe, 2016-06-01aRagexeRE #if PACKETVER == 20160601 -// shuffle packets packet(0x0202,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -4489,9 +6758,9 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-06-08aRagexeRE -#if PACKETVER == 20160608 -// shuffle packets +// 2016-06-08aRagexe, 2016-06-08aRagexeRE, 2016-06-08bRagexe, 2016-06-08bRagexeRE, 2016-06-09aRagexe +#if PACKETVER == 20160608 || \ + PACKETVER == 20160609 packet(0x022d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x035f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ @@ -4523,9 +6792,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-06-15aRagexeRE +// 2016-06-15aRagexe, 2016-06-15aRagexeRE #if PACKETVER == 20160615 -// shuffle packets packet(0x0281,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD @@ -4557,9 +6825,8 @@ packet(0x0961,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #endif -// 2016-06-22aRagexeRE +// 2016-06-22aRagexe, 2016-06-22aRagexeRE #if PACKETVER == 20160622 -// shuffle packets packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x035f,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ @@ -4591,9 +6858,9 @@ packet(0x0969,6,clif->pDropItem,2,4); // CZ_ITEM_THROW #endif -// 2016-06-29aRagexeRE -#if PACKETVER == 20160629 -// shuffle packets +// 2016-06-29aRagexe, 2016-06-29aRagexeRE, 2016-06-30aRagexe, 2016-06-30aRagexeRE +#if PACKETVER == 20160629 || \ + PACKETVER == 20160630 packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK packet(0x022d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x035f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK @@ -4625,43 +6892,8 @@ packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE #endif -// 2016-06-30aRagexeRE -#if PACKETVER == 20160630 -// shuffle packets - packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x022d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x035f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0363,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0368,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x085c,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x085e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0860,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0861,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0863,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0867,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x086b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0881,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0885,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x088e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x0893,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x091e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0922,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0925,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0926,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x093e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0946,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0948,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x094a,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0957,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x095a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0968,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x0969,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE -#endif - -// 2016-07-06cRagexeRE +// 2016-07-06bRagexe, 2016-07-06cRagexeRE #if PACKETVER == 20160706 -// shuffle packets packet(0x0362,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x085f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ @@ -4693,9 +6925,8 @@ packet(0x0958,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP #endif -// 2016-07-13bRagexeRE +// 2016-07-13aRagexe, 2016-07-13aRagexeRE, 2016-07-13bRagexe, 2016-07-13bRagexeRE, 2016-07-13cRagexe, 2016-07-13dRagexe #if PACKETVER == 20160713 -// shuffle packets packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x0363,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES @@ -4727,9 +6958,8 @@ packet(0x095b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD #endif -// 2016-07-20aRagexeRE +// 2016-07-20aRagexe, 2016-07-20aRagexeRE, 2016-07-20bRagexe, 2016-07-20bRagexeRE #if PACKETVER == 20160720 -// shuffle packets packet(0x0362,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX packet(0x0363,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL packet(0x0365,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT @@ -4761,9 +6991,8 @@ packet(0x0969,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ #endif -// 2016-07-27bRagexeRE +// 2016-07-27aRagexe, 2016-07-27aRagexeRE, 2016-07-27bRagexe, 2016-07-27bRagexeRE #if PACKETVER == 20160727 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x023b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO @@ -4795,9 +7024,8 @@ packet(0x0969,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES #endif -// 2016-08-03bRagexeRE +// 2016-08-03bRagexe, 2016-08-03bRagexeRE #if PACKETVER == 20160803 -// shuffle packets packet(0x0364,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x085d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0878,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK @@ -4829,9 +7057,8 @@ packet(0x096a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE #endif -// 2016-08-10aRagexeRE +// 2016-08-10aRagexe, 2016-08-10aRagexeRE #if PACKETVER == 20160810 -// shuffle packets packet(0x0361,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x0819,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x0838,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ @@ -4863,9 +7090,74 @@ packet(0x0967,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD #endif -// 2016-08-31bRagexeRE +// 2016-08-17aRagexe, 2016-08-17aRagexeRE +#if PACKETVER == 20160817 + packet(0x0364,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0437,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x07e4,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0811,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0819,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x083c,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x085c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0867,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x086b,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0875,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x087f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0886,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0891,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x089c,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08a5,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08a6,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x08a9,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x08ab,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x08ac,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x08ad,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x091b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0929,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x092d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0930,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0939,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x093c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0957,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0960,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0963,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2016-08-24aRagexe, 2016-08-24aRagexeRE +#if PACKETVER == 20160824 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0934,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2016-08-31aRagexe, 2016-08-31aRagexeRE, 2016-08-31bRagexe, 2016-08-31bRagexeRE #if PACKETVER == 20160831 -// shuffle packets packet(0x022d,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX packet(0x0366,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -4897,9 +7189,8 @@ packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL #endif -// 2016-09-07aRagexeRE +// 2016-09-07aRagexe, 2016-09-07aRagexeRE #if PACKETVER == 20160907 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -4931,9 +7222,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-09-13aRagexeRE +// 2016-09-13aRagexe, 2016-09-13aRagexeRE #if PACKETVER == 20160913 -// shuffle packets packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x0817,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE packet(0x085b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK @@ -4965,9 +7255,8 @@ packet(0x0968,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE #endif -// 2016-09-21bRagexeRE +// 2016-09-21aRagexe, 2016-09-21bRagexeRE #if PACKETVER == 20160921 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -4999,9 +7288,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-09-28dRagexeRE +// 2016-09-28cRagexe, 2016-09-28cRagexeRE, 2016-09-28dRagexeRE #if PACKETVER == 20160928 -// shuffle packets packet(0x0202,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME packet(0x0366,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE @@ -5033,9 +7321,8 @@ packet(0x095a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK #endif -// 2016-10-05aRagexeRE +// 2016-10-05aRagexe, 2016-10-05aRagexeRE #if PACKETVER == 20161005 -// shuffle packets packet(0x0202,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX packet(0x0368,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT packet(0x0838,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD @@ -5067,9 +7354,8 @@ packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL #endif -// 2016-10-12aRagexeRE +// 2016-10-12aRagexe, 2016-10-12aRagexeRE #if PACKETVER == 20161012 -// shuffle packets packet(0x023b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x0364,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES @@ -5101,9 +7387,8 @@ packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD #endif -// 2016-10-19aRagexeRE +// 2016-10-19aRagexe, 2016-10-19aRagexeRE #if PACKETVER == 20161019 -// shuffle packets packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -5135,9 +7420,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-10-26bRagexeRE +// 2016-10-26bRagexe, 2016-10-26bRagexeRE, 2016-10-26cRagexe, 2016-10-26cRagexeRE #if PACKETVER == 20161026 -// shuffle packets packet(0x0363,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x0438,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER @@ -5169,9 +7453,9 @@ packet(0x0962,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif -// 2016-11-02aRagexeRE -#if PACKETVER == 20161102 -// shuffle packets +// 2016-11-02aRagexe, 2016-11-02aRagexeRE, 2016-11-03aRagexe, 2016-11-03aRagexeRE +#if PACKETVER == 20161102 || \ + PACKETVER == 20161103 packet(0x0361,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY packet(0x0367,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT @@ -5203,43 +7487,8 @@ packet(0x0966,6,clif->pTickSend,2); // CZ_REQUEST_TIME #endif -// 2016-11-03aRagexeRE -#if PACKETVER == 20161103 -// shuffle packets - packet(0x0361,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0367,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0436,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0802,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x0838,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x083c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x085f,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0869,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x086c,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0874,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0886,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x088f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0890,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x089f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x08a2,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x08aa,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x091b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x0922,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0925,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x092f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x0936,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0946,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0949,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x095e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x0964,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x0965,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x0966,6,clif->pTickSend,2); // CZ_REQUEST_TIME -#endif - -// 2016-11-09bRagexeRE +// 2016-11-09aRagexe, 2016-11-09aRagexeRE, 2016-11-09bRagexe, 2016-11-09bRagexeRE, 2016-11-09cRagexeRE, 2016-11-09dRagexeRE #if PACKETVER == 20161109 -// shuffle packets packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0362,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY @@ -5271,9 +7520,8 @@ packet(0x0956,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif -// 2016-11-16cRagexeRE +// 2016-11-16aRagexe, 2016-11-16bRagexeRE, 2016-11-16cRagexeRE #if PACKETVER == 20161116 -// shuffle packets packet(0x0368,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0369,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE packet(0x0835,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -5305,9 +7553,8 @@ packet(0x0967,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD #endif -// 2016-11-23aRagexeRE +// 2016-11-23aRagexe, 2016-11-23aRagexeRE #if PACKETVER == 20161123 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x0362,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO @@ -5339,9 +7586,8 @@ packet(0x096a,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID #endif -// 2016-11-30bRagexeRE +// 2016-11-30aRagexe, 2016-11-30aRagexeRE, 2016-11-30bRagexe, 2016-11-30bRagexeRE #if PACKETVER == 20161130 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -5373,9 +7619,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-12-07eRagexeRE +// 2016-12-07cRagexe, 2016-12-07cRagexeRE, 2016-12-07dRagexeRE, 2016-12-07eRagexe, 2016-12-07eRagexeRE #if PACKETVER == 20161207 -// shuffle packets packet(0x023b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -5407,9 +7652,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-12-14bRagexeRE +// 2016-12-14bRagexe, 2016-12-14bRagexeRE, 2016-12-14cRagexe, 2016-12-14cRagexeRE #if PACKETVER == 20161214 -// shuffle packets packet(0x022d,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0281,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x02c4,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY @@ -5441,9 +7685,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2016-12-21aRagexeRE +// 2016-12-21aRagexe, 2016-12-21aRagexeRE, 2016-12-21bRagexe, 2016-12-21bRagexeRE, 2016-12-21cRagexeRE, 2016-12-21dRagexeRE #if PACKETVER == 20161221 -// shuffle packets packet(0x035f,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x0366,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID @@ -5475,9 +7718,8 @@ packet(0x0965,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION #endif -// 2016-12-28aRagexeRE +// 2016-12-28aRagexe, 2016-12-28aRagexeRE #if PACKETVER == 20161228 -// shuffle packets packet(0x0362,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x085a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME packet(0x085e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER @@ -5509,9 +7751,8 @@ packet(0x0944,6,clif->pTickSend,2); // CZ_REQUEST_TIME #endif -// 2017-01-04bRagexeRE +// 2017-01-04aRagexe, 2017-01-04bRagexeRE #if PACKETVER == 20170104 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -5543,9 +7784,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-01-11aRagexeRE +// 2017-01-11aRagexe, 2017-01-11aRagexeRE #if PACKETVER == 20170111 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX @@ -5577,9 +7817,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-01-18aRagexeRE +// 2017-01-18aRagexe, 2017-01-18aRagexeRE #if PACKETVER == 20170118 -// shuffle packets packet(0x022d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -5611,9 +7850,8 @@ packet(0x096a,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE #endif -// 2017-01-25aRagexeRE +// 2017-01-25aRagexe, 2017-01-25aRagexeRE #if PACKETVER == 20170125 -// shuffle packets packet(0x0438,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x086e,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ @@ -5645,9 +7883,8 @@ packet(0x0968,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE #endif -// 2017-02-01aRagexeRE +// 2017-02-01aRagexe, 2017-02-01aRagexeRE #if PACKETVER == 20170201 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID @@ -5679,9 +7916,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-02-08aRagexeRE +// 2017-02-08aRagexeRE, 2017-02-08bRagexe, 2017-02-08bRagexeRE #if PACKETVER == 20170208 -// shuffle packets packet(0x02c4,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -5713,9 +7949,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-02-15aRagexeRE +// 2017-02-15aRagexe, 2017-02-15aRagexeRE #if PACKETVER == 20170215 -// shuffle packets packet(0x02c4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x035f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x0360,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -5747,9 +7982,8 @@ packet(0x0969,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE #endif -// 2017-02-22aRagexeRE +// 2017-02-22aRagexe, 2017-02-22aRagexeRE #if PACKETVER == 20170222 -// shuffle packets packet(0x0202,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -5781,9 +8015,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-02-28aRagexeRE +// 2017-02-28aRagexe, 2017-02-28aRagexeRE, 2017-02-28bRagexe #if PACKETVER == 20170228 -// shuffle packets packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x0360,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT packet(0x0362,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER @@ -5815,9 +8048,8 @@ packet(0x0955,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER #endif -// 2017-03-08bRagexeRE +// 2017-03-08aRagexe, 2017-03-08bRagexeRE #if PACKETVER == 20170308 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -5849,9 +8081,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-03-15cRagexeRE +// 2017-03-15cRagexe, 2017-03-15cRagexeRE #if PACKETVER == 20170315 -// shuffle packets packet(0x02c4,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x035f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x0360,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION @@ -5883,9 +8114,8 @@ packet(0x0952,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD #endif -// 2017-03-22aRagexeRE +// 2017-03-22aRagexe, 2017-03-22aRagexeRE, 2017-03-22bRagexe, 2017-03-22bRagexeRE #if PACKETVER == 20170322 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -5917,9 +8147,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-03-29dRagexeRE +// 2017-03-29bRagexe, 2017-03-29cRagexe, 2017-03-29cRagexeRE, 2017-03-29dRagexeRE #if PACKETVER == 20170329 -// shuffle packets packet(0x0281,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -5951,9 +8180,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-04-05bRagexeRE +// 2017-04-05bRagexe, 2017-04-05bRagexeRE, 2017-04-05cRagexe, 2017-04-05cRagexeRE #if PACKETVER == 20170405 -// shuffle packets packet(0x022d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0281,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -5985,9 +8213,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-04-12aRagexeRE +// 2017-04-12aRagexe, 2017-04-12aRagexeRE #if PACKETVER == 20170412 -// shuffle packets packet(0x023b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x0365,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0863,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE @@ -6019,9 +8246,8 @@ packet(0x095d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD #endif -// 2017-04-19bRagexeRE +// 2017-04-19aRagexe, 2017-04-19bRagexeRE #if PACKETVER == 20170419 -// shuffle packets packet(0x0811,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x0819,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK packet(0x0838,6,clif->pGetCharNameRequest,2); // CZ_REQNAME @@ -6053,9 +8279,8 @@ packet(0x0965,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE #endif -// 2017-04-26dRagexeRE +// 2017-04-26bRagexe, 2017-04-26dRagexeRE #if PACKETVER == 20170426 -// shuffle packets packet(0x0281,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -6087,9 +8312,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-05-02dRagexeRE +// 2017-05-02aRagexe, 2017-05-02bRagexe, 2017-05-02dRagexeRE #if PACKETVER == 20170502 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -6121,9 +8345,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-05-17aRagexeRE +// 2017-05-17aRagexe, 2017-05-17aRagexeRE, 2017-05-17bRagexeRE #if PACKETVER == 20170517 -// shuffle packets packet(0x0364,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD packet(0x0367,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT @@ -6155,9 +8378,8 @@ packet(0x0964,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP #endif -// 2017-05-24aRagexeRE +// 2017-05-24aRagexe, 2017-05-24aRagexeRE, 2017-05-24bRagexe #if PACKETVER == 20170524 -// shuffle packets packet(0x0364,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ packet(0x0368,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x0802,6,clif->pDropItem,2,4); // CZ_ITEM_THROW @@ -6189,9 +8411,8 @@ packet(0x0968,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID #endif -// 2017-05-31aRagexeRE +// 2017-05-31aRagexe, 2017-05-31aRagexeRE #if PACKETVER == 20170531 -// shuffle packets packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x0369,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL packet(0x07e4,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE @@ -6223,9 +8444,8 @@ packet(0x0968,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO #endif -// 2017-06-07bRagexeRE +// 2017-06-07bRagexeRE, 2017-06-07cRagexe, 2017-06-07cRagexeRE #if PACKETVER == 20170607 -// shuffle packets packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x0364,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x07e4,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -6257,9 +8477,8 @@ packet(0x0949,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE #endif -// 2017-06-14bRagexeRE +// 2017-06-14bRagexe, 2017-06-14bRagexeRE #if PACKETVER == 20170614 -// shuffle packets packet(0x023b,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY packet(0x0361,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x0364,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER @@ -6291,9 +8510,8 @@ packet(0x0963,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #endif -// 2017-06-21aRagexeRE +// 2017-06-21aRagexeRE, 2017-06-21bRagexe #if PACKETVER == 20170621 -// shuffle packets packet(0x0202,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -6325,9 +8543,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-06-28bRagexeRE +// 2017-06-28bRagexe, 2017-06-28bRagexeRE #if PACKETVER == 20170628 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -6359,9 +8576,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-07-05aRagexeRE +// 2017-07-05aRagexe, 2017-07-05aRagexeRE #if PACKETVER == 20170705 -// shuffle packets packet(0x0202,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x02c4,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -6393,9 +8609,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-07-12bRagexeRE +// 2017-07-12bRagexe, 2017-07-12bRagexeRE #if PACKETVER == 20170712 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -6427,9 +8642,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-07-19aRagexeRE +// 2017-07-19aRagexe, 2017-07-19aRagexeRE #if PACKETVER == 20170719 -// shuffle packets packet(0x022d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT packet(0x0367,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE packet(0x0368,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK @@ -6461,9 +8675,8 @@ packet(0x0966,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE #endif -// 2017-07-26cRagexeRE +// 2017-07-26aRagexe, 2017-07-26cRagexeRE #if PACKETVER == 20170726 -// shuffle packets packet(0x0363,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE packet(0x0366,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER @@ -6495,9 +8708,8 @@ packet(0x0963,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO #endif -// 2017-08-01aRagexeRE +// 2017-08-01aRagexe, 2017-08-01aRagexeRE, 2017-08-01bRagexe #if PACKETVER == 20170801 -// shuffle packets packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x0281,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -6529,9 +8741,41 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-08-16cRagexeRE +// 2017-08-09cRagexe, 2017-08-09cRagexeRE +#if PACKETVER == 20170809 + packet(0x022d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0281,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0364,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0366,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0367,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x07e4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0802,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0835,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0868,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x086e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x086f,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0876,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x087d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0880,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x088c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0890,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0892,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0895,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0899,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08a3,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08a6,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0918,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0921,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x092a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x092b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0931,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0939,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x093b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0940,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER +#endif + +// 2017-08-16cRagexe, 2017-08-16cRagexeRE, 2017-08-16dRagexe, 2017-08-16dRagexeRE #if PACKETVER == 20170816 -// shuffle packets packet(0x022d,6,clif->pGetCharNameRequest,2); // CZ_REQNAME packet(0x035f,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0361,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES @@ -6563,9 +8807,8 @@ packet(0x0960,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO #endif -// 2017-08-23aRagexeRE +// 2017-08-23aRagexe, 2017-08-23aRagexeRE #if PACKETVER == 20170823 -// shuffle packets packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -6597,9 +8840,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-08-30bRagexeRE +// 2017-08-30aRagexe, 2017-08-30aRagexeRE, 2017-08-30bRagexe, 2017-08-30bRagexeRE #if PACKETVER == 20170830 -// shuffle packets packet(0x0281,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x02c4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP packet(0x0363,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER @@ -6631,9 +8873,8 @@ packet(0x0959,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND #endif -// 2017-09-06cRagexeRE +// 2017-09-06cRagexe, 2017-09-06cRagexeRE #if PACKETVER == 20170906 -// shuffle packets packet(0x0202,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x0281,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x02c4,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX @@ -6665,9 +8906,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-09-13bRagexeRE +// 2017-09-13bRagexeRE, 2017-09-13cRagexe #if PACKETVER == 20170913 -// shuffle packets packet(0x0281,6,clif->pGetCharNameRequest,2); // CZ_REQNAME packet(0x035f,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x0437,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO @@ -6699,9 +8939,8 @@ packet(0x095c,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID #endif -// 2017-09-20bRagexeRE +// 2017-09-20aRagexe, 2017-09-20bRagexeRE #if PACKETVER == 20170920 -// shuffle packets packet(0x0369,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP packet(0x0436,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x07ec,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY @@ -6733,9 +8972,8 @@ packet(0x096a,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE #endif -// 2017-09-27bRagexeRE +// 2017-09-27bRagexe, 2017-09-27bRagexeRE, 2017-09-27cRagexe, 2017-09-27dRagexe, 2017-09-27dRagexeRE #if PACKETVER == 20170927 -// shuffle packets packet(0x02c4,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x035f,6,clif->pGetCharNameRequest,2); // CZ_REQNAME packet(0x0361,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK @@ -6767,9 +9005,8 @@ packet(0x095a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND #endif -// 2017-10-02cRagexeRE +// 2017-10-02cRagexe, 2017-10-02cRagexeRE #if PACKETVER == 20171002 -// shuffle packets packet(0x022d,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE @@ -6801,9 +9038,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-10-11bRagexeRE +// 2017-10-11aRagexe, 2017-10-11aRagexeRE, 2017-10-11bRagexe, 2017-10-11bRagexeRE #if PACKETVER == 20171011 -// shuffle packets packet(0x023b,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -6835,9 +9071,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-10-18aRagexeRE +// 2017-10-18aRagexe, 2017-10-18aRagexeRE #if PACKETVER == 20171018 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0363,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER @@ -6869,9 +9104,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-10-25eRagexeRE +// 2017-10-25bRagexe, 2017-10-25bRagexeRE, 2017-10-25cRagexe, 2017-10-25cRagexeRE, 2017-10-25dRagexe, 2017-10-25dRagexeRE, 2017-10-25eRagexe, 2017-10-25eRagexeRE #if PACKETVER == 20171025 -// shuffle packets packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS @@ -6903,9 +9137,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-11-01bRagexeRE +// 2017-11-01aRagexe, 2017-11-01bRagexeRE #if PACKETVER == 20171101 -// shuffle packets packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x0368,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x0369,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO @@ -6937,9 +9170,8 @@ packet(0x0966,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND #endif -// 2017-11-08bRagexeRE +// 2017-11-08aRagexe, 2017-11-08bRagexeRE #if PACKETVER == 20171108 -// shuffle packets packet(0x0202,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0361,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x07e4,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID @@ -6971,9 +9203,8 @@ packet(0x0967,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND #endif -// 2017-11-15aRagexeRE +// 2017-11-15aRagexe, 2017-11-15aRagexeRE #if PACKETVER == 20171115 -// shuffle packets packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER packet(0x0365,6,clif->pDropItem,2,4); // CZ_ITEM_THROW @@ -7005,9 +9236,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-11-22bRagexeRE +// 2017-11-22aRagexe, 2017-11-22bRagexeRE #if PACKETVER == 20171122 -// shuffle packets packet(0x0281,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x02c4,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x035f,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK @@ -7039,9 +9269,8 @@ packet(0x0968,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE #endif -// 2017-11-29aRagexeRE +// 2017-11-29aRagexe, 2017-11-29aRagexeRE #if PACKETVER == 20171129 -// shuffle packets packet(0x02c4,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0361,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK @@ -7073,9 +9302,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-12-06aRagexeRE +// 2017-12-06aRagexeRE, 2017-12-06bRagexe, 2017-12-06cRagexe #if PACKETVER == 20171206 -// shuffle packets packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID @@ -7107,9 +9335,8 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-12-13bRagexeRE +// 2017-12-13bRagexe, 2017-12-13bRagexeRE #if PACKETVER == 20171213 -// shuffle packets packet(0x0202,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME @@ -7141,72 +9368,50 @@ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif - -// kro zero clients -#ifdef PACKETVER_ZERO - -// from 2017-10-19aRagexe_zero to 2017-11-13bRagexe_zero -#if PACKETVER == 20171019 || \ - PACKETVER == 20171023 || \ - PACKETVER == 20171024 || \ - PACKETVER == 20171025 || \ - PACKETVER == 20171027 || \ - PACKETVER == 20171030 || \ - PACKETVER == 20171031 || \ - PACKETVER == 20171109 || \ - PACKETVER == 20171113 -// shuffle packets - packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x0281,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x035f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0360,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x0362,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x0363,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0365,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0368,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0438,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x07e4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x07ec,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0811,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0815,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0817,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0835,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0838,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK +// 2017-12-20aRagexe, 2017-12-20aRagexeRE +#if PACKETVER == 20171220 + packet(0x0281,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0366,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0369,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0436,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0437,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x085e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0861,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0872,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0873,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0880,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0882,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0885,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0899,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x089e,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a7,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x091b,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x091e,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0924,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0929,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0933,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x093e,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0941,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0946,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x094e,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0951,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0957,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0960,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0964,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ #endif -// 2017-11-15bRagexe_zero to 2017-11-17aRagexe_zero -#if PACKETVER == 20171115 || \ - PACKETVER == 20171116 || \ - PACKETVER == 20171117 -// shuffle packets - packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES +// 2017-12-27aRagexe, 2017-12-27aRagexeRE +#if PACKETVER == 20171227 packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0361,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0369,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0802,6,clif->pGetCharNameRequest,2); // CZ_REQNAME packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE @@ -7214,95 +9419,126 @@ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0860,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0881,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x091c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0922,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x0959,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x0966,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x087d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0888,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x088a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x088d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x08a0,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a5,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x092c,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x092e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0938,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0945,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0946,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0969,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x096a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER #endif -// 2017-11-21aRagexe_zero -#if PACKETVER == 20171121 || \ - PACKETVER == 20171122 -// shuffle packets - packet(0x0202,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x022d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE +// 2018-01-03aRagexe, 2018-01-03aRagexeRE, 2018-01-03bRagexe, 2018-01-03bRagexeRE +#if PACKETVER == 20180103 + packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0363,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0865,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x086b,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x086d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0872,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0876,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0879,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x088e,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x089f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x08a9,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08ab,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x08ac,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x091d,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0922,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0926,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0927,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x092c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0935,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0938,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0941,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0946,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0948,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094e,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x095d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x095f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0960,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX +#endif + +// 2018-01-17aRagexe, 2018-01-17aRagexeRE +#if PACKETVER == 20180117 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0363,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x0811,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0866,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0889,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0892,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x089e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x08ad,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0918,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x091f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0943,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0950,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0875,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-11-23dRagexe_zero -#if PACKETVER == 20171123 -// shuffle packets +// 2018-01-24bRagexe, 2018-01-24bRagexeRE, 2018-01-31Ragexe +#if PACKETVER == 20180124 || \ + PACKETVER == 20180131 packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0367,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0802,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0819,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x085f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0860,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0876,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0882,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x088c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0896,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x089e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x08a8,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x092b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0930,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x0935,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x0947,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x0960,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x085f,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0868,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x086a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x086f,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x087a,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0888,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0890,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0919,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0940,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0946,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x094d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0958,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0961,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-11-27cRagexe_zero to 2017-11-28aRagexe_zero -#if PACKETVER == 20171127 || \ - PACKETVER == 20171128 -// shuffle packets - packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS +// 2018-02-07bRagexe, 2018-02-07bRagexeRE, 2018-02-07cRagexe +#if PACKETVER == 20180207 packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x035f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0360,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY @@ -7310,7 +9546,6 @@ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP @@ -7323,152 +9558,114 @@ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0893,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0870,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0881,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x092e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0940,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0950,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME #endif -// 2017-11-30bRagexe_zero -#if PACKETVER == 20171130 -// shuffle packets - packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0864,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x086f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x0871,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0872,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0875,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x0878,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0881,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x0884,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0886,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0887,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x088b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0894,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0899,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x08a0,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x08a7,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x0925,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0928,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0930,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0931,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0935,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x093a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0947,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x094c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x094f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x095b,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x095f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0960,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0965,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL +// 2018-02-13aRagexe, 2018-02-13aRagexeRE, 2018-02-13bRagexe +#if PACKETVER == 20180213 + packet(0x0369,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0802,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0817,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x085a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x086f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0874,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0875,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0878,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x087b,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0882,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x088c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0892,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0898,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x089c,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x08a3,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x08a5,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08a9,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08ad,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0917,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0922,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0924,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0926,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0933,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0936,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x093c,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0943,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0955,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x095a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0962,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER #endif -// 2017-12-04bRagexe_zero -#if PACKETVER == 20171204 -// shuffle packets - packet(0x0281,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x085b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x086f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x087d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x0887,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x0892,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0896,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x08aa,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0917,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x091b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0921,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0924,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x0937,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0960,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +// 2018-02-21aRagexeRE, 2018-02-21bRagexe, 2018-02-21bRagexeRE +#if PACKETVER == 20180221 + packet(0x0202,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0366,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0436,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0838,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0867,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x086c,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x086f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0871,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0876,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0879,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x087d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0880,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0881,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0883,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x088f,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0891,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0897,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0899,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x089d,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0917,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x091e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0929,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x093d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x094b,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x094d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x094e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0957,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0964,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x096a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT #endif -// 2017-12-06dRagexe_zero, 2017-12-08dRagexe_zero, 2017-12-08cRagexe_zero, 2017-12-09bRagexe_zero -#if PACKETVER == 20171206 || \ - PACKETVER == 20171208 || \ - PACKETVER == 20171209 || \ - PACKETVER == 20171210 || \ - PACKETVER == 20171211 || \ - PACKETVER == 20171212 || \ - PACKETVER == 20171213 -// shuffle packets - packet(0x0281,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0366,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x0835,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x083c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x0860,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x0862,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x0864,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0870,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0878,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND - packet(0x087a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x087b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x0885,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x088d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x0893,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x0897,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x089e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x08a4,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x08ac,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0934,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0936,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x093a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x0940,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX +// 2018-03-07bRagexe, 2018-03-07bRagexeRE, 2018-03-09aRagexe +#if PACKETVER == 20180307 || \ + PACKETVER == 20180309 + packet(0x0281,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x035f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0437,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x07e4,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0861,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0862,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0864,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x086c,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0870,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0872,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0877,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x088d,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0893,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x089b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x08a6,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x08aa,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08ab,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0917,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0920,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0937,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0939,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x093d,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE packet(0x0941,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x0959,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x095b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x095c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x095f,6,clif->pTickSend,2); // CZ_REQUEST_TIME -#endif - -// 2017-12-14cRagexe_zero -#if PACKETVER == 20171214 -// shuffle packets - packet(0x023b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE - packet(0x02c4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW - packet(0x0438,6,clif->pGetCharNameRequest,2); // CZ_REQNAME - packet(0x085b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD - packet(0x085e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER - packet(0x0862,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID - packet(0x0864,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD - packet(0x086a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE - packet(0x0871,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER - packet(0x0873,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES - packet(0x0886,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE - packet(0x088b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK - packet(0x088c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE - packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL - packet(0x0894,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP - packet(0x0897,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE - packet(0x08a3,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS - packet(0x08a5,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX - packet(0x08ac,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE - packet(0x0933,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT - packet(0x094a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION - packet(0x094d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER - packet(0x094f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO - packet(0x0951,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ - packet(0x095a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY - packet(0x095b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK - packet(0x0960,6,clif->pTickSend,2); // CZ_REQUEST_TIME - packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE - packet(0x096a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0944,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0948,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0951,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0954,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0957,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0969,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT #endif -#endif // PACKETVER_ZERO -#endif /* MAP_PACKETS_SHUFFLE_H */ +#endif /* MAP_PACKETS_SHUFFLE_MAIN_H */ diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h new file mode 100644 index 000000000..463ab1679 --- /dev/null +++ b/src/map/packets_shuffle_zero.h @@ -0,0 +1,656 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2013-2018 Hercules Dev Team + * + * 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/>. + */ + +//Included directly by clif.c in packet_loaddb() + +#ifndef MAP_PACKETS_SHUFFLE_ZERO_H +#define MAP_PACKETS_SHUFFLE_ZERO_H + +#ifndef packet + #define packet(a,b,...) +#endif + +/* + * packet syntax + * - packet(packet_id,length,function,offset ( specifies the offset of a packet field in bytes from the begin of the packet ),...) + * - Example: packet(0x0072,19,clif->pWantToConnection,2,6,10,14,18); + */ + +/* This file is autogenerated, please do not commit manual changes */ + + +// 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 +#if PACKETVER == 20171019 || \ + PACKETVER == 20171023 || \ + PACKETVER == 20171024 || \ + PACKETVER == 20171025 || \ + PACKETVER == 20171027 || \ + PACKETVER == 20171030 || \ + PACKETVER == 20171031 || \ + PACKETVER == 20171109 || \ + PACKETVER == 20171113 + packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0281,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x02c4,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x035f,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0360,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0361,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0362,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0363,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0364,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0365,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0366,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0367,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0369,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0436,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0437,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0438,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x07e4,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x07ec,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0802,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0811,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0815,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0817,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0819,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0835,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0838,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK +#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,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0860,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0881,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x091c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0922,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0959,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0966,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2017-11-21aRagexe_zero, 2017-11-22aRagexe_zero +#if PACKETVER == 20171121 || \ + PACKETVER == 20171122 + packet(0x0202,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x022d,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0866,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0889,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0892,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x089e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08ad,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0918,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x091f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0928,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0943,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0950,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2017-11-23dRagexe_zero +#if PACKETVER == 20171123 + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0367,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0860,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0876,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0882,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x088c,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0896,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x089e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x08a8,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x092b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0930,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0935,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0947,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0960,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2017-11-27aRagexe_zero, 2017-11-27cRagexe_zero, 2017-11-28aRagexe_zero +#if PACKETVER == 20171127 || \ + PACKETVER == 20171128 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0893,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2017-11-30bRagexe_zero +#if PACKETVER == 20171130 + packet(0x0361,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0864,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x086f,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0871,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0872,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0875,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0878,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0881,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0884,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0886,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0887,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x088b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0894,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0899,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x08a0,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x08a7,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0925,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0928,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0930,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0931,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0935,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x093a,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0947,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x094c,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x095b,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x095f,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0960,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0965,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL +#endif + +// 2017-12-04bRagexe_zero +#if PACKETVER == 20171204 + packet(0x0281,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x085b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x086f,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x087d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0885,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0887,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0892,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0896,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x08aa,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0917,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0921,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0924,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0937,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0960,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#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 +#if PACKETVER == 20171206 || \ + PACKETVER == 20171208 || \ + PACKETVER == 20171209 || \ + PACKETVER == 20171210 || \ + PACKETVER == 20171211 || \ + PACKETVER == 20171212 || \ + PACKETVER == 20171213 + packet(0x0281,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0366,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0436,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0835,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x083c,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0860,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0862,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0864,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0870,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0878,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x087a,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x087b,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0885,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x088d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0893,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0897,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x089e,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x08a4,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x08ac,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0920,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0934,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0936,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x093a,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0940,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0941,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0959,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x095b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x095c,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x095f,6,clif->pTickSend,2); // CZ_REQUEST_TIME +#endif + +// 2017-12-14cRagexe_zero +#if PACKETVER == 20171214 + packet(0x023b,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x02c4,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0438,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x085b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x085e,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0862,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0864,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x086a,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0871,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0873,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0886,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x088b,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088c,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0892,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0894,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0897,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x08a3,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x08a5,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x08ac,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0933,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x094a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x094d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x094f,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0951,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x095a,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x095b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0960,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0969,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x096a,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND +#endif + +// 2017-12-20aRagexe_zero, 2017-12-21aRagexe_zero, 2017-12-21bRagexe_zero +#if PACKETVER == 20171220 || \ + PACKETVER == 20171221 + packet(0x022d,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0281,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0438,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x07ec,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0819,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0835,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0838,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x085f,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0867,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x086c,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0872,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x087a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x087e,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0899,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x089b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x089c,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x08a3,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x08a5,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x08ad,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x091f,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0921,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x092d,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x092e,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0932,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0934,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0937,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x094d,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x095b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION +#endif + +// 2017-12-27bRagexe_zero, 2017-12-29aRagexe_zero +#if PACKETVER == 20171227 || \ + PACKETVER == 20171229 + packet(0x02c4,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0860,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x086c,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0871,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0872,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0874,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0876,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0877,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0878,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x087b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0885,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0889,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x088b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0894,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x089f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x091c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0920,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0925,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x092d,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0930,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0939,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x093e,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0941,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0945,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0946,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x094b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x095e,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0967,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0968,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES +#endif + +// 2018-01-03aRagexe_zero +#if PACKETVER == 20180103 + packet(0x035f,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0360,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x07e4,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x083c,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0860,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0866,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x086d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0871,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0872,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0874,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x087b,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0885,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0888,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0890,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0896,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x089d,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x08a6,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x091e,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0924,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0938,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x093b,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0956,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0958,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x095b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x095d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0964,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0966,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x096a,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK +#endif + +// 2018-01-17aRagexe_zero +#if PACKETVER == 20180117 + packet(0x0361,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0364,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0438,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x07e4,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x083c,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0866,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x086e,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x086f,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x087d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0881,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0884,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0886,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x0890,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0891,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0893,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0899,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x089d,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x089e,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0919,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x091c,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x091f,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0921,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0928,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0929,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x092d,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0933,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0946,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x095e,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0963,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER +#endif + +// 2018-01-31dRagexe_zero +#if PACKETVER == 20180131 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0367,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0940,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2018-02-07bRagexe_zero +#if PACKETVER == 20180207 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + +// 2018-02-13aRagexe_zero +#if PACKETVER == 20180213 + packet(0x022d,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x02c4,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x035f,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0361,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0802,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0815,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0838,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x085a,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x085d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0868,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x087b,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0882,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x0887,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0888,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x088a,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x088e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0899,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0917,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x091d,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0922,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0930,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0941,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0942,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0947,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x094d,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x0958,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x095b,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x095c,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0967,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD +#endif + +// 2018-02-21aRagexe_zero +#if PACKETVER == 20180221 + packet(0x02c4,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0362,6,clif->pGetCharNameRequest,2); // CZ_REQNAME + packet(0x0364,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x0438,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x0817,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x085b,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x086a,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0878,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0880,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x0884,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x088d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0892,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0895,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x08a1,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x08a3,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x091b,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0921,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0923,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x092d,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0932,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x093b,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x093d,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x093e,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0942,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x0951,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0952,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0958,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0959,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x095d,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP +#endif + +// 2018-02-28bRagexe_zero, 2018-03-07aRagexe_zero, 2018-03-09aRagexe_zero +#if PACKETVER == 20180228 || \ + PACKETVER == 20180307 || \ + PACKETVER == 20180309 + packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION + packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER + packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS + packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES + packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME + packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE + packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER + packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW + packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD + packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY + packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER + packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX + packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID + packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT + packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK + packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE + packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND + packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP + packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE + packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ + packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE + packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE + packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE + packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO + packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE + packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK + packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL + packet(0x0930,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD + packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME +#endif + + +#endif /* MAP_PACKETS_SHUFFLE_ZERO_H */ diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index e1395e949..2a65eb6cf 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -191,7 +191,9 @@ enum packet_headers { skill_entryType = 0x9ca, #endif graffiti_entryType = 0x1c9, -#if PACKETVER > 20130000 /* not sure date */ +#ifdef PACKETVER_ZERO + dropflooritemType = 0xadd, +#elif PACKETVER > 20130000 /* not sure date */ dropflooritemType = 0x84b, #else dropflooritemType = 0x9e, @@ -333,6 +335,28 @@ enum packet_headers { #if PACKETVER >= 20151223 skillscale = 0xA41, #endif +#if PACKETVER >= 20130821 + progressbarunit = 0x09D1, +#endif +#if PACKETVER >= 20171207 + partymemberinfo = 0x0ae4, + partyinfo = 0x0ae5, +#elif PACKETVER >= 20170502 +// [4144] probably 0xa43 packet can works on older clients because in client was added in 2015-10-07 + partymemberinfo = 0x0a43, + partyinfo = 0x0a44, +#else + partymemberinfo = 0x01e9, + partyinfo = 0x00fb, +#endif +#if PACKETVER >= 20120702 + clanBasicInfo = 0x098A, ///< ZC_CLANINFO +#endif +#if PACKETVER >= 20120716 + clanOnlineCount = 0x0988, ///< ZC_NOTIFY_CLAN_CONNECTINFO + clanLeave = 0x0989, ///< ZC_ACK_CLAN_LEAVE + clanMessage = 0x098E, ///< ZC_NOTIFY_CLAN_CHAT +#endif }; #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute @@ -495,6 +519,10 @@ struct packet_dropflooritem { uint8 subX; uint8 subY; int16 count; +#ifdef PACKETVER_ZERO + int8 showdropeffect; + int16 dropeffectmode; +#endif } __attribute__((packed)); struct packet_idle_unit2 { #if PACKETVER < 20091103 @@ -1491,6 +1519,85 @@ struct PACKET_ZC_SKILL_SCALE { uint32 casttime; } __attribute__((packed)); +struct ZC_PROGRESS_ACTOR { + int16 PacketType; + int32 GID; + int32 color; + uint32 time; +} __attribute__((packed)); + +struct PACKET_ZC_ADD_MEMBER_TO_GROUP { + int16 packetType; + uint32 AID; +#if PACKETVER >= 20171207 + uint32 GID; +#endif + uint32 leader; +// [4144] probably 0xa43 packet can works on older clients because in client was added in 2015-10-07 +#if PACKETVER >= 20170502 + int16 class; + int16 baseLevel; +#endif + int16 x; + int16 y; + uint8 offline; + char partyName[NAME_LENGTH]; + char playerName[NAME_LENGTH]; + char mapName[MAP_NAME_LENGTH_EXT]; + int8 sharePickup; + int8 shareLoot; +} __attribute__((packed)); + +struct PACKET_ZC_GROUP_LIST_SUB { + uint32 AID; +#if PACKETVER >= 20171207 + uint32 GID; +#endif + char playerName[NAME_LENGTH]; + char mapName[MAP_NAME_LENGTH_EXT]; + uint8 leader; + uint8 offline; +#if PACKETVER >= 20170502 + int16 class; + int16 baseLevel; +#endif +} __attribute__((packed)); + +struct PACKET_ZC_GROUP_LIST { + int16 packetType; + int16 packetLen; + char partyName[NAME_LENGTH]; + struct PACKET_ZC_GROUP_LIST_SUB members[]; +} __attribute__((packed)); + +struct PACKET_ZC_CLANINFO { + int16 PacketType; + int16 PacketLength; + uint32 ClanID; + char ClanName[NAME_LENGTH]; + char MasterName[NAME_LENGTH]; + char Map[MAP_NAME_LENGTH_EXT]; + uint8 AllyCount; + uint8 AntagonistCount; +} __attribute__((packed)); + +struct PACKET_ZC_NOTIFY_CLAN_CONNECTINFO { + int16 PacketType; + int16 NumConnect; + int16 NumTotal; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_CLAN_LEAVE { + int16 PacketType; +} __attribute__((packed)); + +struct PACKET_ZC_NOTIFY_CLAN_CHAT { + int16 PacketType; + int16 PacketLength; + char MemberName[NAME_LENGTH]; + char Message[]; +} __attribute__((packed)); + #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/pc.c b/src/map/pc.c index d5d359557..0b30b1221 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -29,6 +29,7 @@ #include "map/channel.h" #include "map/chat.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/clif.h" #include "map/date.h" // is_day_of_*() #include "map/duel.h" @@ -1524,6 +1525,12 @@ int pc_reg_received(struct map_session_data *sd) status_calc_pc(sd,SCO_FIRST|SCO_FORCE); chrif->scdata_request(sd->status.account_id, sd->status.char_id); + if (sd->status.clan_id) + clan->member_online(sd, true); + + //Auth is fully okay, update last_login + sd->status.last_login = time(NULL); + // Storage Request intif->request_account_storage(sd); @@ -4781,7 +4788,7 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount) return 0; } - if (!map->addflooritem(&sd->bl, &sd->status.inventory[n], amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 2)) + if (!map->addflooritem(&sd->bl, &sd->status.inventory[n], amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 2, false)) return 0; pc->delitem(sd, n, amount, 1, DELITEM_NORMAL, LOG_TYPE_PICKDROP_PLAYER); @@ -7962,7 +7969,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) { 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); - map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + 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] diff --git a/src/map/pc.h b/src/map/pc.h index df0df979d..a01152df5 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -443,6 +443,7 @@ END_ZEROED_BLOCK; int party_invite, party_invite_account; // for handling party invitation (holds party id and account id) int adopt_invite; // Adoption struct guild *guild;/* [Ind/Hercules] speed everything up */ + struct clan *clan; int guild_invite,guild_invite_account; int guild_emblem_id,guild_alliance,guild_alliance_account; short guild_x,guild_y; // For guildmate position display. [Skotlex] should be short [zzo] diff --git a/src/map/pet.c b/src/map/pet.c index 9ac496659..2997a4b5a 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -325,7 +325,7 @@ int pet_return_egg(struct map_session_data *sd, struct pet_data *pd) tmp_item.card[3] = pd->pet.rename_flag; if((flag = pc->additem(sd,&tmp_item,1,LOG_TYPE_EGG))) { 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); + map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } pd->pet.incubate = 1; unit->free(&pd->bl,CLR_OUTSIGHT); @@ -610,7 +610,7 @@ bool pet_get_egg(int account_id, short pet_class, int pet_id ) { tmp_item.card[3] = 0; //New pets are not named. 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); + map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } return true; @@ -751,7 +751,7 @@ int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) { tmp_item.identify = 1; if((flag = pc->additem(sd,&tmp_item,1,LOG_TYPE_CONSUME))) { 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); + map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } if( battle_config.pet_equip_required ) { // Skotlex: halt support timers if needed @@ -1026,7 +1026,7 @@ int pet_delay_item_drop(int tid, int64 tick, int id, intptr_t data) { struct item_drop *ditem_prev; map->addflooritem(NULL, &ditem->item_data, ditem->item_data.amount, list->m, list->x, list->y, - list->first_charid, list->second_charid, list->third_charid, 0); + list->first_charid, list->second_charid, list->third_charid, 0, false); ditem_prev = ditem; ditem = ditem->next; ers_free(pet->item_drop_ers, ditem_prev); diff --git a/src/map/rodex.c b/src/map/rodex.c index 02e757a10..0e9e4ee2a 100644 --- a/src/map/rodex.c +++ b/src/map/rodex.c @@ -216,11 +216,11 @@ void rodex_check_player(struct map_session_data *sd, const char *name, int *base /// @param title : Mail Title /// @param zeny : Amount of zeny attached /// Returns result code: -/// RODEX_SEND_MAIL_SUCCESS = 0, -/// RODEX_SEND_MAIL_FATAL_ERROR = 1, -/// RODEX_SEND_MAIL_COUNT_ERROR = 2, -/// RODEX_SEND_MAIL_ITEM_ERROR = 3, -/// RODEX_SEND_MAIL_RECEIVER_ERROR = 4 +/// RODEX_SEND_MAIL_SUCCESS = 0, +/// RODEX_SEND_MAIL_FATAL_ERROR = 1, +/// RODEX_SEND_MAIL_COUNT_ERROR = 2, +/// RODEX_SEND_MAIL_ITEM_ERROR = 3, +/// RODEX_SEND_MAIL_RECEIVER_ERROR = 4 int rodex_send_mail(struct map_session_data *sd, const char *receiver_name, const char *body, const char *title, int64 zeny) { int i; @@ -369,15 +369,24 @@ struct rodex_message *rodex_get_mail(struct map_session_data *sd, int64 mail_id) { int i; struct rodex_message *msg; + int char_id; nullpo_retr(NULL, sd); - ARR_FIND(0, VECTOR_LENGTH(sd->rodex.messages), i, VECTOR_INDEX(sd->rodex.messages, i).id == mail_id && VECTOR_INDEX(sd->rodex.messages, i).is_deleted != true); + ARR_FIND(0, VECTOR_LENGTH(sd->rodex.messages), i, VECTOR_INDEX(sd->rodex.messages, i).id == mail_id); if (i == VECTOR_LENGTH(sd->rodex.messages)) return NULL; msg = &VECTOR_INDEX(sd->rodex.messages, i); + char_id = sd->status.char_id; + + if ((msg->is_deleted == true) + || (msg->expire_date < time(NULL) && ((msg->receiver_accountid > 0) || (msg->receiver_id == char_id && msg->sender_id != char_id))) + || ((msg->send_date + 2 * RODEX_EXPIRE) < time(NULL)) + ) + return NULL; + return msg; } @@ -393,9 +402,16 @@ void rodex_read_mail(struct map_session_data *sd, int64 mail_id) msg = rodex->get_mail(sd, mail_id); nullpo_retv(msg); - if (msg->is_read == false) { - intif->rodex_updatemail(msg->id, 0); - msg->is_read = true; + if (msg->opentype == RODEX_OPENTYPE_RETURN) { + if (msg->sender_read == false) { + intif->rodex_updatemail(msg->id, 4); + msg->sender_read = true; + } + } else { + if (msg->is_read == false) { + intif->rodex_updatemail(msg->id, 0); + msg->is_read = true; + } } clif->rodex_read_mail(sd, msg->opentype, msg); @@ -445,6 +461,7 @@ void rodex_get_zeny(struct map_session_data *sd, int8 opentype, int64 mail_id) return; } + msg->type &= ~MAIL_TYPE_ZENY; msg->zeny = 0; intif->rodex_updatemail(mail_id, 1); @@ -528,6 +545,8 @@ void rodex_get_items(struct map_session_data *sd, int8 opentype, int64 mail_id) } } + msg->type &= ~MAIL_TYPE_ITEM; + msg->items_count = 0; intif->rodex_updatemail(mail_id, 2); clif->rodex_request_items(sd, opentype, mail_id, RODEX_GET_ITEMS_SUCCESS); @@ -537,8 +556,8 @@ void rodex_get_items(struct map_session_data *sd, int8 opentype, int64 mail_id) /// - should be called everytime we're going to stop using rodex in this character /// @param sd : Target to clean /// @param flag : -/// 0 - clear everything -/// 1 - clear tmp only +/// 0 - clear everything +/// 1 - clear tmp only void rodex_clean(struct map_session_data *sd, int8 flag) { nullpo_retv(sd); diff --git a/src/map/script.c b/src/map/script.c index 7f7aba183..d653800cc 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -29,6 +29,7 @@ #include "map/channel.h" #include "map/chat.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/clif.h" #include "map/date.h" #include "map/elemental.h" @@ -5593,6 +5594,8 @@ int script_reload(void) itemdb->name_constants(); + clan->set_constants(); + sysinfo->vcsrevision_reload(); return 0; @@ -7923,7 +7926,7 @@ BUILDIN(getitem) { if ((flag = pc->additem(sd, &it, get_count, LOG_TYPE_SCRIPT))) { clif->additem(sd, 0, 0, flag); if( pc->candrop(sd,&it) ) - map->addflooritem(&sd->bl, &it, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &it, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } } @@ -8031,7 +8034,7 @@ BUILDIN(getitem2) if ((flag = pc->additem(sd, &item_tmp, get_count, LOG_TYPE_SCRIPT))) { clif->additem(sd, 0, 0, flag); if( pc->candrop(sd,&item_tmp) ) - map->addflooritem(&sd->bl, &item_tmp, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &item_tmp, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } } @@ -8224,7 +8227,7 @@ BUILDIN(makeitem) item_tmp.nameid = nameid; item_tmp.identify=1; - map->addflooritem(NULL, &item_tmp, amount, m, x, y, 0, 0, 0, 0); + map->addflooritem(NULL, &item_tmp, amount, m, x, y, 0, 0, 0, 0, false); return true; } @@ -8281,7 +8284,7 @@ BUILDIN(makeitem2) map->search_freecell(NULL, m, &x, &y, -1, -1, 1); } else { range = (script_hasdata(st, 14) ? cap_value(script_getnum(st, 14), 1, battle_config.area_size) : 3); - map->search_freecell(&sd->bl, sd->bl.m, &x, &y, range, range, 0); // Locate spot next to player. + map->search_freecell(&sd->bl, sd->bl.m, &x, &y, range, range, 0); // Locate spot next to player. } } @@ -8308,7 +8311,7 @@ BUILDIN(makeitem2) item_tmp.card[2] = (short)script_getnum(st, 9); item_tmp.card[3] = (short)script_getnum(st, 10); - map->addflooritem(NULL, &item_tmp, amount, m, x, y, 0, 0, 0, 0); + map->addflooritem(NULL, &item_tmp, amount, m, x, y, 0, 0, 0, 0, false); return true; } @@ -8627,32 +8630,45 @@ BUILDIN(readparam) { * 2 : guild_id * 3 : account_id * 4 : bg_id + * 5 : clan_id *------------------------------------------*/ BUILDIN(getcharid) { - int num; + int num = script_getnum(st, 2); struct map_session_data *sd; - num = script_getnum(st,2); - if( script_hasdata(st,3) ) - sd=map->nick2sd(script_getstr(st,3)); + if (script_hasdata(st, 3)) + sd = map->nick2sd(script_getstr(st, 3)); else - sd=script->rid2sd(st); + sd = script->rid2sd(st); - if(sd==NULL) { - script_pushint(st,0); //return 0, according docs + if (sd == NULL) { + script_pushint(st, 0); //return 0, according docs return true; } - switch( num ) { - case 0: script_pushint(st,sd->status.char_id); break; - case 1: script_pushint(st,sd->status.party_id); break; - case 2: script_pushint(st,sd->status.guild_id); break; - case 3: script_pushint(st,sd->status.account_id); break; - case 4: script_pushint(st,sd->bg_id); break; - default: - ShowError("buildin_getcharid: invalid parameter (%d).\n", num); - script_pushint(st,0); - break; + switch (num) { + case 0: + script_pushint(st, sd->status.char_id); + break; + case 1: + script_pushint(st, sd->status.party_id); + break; + case 2: + script_pushint(st, sd->status.guild_id); + break; + case 3: + script_pushint(st, sd->status.account_id); + break; + case 4: + script_pushint(st, sd->bg_id); + break; + case 5: + script_pushint(st, sd->status.clan_id); + break; + default: + ShowError("buildin_getcharid: invalid parameter (%d).\n", num); + script_pushint(st, 0); + break; } return true; @@ -8900,10 +8916,12 @@ BUILDIN(getguildmember) * 1 : party_name or "" * 2 : guild_name or "" * 3 : map_name + * 4 : clan_name or "" * - : "" *------------------------------------------*/ BUILDIN(strcharinfo) { + struct clan *c; struct guild* g; struct party_data* p; struct map_session_data *sd; @@ -8943,6 +8961,13 @@ BUILDIN(strcharinfo) case 3: script_pushconststr(st, map->list[sd->bl.m].name); break; + case 4: + if ((c = sd->clan) != NULL) { + script_pushstrcopy(st, c->name); + } else { + script_pushconststr(st, ""); + } + break; default: ShowWarning("script:strcharinfo: unknown parameter.\n"); script_pushconststr(st, ""); @@ -13576,7 +13601,7 @@ BUILDIN(successremovecards) if ((flag = pc->additem(sd, &item_tmp, 1, LOG_TYPE_SCRIPT))) { clif->additem(sd, 0, 0, flag); - map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } } @@ -13634,7 +13659,7 @@ BUILDIN(failedremovecards) if ((flag = pc->additem(sd, &item_tmp, 1, LOG_TYPE_SCRIPT))) { clif->additem(sd, 0, 0, flag); - map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } } @@ -21570,7 +21595,29 @@ BUILDIN(progressbar) clif->progressbar(sd, (unsigned int)strtoul(color, (char **)NULL, 0), second); return true; } +BUILDIN(progressbar_unit) +{ + const char *color = script_getstr(st, 2); + uint32 second = script_getnum(st, 3); + if (script_hasdata(st, 4)) { + struct block_list *bl = map->id2bl(script_getnum(st, 4)); + + if (bl == NULL) { + ShowWarning("buildin_progressbar_unit: Error in finding object with given GID %d!\n", script_getnum(st, 4)); + return true; + } + clif->progressbar_unit(bl, (unsigned int)strtoul(color, (char **)NULL, 0), second); + } else { + struct map_session_data *sd = script->rid2sd(st); + + if (sd == NULL) + return false; + + clif->progressbar_unit(&sd->bl, (unsigned int)strtoul(color, (char **)NULL, 0), second); + } + return true; +} BUILDIN(pushpc) { uint8 dir; @@ -22171,7 +22218,7 @@ BUILDIN(getrandgroupitem) if ((flag = pc->additem(sd, &it, get_count, LOG_TYPE_SCRIPT))) { clif->additem(sd, 0, 0, flag); if( pc->candrop(sd,&it) ) - map->addflooritem(&sd->bl, &it, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &it, get_count, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } } @@ -23839,6 +23886,85 @@ BUILDIN(rodex_sendmail2) } /** + * Clan System: Add a player to a clan + */ +BUILDIN(clan_join) +{ + struct map_session_data *sd = NULL; + int clan_id = script_getnum(st, 2); + + if (script_hasdata(st, 3)) + sd = map->id2sd(script_getnum(st, 3)); + else + sd = map->id2sd(st->rid); + + if (sd == NULL) { + script_pushint(st, false); + return false; + } + + if (clan->join(sd, clan_id)) + script_pushint(st, true); + else + script_pushint(st, false); + + return true; +} + +/** + * Clan System: Remove a player from clan + */ +BUILDIN(clan_leave) +{ + struct map_session_data *sd = NULL; + + if (script_hasdata(st, 2)) + sd = map->id2sd(script_getnum(st, 2)); + else + sd = map->id2sd(st->rid); + + if (sd == NULL) { + script_pushint(st, false); + return false; + } + + if (clan->leave(sd, false)) + script_pushint(st, true); + else + script_pushint(st, false); + + return true; +} + +/** + * Clan System: Show clan emblem next to npc name + */ +BUILDIN(clan_master) +{ + struct npc_data *nd = map->id2nd(st->oid); + int clan_id = script_getnum(st, 2); + + if (nd == NULL) { + script_pushint(st, false); + return false; + } else if (clan_id <= 0) { + script_pushint(st, false); + ShowError("buildin_clan_master: Received Invalid Clan ID %d\n", clan_id); + return false; + } else if (clan->search(clan_id) == NULL) { + script_pushint(st, false); + ShowError("buildin_clan_master: Received Id of a nonexistent Clan. Id: %d\n", clan_id); + return false; + } + + nd->clan_id = clan_id; + clif->sc_load(&nd->bl, nd->bl.id, AREA, status->dbs->IconChangeTable[SC_CLAN_INFO], 0, clan_id, 0); + + script_pushint(st, true); + return true; +} + +/** * Adds a built-in script function. * * @param buildin Script function data @@ -24405,6 +24531,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(setfont,"i"), BUILDIN_DEF(areamobuseskill,"siiiiviiiii"), BUILDIN_DEF(progressbar,"si"), + BUILDIN_DEF(progressbar_unit,"si?"), BUILDIN_DEF(pushpc,"ii"), BUILDIN_DEF(buyingstore,"i"), BUILDIN_DEF(searchstores,"ii"), @@ -24533,6 +24660,11 @@ void script_parse_builtin(void) { /* Navigation */ BUILDIN_DEF(navigateto, "s??????"), + /* Clan System */ + BUILDIN_DEF(clan_join,"i?"), + BUILDIN_DEF(clan_leave,"?"), + BUILDIN_DEF(clan_master,"i"), + BUILDIN_DEF(channelmes, "ss"), BUILDIN_DEF(addchannelhandler, "ss"), BUILDIN_DEF(removechannelhandler, "ss"), @@ -24900,6 +25032,7 @@ void script_hardcoded_constants(void) script->set_constant("RENEWAL_ASPD", 0, false, false); #endif script->constdb_comment(NULL); +#include "constants.inc" } /** @@ -25047,6 +25180,7 @@ void script_defaults(void) script->search_str = script_search_str; script->setd_sub = setd_sub; script->attach_state = script_attach_state; + script->sprintf = script_sprintf; script->queue = script_hqueue_get; script->queue_add = script_hqueue_add; diff --git a/src/map/script.h b/src/map/script.h index 14d20838d..2dc3b2327 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -909,6 +909,7 @@ struct script_interface { int (*buildin_mobuseskill_sub) (struct block_list *bl, va_list ap); int (*cleanfloor_sub) (struct block_list *bl, va_list ap); int (*run_func) (struct script_state *st); + bool (*sprintf) (struct script_state *st, int start, struct StringBuf *out); const char *(*getfuncname) (struct script_state *st); // for ENABLE_CASE_CHECK unsigned int (*calc_hash_ci) (const char *p); diff --git a/src/map/skill.c b/src/map/skill.c index 88a29b9a8..3d541bf76 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -26,6 +26,7 @@ #include "map/battle.h" #include "map/battleground.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/clif.h" #include "map/date.h" #include "map/elemental.h" @@ -987,7 +988,7 @@ int can_copy (struct map_session_data *sd, uint16 skill_id, struct block_list* b (skill_id >= GC_DARKCROW && skill_id <= SU_FRESHSHRIMP))) return 0; // Reproduce will only copy skills according on the list. [Jobbie] - else if( sd->sc.data[SC__REPRODUCE] && !skill->dbs->reproduce_db[skill->get_index(skill_id)] ) + else if (sd->sc.data[SC__REPRODUCE] && (skill->get_inf2(skill_id) & INF2_ALLOW_REPRODUCE) == 0) return 0; return 1; @@ -5207,7 +5208,7 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1 item_tmp.nameid = sg->item_id ? sg->item_id : ITEMID_BOOBY_TRAP; item_tmp.identify = 1; if( item_tmp.nameid ) - map->addflooritem(bl, &item_tmp, 1, bl->m, bl->x, bl->y, 0, 0, 0, 0); + map->addflooritem(bl, &item_tmp, 1, bl->m, bl->x, bl->y, 0, 0, 0, 0, false); } skill->delunit(su); } @@ -7452,7 +7453,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin eflag = pc->additem(sd,&item_tmp,1,LOG_TYPE_PRODUCE); if(eflag) { clif->additem(sd,0,0,eflag); - map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } break; @@ -8176,7 +8177,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin item_tmp.identify = 1; if ((success = pc->additem(sd, &item_tmp, amount, LOG_TYPE_SKILL)) != 0) { clif->additem(sd,0,0,success); - map->addflooritem(&sd->bl, &item_tmp, amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &item_tmp, amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } } @@ -8188,7 +8189,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin item_tmp.identify = 1; if (item_tmp.nameid && (flag=pc->additem(sd,&item_tmp,1,LOG_TYPE_SKILL)) != 0) { clif->additem(sd,0,0,flag); - map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } } @@ -17180,6 +17181,7 @@ struct skill_unit_group* skill_initunitgroup (struct block_list* src, int count, group->party_id = status->get_party_id(src); group->guild_id = status->get_guild_id(src); group->bg_id = bg->team_get_id(src); + group->clan_id = clan->get_id(src); group->group_id = skill->get_new_group_id(); CREATE(group->unit.data, struct skill_unit, count); group->unit.count = count; @@ -17502,7 +17504,7 @@ int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap) memset(&item_tmp,0,sizeof(item_tmp)); item_tmp.nameid = group->item_id ? group->item_id : ITEMID_BOOBY_TRAP; item_tmp.identify = 1; - map->addflooritem(bl, &item_tmp, 1, bl->m, bl->x, bl->y, 0, 0, 0, 0); + map->addflooritem(bl, &item_tmp, 1, bl->m, bl->x, bl->y, 0, 0, 0, 0, false); } skill->delunit(su); } @@ -18457,7 +18459,7 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid, tmp_item.amount = qty * skill->dbs->changematerial_db[i].qty[j]; if((flag = pc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { clif->additem(sd,0,0,flag); - map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } k++; } @@ -18471,7 +18473,7 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid, } else if (tmp_item.amount) { //Success if((flag = pc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { clif->additem(sd,0,0,flag); - map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } if( skill_id == GN_MIX_COOKING || skill_id == GN_MAKEBOMB || skill_id == GN_S_PHARMACY ) clif->msgtable_skill(sd, skill_id, MSG_SKILL_SUCCESS); @@ -18531,7 +18533,7 @@ int skill_produce_mix(struct map_session_data *sd, uint16 skill_id, int nameid, tmp_item.identify = 1; if( pc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE) ) { clif->additem(sd,0,0,flag); - map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } clif->msgtable_skill(sd, skill_id, MSG_SKILL_FAILURE); } @@ -18588,7 +18590,7 @@ int skill_arrow_create (struct map_session_data *sd, int nameid) continue; if((flag = pc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { clif->additem(sd,0,0,flag); - map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } @@ -18843,7 +18845,7 @@ int skill_elementalanalysis(struct map_session_data *sd, uint16 skill_lv, const int flag = pc->additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_CONSUME); if (flag) { clif->additem(sd,0,0,flag); - map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); + map->addflooritem(&sd->bl, &tmp_item, tmp_item.amount, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0, false); } } @@ -19849,21 +19851,6 @@ bool skill_parse_row_magicmushroomdb(char* split[], int column, int current) return true; } -bool skill_parse_row_reproducedb(char* split[], int column, int current) -{ - uint16 skill_id; - uint16 idx; - nullpo_retr(false, split); - skill_id = atoi(split[0]); - idx = skill->get_index(skill_id); - if( !idx ) - return false; - - skill->dbs->reproduce_db[idx] = true; - - return true; -} - bool skill_parse_row_abradb(char* split[], int columns, int current) { // skill_id,DummyName,RequiredHocusPocusLevel,Rate @@ -20168,6 +20155,12 @@ void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db * } else { sk->inf2 &= ~INF2_SHOW_SKILL_SCALE; } + } else if (strcmpi(type, "AllowReproduce") == 0) { + if (on) { + sk->inf2 |= INF2_ALLOW_REPRODUCE; + } else { + sk->inf2 &= ~INF2_ALLOW_REPRODUCE; + } } else if (strcmpi(type, "None") != 0) { skilldb_invalid_error(type, config_setting_name(t), sk->nameid); } @@ -21280,7 +21273,6 @@ void skill_readdb(bool minimal) sv->readdb(map->db_path, "spellbook_db.txt", ',', 3, 3, MAX_SKILL_SPELLBOOK_DB, skill->parse_row_spellbookdb); //Guillotine Cross sv->readdb(map->db_path, "magicmushroom_db.txt", ',', 1, 1, MAX_SKILL_MAGICMUSHROOM_DB, skill->parse_row_magicmushroomdb); - sv->readdb(map->db_path, "skill_reproduce_db.txt", ',', 1, 1, MAX_SKILL_DB, skill->parse_row_reproducedb); sv->readdb(map->db_path, "skill_improvise_db.txt", ',', 2, 2, MAX_SKILL_IMPROVISE_DB, skill->parse_row_improvisedb); sv->readdb(map->db_path, "skill_changematerial_db.txt", ',', 4, 4+2*5, MAX_SKILL_PRODUCE_DB, skill->parse_row_changematerialdb); } @@ -21594,7 +21586,6 @@ void skill_defaults(void) skill->parse_row_abradb = skill_parse_row_abradb; skill->parse_row_spellbookdb = skill_parse_row_spellbookdb; skill->parse_row_magicmushroomdb = skill_parse_row_magicmushroomdb; - skill->parse_row_reproducedb = skill_parse_row_reproducedb; skill->parse_row_improvisedb = skill_parse_row_improvisedb; skill->parse_row_changematerialdb = skill_parse_row_changematerialdb; skill->usave_add = skill_usave_add; diff --git a/src/map/skill.h b/src/map/skill.h index 1e00e488f..d7590921a 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -123,6 +123,7 @@ enum e_skill_inf2 { INF2_FREE_CAST_NORMAL = 0x08000, INF2_FREE_CAST_REDUCED = 0x10000, INF2_SHOW_SKILL_SCALE = 0x20000, + INF2_ALLOW_REPRODUCE = 0x40000, }; @@ -1370,7 +1371,7 @@ enum e_skill { GM_FORCE_TRANSFER, GM_WIDE_RESURRECTION, ALL_NIFLHEIM_RECALL, - ALL_PRONTERA_RECALL, + ALL_PRONTERA_RECALL, ALL_GLASTHEIM_RECALL, ALL_THANATOS_RECALL, @@ -1773,6 +1774,7 @@ struct skill_unit_group { int party_id; int guild_id; int bg_id; + int clan_id; int map; int target_flag; //Holds BCT_* flag for battle_check_target int bl_flag; //Holds BL_* flag for map_foreachin* functions @@ -1897,7 +1899,6 @@ BEGIN_ZEROED_BLOCK; // This block will be zeroed in skill_defaults() as well as struct s_skill_improvise_db improvise_db[MAX_SKILL_IMPROVISE_DB]; struct s_skill_changematerial_db changematerial_db[MAX_SKILL_PRODUCE_DB]; struct s_skill_spellbook_db spellbook_db[MAX_SKILL_SPELLBOOK_DB]; - bool reproduce_db[MAX_SKILL_DB]; END_ZEROED_BLOCK; struct s_skill_unit_layout unit_layout[MAX_SKILL_UNIT_LAYOUT]; }; @@ -2121,7 +2122,6 @@ struct skill_interface { bool (*parse_row_abradb) (char* split[], int columns, int current); bool (*parse_row_spellbookdb) (char* split[], int columns, int current); bool (*parse_row_magicmushroomdb) (char* split[], int column, int current); - bool (*parse_row_reproducedb) (char* split[], int column, int current); bool (*parse_row_improvisedb) (char* split[], int columns, int current); bool (*parse_row_changematerialdb) (char* split[], int columns, int current); /* save new unit skill */ diff --git a/src/map/status.c b/src/map/status.c index 9e578bc12..3e4b4a45c 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -25,6 +25,7 @@ #include "map/battle.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/clif.h" #include "map/elemental.h" #include "map/guild.h" @@ -1019,6 +1020,9 @@ void initChangeTables(void) // Summoner status->dbs->IconChangeTable[SC_SPRITEMABLE] = SI_SPRITEMABLE; + // Clan System + status->dbs->IconChangeTable[SC_CLAN_INFO] = SI_CLAN_INFO; + // RoDEX status->dbs->IconChangeTable[SC_DAILYSENDMAILCNT] = SI_DAILYSENDMAILCNT; @@ -1181,6 +1185,9 @@ void initChangeTables(void) status->dbs->ChangeFlagTable[SC_MVPCARD_ORCHERO] |= SCB_ALL; status->dbs->ChangeFlagTable[SC_MVPCARD_ORCLORD] |= SCB_ALL; + // Clan System + status->dbs->ChangeFlagTable[SC_CLAN_INFO] |= SCB_NONE; + // Costumes status->dbs->ChangeFlagTable[SC_DRESS_UP] |= SCB_NONE; status->dbs->ChangeFlagTable[SC_MOONSTAR] |= SCB_NONE; @@ -2685,6 +2692,12 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) status->current_equip_option_index = -1; status->current_equip_item_index = -1; + // Clan Buffs + if (sd->status.clan_id > 0) { + struct clan *c = clan->search(sd->status.clan_id); + clan->buff_start(sd, c); + } + status->calc_pc_additional(sd, opt); if( sd->pd ) { // Pet Bonus @@ -9726,6 +9739,11 @@ void status_change_start_display(struct map_session_data *sd, enum sc_type type, case SC_ALL_RIDING: dval1 = 1; break; + case SC_CLAN_INFO: + dval1 = val1; + dval2 = val2; + dval3 = val3; + break; default: /* all others: just copy val1 */ dval1 = val1; break; @@ -9745,6 +9763,9 @@ int status_get_val_flag(enum sc_type type) { int val_flag = 0; switch (type) { + case SC_CLAN_INFO: + val_flag |= 1 | 2; + break; case SC_FIGHTINGSPIRIT: val_flag |= 1 | 2; break; diff --git a/src/map/status.h b/src/map/status.h index e9c2218e8..5a031fa48 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -838,13 +838,16 @@ typedef enum sc_type { SC_BITESCAR, SC_ARCLOUSEDASH, SC_TUNAPARTY, - SC_SHRIMP, // 650 + SC_SHRIMP, // 650 SC_FRESHSHRIMP, - + SC_DRESS_UP, // Rodex SC_DAILYSENDMAILCNT, + + // Clan System + SC_CLAN_INFO, #ifndef SC_MAX SC_MAX, //Automatically updated max, used in for's to check we are within bounds. #endif diff --git a/src/map/unit.c b/src/map/unit.c index 0b5b21caf..c40aa7000 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -27,6 +27,7 @@ #include "map/battleground.h" #include "map/chat.h" #include "map/chrif.h" +#include "map/clan.h" #include "map/clif.h" #include "map/duel.h" #include "map/elemental.h" @@ -2057,7 +2058,7 @@ bool unit_can_reach_bl(struct block_list *bl,struct block_list *tbl, int range, #ifdef OFFICIAL_WALKPATH if( !path->search_long(NULL, bl, bl->m, bl->x, bl->y, tbl->x-dx, tbl->y-dy, 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] + && 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 false; #endif @@ -2209,6 +2210,7 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick) //Non-players use the sync packet on the walk timer. [Skotlex] if (tid == INVALID_TIMER && sd) clif->fixpos(src); + map->freeblock_lock(); if( DIFF_TICK(ud->attackabletime,tick) <= 0 ) { if (battle_config.attack_direction_change && (src->type&battle_config.attack_direction_change)) { ud->dir = map->calc_dir(src, target->x,target->y ); @@ -2218,8 +2220,10 @@ 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)) { + map->freeblock_unlock(); return 1; + } } else { // Set mob's ANGRY/BERSERK states. md->state.skillstate = md->state.aggressive?MSS_ANGRY:MSS_BERSERK; @@ -2231,21 +2235,23 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick) map->foreachinrange(mob->linksearch, src, md->db->range2, BL_MOB, md->class_, target, tick); } } - if (src->type == BL_PET && pet->attackskill(BL_UCAST(BL_PET, src), target->id)) + if (src->type == BL_PET && pet->attackskill(BL_UCAST(BL_PET, src), target->id)) { + map->freeblock_unlock(); return 1; + } - map->freeblock_lock(); ud->attacktarget_lv = battle->weapon_attack(src,target,tick,0); if(sd && sd->status.pet_id > 0 && sd->pd && battle_config.pet_attack_support) pet->target_check(sd,target,0); - map->freeblock_unlock(); /** * Applied when you're unable to attack (e.g. out of ammo) * We should stop here otherwise timer keeps on and this happens endlessly **/ - if( ud->attacktarget_lv == ATK_NONE ) + if (ud->attacktarget_lv == ATK_NONE) { + map->freeblock_unlock(); return 1; + } ud->attackabletime = tick + sstatus->adelay; // You can't move if you can't attack neither. @@ -2259,6 +2265,7 @@ int unit_attack_timer_sub(struct block_list* src, int tid, int64 tick) pc->update_idle_time(sd, BCIDLE_ATTACK); ud->attacktimer = timer->add(ud->attackabletime,unit->attack_timer,src->id,0); } + map->freeblock_unlock(); if (sd != NULL && battle_config.prevent_logout_trigger & PLT_ATTACK) sd->canlog_tick = timer->gettick(); @@ -2725,6 +2732,7 @@ int unit_free(struct block_list *bl, clr_type clrtype) map->foreachpc(clif->friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 0); party->send_logout(sd); guild->send_memberinfoshort(sd,0); + clan->member_offline(sd); pc->cleareventtimer(sd); pc->inventory_rental_clear(sd); pc->delspiritball(sd,sd->spiritball,1); |